chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Müller <florian.muel...@alfresco.com>
Subject Re: CMIS and Lucene
Date Wed, 03 Aug 2011 16:45:21 GMT
We have a Maven/Jetty setup for the OpenCMIS integration tests, which works. 
Maybe you can spot the difference by looking at the pom:
/chemistry-opencmis-test/chemistry-opencmis-test-fit/pom.xml

The cause of the ClassCastException is that it falls back to the JAX-WS implementation in
the JRE, which incompatible with OpenCMIS.
You have to have a newer JAX-WS implementation in the classpath.


Florian

On 03/08/2011 16:10, Piergiorgio Lucidi wrote:
> The only difference between the two versions of the war of the InMemory
> Repository is that in the 0.4.0 (that works fine on Jetty) there are two
> more dependencies:
> 
> - jsr181-api-1.0-MR1.jar
> - jsr250-api-1.0.jar
> 
> Could be the deployment problem caused by this lack?
> If yes, it could be fixed reincluding this file in the building process of
> the webapp.
> 
> 2011/8/3 Piergiorgio Lucidi <piergiorgiolucidi@gmail.com>
> 
>> Hi Florian,
>>
>> thank you for your suggestion but trying to deploy the InMemory Repository
>> webapp on Tomcat works fine.
>> It seems that there is a problem only on Jetty, maybe later I will try to
>> add other dependencies and I'll let you know.
>>
>> Now I'm trying with the 0.5.0-SNAPSHOT but without any result.
>>
>> 2011/8/3 Florian Müller <florian.mueller@alfresco.com>
>>
>>> 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 <piergiorgiolucidi@gmail.com>
>>>>
>>>>> I'm building OpenCMIS to investigate me too :-P
>>>>>
>>>>>
>>>>> 2011/8/3 Jens Hübel <jhuebel@opentext.com>
>>>>>
>>>>>> 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:piergiorgiolucidi@gmail.com]
>>>>>> Sent: Mittwoch, 3. August 2011 14:48
>>>>>> To: dev@chemistry.apache.org
>>>>>> 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 <jhuebel@opentext.com>
>>>>>>
>>>>>>> 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:piergiorgiolucidi@gmail.com]
>>>>>>> Sent: Mittwoch, 3. August 2011 13:22
>>>>>>> To: dev@chemistry.apache.org
>>>>>>> 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 <jhuebel@opentext.com>
>>>>>>>
>>>>>>>> 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
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> --
>> Piergiorgio Lucidi
>> Web: http://about.me/piergiorgiolucidi
>>
>>
> 
> 


Mime
View raw message