I've built a workaround. It's ugly, but is seems to work.

@all: Please have a look and tell me if we should leave it or revert it. 
(revision 960633)


- Florian

-----Original Message-----
From: Stefane Fermigier [mailto:[email protected]] 
Sent: Montag, 5. Juli 2010 17:08
To: Florian Müller
Cc: [email protected]
Subject: Re: Problems with opencmis-client


On Jul 1, 2010, at 6:04 PM, Stefane Fermigier wrote:

> On Jul 1, 2010, at 5:09 PM, Florian Müller wrote:
> 
>> Hi Stefane,
>> 
>> Re 1: It is not complaining about the service document, it fails to read a 
>> type definition.
>>     Could you provide a public URL of the server? I will checks what's going 
>> on here.
> 
> Yes, it was in the code:
> 
>   static String URL = "http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository";;
>   static String LOGIN = "Administrator";
>   static String PASSWD = "Administrator";

I have run the opencmis client test again, this time against the old chemistry 
test server (started by running from the chemistry root: java -jar 
chemistry-tests/target/chemistry-tests-0.5-SNAPSHOT-jar-with-dependencies.jar 
), and with parameters:

    static String URL = "http://localhost:8082/cmis/repository";;
    static String LOGIN = "";
    static String PASSWD = "";
    static String REPO_NAME = "test";

I now get the following exception:

Jul 5, 2010 3:26:38 PM 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl <init>
INFO: Session Parameters: 
{org.apache.chemistry.opencmis.binding.spi.type=atompub, 
org.apache.chemistry.opencmis.user=, 
org.apache.chemistry.opencmis.binding.atompub.url=http://localhost:8082/cmis/repository,
 org.apache.chemistry.opencmis.session.repository.id=test, 
org.apache.chemistry.opencmis.password=}
Jul 5, 2010 3:26:38 PM 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl <init>
INFO: Session Locale: en_US
Jul 5, 2010 3:26:38 PM 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl <init>
INFO: Session Cache Size: 1000
Exception in thread "main" 
org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: 
Parsing exception!
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:460)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getTypeDefinitionInternal(AbstractAtomPubService.java:740)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.RepositoryServiceImpl.getTypeDefinition(RepositoryServiceImpl.java:104)
        at 
org.apache.chemistry.opencmis.client.bindings.impl.RepositoryServiceImpl.getTypeDefinition(RepositoryServiceImpl.java:137)
        at 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getTypeDefinition(PersistentSessionImpl.java:558)
        at 
org.apache.chemistry.opencmis.client.runtime.repository.PersistentObjectFactoryImpl.getTypeFromObjectData(PersistentObjectFactoryImpl.java:260)
        at 
org.apache.chemistry.opencmis.client.runtime.repository.PersistentObjectFactoryImpl.convertObject(PersistentObjectFactoryImpl.java:565)
        at 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getObject(PersistentSessionImpl.java:403)
        at 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getRootFolder(PersistentSessionImpl.java:508)
        at 
org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getRootFolder(PersistentSessionImpl.java:483)
        at test2.getRootFolder(test2.java:50)
        at test2.main(test2.java:65)
Caused by: java.lang.IllegalArgumentException: prefix cmis is not bound to a 
namespace
        at 
com.sun.xml.bind.DatatypeConverterImpl._parseQName(DatatypeConverterImpl.java:341)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.parseXsiType(XsiTypeLoader.java:89)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.startElement(XsiTypeLoader.java:67)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.ProxyLoader.startElement(ProxyLoader.java:55)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:481)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:242)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:176)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.unmarshalElement(AtomPubParser.java:333)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseElement(AtomPubParser.java:308)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseEntry(AtomPubParser.java:249)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parse(AtomPubParser.java:91)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:458)
        ... 11 more

Process finished with exit code 1

So, we get the same problem with the Chemistry test server implementation, 
which means that the opencmis client will probably have the same problem with 
all the Chemistry-based server implementations (which were considered correct 
after several interoperability experiences, involving the Alfresco TCK, the 
cmislib Python library, Objective-C client code, etc.).

  S.

> 
>> Re 2: CMIS has no notion of a default repository. All repositories are 
>> equal. 
> 
> Maybe, there is a getDefaultRepository() call in Chemistry Client and in 
> cmislib so people think probably that it is useful, see:
> 
> http://www.google.fr/search?num=100&hl=en&q=chemistry+%22getDefaultRepository%22&aq=f&aqi=&aql=&oq=&gs_rfai=
> 
>>     To get a list all available repositories call: List<Repository> r = 
>> sessionFactory.getRepositories(parameter);
>>     To connect to the first repository in the list try this: Session s = 
>> sessionFactory.getRepositories(parameter).get(0).createSession();
> 
> OK, thanks.
> 
>  S.
> 
>> 
>> 
>> - Florian
>> 
>> 
>> -----Original Message-----
>> From: Stefane Fermigier [mailto:[email protected]] 
>> Sent: Donnerstag, 1. Juli 2010 16:56
>> To: [email protected]
>> Subject: Problems with opencmis-client
>> 
>> Hi,
>> 
>> I'm string to play with opencmis-client against our repository, using the 
>> documentation on 
>> http://incubator.apache.org/chemistry/opencmis-client-api.html as a starter.
>> 
>> I'm starting with the code below, I have two questions:
>> 
>> 1. I get an exception when trying to connect 
>> "java.lang.IllegalArgumentException: prefix cmis is not bound to a 
>> namespace".
>> 
>> Our service document starts with "<service 
>> xmlns="http://www.w3.org/2007/app"; 
>> xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"; 
>> xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";>" so I'm 
>> a bit puzzled, specially since this is code generated by Chemistry.
>> 
>> Has the opencmis client code been tested agains the chemistry server code 
>> already ?
>> 
>> 2. The session factory asks me to give a repository id, I used to not need 
>> this information and go with the default repository. How can I get the 
>> default repository, or the list of provided repositories ?
>> 
>> Thanks,
>> 
>> S.
>> 
>> --
>> 
>> import org.apache.chemistry.opencmis.client.api.CmisObject;
>> import org.apache.chemistry.opencmis.client.api.Folder;
>> import org.apache.chemistry.opencmis.client.api.ItemIterable;
>> import org.apache.chemistry.opencmis.client.api.Session;
>> import org.apache.chemistry.opencmis.client.api.SessionFactory;
>> import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
>> import org.apache.chemistry.opencmis.commons.SessionParameter;
>> import org.apache.chemistry.opencmis.commons.enums.BindingType;
>> 
>> import java.util.HashMap;
>> import java.util.Map;
>> 
>> public class test2 {
>> 
>>   //static String URL = "http://localhost:8080/nuxeo/site/cmis/repository";;
>>   static String URL = 
>> "http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository";;
>>   static String LOGIN = "Administrator";
>>   static String PASSWD = "Administrator";
>> 
>>   public static Session getSession(String url, String login, String passwd) {
>>       // default factory implementation of client runtime
>>       SessionFactory f = SessionFactoryImpl.newInstance();
>>       Map<String, String> parameter = new HashMap<String, String>();
>> 
>>       // user credentials
>>       parameter.put(SessionParameter.USER, login);
>>       parameter.put(SessionParameter.PASSWORD, passwd);
>> 
>>       // connection settings
>>       parameter.put(SessionParameter.ATOMPUB_URL, url);
>>       parameter.put(SessionParameter.BINDING_TYPE, 
>> BindingType.ATOMPUB.value());
>>       parameter.put(SessionParameter.REPOSITORY_ID, "default");
>> 
>>       // session locale
>>       //parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY, "");
>>       //parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "de");
>>       //parameter.put(SessionParameter.LOCALE_VARIANT, "");
>> 
>>       // create session
>>       Session s = f.createSession(parameter);
>>       return s;
>>   }
>> 
>>   public static Folder getRootFolder(String serviceUrl, String login, String 
>> password) {
>>       Folder rootFolder = getSession(serviceUrl, login, 
>> password).getRootFolder();
>>       return rootFolder;
>>   }
>> 
>>   public static void walk(Folder folder, int level) {
>>       ItemIterable<CmisObject> children = folder.getChildren();
>>       for (CmisObject child : children) {
>>           System.out.println(child.getName());
>>           if 
>> (child.getPropertyValue("cmis:baseTypeId").equals("cmis:folder")) {
>>               walk((Folder) child, level + 1);
>>           }
>>       }
>>   }
>> 
>>   public static void main(String argv[]) {
>>       Folder rootFolder = getRootFolder(URL, LOGIN, PASSWD);
>>       walk(rootFolder, 0);
>>   }
>> 
>> }
>> 
>> --
>> 
>> Exception in thread "main" 
>> org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: 
>> Parsing exception!
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:460)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getTypeDefinitionInternal(AbstractAtomPubService.java:740)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.RepositoryServiceImpl.getTypeDefinition(RepositoryServiceImpl.java:104)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.impl.RepositoryServiceImpl.getTypeDefinition(RepositoryServiceImpl.java:137)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getTypeDefinition(PersistentSessionImpl.java:558)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.repository.PersistentObjectFactoryImpl.getTypeFromObjectData(PersistentObjectFactoryImpl.java:260)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.repository.PersistentObjectFactoryImpl.convertObject(PersistentObjectFactoryImpl.java:565)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getObject(PersistentSessionImpl.java:403)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getRootFolder(PersistentSessionImpl.java:508)
>>      at 
>> org.apache.chemistry.opencmis.client.runtime.PersistentSessionImpl.getRootFolder(PersistentSessionImpl.java:483)
>>      at test2.getRootFolder(test2.java:45)
>>      at test2.main(test2.java:60)
>> Caused by: java.lang.IllegalArgumentException: prefix cmis is not bound to a 
>> namespace
>>      at 
>> com.sun.xml.bind.DatatypeConverterImpl._parseQName(DatatypeConverterImpl.java:341)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.parseXsiType(XsiTypeLoader.java:89)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.startElement(XsiTypeLoader.java:67)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.ProxyLoader.startElement(ProxyLoader.java:55)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:481)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:242)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:176)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
>>      at 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.unmarshalElement(AtomPubParser.java:333)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseElement(AtomPubParser.java:308)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parseEntry(AtomPubParser.java:249)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parse(AtomPubParser.java:91)
>>      at 
>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:458)
>>      ... 11 more
>> 
>> Process finished with exit code 1
>> 
>> --
>> Stefane Fermigier, Founder and Chairman, Nuxeo
>> Open Source, Java EE based, Enterprise Content Management (ECM)
>> Web: http://www.nuxeo.com/ - Tel: +33 1 40 33 79 87
>> Twitter: http://twitter.com/sfermigier
>> "Knowing is not enough; we must apply. Being willing is not enough; we must 
>> do." - Leonardo da Vinci
>> 
> 
> --
> Stefane Fermigier, Founder and Chairman, Nuxeo
> Open Source, Java EE based, Enterprise Content Management (ECM)
> Web: http://www.nuxeo.com/ - Tel: +33 1 40 33 79 87
> Twitter: http://twitter.com/sfermigier
> "Knowing is not enough; we must apply. Being willing is not enough; we must 
> do." - Leonardo da Vinci
> 

--
Stefane Fermigier, Founder and Chairman, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
Web: http://www.nuxeo.com/ - Tel: +33 1 40 33 79 87
Twitter: http://twitter.com/sfermigier
"Knowing is not enough; we must apply. Being willing is not enough; we must 
do." - Leonardo da Vinci

Reply via email to