eclipse - How to create and apply a UML2 stereo-type using EMF in a standalone app? -


i have written sample application below create ejb stereotype apply timeentry class:

import java.io.file; import org.eclipse.emf.common.util.uri; import org.eclipse.emf.ecore.resource.resource; import org.eclipse.emf.ecore.resource.resource.factory; import org.eclipse.emf.ecore.resource.resourceset; import org.eclipse.emf.ecore.resource.impl.resourcesetimpl; import org.eclipse.emf.ecore.util.ecoreutil; import org.eclipse.uml2.uml.*; import org.eclipse.uml2.uml.class; import org.eclipse.uml2.uml.package; import org.eclipse.uml2.uml.umlpackage.literals; import org.eclipse.uml2.uml.resource.umlresource;  public class sampleprofile {    private static final resourceset resource_set = new resourcesetimpl();    public static void main( string[] args ) throws exception   {      factory.registry.instance.getextensiontofactorymap().put(       umlresource.file_extension,       umlresource.factory.instance     );      final model umlmetamodel = (model) loadpackage( umlresource.uml_metamodel_uri );      final model samplemodel = umlfactory.einstance.createmodel();     samplemodel.setname( "sample model" );      final profile sampleprofile = umlfactory.einstance.createprofile();     sampleprofile.setname( "sample profile" );      final stereotype ejbstereo = sampleprofile.createownedstereotype( "ejb" );     extendmetaclass( umlmetamodel, sampleprofile, "class", ejbstereo );      sampleprofile.define();      final package samplepackage = samplemodel.createnestedpackage( "sample" );     samplepackage.applyprofile( sampleprofile );      final class sampleclass = samplepackage.createownedclass( "timeentry", false );     sampleclass.applystereotype( ejbstereo );      final file outputfile = new file( "sample_model.uml" );     final uri outputuri = uri.createfileuri( outputfile.getabsolutepath() );     final resource resource = resource_set.createresource( outputuri );     resource.getcontents().add( samplemodel );     resource.getcontents().add( sampleprofile );     resource.save( null );   }    private static package loadpackage( final string uri )   {     system.out.println( "uri = " + uri );     final resource resource = resource_set.getresource( uri.createuri( uri ), true );     ecoreutil.resolveall( resource );     return (org.eclipse.uml2.uml.package) ecoreutil.getobjectbytype( resource.getcontents(), literals.package );   }    private static void extendmetaclass( final model umlmetamodel,                                        final profile profile,                                        final string name,                                        final stereotype stereotype )   {     stereotype.createextension( referencemetaclass( umlmetamodel, profile, name ), true );   }    private static org.eclipse.uml2.uml.class referencemetaclass( final model umlmetamodel,                                                                 final profile profile,                                                                 final string name )   {     final class metaclass = (class) umlmetamodel.getownedtype( name );     profile.createmetaclassreference( metaclass );     return metaclass;   } } 

however running application, error message in console:

uri = pathmap://uml_metamodels/uml.metamodel.uml exception in thread "main" org.eclipse.emf.ecore.resource.impl.resourcesetimpl$1diagnosticwrappedexception: java.net.malformedurlexception: unknown protocol: pathmap     @ org.eclipse.emf.ecore.resource.impl.resourcesetimpl.handledemandloadexception(resourcesetimpl.java:315)     @ org.eclipse.emf.ecore.resource.impl.resourcesetimpl.demandloadhelper(resourcesetimpl.java:274)     @ org.eclipse.emf.ecore.resource.impl.resourcesetimpl.getresource(resourcesetimpl.java:397) 

any ideas what's wrong code , how problem can solved? application command-line app runs outside eclipse.

stereotypes not live synchronized emf. mean need load profile inside project in order able apply stereotype. not done code using other plugins !!

i notice stereotypes lost emf after first transformation, therefore don't spend time because piece of emf code not stable :-)


Comments

Popular posts from this blog

Add email recipient to all new Trac tickets -

400 Bad Request on Apache/PHP AddHandler wrapper -

php - Change action and image src url's with jQuery -