Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

APIs that have special characters in path parameter do not work #9081

Closed
exalate-issue-sync bot opened this issue Jun 6, 2023 · 0 comments
Closed

Comments

@exalate-issue-sync
Copy link

exalate-issue-sync bot commented Jun 6, 2023

Describe the bug :

Api with special character in the path parameter is not working. We get error No handler found.

To Reproduce :

Steps to reproduce the behaviour:

  1. Create simple API
  2. Set path with path parameter that contains special character
  3. Try to call the API
  4. See error in logs

Useful information :

Stacktrace when you try to deploy the API:

08:10:52.563 [gio.sync-6] [5fdda51f-a471-4f87-9da5-1fa471df8728] ERROR i.g.g.h.api.ApiReactorHandlerFactory - Unexpected error while creating API handler java.util.regex.PatternSyntaxException: named capturing group is missing trailing '>' near index 16 ^/path/(?[number-test][a-zA-Z0-9-._~%!$&'()* +,;=:@]+)(?:/.*)?$  ^ at java.base/java.util.regex.Pattern.error(Unknown Source) at java.base/java.util.regex.Pattern.groupname(Unknown Source) at java.base/java.util.regex.Pattern.group0(Unknown Source) at java.base/java.util.regex.Pattern.sequence(Unknown Source) at java.base/java.util.regex.Pattern.expr(Unknown Source) at java.base/java.util.regex.Pattern.compile(Unknown Source) at java.base/java.util.regex.Pattern.[init](Unknown Source) at java.base/java.util.regex.Pattern.compile(Unknown Source) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParameter.extractPathParamsAndPattern(PathParameter.java:69) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParameter.[init](PathParameter.java:43) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParametersExtractor.lambda$groupPatternsByMethod$6(PathParametersExtractor.java:114) at java.base/java.util.stream.ReferencePipeline$7$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParametersExtractor.groupPatternsByMethod(PathParametersExtractor.java:125) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParametersExtractor.compilePatternsByHttpMethod(PathParametersExtractor.java:70) at io.gravitee.gateway.handlers.api.processor.pathparameters.PathParametersExtractor.[init](PathParametersExtractor.java:44) at io.gravitee.gateway.handlers.api.processor.RequestProcessorChainFactory.initialize(RequestProcessorChainFactory.java:138) at io.gravitee.gateway.handlers.api.processor.RequestProcessorChainFactory.[init](RequestProcessorChainFactory.java:90) at io.gravitee.gateway.handlers.api.ApiReactorHandlerFactory.getRequestProcessorChainFactory(ApiReactorHandlerFactory.java:570) at io.gravitee.gateway.handlers.api.ApiReactorHandlerFactory.requestProcessorChainFactory(ApiReactorHandlerFactory.java:548) at io.gravitee.gateway.handlers.api.ApiReactorHandlerFactory.create(ApiReactorHandlerFactory.java:219) at io.gravitee.gateway.handlers.api.ApiReactorHandlerFactory.create(ApiReactorHandlerFactory.java:97) at io.gravitee.gateway.jupiter.reactor.v4.reactor.ReactorFactoryManager.lambda$create$2(ReactorFactoryManager.java:41) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) at io.gravitee.gateway.jupiter.reactor.v4.reactor.ReactorFactoryManager.create(ReactorFactoryManager.java:42) at io.gravitee.gateway.reactor.handler.impl.DefaultReactorHandlerRegistry.prepare(DefaultReactorHandlerRegistry.java:65) at io.gravitee.gateway.reactor.handler.impl.DefaultReactorHandlerRegistry.update(DefaultReactorHandlerRegistry.java:107) at io.gravitee.gateway.reactor.handler.ReactorEventListener.onEvent(ReactorEventListener.java:46) at io.gravitee.common.event.impl.EventManagerImpl.publishEvent(EventManagerImpl.java:43) at io.gravitee.common.event.impl.EventManagerImpl.publishEvent(EventManagerImpl.java:35) at io.gravitee.gateway.handlers.api.manager.impl.ApiManagerImpl.update(ApiManagerImpl.java:265) at io.gravitee.gateway.handlers.api.manager.impl.ApiManagerImpl.register(ApiManagerImpl.java:133) at io.gravitee.gateway.handlers.api.manager.impl.ApiManagerImpl.register(ApiManagerImpl.java:170) at io.gravitee.gateway.services.sync.synchronizer.ApiSynchronizer.lambda$registerApi$4(ApiSynchronizer.java:198) at io.reactivex.rxjava3.internal.operators.parallel.ParallelPeek$ParallelPeekSubscriber.onNext(ParallelPeek.java:151) at io.reactivex.rxjava3.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.run(ParallelRunOn.java:275) at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:324) at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.runEager(ExecutorScheduler.java:289) at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:250) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

Desktop :

  • Environment: [3.20.10]

* Please see Zendesk Support tab for further comments and attachments.

mergify bot pushed a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
mergify bot pushed a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
mergify bot pushed a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
gaetanmaisse added a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
gaetanmaisse added a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
gaetanmaisse added a commit to gravitee-io/gravitee-api-management that referenced this issue Jun 8, 2023
@exalate-issue-sync exalate-issue-sync bot changed the title APIs that have special character in path parameter do not work APIs that have special characters in path parameter do not work Jun 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

0 participants