Hi, Make sure that you have all OpenCMIS dependencies in your classpath.
Florian On 03/08/2011 15:44, Piergiorgio Lucidi wrote: > Building the latest version of the code in the trunk, the InMemory > Repository can't deploy anymore, it returns this exception trying deploying > on Jetty: > > GRAVE: WSSERVLET11: failed to parse runtime descriptor: >> com.sun.xml.ws.util.ServiceConfigurationError: >> com.sun.xml.ws.api.pipe.TubelineAssemblerFactory: Provider >> org.apache.chemistry.opencmis.client.bindings.spi.webservices.wss.WssTubelineAssemblerFactory >> is specified in >> file:/Users/piergiorgiolucidi/Documents/workspaces/manifold/opencmis/chemistry-opencmis-client/chemistry-opencmis-client-bindings/target/classes/META-INF/services/com.sun.xml.ws.api.pipe.TubelineAssemblerFactorybut >> could not be instantiated: java.lang.ClassCastException >> com.sun.xml.ws.util.ServiceConfigurationError: >> com.sun.xml.ws.api.pipe.TubelineAssemblerFactory: Provider >> org.apache.chemistry.opencmis.client.bindings.spi.webservices.wss.WssTubelineAssemblerFactory >> is specified in >> file:/Users/piergiorgiolucidi/Documents/workspaces/manifold/opencmis/chemistry-opencmis-client/chemistry-opencmis-client-bindings/target/classes/META-INF/services/com.sun.xml.ws.api.pipe.TubelineAssemblerFactorybut >> could not be instantiated: java.lang.ClassCastException >> at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:233) >> at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:141) >> at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next( >> ServiceFinder.java:379) >> at com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create( >> TubelineAssemblerFactory.java:104) >> at com.sun.xml.ws.server.WSEndpointImpl.<init>(WSEndpointImpl.java:147) >> at com.sun.xml.ws.server.EndpointFactory.createEndpoint( >> EndpointFactory.java:218) >> at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467) >> at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters( >> DeploymentDescriptorParser.java:253) >> at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse( >> DeploymentDescriptorParser.java:147) >> at >> com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized( >> WSServletContextListener.java:108) >> at org.mortbay.jetty.handler.ContextHandler.startContext( >> ContextHandler.java:549) >> at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) >> at org.mortbay.jetty.webapp.WebAppContext.startContext( >> WebAppContext.java:1282) >> at org.mortbay.jetty.handler.ContextHandler.doStart( >> ContextHandler.java:518) >> at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) >> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >> ) >> at org.mortbay.jetty.handler.HandlerCollection.doStart( >> HandlerCollection.java:152) >> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >> ) >> at org.mortbay.jetty.handler.HandlerWrapper.doStart( >> HandlerWrapper.java:130) >> at org.mortbay.jetty.Server.doStart(Server.java:224) >> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >> ) >> at org.apache.manifoldcf.cmis_tests.Base.setUp(Base.java:333) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke( >> NativeMethodAccessorImpl.java:39) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >> DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> FrameworkMethod.java:44) >> at org.junit.internal.runners.model.ReflectiveCallable.run( >> ReflectiveCallable.java:15) >> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> FrameworkMethod.java:41) >> at org.junit.internal.runners.statements.RunBefores.evaluate( >> RunBefores.java:27) >> at org.junit.internal.runners.statements.RunAfters.evaluate( >> RunAfters.java:31) >> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >> BlockJUnit4ClassRunner.java:79) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:71) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:49) >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >> JUnit4TestReference.java:49) >> at org.eclipse.jdt.internal.junit.runner.TestExecution.run( >> TestExecution.java:38) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >> RemoteTestRunner.java:467) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >> RemoteTestRunner.java:683) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( >> RemoteTestRunner.java:390) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( >> RemoteTestRunner.java:197) >> Caused by: java.lang.ClassCastException >> at java.lang.Class.cast(Class.java:2990) >> at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next( >> ServiceFinder.java:374) >> ... 43 more > > > > 2011/8/3 Piergiorgio Lucidi <[email protected]> > >> I'm building OpenCMIS to investigate me too :-P >> >> >> 2011/8/3 Jens Hübel <[email protected]> >> >>> Thanks for posting! I will try to rebuild and take a look why it does not >>> work. To get further information I need the server logs, but with your code >>> I can debug it. >>> >>> Jens >>> >>> -----Original Message----- >>> From: Piergiorgio Lucidi [mailto:[email protected]] >>> Sent: Mittwoch, 3. August 2011 14:48 >>> To: [email protected] >>> Subject: Re: CMIS and Lucene >>> >>> Hi Jens, >>> >>> here the code of my integration test that is used to create some content >>> in >>> the InMemory Repository, the OpenCMIS server is running because it is >>> bootstrapped by Jetty / Maven. The CMIS Repository Connector works fine >>> with >>> Alfresco 3.4d Community, but I would like to have the OpenCMIS server in >>> the >>> test suite. >>> >>> In the following snippet I started to initialize the test environment with >>> a >>> new folder with a new content, here I don't have any problem, it works >>> with >>> the InMemory Repository: >>> >>> private Session getCmisClientSession(){ >>>> // default factory implementation >>>> SessionFactory factory = SessionFactoryImpl.newInstance(); >>>> Map<String, String> parameters = new HashMap<String, String>(); >>>> // user credentials >>>> parameters.put(SessionParameter.USER, "dummyuser"); >>>> parameters.put(SessionParameter.PASSWORD, "dummysecret"); >>>> // connection settings >>>> parameters.put(SessionParameter.ATOMPUB_URL, >>> CMIS_ENDPOINT_TEST_SERVER >>>> ); >>>> parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB >>>> .value()); >>>> // create session >>>> return factory.getRepositories(parameters).get(0).createSession(); >>>> } >>>> @Before >>>> public void createTestArea() >>>> throws Exception >>>> { >>>> try >>>> { >>>> Session session = getCmisClientSession(); >>>> //creating a new folder >>>> Folder root = session.getRootFolder(); >>>> Map<String, Object> folderProperties = new HashMap<String, >>>> Object>(); >>>> folderProperties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder"); >>>> folderProperties.put(PropertyIds.NAME, "testdata"); >>>> >>>> Folder newFolder = root.createFolder(folderProperties); >>>> //create a new content in the folder >>>> String name = "testdata1.txt"; >>>> // properties >>>> // (minimal set: name and object type id) >>>> Map<String, Object> contentProperties = new HashMap<String, >>>> Object>(); >>>> contentProperties.put(PropertyIds.OBJECT_TYPE_ID, >>> "cmis:document"); >>>> contentProperties.put(PropertyIds.NAME, name); >>>> >>>> // content >>>> byte[] content = "CMIS Testdata One".getBytes(); >>>> InputStream stream = new ByteArrayInputStream(content); >>>> ContentStream contentStream = new ContentStreamImpl(name, >>> newBigInteger(content), >>>> "text/plain", stream); >>>> >>>> // create a major version >>>> Document newContent1 = newFolder.createDocument(contentProperties, >>>> contentStream, null); >>> >>> >>> But if I try to search the new content in the InMemory Repository, in the >>> same way I implemented in the CMIS Repository Connector: >>> >>> ItemIterable<QueryResult> results = session.query("SELECT * FROM >>>> cmis:folder WHERE cmis:name='testdata'", false); >>>> for (QueryResult result : results) { >>>> String id = result.getPropertyValueById(PropertyIds.OBJECT_ID); >>>> } >>> >>> >>> >>> It returns the following exception: >>> >>> org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: >>> null >>>> at >>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode( >>>> AbstractAtomPubService.java:450) >>>> at >>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post( >>>> AbstractAtomPubService.java:568) >>>> at >>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.DiscoveryServiceImpl.query( >>>> DiscoveryServiceImpl.java:141) >>>> at org.apache.chemistry.opencmis.client.runtime.SessionImpl$3.fetchPage( >>>> SessionImpl.java:557) >>>> at >>>> >>> org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getCurrentPage( >>>> AbstractIterator.java:132) >>>> at >>>> >>> org.apache.chemistry.opencmis.client.runtime.util.CollectionIterator.hasNext( >>>> CollectionIterator.java:48) >>>> at org.apache.manifoldcf.cmis_tests.APISanityTest.createTestArea( >>>> APISanityTest.java:139) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke( >>>> NativeMethodAccessorImpl.java:39) >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >>>> DelegatingMethodAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >>>> FrameworkMethod.java:44) >>>> at org.junit.internal.runners.model.ReflectiveCallable.run( >>>> ReflectiveCallable.java:15) >>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >>>> FrameworkMethod.java:41) >>>> at org.junit.internal.runners.statements.RunBefores.evaluate( >>>> RunBefores.java:27) >>>> at org.junit.internal.runners.statements.RunAfters.evaluate( >>>> RunAfters.java:31) >>>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >>>> BlockJUnit4ClassRunner.java:79) >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>> BlockJUnit4ClassRunner.java:71) >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>> BlockJUnit4ClassRunner.java:49) >>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >>>> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >>>> JUnit4TestReference.java:49) >>>> at org.eclipse.jdt.internal.junit.runner.TestExecution.run( >>>> TestExecution.java:38) >>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>> RemoteTestRunner.java:467) >>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>> RemoteTestRunner.java:683) >>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( >>>> RemoteTestRunner.java:390) >>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( >>>> RemoteTestRunner.java:197) >>> >>> >>> Let me know if you have any hints! >>> >>> Thank you again for your support. >>> >>> Regards, >>> >>> Piergiorgio >>> >>> 2011/8/3 Jens Hübel <[email protected]> >>> >>>> Hi Pergiorio, >>>> >>>> do you have a code piece that I can take a look at? What is your client >>>> API? Do you connect to Chemistry client API >>> (chemistry-opencmis-client-api)? >>>> Or perhaps you can grab the query sent from the log file? >>>> >>>> Thanks Jens >>>> >>>> >>>> -----Original Message----- >>>> From: Piergiorgio Lucidi [mailto:[email protected]] >>>> Sent: Mittwoch, 3. August 2011 13:22 >>>> To: [email protected] >>>> Subject: Re: CMIS and Lucene >>>> >>>> Hi Jens, >>>> >>>> I contributed to the Apache ManifoldCF (ex Lucene Connector Framework) >>>> project implementing the CMIS Connector using OpenCMIS 0.4.0. >>>> >>>> Now I'm working on integration test trying to use the OpenCMIS InMemory >>>> Repository that is available from Apache Chemistry ;) >>>> >>>> I have some problems because now I'm finishing my test implementation >>> but >>>> it >>>> seems that I can't execute queries on the InMemory Repository, it >>> returns a >>>> null string in the convertStatusCode method. >>>> >>>> The CMIS Repository Connector that I implemented for ManifoldCF has a >>> job >>>> parameter that is the CMIS Query, this parameter is used by agents to >>>> select >>>> all the contents that needs to be indexed on the Output Connector (for >>>> example Apache Solr). >>>> Without a query feature exposed by the InMemory Repository I can't test >>> the >>>> connector in the right way. >>>> >>>> I tried to use the latest version of the InMemory Repository >>>> (0.5.0-SNAPSHOT) but with the same result. >>>> >>>> Have you got any ideas to solve this problem? >>>> Thank you for your support. >>>> >>>> Regards, >>>> Piergiorgio >>>> >>>> >>>> 2011/8/3 Jens Hübel <[email protected]> >>>> >>>>> Hi Chemistries, >>>>> >>>>> >>>>> >>>>> is anyone of us already involved in the Lucene project? >>>>> >>>>> >>>>> >>>>> Reading this here >>>>> http://search-lucene.com/m/wI38e1K3BWJ&subj=Re+CMIS+Connector+Tests >>>>> >>>>> >>>>> >>>>> I think it would make sense to give them an introduction to what we >>> have. >>>>> >>>>> >>>>> >>>>> if I understand this correctly one of the options they discuss is to >>>> create >>>>> an InMemory mock server. It does not make much sense to duplicate what >>> we >>>>> already have (and if we need getContentChanges() for that I am happy >>> to >>>>> implement this). >>>>> >>>>> >>>>> >>>>> Jens >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Piergiorgio Lucidi >>>> Web: http://about.me/piergiorgiolucidi >>>> >>> >>> >>> >>> -- >>> Piergiorgio Lucidi >>> Web: http://about.me/piergiorgiolucidi >>> >> >> >> >> -- >> Piergiorgio Lucidi >> Web: http://about.me/piergiorgiolucidi >> >> > >
