You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Tadayoshi Sato (JIRA)" <ji...@apache.org> on 2018/05/31 12:00:00 UTC
[jira] [Work started] (CAMEL-12548) NullPointerException in
camel-cmis when using wrong credentials
[ https://issues.apache.org/jira/browse/CAMEL-12548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Work on CAMEL-12548 started by Tadayoshi Sato.
----------------------------------------------
> NullPointerException in camel-cmis when using wrong credentials
> ---------------------------------------------------------------
>
> Key: CAMEL-12548
> URL: https://issues.apache.org/jira/browse/CAMEL-12548
> Project: Camel
> Issue Type: Bug
> Components: camel-cmis
> Affects Versions: 2.21.1
> Reporter: Tadayoshi Sato
> Assignee: Tadayoshi Sato
> Priority: Major
>
> If you try to send something via cmis (uri in blueprint: {{"cmis:// ... "}}) and you use a wrong password then on the second (and all subsequent) tries you will get a {{NullPointerExceptionException}}.
> Stacktrace:
> {code}
> java.lang.NullPointerException
> at org.apache.camel.component.cmis.CMISSessionFacade.getCMISTypeFor(CMISSessionFacade.java:221)
> at org.apache.camel.component.cmis.CMISProducer.isFolder(CMISProducer.java:146)
> at org.apache.camel.component.cmis.CMISProducer.parentFolderPathFor(CMISProducer.java:132)
> at org.apache.camel.component.cmis.CMISProducer.createNode(CMISProducer.java:101)
> at org.apache.camel.component.cmis.CMISProducer.process(CMISProducer.java:62)
> at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
> at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> at org.apache.camel.processor.TryProcessor.process(TryProcessor.java:113)
> at org.apache.camel.processor.TryProcessor.process(TryProcessor.java:84)
> at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)
> at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.asyncInvoke(CxfConsumer.java:165)
> at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:144)
> at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
> at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
> at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:254)
> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
> at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
> at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
> at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:72)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
> at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:499)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
> at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:748)
> {code}
> The {{CMISProducer}} creates a {{CMISSessionFacade}} ({{CMISProducer.getSessionFacade()}}), delegates the initialization of a session to the facade ({{CMISSessionFacade.initSession()}}) and stores the facade inside a member variable. The {{CMISSessionFacade}} creates a Session, tries to connect to the remote system and stores the created Session object inside a member variable. If the provided password for the remote system is wrong then at this point a {{CmisUnauthorizedException}} (basically a {{RuntimeException}}) is thrown.
> ({{org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException: Unauthorized}})
> This behavior is ok but the consequence is that a member variable inside the {{CMISSessionFacade}} (called "session") is still null.
> Camel caches the {{CMISProducer}} with its reference to {{CMISSessionFacade}} whose "session" is set to null. If you try to send something else via cmis then you get the {{NullPointerException}} as described above.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)