Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » [EMFStore] Problem sharing project
[EMFStore] Problem sharing project [message #1158642] Mon, 28 October 2013 02:55 Go to next message
Scott Dybiec is currently offline Scott Dybiec
Messages: 130
Registered: July 2009
Senior Member
I ran into another snag using EMFStore. Here's my scenario:

First, I create a new project.
Second, I load my model instance from local disk using the standard EMF
XMI Resource.
Next, I add the contents of this Resource (a single root EObject) to the
EMFStore project modelElements list.
Finally, when I attempt to share my local project on the EMFStore server
I get the following error on the server console. What are possible
causes of this?


Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
SEVERE: Failed to invoke method createEmptyProject in class
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:

org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
method createEmptyProject in class
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:

at
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
at
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
at
org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
at
org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
Caused by:
org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
at
org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
at
org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
at
org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
at
org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
at
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
... 6 more
Caused by:
org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
at
org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
at
org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
at
org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
at
org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
at
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
at
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
at
org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
at
org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
contained in project:
com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
(abbreviatedName: Catch the Cooper Masters R...[truncated lots of
serialized object text]....xswainEntryCost: 75.0,
fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0, eightEntryCost:
100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
missingBowNumbers: null, regattaId: 1490)
at
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
at
org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
at
org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at
org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
at
org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
Caused by:
org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
Failed to retrieve ID for EObject contained in project:
com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
(abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
lots of serialized object text]....raceDesignType: sprint,
missingBowNumbers: null, regattaId: 1460)
at
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
at
org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
... 17 more
Re: [EMFStore] Problem sharing project [message #1159263 is a reply to message #1158642] Mon, 28 October 2013 12:02 Go to previous messageGo to next message
Maximilian Koegel is currently offline Maximilian Koegel
Messages: 201
Registered: July 2009
Senior Member
Hi Scott,

thank you for your report! Is it possible that you changed one of the
generated getters or setters or the generated factory? This could be the
reason for a new object being created during deserialization (and hence
this object has no ID).
If this is not the case:
Is it possible to share the model plugin and/or the Ecore with us?
Could you share the code snippet that loads the resource and puts its
contents into the project?
Hope this helps!

Cheers,
Maximilian

Am 28.10.2013 03:55, schrieb scott@xxxxxxxx:
>
> I ran into another snag using EMFStore. Here's my scenario:
>
> First, I create a new project.
> Second, I load my model instance from local disk using the standard EMF
> XMI Resource.
> Next, I add the contents of this Resource (a single root EObject) to the
> EMFStore project modelElements list.
> Finally, when I attempt to share my local project on the EMFStore server
> I get the following error on the server console. What are possible
> causes of this?
>
>
> Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
> SEVERE: Failed to invoke method createEmptyProject in class
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>
> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
> method createEmptyProject in class
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>
> at
> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
>
> at
> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>
> at
> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>
> at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
> at
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>
> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
> Caused by:
> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
> at
> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>
> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>
> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
> at
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>
> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>
> ... 6 more
> Caused by:
> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
> at
> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>
> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>
> at
> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>
> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
> at
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>
> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>
> at
> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>
> at
> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>
> at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
> at
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>
> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
> Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
> SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
> contained in project:
> com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
> (abbreviatedName: Catch the Cooper Masters R...[truncated lots of
> serialized object text]....xswainEntryCost: 75.0,
> fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0, eightEntryCost:
> 100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
> missingBowNumbers: null, regattaId: 1490)
> at
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
>
> at
> org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
>
> at
> org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
>
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
>
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
>
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
>
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>
> at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>
> at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>
> at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>
> at
> org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
>
> at
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
>
> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
> Caused by:
> org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
> Failed to retrieve ID for EObject contained in project:
> com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
> (abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
> null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
> lots of serialized object text]....raceDesignType: sprint,
> missingBowNumbers: null, regattaId: 1460)
> at
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
>
> at
> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
>
> ... 17 more
>


--
Maximilian Kögel

Get Professional Eclipse Support: http://eclipsesource.com/munich
Re: [EMFStore] Problem sharing project [message #1159386 is a reply to message #1159263] Mon, 28 October 2013 13:47 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott Dybiec
Messages: 130
Registered: July 2009
Senior Member
Maximilian,

I made no changes to the ID generation --- I'm using the out of the box
ID generator.

I made some progress debugging this problem using a simpler test case
outside of my application. It turns out that ordering of the operations
in my scenario matters. If the model instance is added to EMFStore's
model element list *before* the local project is shared, the exception
occurs.

On the other hand, if my model instance is added *after* sharing the
local project, no problem. I haven't tested beyond this, but wanted to
give you this update and get your thoughts.

Is this expected behavior for EMFStore?

I'll look into creating a standalone test case.

Scott

On 10/28/2013 8:02 AM, Maximilian Koegel wrote:
> Hi Scott,
>
> thank you for your report! Is it possible that you changed one of the
> generated getters or setters or the generated factory? This could be the
> reason for a new object being created during deserialization (and hence
> this object has no ID).
> If this is not the case:
> Is it possible to share the model plugin and/or the Ecore with us?
> Could you share the code snippet that loads the resource and puts its
> contents into the project?
> Hope this helps!
>
> Cheers,
> Maximilian
>
> Am 28.10.2013 03:55, schrieb scott@xxxxxxxx:
>>
>> I ran into another snag using EMFStore. Here's my scenario:
>>
>> First, I create a new project.
>> Second, I load my model instance from local disk using the standard EMF
>> XMI Resource.
>> Next, I add the contents of this Resource (a single root EObject) to the
>> EMFStore project modelElements list.
>> Finally, when I attempt to share my local project on the EMFStore server
>> I get the following error on the server console. What are possible
>> causes of this?
>>
>>
>> Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>> SEVERE: Failed to invoke method createEmptyProject in class
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>
>> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
>> method createEmptyProject in class
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>
>> at
>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
>>
>> at
>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>
>> at
>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>
>> at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>> at
>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>
>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>> Caused by:
>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>> at
>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>
>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>
>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>> at
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>
>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>
>> ... 6 more
>> Caused by:
>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>> at
>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>
>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>
>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>> at
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>
>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>
>> at
>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>
>> at
>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>
>> at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>> at
>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>
>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>> Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>> SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
>> contained in project:
>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
>> (abbreviatedName: Catch the Cooper Masters R...[truncated lots of
>> serialized object text]....xswainEntryCost: 75.0,
>> fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0, eightEntryCost:
>> 100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
>> missingBowNumbers: null, regattaId: 1490)
>> at
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
>>
>> at
>> org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
>>
>> at
>> org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
>>
>> at
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
>>
>> at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
>>
>> at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
>>
>> at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>>
>> at
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>
>> at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>
>> at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>
>> at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>
>> at
>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>
>> at
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>
>> at
>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>
>> at
>> org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
>>
>> at
>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
>>
>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>> at org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>> Caused by:
>> org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
>> Failed to retrieve ID for EObject contained in project:
>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
>> (abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
>> null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
>> lots of serialized object text]....raceDesignType: sprint,
>> missingBowNumbers: null, regattaId: 1460)
>> at
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
>>
>> at
>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
>>
>> ... 17 more
>>
>
>
Re: [EMFStore] Problem sharing project [message #1159473 is a reply to message #1159386] Mon, 28 October 2013 15:06 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott Dybiec
Messages: 130
Registered: July 2009
Senior Member
Maximilian,

Here's a test case that replicates the issue. It's based on your
HelloWorld example code as a base. If a model element is added to the
local project before it is shared AND that model element is part of an
EMF Resource, then problem occurs.

Hope this helps. Is there a workaround I can use?

Scott

package org.eclipse.emf.emfstore.example.helloworld;

import java.io.File;
import java.io.IOException;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
import org.eclipse.emf.emfstore.bowling.BowlingFactory;
import org.eclipse.emf.emfstore.bowling.League;
import org.eclipse.emf.emfstore.bowling.Player;
import org.eclipse.emf.emfstore.client.ESLocalProject;
import org.eclipse.emf.emfstore.client.ESRemoteProject;
import org.eclipse.emf.emfstore.client.ESServer;
import org.eclipse.emf.emfstore.client.ESUsersession;
import org.eclipse.emf.emfstore.client.ESWorkspace;
import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;
import org.eclipse.emf.emfstore.client.exceptions.ESServerNotFoundException;
import
org.eclipse.emf.emfstore.client.exceptions.ESServerStartFailedException;
import org.eclipse.emf.emfstore.common.ESSystemOutProgressMonitor;
import org.eclipse.emf.emfstore.server.exceptions.ESException;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;

/**
* An application that runs the demo.<br>
* Run a client and local server that demo the basic features of EMFStore.
*/
public class TestCaseApplication implements IApplication {

/**
* {@inheritDoc}
*/
public Object start(IApplicationContext context) {

try {
// Create a client representation for a local server and start a
local server.
ESServer localServer = ESServer.FACTORY.createAndStartLocalServer();
// Run a client on the local server that shows the basic features of
the EMFstore
runClient(localServer);
} catch (ESServerStartFailedException e) {
System.out.println("Server start failed!");
e.printStackTrace();
} catch (ESException e) {
// If there is a problem with the connection to the server,
// e.g., a network, a specific EMFStoreException will be thrown.
System.out.println("Connection to Server failed!");
e.printStackTrace();
}
return IApplication.EXIT_OK;
}

/**
* Run an EMFStore Client connecting to the given server.
*
* @param server the server
* @throws ESException if the server connection fails
*/
public static void runClient(ESServer server) throws ESException {
System.out.println("Client starting...");

// The workspace is the core controller to access local and remote
projects.
// A project is a container for models and their elements (EObjects).
// To get started, we obtain the current workspace of the client.
ESWorkspace workspace = ESWorkspaceProvider.INSTANCE.getWorkspace();

// The workspace stores all available servers that have been
configured. We add the local server that has
// already
// been started on the workspace.
workspace.addServer(server);
// Next, we remove all other existing servers
for (ESServer existingServer : workspace.getServers()) {
if (existingServer != server) {
try {
workspace.removeServer(existingServer);
} catch (ESServerNotFoundException e) {
e.printStackTrace();
}
}
}

// The workspace also contains a list of local projects that have
either been created locally or checked out
// from a server.
// We create a new local project. The project new created is not yet
shared with the server.
ESLocalProject demoProject = workspace.createLocalProject("DemoProject");

/**
* When the model elements are added here before the project is shared
AND the model element (league in this
* case) is contained in a resource, then this exception is thrown.
The loadModelOrig() works fine, while
* loadModel2(), loadModel3() and loadModel4() all throw exceptions.
*
* SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
contained in project:
* org.eclipse.emf.emfstore.bowling.impl.LeagueImpl@20ec6bb1
*/
League league = loadModel2();
demoProject.getModelElements().add(league);
demoProject.save();

// We delete all projects from the local workspace other than the one
just created.
for (ESLocalProject existingLocalProject : workspace.getLocalProjects()) {
if (existingLocalProject != demoProject) {
try {
existingLocalProject.delete(new ESSystemOutProgressMonitor());
} catch (IOException e) {
e.printStackTrace();
}
}
}

// Next, we create a user session by logging in to the local EMFStore
server with default super user
// credentials.
ESUsersession usersession = server.login("super", "super");

// Now we can share the created local project to our server.
ESRemoteProject remoteDemoProject =
demoProject.shareProject(usersession, new ESSystemOutProgressMonitor());

// We also retrieve a list of existing (and accessible) remote
projects on the server.
// Remote projects represent a project that is currently available on
the server.
// We delete all remote projects to clean up remaining projects from
previous launches.
for (ESRemoteProject existingRemoteProject :
server.getRemoteProjects(usersession)) {
if
(!existingRemoteProject.getGlobalProjectId().equals(remoteDemoProject.getGlobalProjectId()))
{
existingRemoteProject.delete(usersession, new NullProgressMonitor());
}
}

// Now we are all set: we have a client workspace with one server
configured and exactly one project shared to a
// server with only this one project.

// We check out a second, independent copy of the project (simulating
a second client).
ESLocalProject demoProjectCopy =
demoProject.getRemoteProject().checkout("DemoProject Copy",
usersession, new ESSystemOutProgressMonitor());

// We start working now with the local project and later we will
synchronize it with the copy of the project we
// just checked out.
// We create some EObjects and add them to the project, that is, to
project�s containment tree. Everything
// that
// is
// in the project�s containment tree (spanning tree on containment
references) is considered part of the
// project. We will use an example model about bowling.

// First we add a league and set the league name.
// League league = loadModel();

// Next we add the league to the root of the project. The project has
a containment feature called model
// element that holds all root elements of a project. This list is
comparable to the content list in EMF
// Resources that
// you can retrieve with getContents(). Adding something to the list
will add it to the project.
// demoProject.getModelElements().add(league);

// Then we create two players.
Player player1 = BowlingFactory.eINSTANCE.createPlayer();
player1.setName("Maximilian");
Player player2 = BowlingFactory.eINSTANCE.createPlayer();
player2.setName("Ottgar");

// Finally, we add the players to the league. Since the league is
already part of the project and League.players
// is a containment feature, the players also become part of the project.
league.getPlayers().add(player1);
league.getPlayers().add(player2);

// To synchronize the local changes of the client with the server, we
will commit the project.
demoProject.commit("My message", null,
new ESSystemOutProgressMonitor());
// The server is now up-to-date, but we still need to synchronize the
copy of the project we checked out
// earlier.
demoProjectCopy.update(new ESSystemOutProgressMonitor());

// We will now retrieve the copy of the league from the copy of the
project and assert its name and player count
// are equal with the name of the project�s league.
League leagueCopy = (League) demoProjectCopy.getModelElements().get(0);
if (league.getName().equals(leagueCopy.getName()) &&
league.getPlayers().size() == leagueCopy.getPlayers().size()) {
System.out.println("Leagues names and player count are equal.");
}

// Of course, we can also change something in the project copy and
synchronize it back to the project.
// We change the league name to correct the type and then commit and
update accordingly.
// This time, we use the IDs assigned to every EObject of a project to
identify the copy of league in the
// project�s copy.
leagueCopy = (League)
demoProjectCopy.getModelElement(demoProject.getModelElementId(league));
league.setName("Superbowling League");
demoProject.commit(new ESSystemOutProgressMonitor());
demoProjectCopy.update(new ESSystemOutProgressMonitor());

if (league.getName().equals(leagueCopy.getName()) &&
league.getPlayers().size() == leagueCopy.getPlayers().size()) {
System.out.println("Leagues names and player count are still equal.");
}
}

/**
* {@inheritDoc}
*/
public void stop() {
}

public static League loadModelOrig() {
// This works fine
League league = BowlingFactory.eINSTANCE.createLeague();
league.setName("Suprbowling League");
return league;
}

public static League loadModel2() {
// This fails
URI uri = createURI();
Resource resource = new XMIResourceImpl(uri);
League league = BowlingFactory.eINSTANCE.createLeague();
league.setName("Suprbowling League");
resource.getContents().add(league);
return league;
}

public static League loadModel3() {
// This fails
ResourceSet resourceSet = createResourceSet();
URI uri = createURI();
Resource resource = resourceSet.createResource(uri);
League league = BowlingFactory.eINSTANCE.createLeague();
league.setName("Suprbowling League");
resource.getContents().add(league);
return league;
}

public static League loadModel4() {
// This fails
League league;
createModel();
ResourceSet resourceSet = createResourceSet();
URI uri = createURI();
Resource resource = resourceSet.createResource(uri);
try {
resource.load(null);
league = (League) resource.getContents().get(0);
} catch (IOException e) {
e.printStackTrace();
league = null;
}
return league;
}

public static void createModel() {
ResourceSet resourceSet = createResourceSet();
URI uri = createURI();
Resource resource = resourceSet.createResource(uri);
League league = BowlingFactory.eINSTANCE.createLeague();
league.setName("Suprbowling League");
resource.getContents().add(league);
try {
resource.save(null);
System.out.println("Saved league to " + uri);
} catch (IOException e) {
e.printStackTrace();
}
}

public static URI createURI() {
return URI.createFileURI(new File("MyLeague.league").getAbsolutePath());
}

public static ResourceSet createResourceSet() {
// For testing to see whether UUIDs caused the problem
ResourceSet resourceSet = new ResourceSetImpl() {
@Override
public Resource createResource(URI uri) {
XMIResource resource = new XMIResourceImpl(uri) {
@Override
protected boolean useUUIDs() {
return false;
}
};
return resource;
}
};
return resourceSet;
}
}


On 10/28/2013 9:47 AM, scott@xxxxxxxx wrote:
> Maximilian,
>
> I made no changes to the ID generation --- I'm using the out of the box
> ID generator.
>
> I made some progress debugging this problem using a simpler test case
> outside of my application. It turns out that ordering of the operations
> in my scenario matters. If the model instance is added to EMFStore's
> model element list *before* the local project is shared, the exception
> occurs.
>
> On the other hand, if my model instance is added *after* sharing the
> local project, no problem. I haven't tested beyond this, but wanted to
> give you this update and get your thoughts.
>
> Is this expected behavior for EMFStore?
>
> I'll look into creating a standalone test case.
>
> Scott
>
> On 10/28/2013 8:02 AM, Maximilian Koegel wrote:
>> Hi Scott,
>>
>> thank you for your report! Is it possible that you changed one of the
>> generated getters or setters or the generated factory? This could be the
>> reason for a new object being created during deserialization (and hence
>> this object has no ID).
>> If this is not the case:
>> Is it possible to share the model plugin and/or the Ecore with us?
>> Could you share the code snippet that loads the resource and puts its
>> contents into the project?
>> Hope this helps!
>>
>> Cheers,
>> Maximilian
>>
>> Am 28.10.2013 03:55, schrieb scott@xxxxxxxx:
>>>
>>> I ran into another snag using EMFStore. Here's my scenario:
>>>
>>> First, I create a new project.
>>> Second, I load my model instance from local disk using the standard EMF
>>> XMI Resource.
>>> Next, I add the contents of this Resource (a single root EObject) to the
>>> EMFStore project modelElements list.
>>> Finally, when I attempt to share my local project on the EMFStore server
>>> I get the following error on the server console. What are possible
>>> causes of this?
>>>
>>>
>>> Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>> SEVERE: Failed to invoke method createEmptyProject in class
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>
>>>
>>> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
>>> method createEmptyProject in class
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>> at
>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>
>>>
>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>> at
>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>> Caused by:
>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>
>>>
>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>
>>>
>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>> at
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>
>>>
>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>
>>>
>>> ... 6 more
>>> Caused by:
>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>
>>>
>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>
>>>
>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>> at
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>
>>>
>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>> at
>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>
>>>
>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>> at
>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>> Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>> SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
>>> contained in project:
>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
>>> (abbreviatedName: Catch the Cooper Masters R...[truncated lots of
>>> serialized object text]....xswainEntryCost: 75.0,
>>> fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0, eightEntryCost:
>>> 100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
>>> missingBowNumbers: null, regattaId: 1490)
>>> at
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>
>>>
>>> at
>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
>>>
>>>
>>> at
>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
>>>
>>>
>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>> at
>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>> Caused by:
>>> org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
>>>
>>> Failed to retrieve ID for EObject contained in project:
>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
>>> (abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
>>> null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
>>> lots of serialized object text]....raceDesignType: sprint,
>>> missingBowNumbers: null, regattaId: 1460)
>>> at
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
>>>
>>>
>>> at
>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
>>>
>>>
>>> ... 17 more
>>>
>>
>>
>
Re: [EMFStore] Problem sharing project [message #1163098 is a reply to message #1159473] Wed, 30 October 2013 20:56 Go to previous messageGo to next message
Edgar Mueller is currently offline Edgar Mueller
Messages: 62
Registered: March 2011
Member
Hi Scott,

thanks for the test case and sorry for the delay (we're are currently
attending EclipseCon). We'll integrate a test case like this in our test
suite, since apparently it was missing. We also do have a fix ready and
will look at the other issues you reported as soon as possible.
We're planning to do a hotfix release addressing the reported issues at
the end of next week.

Cheers,
Edgar

Am 28.10.2013 16:06, schrieb scott@xxxxxxxx:
> Maximilian,
>
> Here's a test case that replicates the issue. It's based on your
> HelloWorld example code as a base. If a model element is added to the
> local project before it is shared AND that model element is part of an
> EMF Resource, then problem occurs.
>
> Hope this helps. Is there a workaround I can use?
>
> Scott
>
> package org.eclipse.emf.emfstore.example.helloworld;
>
> import java.io.File;
> import java.io.IOException;
>
> import org.eclipse.core.runtime.NullProgressMonitor;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.emf.ecore.xmi.XMIResource;
> import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
> import org.eclipse.emf.emfstore.bowling.BowlingFactory;
> import org.eclipse.emf.emfstore.bowling.League;
> import org.eclipse.emf.emfstore.bowling.Player;
> import org.eclipse.emf.emfstore.client.ESLocalProject;
> import org.eclipse.emf.emfstore.client.ESRemoteProject;
> import org.eclipse.emf.emfstore.client.ESServer;
> import org.eclipse.emf.emfstore.client.ESUsersession;
> import org.eclipse.emf.emfstore.client.ESWorkspace;
> import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;
> import
> org.eclipse.emf.emfstore.client.exceptions.ESServerNotFoundException;
> import
> org.eclipse.emf.emfstore.client.exceptions.ESServerStartFailedException;
> import org.eclipse.emf.emfstore.common.ESSystemOutProgressMonitor;
> import org.eclipse.emf.emfstore.server.exceptions.ESException;
> import org.eclipse.equinox.app.IApplication;
> import org.eclipse.equinox.app.IApplicationContext;
>
> /**
> * An application that runs the demo.<br>
> * Run a client and local server that demo the basic features of EMFStore.
> */
> public class TestCaseApplication implements IApplication {
>
> /**
> * {@inheritDoc}
> */
> public Object start(IApplicationContext context) {
>
> try {
> // Create a client representation for a local server and
> start a local server.
> ESServer localServer =
> ESServer.FACTORY.createAndStartLocalServer();
> // Run a client on the local server that shows the basic
> features of the EMFstore
> runClient(localServer);
> } catch (ESServerStartFailedException e) {
> System.out.println("Server start failed!");
> e.printStackTrace();
> } catch (ESException e) {
> // If there is a problem with the connection to the server,
> // e.g., a network, a specific EMFStoreException will be
> thrown.
> System.out.println("Connection to Server failed!");
> e.printStackTrace();
> }
> return IApplication.EXIT_OK;
> }
>
> /**
> * Run an EMFStore Client connecting to the given server.
> *
> * @param server the server
> * @throws ESException if the server connection fails
> */
> public static void runClient(ESServer server) throws ESException {
> System.out.println("Client starting...");
>
> // The workspace is the core controller to access local and
> remote projects.
> // A project is a container for models and their elements
> (EObjects).
> // To get started, we obtain the current workspace of the client.
> ESWorkspace workspace =
> ESWorkspaceProvider.INSTANCE.getWorkspace();
>
> // The workspace stores all available servers that have been
> configured. We add the local server that has
> // already
> // been started on the workspace.
> workspace.addServer(server);
> // Next, we remove all other existing servers
> for (ESServer existingServer : workspace.getServers()) {
> if (existingServer != server) {
> try {
> workspace.removeServer(existingServer);
> } catch (ESServerNotFoundException e) {
> e.printStackTrace();
> }
> }
> }
>
> // The workspace also contains a list of local projects that
> have either been created locally or checked out
> // from a server.
> // We create a new local project. The project new created is
> not yet shared with the server.
> ESLocalProject demoProject =
> workspace.createLocalProject("DemoProject");
>
> /**
> * When the model elements are added here before the project is
> shared AND the model element (league in this
> * case) is contained in a resource, then this exception is
> thrown. The loadModelOrig() works fine, while
> * loadModel2(), loadModel3() and loadModel4() all throw
> exceptions.
> *
> * SEVERE: Couldn't parse EObject: Failed to retrieve ID for
> EObject contained in project:
> * org.eclipse.emf.emfstore.bowling.impl.LeagueImpl@20ec6bb1
> */
> League league = loadModel2();
> demoProject.getModelElements().add(league);
> demoProject.save();
>
> // We delete all projects from the local workspace other than
> the one just created.
> for (ESLocalProject existingLocalProject :
> workspace.getLocalProjects()) {
> if (existingLocalProject != demoProject) {
> try {
> existingLocalProject.delete(new
> ESSystemOutProgressMonitor());
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
> }
>
> // Next, we create a user session by logging in to the local
> EMFStore server with default super user
> // credentials.
> ESUsersession usersession = server.login("super", "super");
>
> // Now we can share the created local project to our server.
> ESRemoteProject remoteDemoProject =
> demoProject.shareProject(usersession, new ESSystemOutProgressMonitor());
>
> // We also retrieve a list of existing (and accessible) remote
> projects on the server.
> // Remote projects represent a project that is currently
> available on the server.
> // We delete all remote projects to clean up remaining projects
> from previous launches.
> for (ESRemoteProject existingRemoteProject :
> server.getRemoteProjects(usersession)) {
> if
> (!existingRemoteProject.getGlobalProjectId().equals(remoteDemoProject.getGlobalProjectId()))
> {
> existingRemoteProject.delete(usersession, new
> NullProgressMonitor());
> }
> }
>
> // Now we are all set: we have a client workspace with one
> server configured and exactly one project shared to a
> // server with only this one project.
>
> // We check out a second, independent copy of the project
> (simulating a second client).
> ESLocalProject demoProjectCopy =
> demoProject.getRemoteProject().checkout("DemoProject Copy",
> usersession, new ESSystemOutProgressMonitor());
>
> // We start working now with the local project and later we
> will synchronize it with the copy of the project we
> // just checked out.
> // We create some EObjects and add them to the project, that
> is, to project�s containment tree. Everything
> // that
> // is
> // in the project�s containment tree (spanning tree on
> containment references) is considered part of the
> // project. We will use an example model about bowling.
>
> // First we add a league and set the league name.
> // League league = loadModel();
>
> // Next we add the league to the root of the project. The
> project has a containment feature called model
> // element that holds all root elements of a project. This list
> is comparable to the content list in EMF
> // Resources that
> // you can retrieve with getContents(). Adding something to the
> list will add it to the project.
> // demoProject.getModelElements().add(league);
>
> // Then we create two players.
> Player player1 = BowlingFactory.eINSTANCE.createPlayer();
> player1.setName("Maximilian");
> Player player2 = BowlingFactory.eINSTANCE.createPlayer();
> player2.setName("Ottgar");
>
> // Finally, we add the players to the league. Since the league
> is already part of the project and League.players
> // is a containment feature, the players also become part of
> the project.
> league.getPlayers().add(player1);
> league.getPlayers().add(player2);
>
> // To synchronize the local changes of the client with the
> server, we will commit the project.
> demoProject.commit("My message", null,
> new ESSystemOutProgressMonitor());
> // The server is now up-to-date, but we still need to
> synchronize the copy of the project we checked out
> // earlier.
> demoProjectCopy.update(new ESSystemOutProgressMonitor());
>
> // We will now retrieve the copy of the league from the copy of
> the project and assert its name and player count
> // are equal with the name of the project�s league.
> League leagueCopy = (League)
> demoProjectCopy.getModelElements().get(0);
> if (league.getName().equals(leagueCopy.getName()) &&
> league.getPlayers().size() ==
> leagueCopy.getPlayers().size()) {
> System.out.println("Leagues names and player count are
> equal.");
> }
>
> // Of course, we can also change something in the project copy
> and synchronize it back to the project.
> // We change the league name to correct the type and then
> commit and update accordingly.
> // This time, we use the IDs assigned to every EObject of a
> project to identify the copy of league in the
> // project�s copy.
> leagueCopy = (League)
> demoProjectCopy.getModelElement(demoProject.getModelElementId(league));
> league.setName("Superbowling League");
> demoProject.commit(new ESSystemOutProgressMonitor());
> demoProjectCopy.update(new ESSystemOutProgressMonitor());
>
> if (league.getName().equals(leagueCopy.getName()) &&
> league.getPlayers().size() ==
> leagueCopy.getPlayers().size()) {
> System.out.println("Leagues names and player count are
> still equal.");
> }
> }
>
> /**
> * {@inheritDoc}
> */
> public void stop() {
> }
>
> public static League loadModelOrig() {
> // This works fine
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> return league;
> }
>
> public static League loadModel2() {
> // This fails
> URI uri = createURI();
> Resource resource = new XMIResourceImpl(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> return league;
> }
>
> public static League loadModel3() {
> // This fails
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> return league;
> }
>
> public static League loadModel4() {
> // This fails
> League league;
> createModel();
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> try {
> resource.load(null);
> league = (League) resource.getContents().get(0);
> } catch (IOException e) {
> e.printStackTrace();
> league = null;
> }
> return league;
> }
>
> public static void createModel() {
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> try {
> resource.save(null);
> System.out.println("Saved league to " + uri);
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
>
> public static URI createURI() {
> return URI.createFileURI(new
> File("MyLeague.league").getAbsolutePath());
> }
>
> public static ResourceSet createResourceSet() {
> // For testing to see whether UUIDs caused the problem
> ResourceSet resourceSet = new ResourceSetImpl() {
> @Override
> public Resource createResource(URI uri) {
> XMIResource resource = new XMIResourceImpl(uri) {
> @Override
> protected boolean useUUIDs() {
> return false;
> }
> };
> return resource;
> }
> };
> return resourceSet;
> }
> }
>
>
> On 10/28/2013 9:47 AM, scott@xxxxxxxx wrote:
>> Maximilian,
>>
>> I made no changes to the ID generation --- I'm using the out of the box
>> ID generator.
>>
>> I made some progress debugging this problem using a simpler test case
>> outside of my application. It turns out that ordering of the operations
>> in my scenario matters. If the model instance is added to EMFStore's
>> model element list *before* the local project is shared, the exception
>> occurs.
>>
>> On the other hand, if my model instance is added *after* sharing the
>> local project, no problem. I haven't tested beyond this, but wanted to
>> give you this update and get your thoughts.
>>
>> Is this expected behavior for EMFStore?
>>
>> I'll look into creating a standalone test case.
>>
>> Scott
>>
>> On 10/28/2013 8:02 AM, Maximilian Koegel wrote:
>>> Hi Scott,
>>>
>>> thank you for your report! Is it possible that you changed one of the
>>> generated getters or setters or the generated factory? This could be the
>>> reason for a new object being created during deserialization (and hence
>>> this object has no ID).
>>> If this is not the case:
>>> Is it possible to share the model plugin and/or the Ecore with us?
>>> Could you share the code snippet that loads the resource and puts its
>>> contents into the project?
>>> Hope this helps!
>>>
>>> Cheers,
>>> Maximilian
>>>
>>> Am 28.10.2013 03:55, schrieb scott@xxxxxxxx:
>>>>
>>>> I ran into another snag using EMFStore. Here's my scenario:
>>>>
>>>> First, I create a new project.
>>>> Second, I load my model instance from local disk using the standard EMF
>>>> XMI Resource.
>>>> Next, I add the contents of this Resource (a single root EObject) to
>>>> the
>>>> EMFStore project modelElements list.
>>>> Finally, when I attempt to share my local project on the EMFStore
>>>> server
>>>> I get the following error on the server console. What are possible
>>>> causes of this?
>>>>
>>>>
>>>> Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>>> SEVERE: Failed to invoke method createEmptyProject in class
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>>
>>>>
>>>>
>>>> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
>>>> method createEmptyProject in class
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>>
>>>>
>>>>
>>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>>
>>>>
>>>>
>>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>>
>>>>
>>>>
>>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>>
>>>>
>>>>
>>>> ... 6 more
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>>
>>>>
>>>>
>>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>>
>>>>
>>>>
>>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>>
>>>>
>>>>
>>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>>> SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
>>>> contained in project:
>>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
>>>> (abbreviatedName: Catch the Cooper Masters R...[truncated lots of
>>>> serialized object text]....xswainEntryCost: 75.0,
>>>> fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0,
>>>> eightEntryCost:
>>>> 100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
>>>> missingBowNumbers: null, regattaId: 1490)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
>>>>
>>>>
>>>> Failed to retrieve ID for EObject contained in project:
>>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
>>>> (abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
>>>> null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
>>>> lots of serialized object text]....raceDesignType: sprint,
>>>> missingBowNumbers: null, regattaId: 1460)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
>>>>
>>>>
>>>>
>>>> ... 17 more
>>>>
>>>
>>>
>>
>


--
Edgar Mueller

Get Professional Eclipse Support: http://eclipsesource.com/munich
Re: [EMFStore] Problem sharing project [message #1164320 is a reply to message #1159473] Thu, 31 October 2013 15:45 Go to previous message
Maximilian Koegel is currently offline Maximilian Koegel
Messages: 201
Registered: July 2009
Senior Member
Scott,

thank you very much for the test case. A work around would be to remove
the object you add to the project from the resource prior to adding it
to the project. You can do this with resource.getContents().remove().

Cheers,
Maximilian

Am 28.10.2013 16:06, schrieb scott@xxxxxxxx:
> Maximilian,
>
> Here's a test case that replicates the issue. It's based on your
> HelloWorld example code as a base. If a model element is added to the
> local project before it is shared AND that model element is part of an
> EMF Resource, then problem occurs.
>
> Hope this helps. Is there a workaround I can use?
>
> Scott
>
> package org.eclipse.emf.emfstore.example.helloworld;
>
> import java.io.File;
> import java.io.IOException;
>
> import org.eclipse.core.runtime.NullProgressMonitor;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.emf.ecore.xmi.XMIResource;
> import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
> import org.eclipse.emf.emfstore.bowling.BowlingFactory;
> import org.eclipse.emf.emfstore.bowling.League;
> import org.eclipse.emf.emfstore.bowling.Player;
> import org.eclipse.emf.emfstore.client.ESLocalProject;
> import org.eclipse.emf.emfstore.client.ESRemoteProject;
> import org.eclipse.emf.emfstore.client.ESServer;
> import org.eclipse.emf.emfstore.client.ESUsersession;
> import org.eclipse.emf.emfstore.client.ESWorkspace;
> import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;
> import
> org.eclipse.emf.emfstore.client.exceptions.ESServerNotFoundException;
> import
> org.eclipse.emf.emfstore.client.exceptions.ESServerStartFailedException;
> import org.eclipse.emf.emfstore.common.ESSystemOutProgressMonitor;
> import org.eclipse.emf.emfstore.server.exceptions.ESException;
> import org.eclipse.equinox.app.IApplication;
> import org.eclipse.equinox.app.IApplicationContext;
>
> /**
> * An application that runs the demo.<br>
> * Run a client and local server that demo the basic features of EMFStore.
> */
> public class TestCaseApplication implements IApplication {
>
> /**
> * {@inheritDoc}
> */
> public Object start(IApplicationContext context) {
>
> try {
> // Create a client representation for a local server and
> start a local server.
> ESServer localServer =
> ESServer.FACTORY.createAndStartLocalServer();
> // Run a client on the local server that shows the basic
> features of the EMFstore
> runClient(localServer);
> } catch (ESServerStartFailedException e) {
> System.out.println("Server start failed!");
> e.printStackTrace();
> } catch (ESException e) {
> // If there is a problem with the connection to the server,
> // e.g., a network, a specific EMFStoreException will be
> thrown.
> System.out.println("Connection to Server failed!");
> e.printStackTrace();
> }
> return IApplication.EXIT_OK;
> }
>
> /**
> * Run an EMFStore Client connecting to the given server.
> *
> * @param server the server
> * @throws ESException if the server connection fails
> */
> public static void runClient(ESServer server) throws ESException {
> System.out.println("Client starting...");
>
> // The workspace is the core controller to access local and
> remote projects.
> // A project is a container for models and their elements
> (EObjects).
> // To get started, we obtain the current workspace of the client.
> ESWorkspace workspace =
> ESWorkspaceProvider.INSTANCE.getWorkspace();
>
> // The workspace stores all available servers that have been
> configured. We add the local server that has
> // already
> // been started on the workspace.
> workspace.addServer(server);
> // Next, we remove all other existing servers
> for (ESServer existingServer : workspace.getServers()) {
> if (existingServer != server) {
> try {
> workspace.removeServer(existingServer);
> } catch (ESServerNotFoundException e) {
> e.printStackTrace();
> }
> }
> }
>
> // The workspace also contains a list of local projects that
> have either been created locally or checked out
> // from a server.
> // We create a new local project. The project new created is not
> yet shared with the server.
> ESLocalProject demoProject =
> workspace.createLocalProject("DemoProject");
>
> /**
> * When the model elements are added here before the project is
> shared AND the model element (league in this
> * case) is contained in a resource, then this exception is
> thrown. The loadModelOrig() works fine, while
> * loadModel2(), loadModel3() and loadModel4() all throw
> exceptions.
> *
> * SEVERE: Couldn't parse EObject: Failed to retrieve ID for
> EObject contained in project:
> * org.eclipse.emf.emfstore.bowling.impl.LeagueImpl@20ec6bb1
> */
> League league = loadModel2();
> demoProject.getModelElements().add(league);
> demoProject.save();
>
> // We delete all projects from the local workspace other than
> the one just created.
> for (ESLocalProject existingLocalProject :
> workspace.getLocalProjects()) {
> if (existingLocalProject != demoProject) {
> try {
> existingLocalProject.delete(new
> ESSystemOutProgressMonitor());
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
> }
>
> // Next, we create a user session by logging in to the local
> EMFStore server with default super user
> // credentials.
> ESUsersession usersession = server.login("super", "super");
>
> // Now we can share the created local project to our server.
> ESRemoteProject remoteDemoProject =
> demoProject.shareProject(usersession, new ESSystemOutProgressMonitor());
>
> // We also retrieve a list of existing (and accessible) remote
> projects on the server.
> // Remote projects represent a project that is currently
> available on the server.
> // We delete all remote projects to clean up remaining projects
> from previous launches.
> for (ESRemoteProject existingRemoteProject :
> server.getRemoteProjects(usersession)) {
> if
> (!existingRemoteProject.getGlobalProjectId().equals(remoteDemoProject.getGlobalProjectId()))
> {
> existingRemoteProject.delete(usersession, new
> NullProgressMonitor());
> }
> }
>
> // Now we are all set: we have a client workspace with one
> server configured and exactly one project shared to a
> // server with only this one project.
>
> // We check out a second, independent copy of the project
> (simulating a second client).
> ESLocalProject demoProjectCopy =
> demoProject.getRemoteProject().checkout("DemoProject Copy",
> usersession, new ESSystemOutProgressMonitor());
>
> // We start working now with the local project and later we will
> synchronize it with the copy of the project we
> // just checked out.
> // We create some EObjects and add them to the project, that is,
> to project�s containment tree. Everything
> // that
> // is
> // in the project�s containment tree (spanning tree on
> containment references) is considered part of the
> // project. We will use an example model about bowling.
>
> // First we add a league and set the league name.
> // League league = loadModel();
>
> // Next we add the league to the root of the project. The
> project has a containment feature called model
> // element that holds all root elements of a project. This list
> is comparable to the content list in EMF
> // Resources that
> // you can retrieve with getContents(). Adding something to the
> list will add it to the project.
> // demoProject.getModelElements().add(league);
>
> // Then we create two players.
> Player player1 = BowlingFactory.eINSTANCE.createPlayer();
> player1.setName("Maximilian");
> Player player2 = BowlingFactory.eINSTANCE.createPlayer();
> player2.setName("Ottgar");
>
> // Finally, we add the players to the league. Since the league
> is already part of the project and League.players
> // is a containment feature, the players also become part of the
> project.
> league.getPlayers().add(player1);
> league.getPlayers().add(player2);
>
> // To synchronize the local changes of the client with the
> server, we will commit the project.
> demoProject.commit("My message", null,
> new ESSystemOutProgressMonitor());
> // The server is now up-to-date, but we still need to
> synchronize the copy of the project we checked out
> // earlier.
> demoProjectCopy.update(new ESSystemOutProgressMonitor());
>
> // We will now retrieve the copy of the league from the copy of
> the project and assert its name and player count
> // are equal with the name of the project�s league.
> League leagueCopy = (League)
> demoProjectCopy.getModelElements().get(0);
> if (league.getName().equals(leagueCopy.getName()) &&
> league.getPlayers().size() == leagueCopy.getPlayers().size()) {
> System.out.println("Leagues names and player count are
> equal.");
> }
>
> // Of course, we can also change something in the project copy
> and synchronize it back to the project.
> // We change the league name to correct the type and then commit
> and update accordingly.
> // This time, we use the IDs assigned to every EObject of a
> project to identify the copy of league in the
> // project�s copy.
> leagueCopy = (League)
> demoProjectCopy.getModelElement(demoProject.getModelElementId(league));
> league.setName("Superbowling League");
> demoProject.commit(new ESSystemOutProgressMonitor());
> demoProjectCopy.update(new ESSystemOutProgressMonitor());
>
> if (league.getName().equals(leagueCopy.getName()) &&
> league.getPlayers().size() == leagueCopy.getPlayers().size()) {
> System.out.println("Leagues names and player count are still
> equal.");
> }
> }
>
> /**
> * {@inheritDoc}
> */
> public void stop() {
> }
>
> public static League loadModelOrig() {
> // This works fine
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> return league;
> }
>
> public static League loadModel2() {
> // This fails
> URI uri = createURI();
> Resource resource = new XMIResourceImpl(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> return league;
> }
>
> public static League loadModel3() {
> // This fails
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> return league;
> }
>
> public static League loadModel4() {
> // This fails
> League league;
> createModel();
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> try {
> resource.load(null);
> league = (League) resource.getContents().get(0);
> } catch (IOException e) {
> e.printStackTrace();
> league = null;
> }
> return league;
> }
>
> public static void createModel() {
> ResourceSet resourceSet = createResourceSet();
> URI uri = createURI();
> Resource resource = resourceSet.createResource(uri);
> League league = BowlingFactory.eINSTANCE.createLeague();
> league.setName("Suprbowling League");
> resource.getContents().add(league);
> try {
> resource.save(null);
> System.out.println("Saved league to " + uri);
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
>
> public static URI createURI() {
> return URI.createFileURI(new
> File("MyLeague.league").getAbsolutePath());
> }
>
> public static ResourceSet createResourceSet() {
> // For testing to see whether UUIDs caused the problem
> ResourceSet resourceSet = new ResourceSetImpl() {
> @Override
> public Resource createResource(URI uri) {
> XMIResource resource = new XMIResourceImpl(uri) {
> @Override
> protected boolean useUUIDs() {
> return false;
> }
> };
> return resource;
> }
> };
> return resourceSet;
> }
> }
>
>
> On 10/28/2013 9:47 AM, scott@xxxxxxxx wrote:
>> Maximilian,
>>
>> I made no changes to the ID generation --- I'm using the out of the box
>> ID generator.
>>
>> I made some progress debugging this problem using a simpler test case
>> outside of my application. It turns out that ordering of the operations
>> in my scenario matters. If the model instance is added to EMFStore's
>> model element list *before* the local project is shared, the exception
>> occurs.
>>
>> On the other hand, if my model instance is added *after* sharing the
>> local project, no problem. I haven't tested beyond this, but wanted to
>> give you this update and get your thoughts.
>>
>> Is this expected behavior for EMFStore?
>>
>> I'll look into creating a standalone test case.
>>
>> Scott
>>
>> On 10/28/2013 8:02 AM, Maximilian Koegel wrote:
>>> Hi Scott,
>>>
>>> thank you for your report! Is it possible that you changed one of the
>>> generated getters or setters or the generated factory? This could be the
>>> reason for a new object being created during deserialization (and hence
>>> this object has no ID).
>>> If this is not the case:
>>> Is it possible to share the model plugin and/or the Ecore with us?
>>> Could you share the code snippet that loads the resource and puts its
>>> contents into the project?
>>> Hope this helps!
>>>
>>> Cheers,
>>> Maximilian
>>>
>>> Am 28.10.2013 03:55, schrieb scott@xxxxxxxx:
>>>>
>>>> I ran into another snag using EMFStore. Here's my scenario:
>>>>
>>>> First, I create a new project.
>>>> Second, I load my model instance from local disk using the standard EMF
>>>> XMI Resource.
>>>> Next, I add the contents of this Resource (a single root EObject) to
>>>> the
>>>> EMFStore project modelElements list.
>>>> Finally, when I attempt to share my local project on the EMFStore
>>>> server
>>>> I get the following error on the server console. What are possible
>>>> causes of this?
>>>>
>>>>
>>>> Oct 27, 2013 9:49:27 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>>> SEVERE: Failed to invoke method createEmptyProject in class
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>>
>>>>
>>>>
>>>> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
>>>> method createEmptyProject in class
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl:
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:129)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>>
>>>>
>>>>
>>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>>
>>>>
>>>>
>>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>>
>>>>
>>>>
>>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>>
>>>>
>>>>
>>>> ... 6 more
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.InvalidInputException:
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObject(AbstractSubEmfstoreInterface.java:189)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.sanityCheckObjects(AbstractSubEmfstoreInterface.java:176)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.subinterfaces.ProjectSubInterfaceImpl.createProject(ProjectSubInterfaceImpl.java:173)
>>>>
>>>>
>>>>
>>>> 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.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface.execute(AbstractSubEmfstoreInterface.java:149)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.core.EMFStoreImpl.invoke(EMFStoreImpl.java:129)
>>>>
>>>>
>>>>
>>>> at com.sun.proxy.$Proxy4.createEmptyProject(Unknown Source)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcEmfStoreImpl.createEmptyProject(XmlRpcEmfStoreImpl.java:89)
>>>>
>>>>
>>>>
>>>> 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.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Oct 27, 2013 10:25:57 PM org.apache.xmlrpc.server.XmlRpcErrorLogger log
>>>> SEVERE: Couldn't parse EObject: Failed to retrieve ID for EObject
>>>> contained in project:
>>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@b6c31dc
>>>> (abbreviatedName: Catch the Cooper Masters R...[truncated lots of
>>>> serialized object text]....xswainEntryCost: 75.0,
>>>> fourWithoutCoxswainEntryCost: 75.0, quadEntryCost: 75.0,
>>>> eightEntryCost:
>>>> 100.0, octupleEntryCost: 100.0, raceDesignType: sprint,
>>>> missingBowNumbers: null, regattaId: 1490)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:67)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.parser.XmlRpcRequestParser.endElement(XmlRpcRequestParser.java:162)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>>
>>>>
>>>>
>>>> at
>>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
>>>>
>>>>
>>>>
>>>> at org.apache.xmlrpc.webserver.Connection.run(Connection.java:208)
>>>> at
>>>> org.apache.xmlrpc.util.ThreadPool$Poolable$1.run(ThreadPool.java:68)
>>>> Caused by:
>>>> org.eclipse.emf.emfstore.internal.server.exceptions.SerializationException:
>>>>
>>>>
>>>> Failed to retrieve ID for EObject contained in project:
>>>> com.humanfactor.rw.model.regatta.impl.RegattaImpl@5152a09f
>>>> (abbreviatedName: Stotesbury Cup Regatta, duration: 2, regattaHomePage:
>>>> null, registeredUsRowing: false, resultsUrl: , lifeCycleS...[truncated
>>>> lots of serialized object text]....raceDesignType: sprint,
>>>> missingBowNumbers: null, regattaId: 1460)
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResultfromResource(EObjectTypeParser.java:108)
>>>>
>>>>
>>>>
>>>> at
>>>> org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.util.EObjectTypeParser.getResult(EObjectTypeParser.java:61)
>>>>
>>>>
>>>>
>>>> ... 17 more
>>>>
>>>
>>>
>>
>


--
Maximilian Kögel

Get Professional Eclipse Support: http://eclipsesource.com/munich
Previous Topic:[Teneo] How to use real text datatypes in database?
Next Topic:PrimitiveTypes For Metamodel
Goto Forum:
  


Current Time: Fri Oct 24 19:07:20 GMT 2014

Powered by FUDForum. Page generated in 0.05589 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software