[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.technology.gmt] Re: Error running the aw4.demo.emf.uml2.generator example project in 4.1 alpha

Hi Solomon,

sorry for replying so late - I was on vacation.

There are various problems with UML2 as we just noticed.
You have pointed out some of them already. We are working
on fixing them. 4.1 will be able to work with UML2 1.1
as well as 2.2

Thanks,
Markus


On Thu, 08 Jun 2006 00:33:04 +0200, Solomon Obi <solomono@xxxxxxx> wrote:

Hi
it seems I am asking and answering my questions. I have resolved the last
issue regarding
the ClassNotFoundException I had to add a dependency to the uml common jar.
Solomon


"Solomon Obi" <solomono@xxxxxxx> wrote in message
news:e66vas$883$1@xxxxxxxxxxxxxxxxxxxx
Hi
I managed to get this example working I had to make additional
modifications to the
Setup class in UML2.adapter. Th eproblem was that the instances of the
meodel elemnts being created was of the generic type (AnyTypeImpl) not the
generated
UML2 model types. Therefore the type name known to oaw was Object, and it
could not find a template which matched.
These changes solve the problem
In particular adding the following statement in the constructor


addEPackageClass(Ecore2XMLPackage.eINSTANCE.getClass().getName());

and the following statements in the method setStandardUML2Setup

// This sets up the resource factory impementation to use

addExtensionMap(new
Mapping("uml","org.eclipse.uml2.uml.resource.UML22UMLResource"));

// Note that this is only required if you have legacy Eclipse UML 1.1
models , with
Eclipse UML 2.0 the extension is uml
addExtensionMap(new
Mapping("uml2","org.eclipse.uml2.uml.resource.UML22UMLResource"));


// This is required by the resource factory above uri = EcoreUtil2.getURI("model/UML2_2_UML.ecore2xml"); if (uri != null) { String path = uri.toString(); if (path.indexOf(".jar!")!=-1) { if (!path.startsWith("jar:")) path = "jar:"+path; } addUriMap(new Mapping("platform:/plugin/org.eclipse.uml2.uml/model/UML2_2_UML.ecore2xml",path)); }

these changes are neccessary to support UML2 version2 . Other statements
may be needed to support reading uml2 models that take advantage of
elements that are in
UML 2.1 .

There is thread on this in the eclipse.tools.uml2 newsgroup with the
subject Re: Standalone parsing (redux)

I also had to make changes to the dependent plugins in adapter.uml, I
added
org.eclipse.emf.mapping.ecore2xml_2.2.0vXXXXX asa dependent plugin

If anyone requires I will forward the complete source

Please note that when I export the adapter.uml plugin and run I get a
class not found error for a class CacheAdapter which apparently is in UML2
1.1 for now I run
this as workspace project or a jar


Thanks
Solomon
"Solomon Obi" <solomono@xxxxxxx> wrote in message
news:e652us$m20$1@xxxxxxxxxxxxxxxxxxxx
Hi,
I am attempting to run the oaw4.demo.emf.uml2.generator (the Alpha2
release for the Eclipse download )
The first problem was that the Setup class in the uml2.adapter project
was not ported to UML2 2.0 Please see the corrections I made (changed
reference to new namespaces/packages)

package org.openarchitectureware.uml2;

import org.eclipse.emf.common.util.URI;
import org.eclipse.uml2.uml.UMLPackage;
import org.openarchitectureware.emf.EcoreUtil2;
import org.openarchitectureware.emf.Mapping;

public class Setup extends org.openarchitectureware.emf.Setup {

  public Setup() {
     addEPackageClass(UMLPackage.eINSTANCE.getClass().getName());
  }

  public void setStandardUML2Setup(boolean b) {
     if (b) {
        addExtensionMap(new
Mapping("ecore","org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl"));
        addExtensionMap(new
                      _____________________________________
Mapping("uml2","org.eclipse.uml2.uml.resource.UMLResource"));
                      ________________________________________

____________________________
        URI uri = EcoreUtil2.getURI("metamodels/UML.metamodel.uml");

______________________________
        if (uri!=null) {
           String path = uri.toString();
           path = path.substring(0,path.lastIndexOf("/metamodels"));
           if (path.indexOf(".jar!")!=-1) {
            if (!path.startsWith("jar:")) path = "jar:"+path;
           }
           addUriMap(new
Mapping("pathmap://UML2_PROFILES/",path+"/profiles/"));
           addUriMap(new
Mapping("pathmap://UML2_METAMODELS/",path+"/metamodels/"));
           addUriMap(new
Mapping("pathmap://UML2_LIBRARIES/",path+"/libraries/"));
        }
     }
  }


}

The XMIReader now sucessfully reads in the input model, I now obtain the
following


error



0
INFO - ----------------------------------------------------------------------------------
0 INFO - openArchitectureWare v4 -- (c) 2005, 2006
openarchitectureware.org and contributors
0
INFO - ----------------------------------------------------------------------------------
0 INFO - running workflow:
C:/tools/oaw/oaw-sample-emf-4.1.0/eclipse-projects/oaw4.demo.emf.uml2.generator/src/workflow.oaw
0 INFO -
3594 INFO - Starting: org.openarchitectureware.emf.XmiReader
3891 INFO - Starting: generator
[org.openarchitectureware.xpand2.Generator]
4063 ERROR - No Definition 'templates::Root::Root for Object' found!:in
workflow-description on line 1 'EXPAND templates::Root::Root FOR
model.get(0)'
org.openarchitectureware.expression.EvaluationException: No Definition
'templates::Root::Root for Object' found!:in workflow-description on line
1 'EXPAND templates::Root::Root FOR model.get(0)'
at
org.openarchitectureware.xpand2.ast.ExpandStatement.invokeDefinition(ExpandStatement.java:166)
at
org.openarchitectureware.xpand2.ast.ExpandStatement.evaluateInternal(ExpandStatement.java:157)
at
org.openarchitectureware.xpand2.ast.Statement.evaluate(Statement.java:27)
at
org.openarchitectureware.xpand2.Generator.invokeInternal(Generator.java:180)
at
org.openarchitectureware.workflow.lib.AbstractWorkflowComponent2.invoke(AbstractWorkflowComponent2.java:28)
at
org.openarchitectureware.workflow.container.CompositeComponent.internalInvoke(CompositeComponent.java:74)
at
org.openarchitectureware.workflow.container.CompositeComponent.invoke(CompositeComponent.java:64)
at
org.openarchitectureware.workflow.WorkflowRunner.executeWorkflow(WorkflowRunner.java:227)
at
org.openarchitectureware.workflow.WorkflowRunner.run(WorkflowRunner.java:166)
at
org.openarchitectureware.workflow.WorkflowRunner.main(WorkflowRunner.java:119)


Apparently the line
<expand value="templates::Root::Root FOR model.get(0)"/> in the workflow
is evaulated to type Object as opposed to uml:Model


What change is neccessary

Solomon








-- Markus Völter

voelter - ingenieurbüro für softwaretechnologie
Ziegeläcker 11, 89520 Heidenheim, Germany
Tel. +49 (0) 171 / 86 01 869
Email: voelter@xxxxxxx

Web: http://www.voelter.de
Blog: http://www.voelter.de/blog
Podcast: http://www.se-radio.net

PGP Public Key: http://www.voelter.de/data/MarkusVoelter.gpg