cancel
Showing results for 
Search instead for 
Did you mean: 

CMIS: Error when setting multivalued field with 100+ values

cidus
Champ in-the-making
Champ in-the-making
Hello,

I'm developing an application using Apache Chemistry 0.10.0 to connect to a 4.0 Alfresco.

I'm getting an error on Chemistry when I try to set a multivalued field from a custom aspect with more than 100 values.

The error happens at org.apache.chemistry.opencmis.commons.impl.XMLWalker.handleExtensionLevel(XMLWalker.java:141), which validates the extensions XML.
The document is created, but with a subset of the values passed.
Is this a CMIS limitation? Is there a workaround?
Adding values directly with the Alfresco interface works.

This is the stack trace:

org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: Parsing exception!
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:590)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.createDocument(ObjectServiceImpl.java:126)
   at org.apache.chemistry.opencmis.client.runtime.SessionImpl.createDocument(SessionImpl.java:751)
   at org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocument(FolderImpl.java:95)
   at org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocument(FolderImpl.java:469)
   at self.edu.test.CmisFolderRepositoryImpl.save(CmisFolderRepositoryImpl.java:101)
   at self.edu.test.CmisFolderRepositoryImpl.save(CmisFolderRepositoryImpl.java:75)
   at self.edu.test.AlfrescoDsvIT.testAlfresco(AlfrescoDsvIT.java:59)
   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.InvokeMethod.evaluate(InvokeMethod.java:20)
   at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   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:50)
   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: org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException: Extensions tree too wide!
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.handleExtensionLevel(XMLWalker.java:141)
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.handleExtensionLevel(XMLWalker.java:144)
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.handleExtensionLevel(XMLWalker.java:144)
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.handleExtension(XMLWalker.java:99)
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.walk(XMLWalker.java:55)
   at org.apache.chemistry.opencmis.commons.impl.XMLConverter$18.read(XMLConverter.java:2183)
   at org.apache.chemistry.opencmis.commons.impl.XMLConverter$18.read(XMLConverter.java:2173)
   at org.apache.chemistry.opencmis.commons.impl.XMLWalker.walk(XMLWalker.java:53)
   at org.apache.chemistry.opencmis.commons.impl.XMLConverter.convertObject(XMLConverter.java:1099)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseElement(AtomPubParser.java:324)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseEntry(AtomPubParser.java:276)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parse(AtomPubParser.java:111)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:588)
   … 32 more


4 REPLIES 4

jpotts
World-Class Innovator
World-Class Innovator
I cannot recreate this on 4.2.f using OpenCMIS 0.10.0 and version 0.7 of the extension. I am setting a multi-value field with 100 values equal to "Test Multivalue N" where N is an integer between 0 and 99.

If I get a chance I'll see if the same code runs against 4.0.b or if it gets the same error as you do and I'll update my findings here.

Jeff

jpotts
World-Class Innovator
World-Class Innovator
Once I cranked it up to 200 entries I was able to make it fail on 4.2.f and 4.0.b. 100 entries worked fine on both versions.

Next step would be to run it against the Apache Chemistry inmemory server to see if it has the same problem. If so, you would need to take it up with the Apache Chemistry team. I probably won't have time to do that tonight. Maybe someone else can.

Jeff

jpotts
World-Class Innovator
World-Class Innovator
Florian pointed me to this:
https://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis...

So there are definitely hard limits baked in to OpenCMIS that restrict how wide and deep the extensions tree can be.

Jeff

cidus
Champ in-the-making
Champ in-the-making
Thank you, Jeff. It seems they have increased the limits for the next version, that should be enough for me.