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

Reply via email to