Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro kassaa allal
    JAVA
    Inscrit en
    février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme kassaa allal
    Âge : 28
    Localisation : Algérie

    Informations professionnelles :
    Activité : JAVA
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut Manipulation des transformations QVTO

    Bonjour,

    J'essaie d'exécuter une transformation, essentiellement via le code donné ici : http://wiki.eclipse.org/QVTOML/Examples/InvokeInJava.

    Cela fonctionne pour mes ressources:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        URI transformationURI = URI.createURI("platform:/resource/tests/transforms/ecore2uml.qvto");
        TransformationExecutor executor = new TransformationExecutor(transformationURI);
     
        ResourceSet resourceSet = new ResourceSetImpl();
        Resource inResource = resourceSet.getResource(URI.createURI("platform:/resource/tests/model/Model1.ecore"), true);        
        EList<EObject> inObjects = inResource.getContents();
     
        ModelExtent input = new BasicModelExtent(inObjects);        
        ModelExtent output = new BasicModelExtent();
     
        ExecutionContextImpl context = new ExecutionContextImpl();
        context.setConfigProperty("keepModeling",true);
     
        ExecutionDiagnostic result = executor.execute(context, input, output);
     
        if(result.getSeverity() == Diagnostic.OK) {
            // the output objects got captured in the output extent
            List<EObject> outObjects = output.getContents();
            // let's persist them using a resource 
            ResourceSet resourceSet2 = new ResourceSetImpl();
            Resource outResource = resourceSet2.getResource(URI.createURI("platform:/resource/tests/model/Model2.uml"), true);
    Mais un message d'erreur se produit lorsque j'exécute cette transformation qvto :
    Exception in thread "main" java.lang.RuntimeException: Cannot create a resource for 'platform:/resource/tests/model/Model1.ecore'; a registered resource factory is needed
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource (ResourceSetImpl.java:394) :
    Ce qu'il a déclaré lors de la ressource est nul.

    Je suis habitué d'une ressource .ecore.

    Quelqu'un saurait-il m'expliquer ce qui ne va pas ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro Mickael Istria
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    686
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickael Istria
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 686
    Points : 1 285
    Points
    1 285

    Par défaut

    En fait avec EMF, tu enregistres une resource factory par type de fichier/extension. La tu manipules des .uml et EMF ne connait pas ce format .uml. Donc il te demande de lui specifier la factory a utiliser pour lire le fichier. Cce doit etre une UMLFactory j'imagine.
    Il faudrait que tu sois sur que le plugin qui gere UML soit dans ton classpath, et qu'il enregistre bien sa factory pour l'extension .uml. Sinon, tu enregistres la UMLFactory pour le .uml par toi meme. Le point d'extension dont tu reves est org.eclipse.emf.ecore.extension_parser
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  3. #3
    Invité de passage
    Homme Profil pro kassaa allal
    JAVA
    Inscrit en
    février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme kassaa allal
    Âge : 28
    Localisation : Algérie

    Informations professionnelles :
    Activité : JAVA
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Merci pour votre aide mais ça n'a pas marché, voici la partie complète du code qui génère l'erreur.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package classes;
     
     
     
    import java.io.IOException;
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
     
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
     
    import org.eclipse.core.runtime.IStatus;
    import org.eclipse.emf.common.notify.Notifier;
    import org.eclipse.emf.common.util.BasicDiagnostic;
    import org.eclipse.emf.common.util.Diagnostic;
    import org.eclipse.emf.common.util.EList;
    import org.eclipse.emf.common.util.TreeIterator;
    import org.eclipse.emf.common.util.URI;
    import org.eclipse.emf.ecore.EObject;
    import org.eclipse.emf.ecore.resource.Resource;
    import org.eclipse.emf.ecore.resource.ResourceSet;
    import org.eclipse.emf.ecore.resource.Resource.Factory;
    import org.eclipse.emf.ecore.resource.Resource.Factory.Registry;
    import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
    import org.eclipse.m2m.qvt.oml.BasicModelExtent;
    import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
    import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
    import org.eclipse.m2m.qvt.oml.ModelExtent;
    import org.eclipse.m2m.qvt.oml.TransformationExecutor;
     
     
     
     
     
     
    public class onto2smd {
     
    	public onto2smd(){	
     
    	URI transformationURI = URI.createURI("platform:/resource/tests/transforms/OntoL_ecore_2_SMDuml.qvto");
     
    	TransformationExecutor executor = new TransformationExecutor(transformationURI);
     
    	ResourceSet resourceSet = new ResourceSetImpl();
     
    	URI inURI = URI.createURI("platform:/resource/tests/model/M.ecore",true);
     
     
    	Resource inResource = new ResourceImpl(inURI);		
     
         EList<EObject> inObjects = inResource.getContents();
     
    	ModelExtent input = new BasicModelExtent(inObjects);
     
    	ModelExtent output = new BasicModelExtent();
     
     
    	ExecutionContextImpl context = new ExecutionContextImpl();
    	context.setConfigProperty("keepModeling",true);
     
    	ExecutionDiagnostic result = executor.execute(context, input, output);
     
     
    	if(result.getSeverity()== Diagnostic.OK) {
     
     
    	 List<EObject> outObjects = output.getContents();
     
    	        ResourceSet resourceSet2 = new ResourceSetImpl();
     
    		Resource outResource = resourceSet2.getResource(
    				URI.createURI("platform:/resource/tests/model/M.uml"), true);
     
    		outResource.getContents().addAll(outObjects);
    		try {
    			outResource.save(Collections.emptyMap());
    		} catch (IOException e) {
     
    			e.printStackTrace();	
    		}
    	} else {
     
     
    		IStatus status = BasicDiagnostic.toIStatus(result);
     
    		System.err.println("ERREUR chargement du mod&#65533;&#65533;&#65533;le ");
    	}
    	}
     
     
    	public static void main(String[] args) {
    		    try {
    		      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		    }
    		    catch(Exception e) {
    		      e.printStackTrace();
    		    }
    		    new onto2smd();
    		  }
     
    }
    L'erreur produite lors de l'execution du programme dans cette ligne (ligne 65) est:

    ExecutionDiagnostic result = executor.execute(context, input,output);
    Si vous pouvez voire encore une fois le code et aider moi SVP !!
    MERCI d'avance

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •