Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 332996 - EMF model packages are not registered within ServerCDOSession
Summary: EMF model packages are not registered within ServerCDOSession
Status: CLOSED FIXED
Alias: None
Product: EMF
Classification: Modeling
Component: cdo.core (show other bugs)
Version: 4.0   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Eike Stepper CLA
QA Contact: Eike Stepper CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-21 02:21 EST by Mantas CLA
Modified: 2011-06-23 03:42 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mantas CLA 2010-12-21 02:21:00 EST
Build Identifier: 20100917-0705

While trying out CDO v.4.0, snippet of code failed to find CDOObject ( getView() returns valid IView instance ):

CDOView cdoView = CDOServerUtil.openView(getView(), false);
CDOObject cdoObj = cdoView.getObject((CDOID) object);

with the exception:

[ERROR] Legacy mode is not enabled
org.eclipse.emf.cdo.util.LegacyModeNotEnabledException: Legacy mode is not enabled
        at org.eclipse.emf.spi.cdo.FSMUtil.adapt(FSMUtil.java:131)
        at org.eclipse.emf.internal.cdo.view.AbstractCDOView.newInstance(AbstractCDOView.java:640)
        at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:830)
        at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:701)
        at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:650)
        at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:1)
        at com.nomagic.ci.server.query.QueryContextWrapper.addResult(QueryContextWrapper.java:54)
        at org.eclipse.emf.cdo.server.internal.db.SQLQueryHandler.executeQuery(SQLQueryHandler.java:194)


unless I explicitly register EPackage of the returned CDOObject:

CDOUtil.prepareDynamicEPackage(eClass.getEPackage()); 

****

System.out.println(eClass.getEPackage().getClass().getName());
System.out.println(eClass.getEPackage()); 

produces:

org.eclipse.emf.ecore.impl.EPackageImpl
org.eclipse.emf.ecore.impl.EPackageImpl@4134e0 (name: project)
(nsURI:http://some_uri/project/1.0, nsPrefix: project) 

Reproducible: Always
Comment 1 Eike Stepper CLA 2010-12-21 04:14:42 EST
I could reproduce the exception. New stacktrace:


org.eclipse.emf.cdo.util.LegacyModeNotEnabledException: Legacy mode is not enabled
	at org.eclipse.emf.spi.cdo.FSMUtil.adapt(FSMUtil.java:92)
	at org.eclipse.emf.internal.cdo.view.AbstractCDOView.newInstance(AbstractCDOView.java:639)
	at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:805)
	at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:697)
	at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:649)
	at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:1)
	at org.eclipse.emf.cdo.internal.server.bundle.CDOCommandProvider._cdo(CDOCommandProvider.java:114)
	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:592)
	at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:155)
	at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
	at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
	at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
	at java.lang.Thread.run(Thread.java:595)
Comment 2 Eike Stepper CLA 2010-12-21 04:37:56 EST
If I deploy a model that has been generated for CDO (i.e. a native model) to the server, this exception does not occur! Check that your model is generated correctly and that it is deployed to the server.

But if the model is dynamic on the server (generated model not deployed) than in fact the above exception was thrown. I fixed this.

I also added a new CDOServer.openView() method and some more OSGi console commands.

Committed to HEAD
Comment 3 Eike Stepper CLA 2011-06-23 03:42:24 EDT
Available in R20110608-1407