[ 
https://issues.apache.org/jira/browse/CAMEL-12548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tadayoshi Sato updated CAMEL-12548:
-----------------------------------
    Description: 
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.

  was:
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.


> 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)

Reply via email to