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

Nested schema validation within properties fails when using Json schema validation in the response path #2114

Closed
LayaniMal opened this issue Aug 22, 2023 · 0 comments

Comments

@LayaniMal
Copy link

LayaniMal commented Aug 22, 2023

Description

ClassNotFoundException is throwing when using Json schema validation in the response path in APIM 3.2.0.

Steps to Reproduce

  • Downloaded an APIM-3.2.0 pack(Tested in U2 277 and 289)
  • Started the server and created an API by importing the swagger definition
  • Created a mock API with the payload
  • Enabled schema validation and published the API.
  • Invoked the API and got the below error message.
ERROR - NativeWorkerPool Uncaught exception
java.lang.NoClassDefFoundError: org/json/JSONPointerException

Affected Component

APIM

Version

3.2.0

Relevant Log Output

ERROR - NativeWorkerPool Uncaught exception
java.lang.NoClassDefFoundError: org/json/JSONPointerException
    at org.everit.json.schema.loader.ReferenceLookup.lookup(ReferenceLookup.java:95) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.buildSchemaWithoutExplicitType(SchemaLoader.java:253) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.lambda$load$0(SchemaLoader.java:290) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at java.util.Optional.orElseGet(Optional.java:267) ~[?:1.8.0_372]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:288) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadChild(SchemaLoader.java:346) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ArraySchemaLoader.lambda$load$1(ArraySchemaLoader.java:35) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer$IdModifyingTypeConsumerImpl.lambda$then$0(TypeBasedMultiplexer.java:78) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.orElse(TypeBasedMultiplexer.java:233) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.requireAny(TypeBasedMultiplexer.java:243) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ArraySchemaLoader.load(ArraySchemaLoader.java:37) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.buildArraySchema(SchemaLoader.java:328) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadForExplicitType(SchemaLoader.java:315) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadForType(SchemaLoader.java:335) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.lambda$load$0(SchemaLoader.java:292) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at java.util.Optional.orElseGet(Optional.java:267) ~[?:1.8.0_372]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:288) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadChild(SchemaLoader.java:346) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$addPropertySchemaDefinition$4(ObjectSchemaLoader.java:79) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer$IdModifyingTypeConsumerImpl.lambda$then$0(TypeBasedMultiplexer.java:78) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.orElse(TypeBasedMultiplexer.java:233) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.requireAny(TypeBasedMultiplexer.java:243) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ObjectSchemaLoader.addPropertySchemaDefinition(ObjectSchemaLoader.java:81) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$populatePropertySchemas$3(ObjectSchemaLoader.java:70) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[?:1.8.0_372]
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647) ~[?:1.8.0_372]
    at org.everit.json.schema.loader.ObjectSchemaLoader.populatePropertySchemas(ObjectSchemaLoader.java:69) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$load$0(ObjectSchemaLoader.java:34) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer$IdModifyingTypeConsumerImpl.lambda$then$0(TypeBasedMultiplexer.java:78) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.orElse(TypeBasedMultiplexer.java:233) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.requireAny(TypeBasedMultiplexer.java:243) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.ObjectSchemaLoader.load(ObjectSchemaLoader.java:35) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.buildObjectSchema(SchemaLoader.java:324) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadForExplicitType(SchemaLoader.java:317) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadForType(SchemaLoader.java:335) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.lambda$load$0(SchemaLoader.java:292) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at java.util.Optional.orElseGet(Optional.java:267) ~[?:1.8.0_372]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:288) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.loadChild(SchemaLoader.java:346) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_372]
    at java.util.stream.IntPipeline$4$1.accept(IntPipeline.java:250) ~[?:1.8.0_372]
    at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110) ~[?:1.8.0_372]
    at java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:693) ~[?:1.8.0_372]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_372]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_372]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_372]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_372]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566) ~[?:1.8.0_372]
    at org.everit.json.schema.loader.CombinedSchemaLoader.load(CombinedSchemaLoader.java:61) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:287) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:178) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:163) ~[org.everit.json.schema_1.5.0.wso2_v1.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.validateContent_aroundBody6(SchemaValidator.java:192) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.validateContent(SchemaValidator.java:186) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.validateResponse_aroundBody10(SchemaValidator.java:267) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.validateResponse(SchemaValidator.java:249) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.handleResponse_aroundBody4(SchemaValidator.java:170) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.wso2.carbon.apimgt.gateway.handlers.security.SchemaValidator.handleResponse(SchemaValidator.java:146) ~[org.wso2.carbon.apimgt.gateway_6.7.206.424.jar:?]
    at org.apache.synapse.rest.API.process(API.java:387) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.rest.RESTRequestHandler.apiProcessNonDefaultStrategy(RESTRequestHandler.java:146) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.rest.RESTRequestHandler.identifyAPI(RESTRequestHandler.java:166) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:90) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:60) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:336) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:587) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:198) ~[synapse-core_2.1.7.wso2v183_40.jar:2.1.7-wso2v183.40]
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) ~[axis2_1.6.1.wso2v41_15.jar:?]
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:309) ~[synapse-nhttp-transport_2.1.7.wso2v183_41.jar:?]
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) [axis2_1.6.1.wso2v41_15.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_372]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_372]
    at java.lang.Thread.run(Thread.java:750) [?:1.8.0_372]
Caused by: java.lang.ClassNotFoundException: org.json.JSONPointerException cannot be found by org.everit.json.schema_1.5.0.wso2_v1
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461) ~[org.eclipse.osgi_3.14.0.v20190517-1309.jar:?]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:423) ~[org.eclipse.osgi_3.14.0.v20190517-1309.jar:?]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:415) ~[org.eclipse.osgi_3.14.0.v20190517-1309.jar:?]
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:155) ~[org.eclipse.osgi_3.14.0.v20190517-1309.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ~[?:1.8.0_372]
    ... 72 more

Related Issues

#1963

Suggested Labels

APIM 3.2.0

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

2 participants