Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » JET2 start transfomation procramatically
JET2 start transfomation procramatically [message #48481] Mon, 04 September 2006 17:03 Go to next message
Eclipse UserFriend
Originally posted by: mystic77.gmx.net

Hi,
I want to use Jet2 and start the transformation programatically.
So I created an headless eclipse plugin and decided to execute the
transformation inside this environment.
I found the JET2Platform.runTransform(...) method and tried to use it, but
I received a nullpointer exception.
Has anybody an idea how to achive this or is there somthing I forgot ?


Code snippet:

public class Application implements IPlatformRunnable {
public Object run(Object args) throws Exception {
JET2Context context = new JET2Context(null);
JET2Platform.runTransform("MyJetProkect", context , new
NullProgressMonitor());
return IPlatformRunnable.EXIT_OK;
}
}




Exception:


java.lang.NullPointerException
at
org.eclipse.emf.common.CommonPlugin$Implementation.loadClass (CommonPlugin.java:198)
at org.eclipse.emf.common.CommonPlugin.loadClass(CommonPlugin.j ava:98)
at
org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder.<clinit>(DefaultEcoreBuilder.java:54)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.createEcoreBuilder (XMLHandler.java:2799)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.<init>(XMLHandler.java:394)
at
org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler.<init>(SAXXMLHandler.java:43)
at
org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.makeDefaultHandle r(XMLLoadImpl.java:310)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:141)
at
org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLRes ourceImpl.java:179)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:1089)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:895)
at
org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:126)
at
org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:106)
at
org.eclipse.jet.internal.extensionpoints.TransformDataFactor y.createTransformData(TransformDataFactory.java:140)
at
org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.a ddTransforms(DeployedJETBundleProvider.java:165)
at
org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.s tartup(DeployedJETBundleProvider.java:106)
at
org.eclipse.jet.internal.runtime.JETBundleManager.startup(JE TBundleManager.java:258)
at
org.eclipse.jet.internal.InternalJET2Platform.start(Internal JET2Platform.java:260)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:995)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:989)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:970)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:317)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:256)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .preFindLocalClass(EclipseLazyStarter.java:86)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:409)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:188)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:339)
at
org.eclipse.osgi.framework.internal.core.SingleSourcePackage .loadClass(SingleSourcePackage.java:37)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:388)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:352)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:83)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319 )
at xx.Application.run(Application.java:30)
at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)

Thanks in advance
david
Re: JET2 start transfomation procramatically [message #48837 is a reply to message #48481] Wed, 06 September 2006 13:03 Go to previous message
Paul Elder is currently offline Paul ElderFriend
Messages: 849
Registered: July 2009
Senior Member
David:

Looking at your stack trace, it is misleading. It indicates that you do not
have the XSD plug-in installed. JET is using EMF to load XML documents. EMF
looks for the XSD plug-in (just in case the XML document has an XSD schema),
and prints the stack trace when it doesn't find the XSD plug-in. However,
the XML loading continues without problem dispite XSD's absence.

Your problem is that you pass null to the JET2Context() constructor. JET
uses this argument as the root of its input model. If not set in the
constructor, you can assign it later with context.setSource(...).

Here is a quick outline of the runTransformXXX methods, one might be more
appropriate to your needs:

There are several variants of JET2Platform.runTransformXXX, depending on the
nature of your input.

If you have a loaded model in hand, then use runTransformOnObject. Example:

org.eclipse.emf.ecore.resource.Resource myEMFModel = ...;
JET2Platform.runTransformOnObject("...transform id...", myEMFModel, new
NullProgressMonitor).

If you have a workspace file that serves as your input, use
runTransformOnResource. Example:

org.eclipse.core.resources.IResource myWorkspaceFile = ...;
JET2Platform.runTransformOnResource ("...id...", myWorkspaceFile, new
NullProgressMonitor)

If you have a in memory string representation of your model (say, an XML
document), then use JET2Platform.runTransformOnString:
String myXMLString = "...";
JET2Platform.runTransformOnString("...id...", myXMLString, "xml" /* file
extension */, new NullProgressMonitor());

The abvoe methods convert their input into an in-memory model, and then
delegate to runTransform:
Object rootOfInMemoryModel = ...
JET2Context context = new JET2Context(rootOfInMemoryModel); // some use
context.setSource()
JET2Platform.runTransform("...id...", context, new
NullProgressMonitor());

So, the source of your NullPointerException is that your JET2Context()
object is constructed with a null source, and this is never set to something
the transformation can use. Depending on your circumstances, I would suggest
using one of the runTransformOnXXX() methods rather than runTransform().

Paul Elder
JET2 Development Lead
IBM Rational Software


"david" <mystic77@gmx.net> wrote in message
news:477d47908791a7a5e2cc0999b8329983$1@www.eclipse.org...
> Hi, I want to use Jet2 and start the transformation programatically. So I
> created an headless eclipse plugin and decided to execute the
> transformation inside this environment. I found the
> JET2Platform.runTransform(...) method and tried to use it, but I received
> a nullpointer exception. Has anybody an idea how to achive this or is
> there somthing I forgot ?
>
>
> Code snippet:
> public class Application implements IPlatformRunnable {
> public Object run(Object args) throws Exception {
> JET2Context context = new JET2Context(null);
> JET2Platform.runTransform("MyJetProkect", context , new
> NullProgressMonitor());
> return IPlatformRunnable.EXIT_OK;
> }
> }
>
>
>
>
> Exception:
>
> java.lang.NullPointerException
> at
> org.eclipse.emf.common.CommonPlugin$Implementation.loadClass (CommonPlugin.java:198)
> at org.eclipse.emf.common.CommonPlugin.loadClass(CommonPlugin.j ava:98)
> at
> org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder.<clinit>(DefaultEcoreBuilder.java:54)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLHandler.createEcoreBuilder (XMLHandler.java:2799)
> at org.eclipse.emf.ecore.xmi.impl.XMLHandler.<init>(XMLHandler.java:394)
> at
> org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler.<init>(SAXXMLHandler.java:43)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.makeDefaultHandle r(XMLLoadImpl.java:310)
> at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:141)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLRes ourceImpl.java:179)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:1089)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:895)
> at
> org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:126)
> at
> org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:106)
> at
> org.eclipse.jet.internal.extensionpoints.TransformDataFactor y.createTransformData(TransformDataFactory.java:140)
> at
> org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.a ddTransforms(DeployedJETBundleProvider.java:165)
> at
> org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.s tartup(DeployedJETBundleProvider.java:106)
> at
> org.eclipse.jet.internal.runtime.JETBundleManager.startup(JE TBundleManager.java:258)
> at
> org.eclipse.jet.internal.InternalJET2Platform.start(Internal JET2Platform.java:260)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:995)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:989)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:970)
> at
> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:317)
> at
> org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:256)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .preFindLocalClass(EclipseLazyStarter.java:86)
> at
> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:409)
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:188)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:339)
> at
> org.eclipse.osgi.framework.internal.core.SingleSourcePackage .loadClass(SingleSourcePackage.java:37)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:388)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:352)
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:83)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319 )
> at xx.Application.run(Application.java:30)
> at
> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
> at org.eclipse.core.launcher.Main.run(Main.java:977)
> at org.eclipse.core.launcher.Main.main(Main.java:952)
>
> Thanks in advance david
>
Re: JET2 start transfomation procramatically [message #590304 is a reply to message #48481] Wed, 06 September 2006 13:03 Go to previous message
Paul Elder is currently offline Paul ElderFriend
Messages: 849
Registered: July 2009
Senior Member
David:

Looking at your stack trace, it is misleading. It indicates that you do not
have the XSD plug-in installed. JET is using EMF to load XML documents. EMF
looks for the XSD plug-in (just in case the XML document has an XSD schema),
and prints the stack trace when it doesn't find the XSD plug-in. However,
the XML loading continues without problem dispite XSD's absence.

Your problem is that you pass null to the JET2Context() constructor. JET
uses this argument as the root of its input model. If not set in the
constructor, you can assign it later with context.setSource(...).

Here is a quick outline of the runTransformXXX methods, one might be more
appropriate to your needs:

There are several variants of JET2Platform.runTransformXXX, depending on the
nature of your input.

If you have a loaded model in hand, then use runTransformOnObject. Example:

org.eclipse.emf.ecore.resource.Resource myEMFModel = ...;
JET2Platform.runTransformOnObject("...transform id...", myEMFModel, new
NullProgressMonitor).

If you have a workspace file that serves as your input, use
runTransformOnResource. Example:

org.eclipse.core.resources.IResource myWorkspaceFile = ...;
JET2Platform.runTransformOnResource ("...id...", myWorkspaceFile, new
NullProgressMonitor)

If you have a in memory string representation of your model (say, an XML
document), then use JET2Platform.runTransformOnString:
String myXMLString = "...";
JET2Platform.runTransformOnString("...id...", myXMLString, "xml" /* file
extension */, new NullProgressMonitor());

The abvoe methods convert their input into an in-memory model, and then
delegate to runTransform:
Object rootOfInMemoryModel = ...
JET2Context context = new JET2Context(rootOfInMemoryModel); // some use
context.setSource()
JET2Platform.runTransform("...id...", context, new
NullProgressMonitor());

So, the source of your NullPointerException is that your JET2Context()
object is constructed with a null source, and this is never set to something
the transformation can use. Depending on your circumstances, I would suggest
using one of the runTransformOnXXX() methods rather than runTransform().

Paul Elder
JET2 Development Lead
IBM Rational Software


"david" <mystic77@gmx.net> wrote in message
news:477d47908791a7a5e2cc0999b8329983$1@www.eclipse.org...
> Hi, I want to use Jet2 and start the transformation programatically. So I
> created an headless eclipse plugin and decided to execute the
> transformation inside this environment. I found the
> JET2Platform.runTransform(...) method and tried to use it, but I received
> a nullpointer exception. Has anybody an idea how to achive this or is
> there somthing I forgot ?
>
>
> Code snippet:
> public class Application implements IPlatformRunnable {
> public Object run(Object args) throws Exception {
> JET2Context context = new JET2Context(null);
> JET2Platform.runTransform("MyJetProkect", context , new
> NullProgressMonitor());
> return IPlatformRunnable.EXIT_OK;
> }
> }
>
>
>
>
> Exception:
>
> java.lang.NullPointerException
> at
> org.eclipse.emf.common.CommonPlugin$Implementation.loadClass (CommonPlugin.java:198)
> at org.eclipse.emf.common.CommonPlugin.loadClass(CommonPlugin.j ava:98)
> at
> org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder.<clinit>(DefaultEcoreBuilder.java:54)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLHandler.createEcoreBuilder (XMLHandler.java:2799)
> at org.eclipse.emf.ecore.xmi.impl.XMLHandler.<init>(XMLHandler.java:394)
> at
> org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler.<init>(SAXXMLHandler.java:43)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.makeDefaultHandle r(XMLLoadImpl.java:310)
> at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:141)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLRes ourceImpl.java:179)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:1089)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:895)
> at
> org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:126)
> at
> org.eclipse.jet.internal.runtime.model.EMFXMLModelLoader.loa d(EMFXMLModelLoader.java:106)
> at
> org.eclipse.jet.internal.extensionpoints.TransformDataFactor y.createTransformData(TransformDataFactory.java:140)
> at
> org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.a ddTransforms(DeployedJETBundleProvider.java:165)
> at
> org.eclipse.jet.internal.runtime.DeployedJETBundleProvider.s tartup(DeployedJETBundleProvider.java:106)
> at
> org.eclipse.jet.internal.runtime.JETBundleManager.startup(JE TBundleManager.java:258)
> at
> org.eclipse.jet.internal.InternalJET2Platform.start(Internal JET2Platform.java:260)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:995)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:989)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:970)
> at
> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:317)
> at
> org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:256)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .preFindLocalClass(EclipseLazyStarter.java:86)
> at
> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:409)
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:188)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:339)
> at
> org.eclipse.osgi.framework.internal.core.SingleSourcePackage .loadClass(SingleSourcePackage.java:37)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:388)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:352)
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:83)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319 )
> at xx.Application.run(Application.java:30)
> at
> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
> at org.eclipse.core.launcher.Main.run(Main.java:977)
> at org.eclipse.core.launcher.Main.main(Main.java:952)
>
> Thanks in advance david
>
Previous Topic:[Teneo] Refresh ?
Next Topic:xml to ecore
Goto Forum:
  


Current Time: Fri Apr 26 03:14:28 GMT 2024

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

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

Back to the top