Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
February 2009
- 3 participants
- 50 discussions
[Lutingenerator-commits] r421 - maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin
by chatellier@users.labs.libre-entreprise.org 10 Feb '09
by chatellier@users.labs.libre-entreprise.org 10 Feb '09
10 Feb '09
Author: chatellier
Date: 2009-02-10 13:09:25 +0000 (Tue, 10 Feb 2009)
New Revision: 421
Modified:
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java
Log:
Readd alias
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java 2009-02-10 11:24:35 UTC (rev 420)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java 2009-02-10 13:09:25 UTC (rev 421)
@@ -46,7 +46,7 @@
/**
* Répertoire source des fichier Zargo.
*
- * @parameter expression=${generator.srcDirZuml} default-value="src/main/xmi"
+ * @parameter expression=${generator.srcDirZuml} default-value="src/main/xmi" alias="srcDirUml"
* @since 0.50
*/
protected File srcDirZUml;
1
0
[Lutingenerator-commits] r420 - in maven-generator-plugin/trunk: . src/main/java/org/codelutin/generator/plugin src/main/java/org/codelutin/generator/plugin/helper src/site src/site/rst/fr
by chatellier@users.labs.libre-entreprise.org 10 Feb '09
by chatellier@users.labs.libre-entreprise.org 10 Feb '09
10 Feb '09
Author: chatellier
Date: 2009-02-10 11:24:35 +0000 (Tue, 10 Feb 2009)
New Revision: 420
Modified:
maven-generator-plugin/trunk/changelog.txt
maven-generator-plugin/trunk/pom.xml
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/CopyVersionFiles.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2ObjectModel.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2StateModel.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java
maven-generator-plugin/trunk/src/site/rst/fr/index.rst
maven-generator-plugin/trunk/src/site/site.xml
Log:
Ajout des valeurs par d?\195?\169faut sur les options.
Tr?\195?\168s peu sont requises maintenant.
Modified: maven-generator-plugin/trunk/changelog.txt
===================================================================
--- maven-generator-plugin/trunk/changelog.txt 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/changelog.txt 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,6 +1,8 @@
0.64 ?? 200812??
- * 20090209 [chemit] - fix bug when using sibling dependencies in a multi-module project
- * 20090129 [chemit] - use lutinproject 3.4 (suppress javadoc plugin invocation)
+ * 20090210 [chatellier] add info and debug maven log messages
+ * 20090210 [chatellier] add default value on all non required parameters
+ * 20090209 [chemit] fix bug when using sibling dependencies in a multi-module project
+ * 20090129 [chemit] use lutinproject 3.4 (suppress javadoc plugin invocation)
0.63 chemit 20081215
* 20081215 [chemit] follow lutingenerator release
Modified: maven-generator-plugin/trunk/pom.xml
===================================================================
--- maven-generator-plugin/trunk/pom.xml 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/pom.xml 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -69,35 +69,32 @@
<build>
<defaultGoal>install</defaultGoal>
+
<plugins>
<plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-maven-plugin</artifactId>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
<version>1.3.8</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
- <executions>
- <execution>
- <goals>
- <goal>descriptor</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>2.4.3</version>
<configuration>
- <requirements>
-
- </requirements>
- </configuration>
+ <requirements/>
+ </configuration>
<executions>
<execution>
<goals>
<goal>addPluginArtifactMetadata</goal>
</goals>
-
</execution>
</executions>
</plugin>
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/CopyVersionFiles.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/CopyVersionFiles.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/CopyVersionFiles.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,5 +1,5 @@
/* *##% Plugin maven Generator
- * Copyright (C) 2006 - 2008 CodeLutin
+ * Copyright (C) 2006 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -34,42 +34,50 @@
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
-/*
- * CopyVersionFiles
+/**
+ * Copy a file set to a versionned directory structure.
*
* @author chatellier
*
* @version $Revision$
*
* Last update : $Date$ By : $Author$
- */
-/**
- * CopyVersionFiles.java
*
* @goal copyVersionFiles
*/
public class CopyVersionFiles extends AbstractMojo implements FileFilter {
/**
- * Fichiers objectModel a lire pour determiner la version
+ * Fichiers objectModel a lire pour determiner la version.
*
- * @parameter
- * @required
+ * @parameter expression="${generator.includes}" default-value="*.*model"
+ * @since 0.51
*/
protected String includes;
/**
- * Répertoire source
+ * Répertoire source où sont situer les modeles.
*
- * @parameter alias="srcGenDest"
- * @required
+ * @parameter expression="${generator.srcGenDest}" alias="srcGenDest" default-value="target/generated-sources/models"
+ * @since 0.51
*/
protected File srcDirGen;
/**
- * Le dossier de destination des mappings
+ * Répertoire sources des fichiers générés à copier.
+ *
+ * @parameter expression="${generator.destDirGen}" default-value="target/generated-sources/java"
+ * @since 0.51
+ */
+ protected File destDirGen;
+
+ /**
+ * Le dossier de destination des fichiers copiés.
*
- * @parameter
+ * Doit contenir un nom de modele : <tt>%MODELNAME%</tt>
+ *
+ * @parameter expression="${generator.copyVersionDir}"
+ * @since 0.51
* @required
*/
protected String copyVersionDir;
@@ -77,23 +85,17 @@
/**
* Les mappings a sauvegarder
*
- * @parameter
+ * @parameter expression="${generator.copyVersionFiles}"
+ * @since 0.51
* @required
*/
protected String copyVersionFiles;
/**
- * Répertoire cible
- *
- * @parameter
- * @required
- */
- protected File destDirGen;
-
- /**
* Ecrase les fichiers deja presents ?
*
- * @parameter default-value="false"
+ * @parameter expression="${generator.copyOverwrite}" default-value="false"
+ * @since 0.51
*/
protected boolean copyOverwrite = false;
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,5 +1,5 @@
/* *##% Plugin maven Generator
- * Copyright (C) 2006 - 2008 CodeLutin
+ * Copyright (C) 2006 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -15,18 +15,6 @@
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
-/* *
- * GeneratorPlugin.java
- *
- * Created: 14 avril 2006
- *
- * @author ruchaud
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
package org.codelutin.generator.plugin;
import org.apache.maven.model.Resource;
@@ -52,6 +40,12 @@
* Effectue toutes les générations et copie les fichiers générés
* dans le répertoire de compilation
*
+ * @author ruchaud
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ *
* @goal generate
* @projectRequired true
*/
@@ -61,52 +55,56 @@
* @description Dépendance du projet.
* @parameter default-value="${project}"
* @readonly
+ * @since 0.50
*/
protected MavenProject project;
/**
* Répertoire source
*
- * @parameter expression="${generator.srcGenDest}" alias="srcGenDest"
- * @required
+ * @parameter expression="${generator.srcGenDest}" alias="srcGenDest" default-value="target/generated-sources/models"
+ * @since 0.50
*/
protected File srcDirGen;
/**
* Répertoire cible
*
- * @parameter expression="${generator.destDirGen}"
- * @required
+ * @parameter expression="${generator.destDirGen}" default-value="target/generated-sources/java"
+ * @since 0.50
*/
protected File destDirGen;
/**
- * Templates à utiliser, séparés par des virgules
+ * Templates à utiliser, séparés par des virgules.
*
* @parameter expression="${generator.templates}"
* @required
+ * @since 0.50
*/
protected String templates;
/**
- * Templates à ne pas utiliser
+ * Templates à ne pas utiliser.
*
* @parameter expression="${generator.excludeTemplates}"
+ * @since 0.63
*/
protected String[] excludeTemplates;
/**
- * Fichier à inclure
+ * Fichier à inclure.
*
- * @parameter expression="${generator.includes}"
- * @required
+ * @parameter expression="${generator.includes}" default-value="*.*model"
+ * @since 0.50
*/
protected String includes;
/**
- * Nom par défaut du paquetage généré
+ * Nom par défaut du paquetage généré.
*
- * @parameter expression="org.codelutin.${project.artifactId}"
+ * @parameter expression="${generator.defaultPackage}" default-value="${project.groupId}.${project.artifactId}"
+ * @since 0.50
*/
protected String defaultPackage;
@@ -114,28 +112,35 @@
* Ecrase les fichiers générés
*
* @parameter expression="${generator.overwrite}" default-value="false"
+ * @since 0.50
*/
private boolean overwrite = false;
/**
- * An extra direcotry to be added to the classpath.
+ * An extra directory to be added to the classpath.
*
* @parameter expression="${generator.extraClassPathDirectory}"
+ * @since 0.63
*/
protected File extraClassPathDirectory;
/**
* Encoding to be used for generation of files.
*
- * @parameter expression="${generator.encoding}" default-value="${maven.compile.encoding}
+ * @parameter expression="${generator.encoding}" default-value="${maven.compile.encoding}"
+ * @since 0.60
*/
protected String encoding;
-
+ @Override
public void execute() throws MojoExecutionException, MojoFailureException {
- getLog().info("Effectue toutes les générations et copie les fichiers générés "
- + "dans le répertoire de compilation");
+ getLog().info("Generating model using : ");
+ getLog().info(" using template : " + templates);
+ getLog().info(" using defaultPackage : " + defaultPackage);
+ getLog().info(" generating from : " + srcDirGen + File.separator + includes);
+ getLog().info(" generating to : " + destDirGen);
+
/* Création d'un projet ant */
Project project = new Project();
@@ -167,7 +172,10 @@
generator.setProperties("defaultPackage=" + defaultPackage);
generator.setIncludes(includes);
- generator.setExcludeTemplates(excludeTemplates == null || excludeTemplates.length == 0 ? java.util.Collections.<String>emptyList() : java.util.Arrays.asList(excludeTemplates));
+ generator.setExcludeTemplates(excludeTemplates == null
+ || excludeTemplates.length == 0 ? java.util.Collections
+ .<String> emptyList() : java.util.Arrays
+ .asList(excludeTemplates));
ClassLoader loader = fixClassLoader();
generator.setLoader(loader);
@@ -181,13 +189,15 @@
*/
protected void fixCompileSourceRoots() {
- if (project != null && !project.getCompileSourceRoots().contains(destDirGen.getPath())) {
- getLog().info("add compile source root : " + destDirGen);
+ if (project != null
+ && !project.getCompileSourceRoots().contains(
+ destDirGen.getPath())) {
+ getLog().info("Add compile source root : " + destDirGen);
project.addCompileSourceRoot(destDirGen.getPath());
Resource resources = new Resource();
resources.setDirectory(destDirGen.getAbsolutePath());
resources.setExcludes(Arrays.asList("**/*.java"));
- getLog().info("add resource root :" + resources);
+ getLog().info("Add resource root :" + resources);
project.addResource(resources);
}
}
@@ -206,22 +216,27 @@
try {
List<URL> urls = new ArrayList<URL>();
if (extraClassPathDirectory != null) {
- getLog().info("add extra directory in generator's classLoader : '" + extraClassPathDirectory + "'");
+ getLog().info("Add extra directory in generator's classLoader : "
+ + extraClassPathDirectory);
urls.add(extraClassPathDirectory.toURI().toURL());
}
if (project.getProjectReferences() != null) {
for (Object o : project.getProjectReferences().entrySet()) {
Entry entry = (Entry) o;
- MavenProject relatedProject = (MavenProject) entry.getValue();
- getLog().info("add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ MavenProject relatedProject = (MavenProject) entry
+ .getValue();
+ getLog().info("Add project reference in generator's classLoader : '"
+ + relatedProject.getArtifact() + "'");
//TODO il faudrait peut-etre aussi ajouter les dependances ?
- urls.add(relatedProject.getArtifact().getFile().toURI().toURL());
+ urls.add(relatedProject.getArtifact().getFile().toURI()
+ .toURL());
}
}
// we ask to add the directory in classloader
ClassLoader loader = getClass().getClassLoader();
if (!urls.isEmpty()) {
- loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), loader);
+ loader = new URLClassLoader(urls.toArray(new URL[urls.size()]),
+ loader);
}
return loader;
} catch (MalformedURLException e) {
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -15,18 +15,6 @@
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
-/* *
- * Xmi2Model.java
- *
- * Created: 14 avril 2006
- *
- * @author ruchaud
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
package org.codelutin.generator.plugin;
import java.io.File;
@@ -57,134 +45,134 @@
* Converti les fichiers XMI en fichier Model via une transformation XSLT a
* définir.
*
- * Class abstraite sans feuille de style.
+ * Class abstraite sans feuille de style ni extension.
+ *
+ * @author ruchaud
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
*/
public abstract class Xmi2Model extends AbstractMojo {
- /**
- * Répertoire source des fichiers XMI
- *
- * @parameter alias="srcXmiDest"
- * @required
- */
- protected File srcDirXmi;
+ /**
+ * Répertoire source des fichiers XMI
+ *
+ * @parameter alias="srcXmiDest" expression=${generator.srcDirXmi} default-value="target/generated-sources/xmi"
+ * @since 0.50
+ */
+ protected File srcDirXmi;
- /**
- * Répertoire cible des fichiers générés
- *
- * @parameter alias="srcGenDest"
- * @required
- */
- protected File destDirObjectModel;
+ /**
+ * Répertoire cible des fichiers générés
+ *
+ * @parameter alias="srcGenDest" expression=${generator.srcGenDest} default-value="target/generated-sources/models"
+ * @since 0.50
+ */
+ protected File destDirModel;
- /**
- * Nom du paquetage pour les fichiers générés
- *
- * @parameter expression="org.codelutin.${project.artifactId}"
- */
- protected String fullPackagePath;
+ /**
+ * Ecrase les fichiers générés
+ *
+ * @parameter expression=${generator.overwrite} default-value="false"
+ * @since 0.50
+ */
+ private boolean overwrite = false;
- /**
- * Nom du paquetage à généré
- *
- * @parameter
- */
- protected String extractedPackages = "";
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ actionXsl();
+ actionCopy();
+ }
- /**
- * Ecrase les fichiers générés
- *
- * @parameter default-value="false"
- */
- private boolean overwrite = false;
+ protected void actionXsl() throws MojoExecutionException {
+
+ getLog().info("Processing XSL tranformation");
+ getLog().info(" processing from " + srcDirXmi + " to " + destDirModel);
+
+ List<File> files = FileUtil.getFilteredElements(srcDirXmi,
+ new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname != null
+ && pathname.getName().endsWith(".xmi");
+ }
+ }, false);
- public void execute() throws MojoExecutionException, MojoFailureException {
- actionXsl();
- actionCopy();
- }
+ destDirModel.mkdirs();
- private void actionXsl() throws MojoExecutionException {
- List<File> files = FileUtil.getFilteredElements(srcDirXmi, new FileFilter() {
- public boolean accept(File pathname) {
- return pathname != null && pathname.getName().endsWith(".xmi");
- }
- }, false);
-
- destDirObjectModel.mkdirs();
-
- TransformerFactory factory = TransformerFactory.newInstance();
- URIResolver resolver = new ResourceResolver();
+ TransformerFactory factory = TransformerFactory.newInstance();
+ URIResolver resolver = new ResourceResolver();
URL xsl = Resource.getURL(getStyleSheet());
-
- for (File file : files) {
- try {
- File result = new File(destDirObjectModel, FileUtil.basename(file, ".xmi").concat(
- ".").concat(getExtension()));
- if (!overwrite && file.lastModified() < result.lastModified()) {
- getLog().info("file up-to-date : "+result);
+
+ for (File file : files) {
+ try {
+ File result = new File(destDirModel, FileUtil.basename(file,
+ ".xmi").concat(".").concat(getExtension()));
+ if (!overwrite && file.lastModified() < result.lastModified()) {
+ getLog().info("file up-to-date : " + result);
continue;
}
- Transformer transformer = factory
- .newTransformer(new StreamSource(xsl.openStream()));
- transformer.setURIResolver(resolver);
- transformer.transform(new StreamSource(file), new StreamResult(
- new FileOutputStream(result)));
+ Transformer transformer = factory
+ .newTransformer(new StreamSource(xsl.openStream()));
+ transformer.setURIResolver(resolver);
+ transformer.transform(new StreamSource(file), new StreamResult(
+ new FileOutputStream(result)));
- } catch (Exception e) {
- throw new MojoExecutionException(e.getMessage(),e);
- }
- }
- }
+ } catch (Exception e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ }
+ }
+ }
- private void actionCopy() {
- /* Création d'un projet ant */
- Project project = createProject();
+ protected void actionCopy() {
+ /* Création d'un projet ant */
+ Project project = createProject();
- /* Création de la tâche ant Copy */
- Copy copy = new Copy();
- copy.setProject(project);
- copy.setTaskName("Copy ressources");
+ /* Création de la tâche ant Copy */
+ Copy copy = new Copy();
+ copy.setProject(project);
+ copy.setTaskName("Copy ressources");
- /* Configuration */
- copy.setTodir(destDirObjectModel);
- copy.setOverwrite(overwrite);
+ /* Configuration */
+ copy.setTodir(destDirModel);
+ copy.setOverwrite(overwrite);
- FileSet fileSet = new FileSet();
- fileSet.setProject(project);
- fileSet.setDir(srcDirXmi);
- fileSet.setExcludes("**/*.xmi");
- copy.addFileset(fileSet);
+ FileSet fileSet = new FileSet();
+ fileSet.setProject(project);
+ fileSet.setDir(srcDirXmi);
+ fileSet.setExcludes("**/*.xmi");
+ copy.addFileset(fileSet);
- /* Execution */
- copy.execute();
- }
+ /* Execution */
+ copy.execute();
+ }
- private Project createProject() {
- /* Création d'un projet ant */
- Project project = new Project();
+ protected Project createProject() {
+ /* Création d'un projet ant */
+ Project project = new Project();
- BuildLogger logger = new NoBannerLogger();
- logger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO);
- logger.setOutputPrintStream(System.out);
- logger.setErrorPrintStream(System.err);
+ BuildLogger logger = new NoBannerLogger();
+ logger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO);
+ logger.setOutputPrintStream(System.out);
+ logger.setErrorPrintStream(System.err);
- project.init();
- project.getBaseDir();
- project.addBuildListener(logger);
- return project;
- }
+ project.init();
+ project.getBaseDir();
+ project.addBuildListener(logger);
+ return project;
+ }
- /**
- * Set extention
- *
- * @return the extention
- */
- protected abstract String getExtension();
+ /**
+ * Get extension.
+ *
+ * @return the extension
+ */
+ protected abstract String getExtension();
- /**
- * Set style sheet
- *
- * @return the stylesheet
- */
- protected abstract String getStyleSheet();
+ /**
+ * Get style sheet.
+ *
+ * @return the stylesheet
+ */
+ protected abstract String getStyleSheet();
}
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2ObjectModel.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2ObjectModel.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2ObjectModel.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,6 +1,5 @@
-/*
- * *##% Plugin maven Generator
- * Copyright (C) 2006 - 2008 CodeLutin
+/* *##% Plugin maven Generator
+ * Copyright (C) 2006 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -28,7 +27,7 @@
*/
public class Xmi2ObjectModel extends Xmi2Model {
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#execute()
*/
@Override
@@ -37,14 +36,14 @@
super.execute();
}
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#getExtention()
*/
public String getExtension() {
return "objectmodel";
}
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#getStyleSheet()
*/
protected String getStyleSheet() {
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2StateModel.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2StateModel.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2StateModel.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,5 +1,5 @@
/* *##% Plugin maven Generator
- * Copyright (C) 2006 - 2008 CodeLutin
+ * Copyright (C) 2006 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -20,7 +20,6 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-
/**
* Converti les fichiers XMI en fichier StateModel
*
@@ -28,7 +27,7 @@
*/
public class Xmi2StateModel extends Xmi2Model {
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#execute()
*/
@Override
@@ -37,14 +36,14 @@
super.execute();
}
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#getExtention()
*/
protected String getExtension() {
return "statemodel";
}
- /* (non-Javadoc)
+ /*
* @see org.codelutin.generator.plugin.Xmi2Model#getStyleSheet()
*/
protected String getStyleSheet() {
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Zargo2Xmi.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,5 +1,5 @@
/* *##% Plugin maven Generator
- * Copyright (C) 2006 - 2008 CodeLutin
+ * Copyright (C) 2006 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -15,18 +15,6 @@
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
-/* *
- * Zargo2Xmi.java
- *
- * Created: 14 avril 2006
- *
- * @author ruchaud
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
package org.codelutin.generator.plugin;
import java.io.File;
@@ -43,74 +31,89 @@
import org.apache.tools.ant.types.PatternSet;
/**
- * Extrait le fichier XMI des fichiers zargo
+ * Extract zipped XMI files from zargo archive.
*
+ * @author ruchaud
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ *
* @goal zargo2xmi
*/
public class Zargo2Xmi extends AbstractMojo {
-
+
/**
- * Répertoire source des fichier Zargo
+ * Répertoire source des fichier Zargo.
*
- * @parameter alias="srcDirZuml"
- * @required
+ * @parameter expression=${generator.srcDirZuml} default-value="src/main/xmi"
+ * @since 0.50
*/
- protected File srcDirUml;
+ protected File srcDirZUml;
/**
- * Répertoire cible des fichiers extraits
+ * Répertoire cible des fichiers extraits.
*
- * @parameter alias="srcXmiDest"
- * @required
+ * @parameter alias="srcXmiDest" expression=${generator.destDirXmi} default-value="target/generated-sources/xmi"
+ * @since 0.50
*/
protected File destDirXmi;
/**
- * Ecrase les fichiers générés
+ * Ecrase les fichiers générés.
*
* @parameter default-value="false"
*/
- private boolean overwrite = false;
+ protected boolean overwrite = false;
+ @Override
public void execute() throws MojoExecutionException, MojoFailureException {
- getLog().info("Extrait le fichier XMI des fichiers zargo");
-
+ getLog().info("Extract zipped XMI files from zargo archive");
+ getLog().info(" extracting from " + srcDirZUml + " to " + destDirXmi);
+
actionZip();
actionCopy();
}
- private void actionZip() {
+ protected void actionZip() {
+
+ getLog().debug("Executing unzip action in **/*.zargo,**/*.zuml");
+
/* Création d'un projet ant */
Project project = createProject();
-
+
/* Création de la tâche */
Expand zip = new Expand();
zip.setProject(project);
zip.setTaskName("Extract");
-
+
/* Configuration */
zip.setOverwrite(overwrite);
/* Source */
FileSet fileSet = new FileSet();
fileSet.setProject(project); // resolve NullPointerException
- fileSet.setDir(srcDirUml);
+ fileSet.setDir(srcDirZUml);
fileSet.setIncludes("**/*.zargo,**/*.zuml");
zip.addFileset(fileSet);
/* Target */
destDirXmi.mkdirs();
zip.setDest(destDirXmi);
-
+
PatternSet patternSet = new PatternSet();
patternSet.setIncludes("*.xmi,**/*.xmi");
zip.addPatternset(patternSet);
-
+
/* Execution */
zip.execute();
}
- private void actionCopy(){
+ protected void actionCopy() {
+
+ getLog().debug("Executing copy from " + srcDirZUml + " to " + destDirXmi);
+ getLog().debug(" excluded resources : **/*.zargo,**/*.zuml");
+
/* Création d'un projet ant */
Project project = createProject();
@@ -122,20 +125,20 @@
/* Configuration */
copy.setTodir(destDirXmi);
copy.setOverwrite(overwrite);
-
+
FileSet fileSet = new FileSet();
- fileSet.setDir(srcDirUml);
+ fileSet.setDir(srcDirZUml);
fileSet.setExcludes("**/*.zargo,**/*.zuml");
copy.addFileset(fileSet);
-
+
/* Execution */
copy.execute();
}
- private Project createProject() {
+ protected Project createProject() {
/* Création d'un projet ant */
Project project = new Project();
-
+
BuildLogger logger = new NoBannerLogger();
logger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO);
logger.setOutputPrintStream(System.out);
@@ -146,5 +149,5 @@
project.addBuildListener(logger);
return project;
}
-
+
}
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,3 +1,19 @@
+/* *##% Plugin maven Generator
+ * Copyright (C) 2008 - 2009 CodeLutin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
package org.codelutin.generator.plugin.helper;
import java.net.MalformedURLException;
@@ -8,7 +24,6 @@
import javax.xml.transform.stream.StreamSource;
import org.codelutin.util.Resource;
-import org.codelutin.generator.ObjectModelGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,12 +55,12 @@
private static final Log log = LogFactory.getLog(ResourceResolver.class);
/**
- * resolve href on local resource.
+ * Resolve href on local resource.
*
* @return null if local resource not found
*/
+ @Override
public Source resolve(String href, String base) {
- // System.out.println("[ResourceResolver] " + href);
String filename = null;
try {
filename = new URL(href).getPath();
@@ -63,7 +78,7 @@
return findSource(filename);
}
- Source findSource(String filename) {
+ protected Source findSource(String filename) {
// System.out.println("[ResourceResolver] " + filename);
String extension = null;
Modified: maven-generator-plugin/trunk/src/site/rst/fr/index.rst
===================================================================
(Binary files differ)
Modified: maven-generator-plugin/trunk/src/site/site.xml
===================================================================
--- maven-generator-plugin/trunk/src/site/site.xml 2009-02-09 20:11:48 UTC (rev 419)
+++ maven-generator-plugin/trunk/src/site/site.xml 2009-02-10 11:24:35 UTC (rev 420)
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="${project.name}">
+ <publishDate format="dd/MM/yyyy"/>
+
<skin>
<groupId>org.codelutin</groupId>
<artifactId>maven-lutin-skin</artifactId>
- <version>0.2.1</version>
+ <version>0.2.2</version>
</skin>
<bannerLeft>
@@ -32,7 +34,11 @@
<menu name="Utilisateur">
<item href="index.html" name="Accueil"/>
<item name="Goals" href="plugin-info.html">
+ <item name="zargo2xmi" href="zargo2xmi-mojo.html"/>
+ <item name="xmi2statemodel" href="xmi2statemodel-mojo.html"/>
+ <item name="xmi2objectmodel" href="xmi2objectmodel-mojo.html"/>
<item name="generate" href="generate-mojo.html"/>
+ <item name="copyVersionFiles" href="copyVersionFiles-mojo.html"/>
<item name="help" href="help-mojo.html"/>
</item>
</menu>
1
0
[Lutingenerator-commits] r419 - maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper
by tchemit@users.labs.libre-entreprise.org 09 Feb '09
by tchemit@users.labs.libre-entreprise.org 09 Feb '09
09 Feb '09
Author: tchemit
Date: 2009-02-09 20:11:48 +0000 (Mon, 09 Feb 2009)
New Revision: 419
Modified:
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java
Log:
no System.out.println :)
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-09 19:19:05 UTC (rev 418)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-09 20:11:48 UTC (rev 419)
@@ -8,6 +8,9 @@
import javax.xml.transform.stream.StreamSource;
import org.codelutin.util.Resource;
+import org.codelutin.generator.ObjectModelGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* ResourceResolver is a URIResolver for XSL transformation. <br/>
@@ -34,6 +37,8 @@
*/
public class ResourceResolver implements URIResolver {
+ private static final Log log = LogFactory.getLog(ResourceResolver.class);
+
/**
* resolve href on local resource.
*
@@ -71,7 +76,9 @@
if (url == null) {
return null;
}
- System.out.println("[ResourceResolver] " + url.toString());
+ if (log.isInfoEnabled()) {
+ log.info("[ResourceResolver] " + url.toString());
+ }
return new StreamSource(url.toString());
}
1
0
[Lutingenerator-commits] r418 - in maven-generator-plugin/trunk: . src/main/java/org/codelutin/generator/plugin
by tchemit@users.labs.libre-entreprise.org 09 Feb '09
by tchemit@users.labs.libre-entreprise.org 09 Feb '09
09 Feb '09
Author: tchemit
Date: 2009-02-09 19:19:05 +0000 (Mon, 09 Feb 2009)
New Revision: 418
Modified:
maven-generator-plugin/trunk/changelog.txt
maven-generator-plugin/trunk/pom.xml
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java
Log:
fix bug when using sibling dependencies in a multi-module project
Modified: maven-generator-plugin/trunk/changelog.txt
===================================================================
--- maven-generator-plugin/trunk/changelog.txt 2009-02-09 08:34:42 UTC (rev 417)
+++ maven-generator-plugin/trunk/changelog.txt 2009-02-09 19:19:05 UTC (rev 418)
@@ -1,6 +1,7 @@
0.64 ?? 200812??
+ * 20090209 [chemit] - fix bug when using sibling dependencies in a multi-module project
* 20090129 [chemit] - use lutinproject 3.4 (suppress javadoc plugin invocation)
-
+
0.63 chemit 20081215
* 20081215 [chemit] follow lutingenerator release
Modified: maven-generator-plugin/trunk/pom.xml
===================================================================
--- maven-generator-plugin/trunk/pom.xml 2009-02-09 08:34:42 UTC (rev 417)
+++ maven-generator-plugin/trunk/pom.xml 2009-02-09 19:19:05 UTC (rev 418)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -62,13 +63,45 @@
<!-- todo pour la montee de version voir la doc -->
<lutingenerator.version>${project.version}</lutingenerator.version>
-
+
</properties>
<build>
<defaultGoal>install</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <version>1.3.8</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>2.4.3</version>
+ <configuration>
+ <requirements>
+
+ </requirements>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>addPluginArtifactMetadata</goal>
+ </goals>
+
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
</build>
@@ -82,5 +115,5 @@
<developerConnection>${maven.scm.developerConnection}</developerConnection>
<url>${maven.scm.url}</url>
</scm>
-
+
</project>
Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java
===================================================================
--- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-09 08:34:42 UTC (rev 417)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-09 19:19:05 UTC (rev 418)
@@ -43,14 +43,17 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map.Entry;
/**
* Effectue toutes les générations et copie les fichiers générés
* dans le répertoire de compilation
*
* @goal generate
+ * @projectRequired true
*/
public class GeneratorPlugin extends AbstractMojo {
@@ -64,7 +67,7 @@
/**
* Répertoire source
*
- * @parameter alias="srcGenDest"
+ * @parameter expression="${generator.srcGenDest}" alias="srcGenDest"
* @required
*/
protected File srcDirGen;
@@ -72,7 +75,7 @@
/**
* Répertoire cible
*
- * @parameter
+ * @parameter expression="${generator.destDirGen}"
* @required
*/
protected File destDirGen;
@@ -80,7 +83,7 @@
/**
* Templates à utiliser, séparés par des virgules
*
- * @parameter
+ * @parameter expression="${generator.templates}"
* @required
*/
protected String templates;
@@ -88,14 +91,14 @@
/**
* Templates à ne pas utiliser
*
- * @parameter
+ * @parameter expression="${generator.excludeTemplates}"
*/
- protected List<String> excludeTemplates;
+ protected String[] excludeTemplates;
/**
* Fichier à inclure
*
- * @parameter
+ * @parameter expression="${generator.includes}"
* @required
*/
protected String includes;
@@ -110,7 +113,7 @@
/**
* Ecrase les fichiers générés
*
- * @parameter default-value="false"
+ * @parameter expression="${generator.overwrite}" default-value="false"
*/
private boolean overwrite = false;
@@ -155,7 +158,7 @@
generator.setTemplates(templates);
generator.setSrcdir(srcDirGen);
generator.setEncoding(encoding);
-
+
destDirGen.mkdirs();
generator.setDestdir(destDirGen);
@@ -164,12 +167,10 @@
generator.setProperties("defaultPackage=" + defaultPackage);
generator.setIncludes(includes);
- generator.setExcludeTemplates(excludeTemplates == null ? java.util.Collections.<String>emptyList() : excludeTemplates);
+ generator.setExcludeTemplates(excludeTemplates == null || excludeTemplates.length == 0 ? java.util.Collections.<String>emptyList() : java.util.Arrays.asList(excludeTemplates));
- if (extraClassPathDirectory != null) {
- getLog().info("will add the cp to classloader " + extraClassPathDirectory);
- generator.setLoader(fixClassLoader(extraClassPathDirectory));
- }
+ ClassLoader loader = fixClassLoader();
+ generator.setLoader(loader);
/* Execution */
generator.execute();
}
@@ -189,18 +190,43 @@
getLog().info("add resource root :" + resources);
project.addResource(resources);
}
-
-
}
- protected ClassLoader fixClassLoader(File dirToAdd) throws MojoExecutionException {
+ /**
+ * Prepare le classLoader a utiliser dans le generateur.
+ * <p/>
+ * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté.
+ * <p/>
+ * Si des références à des sibling modules, ils seront rajoutés aussi.
+ *
+ * @return le class loader modifie
+ * @throws MojoExecutionException if any pb
+ */
+ protected ClassLoader fixClassLoader() throws MojoExecutionException {
try {
+ List<URL> urls = new ArrayList<URL>();
+ if (extraClassPathDirectory != null) {
+ getLog().info("add extra directory in generator's classLoader : '" + extraClassPathDirectory + "'");
+ urls.add(extraClassPathDirectory.toURI().toURL());
+ }
+ if (project.getProjectReferences() != null) {
+ for (Object o : project.getProjectReferences().entrySet()) {
+ Entry entry = (Entry) o;
+ MavenProject relatedProject = (MavenProject) entry.getValue();
+ getLog().info("add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ //TODO il faudrait peut-etre aussi ajouter les dependances ?
+ urls.add(relatedProject.getArtifact().getFile().toURI().toURL());
+ }
+ }
// we ask to add the directory in classloader
- return new URLClassLoader(new URL[]{dirToAdd.toURI().toURL()}, getClass().getClassLoader());
+ ClassLoader loader = getClass().getClassLoader();
+ if (!urls.isEmpty()) {
+ loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), loader);
+ }
+ return loader;
} catch (MalformedURLException e) {
throw new MojoExecutionException(e.getMessage());
}
-
}
}
1
0
[Lutingenerator-commits] r417 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 09 Feb '09
by schorlet@users.labs.libre-entreprise.org 09 Feb '09
09 Feb '09
Author: schorlet
Date: 2009-02-09 08:34:42 +0000 (Mon, 09 Feb 2009)
New Revision: 417
Modified:
lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
Log:
associations entre classes
Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-06 09:49:12 UTC (rev 416)
+++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-09 08:34:42 UTC (rev 417)
@@ -1,127 +1,173 @@
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:extensions="http://www.codelutin.com/XSLTExtensions"
xmlns:redirect="http://xml.apache.org/xalan/redirect"
extension-element-prefixes="extensions redirect"
xmlns="http://www.codelutin.org/lutingenerator/objectModel"
xmlns:packageValidator="xalan://org.codelutin.generator.PackageValidator"
- xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
- xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
-
- <xsl:output method="xml" encoding="UTF-8" indent="yes"
- xalan:indent-amount="2" />
-
+ xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
+
+ <xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="2"/>
+
+
<!-- processing entry point. We'll process everything from that root package path. Everything else is ignored -->
- <xsl:param name="fullPackagePath" />
- <xsl:param name="extraPackages" />
-
+ <xsl:param name="fullPackagePath"/>
+ <xsl:param name="extraPackages"/>
+
<!-- TODO: replace(@name, '::', '.') -->
- <xsl:variable name="modelName" select="/xmi:XMI/uml:Model/@name" />
-
+ <xsl:variable name="modelName" select="/xmi:XMI/uml:Model/@name"/>
+
<!--
- . Matching templates
+ . Matching templates
-->
-
+
<xsl:template match="/xmi:XMI/uml:Model">
<xsl:element name="objectModel">
<xsl:attribute name="name">
- <xsl:value-of select="$modelName" />
+ <xsl:value-of select="$modelName"/>
</xsl:attribute>
-
+
<xsl:apply-templates>
- <xsl:with-param name="parentLocalPackageName"
- select="$modelName" />
+ <xsl:with-param name="parentLocalPackageName" select="$modelName"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
-
- <xsl:template match="text()|attribute" />
-
+
+ <xsl:template match="text()|attribute"/>
+
<xsl:template match="*">
- <xsl:param name="parentLocalPackageName" />
+ <xsl:param name="parentLocalPackageName"/>
<xsl:apply-templates>
<xsl:with-param name="parentLocalPackageName">
- <xsl:value-of select="$parentLocalPackageName" />
+ <xsl:value-of select="$parentLocalPackageName"/>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
-
-
+
+ <!-- uml:Package -->
<xsl:template match="packagedElement[@xmi:type='uml:Package']">
- <xsl:param name="parentLocalPackageName" />
-
+ <xsl:param name="parentLocalPackageName"/>
+
<xsl:variable name="packageName">
- <xsl:value-of select="@name" />
+ <xsl:value-of select="@name"/>
</xsl:variable>
-
+
<xsl:variable name="localPackageName">
- <xsl:value-of
- select="concat($parentLocalPackageName, '.', $packageName)" />
+ <xsl:value-of select="concat($parentLocalPackageName, '.', $packageName)"/>
</xsl:variable>
-
+
<xsl:apply-templates>
<xsl:with-param name="parentLocalPackageName">
- <xsl:value-of select="$localPackageName" />
+ <xsl:value-of select="$localPackageName"/>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
-
+
+ <!-- uml:Class -->
<xsl:template match="packagedElement[@xmi:type='uml:Class']">
- <xsl:param name="parentLocalPackageName" />
-
- <xsl:variable name="classId">
- <xsl:value-of select="@xmi.id" />
- </xsl:variable>
-
- <xsl:if test="@isAbstract='true'">
- <xsl:attribute name="abstract">
- <xsl:text>true</xsl:text>
- </xsl:attribute>
- </xsl:if>
+ <xsl:param name="parentLocalPackageName"/>
<xsl:element name="class">
<!-- class properties -->
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
+ <xsl:value-of select="@name"/>
</xsl:attribute>
-
+
<xsl:attribute name="package">
- <xsl:value-of select="$parentLocalPackageName" />
+ <xsl:value-of select="$parentLocalPackageName"/>
</xsl:attribute>
-
+
+ <xsl:if test="@isAbstract='true'">
+ <xsl:attribute name="abstract">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
<!-- stereotypes -->
- <xsl:for-each
- select="/xmi:XMI/child::*[@base_Class = current()/@xmi:id]">
+ <xsl:for-each select="/xmi:XMI/child::*[@base_Class = current()/@xmi:id]">
<xsl:element name="stereotype">
<xsl:attribute name="name">
- <xsl:value-of select="local-name()" />
+ <xsl:value-of select="local-name()"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
-
+
<!-- interfaces -->
- <xsl:apply-templates select="interfaceRealization" />
-
+ <xsl:apply-templates select="interfaceRealization"/>
+
<!-- extends -->
- <xsl:apply-templates select="generalization" />
-
+ <xsl:apply-templates select="generalization"/>
+
<!-- attributes -->
- <xsl:apply-templates select="ownedAttribute" />
-
+ <xsl:apply-templates select="ownedAttribute"/>
+
<!-- operations -->
- <xsl:apply-templates select="ownedOperation" />
-
+ <xsl:apply-templates select="ownedOperation"/>
+
+ <!-- associations -->
+ <xsl:call-template name="UMLAssociations"/>
+
</xsl:element>
</xsl:template>
-
+
+ <!-- uml:Interface -->
+ <xsl:template match="packagedElement[@xmi:type='uml:Interface']">
+ <xsl:param name="parentLocalPackageName"/>
+
+ <xsl:element name="interface">
+ <!-- interface properties -->
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="package">
+ <xsl:value-of select="$parentLocalPackageName"/>
+ </xsl:attribute>
+
+ <xsl:if test="@isAbstract='true'">
+ <xsl:attribute name="abstract">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- stereotypes -->
+ <xsl:for-each select="/xmi:XMI/child::*[@base_Interface = current()/@xmi:id]">
+ <xsl:element name="stereotype">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name()"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:for-each>
+
+ <!-- extends -->
+ <xsl:apply-templates select="generalization"/>
+
+ <!-- operations -->
+ <xsl:apply-templates select="ownedOperation"/>
+
+ </xsl:element>
+ </xsl:template>
+
<xsl:template match="interfaceRealization">
-
+
<xsl:element name="interface">
<xsl:attribute name="name">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="childpath">supplier</xsl:with-param>
- </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="supplier">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">supplier</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="@supplier">
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Interface'][@xmi:id=current()/@supplier]"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
</xsl:attribute>
</xsl:element>
</xsl:template>
@@ -136,80 +182,157 @@
</xsl:attribute>
</xsl:element>
</xsl:template>
-
+
<xsl:template match="ownedAttribute">
-
+
<xsl:element name="attribute">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
+ <xsl:value-of select="@name"/>
</xsl:attribute>
-
- <xsl:call-template name="UMLParameter" />
+
+ <xsl:call-template name="UMLParameter"/>
</xsl:element>
</xsl:template>
-
+
<xsl:template match="ownedOperation">
-
+
<xsl:element name="operation">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
-
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+
<!-- operation parameters -->
<xsl:for-each select="ownedParameter">
<xsl:choose>
<xsl:when test="@direction = 'return'">
<xsl:element name="returnParameter">
- <xsl:call-template name="UMLParameter" />
+ <xsl:call-template name="UMLParameter"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="parameter">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
+ <xsl:value-of select="@name"/>
</xsl:attribute>
- <xsl:call-template name="UMLParameter" />
+ <xsl:call-template name="UMLParameter"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
-
+
</xsl:element>
</xsl:template>
-
<!--
- . Named templates
+ . Named templates
-->
<!--
called by ownedAttribute and ownedOperation
- -->
+ -->
<xsl:template name="UMLParameter">
<xsl:choose>
<xsl:when test="type">
<xsl:attribute name="type">
<xsl:call-template name="fullClassName">
- <xsl:with-param name="childpath">type</xsl:with-param>
+ <xsl:with-param name="childpath">type</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</xsl:when>
-
+
<xsl:when test="@type">
<xsl:attribute name="type">
<xsl:variable name="typeref"
- select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class' or @xmi:type='uml:DataType' or @xmi:type='uml:Enumeration'][@xmi:id=current()/@type]" />
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface'][@xmi:id=current()/@type]"/>
<xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
- select="$typeref" />
+ <xsl:with-param name="node" select="$typeref"/>
</xsl:call-template>
- </xsl:attribute>
+ </xsl:attribute>
</xsl:when>
-
</xsl:choose>
</xsl:template>
-
+
+ <xsl:template name="UMLAssociations">
+ <xsl:for-each
+ select="following-sibling::packagedElement[@xmi:type='uml:Association']/ownedEnd[@type=current()/@xmi:id]">
+
+ <xsl:variable name="endnode"
+ select="parent::packagedElement/ownedEnd[@association=current()/@association][not(@type) or @type != current()/@type]"/>
+
+ <xsl:if test="$endnode">
+
+ <xsl:element name="attribute">
+ <xsl:attribute name="name">
+ <xsl:value-of select="$endnode/@name"/>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$endnode/type">
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName3">
+ <xsl:with-param name="node" select="$endnode/type"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$endnode/@type">
+ <xsl:attribute name="type">
+ <xsl:variable name="typeref"
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface'][@xmi:id=$endnode/@type]"/>
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node" select="$typeref"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$endnode/@aggregation">
+ <xsl:attribute name="associationType">
+ <xsl:value-of select="$endnode/@aggregation"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="minMultiplicity">
+ <xsl:choose>
+ <xsl:when test="$endnode/lowerValue/@value">
+ <xsl:value-of select="$endnode/lowerValue/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="maxMultiplicity">
+ <xsl:choose>
+ <xsl:when test="$endnode/upperValue/@value">
+ <xsl:value-of select="$endnode/upperValue/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>*</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:if
+ test="contains(parent::packagedElement/@navigableOwnedEnd, $endnode/@xmi:id)">
+ <xsl:attribute name="navigable">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$endnode/@isOrdered">
+ <xsl:attribute name="ordering">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
<!--
node param must be a Xpath node.
the node designed by node param must have @xmi:type.
@@ -217,119 +340,106 @@
print fullClassName of type designed by node param.
-->
<xsl:template name="fullClassName2">
- <xsl:param name="node" />
-
+ <xsl:param name="node"/>
+
<xsl:choose>
<xsl:when test="$node[@xmi:type='uml:DataType']">
- <xsl:value-of select="$node/@name" />
+ <xsl:value-of select="$node/@name"/>
</xsl:when>
-
+
<xsl:when test="$node[@xmi:type='uml:Enumeration']">
- <xsl:value-of select="$node/@name" />
+ <xsl:value-of select="$node/@name"/>
</xsl:when>
<xsl:when test="$node[@xmi:type = 'uml:Class']">
<xsl:call-template name="fullClassName2">
<xsl:with-param name="node"
- select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']"/>
</xsl:call-template>
- <xsl:value-of select="$node/@name" />
+ <xsl:value-of select="$node/@name"/>
</xsl:when>
-
+
<xsl:when test="$node[@xmi:type = 'uml:Interface']">
<xsl:call-template name="fullClassName2">
<xsl:with-param name="node"
- select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']"/>
</xsl:call-template>
- <xsl:value-of select="$node/@name" />
+ <xsl:value-of select="$node/@name"/>
</xsl:when>
-
+
<xsl:when test="$node[@xmi:type='uml:Package']">
<xsl:choose>
- <xsl:when
- test="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']">
+ <xsl:when test="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']">
<xsl:call-template name="fullClassName2">
<xsl:with-param name="node"
- select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
- select="$node/ancestor::uml:Model" />
+ <xsl:with-param name="node" select="$node/ancestor::uml:Model"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
- <xsl:value-of select="concat($node/@name, '.')" />
+ <xsl:value-of select="concat($node/@name, '.')"/>
</xsl:when>
-
+
<xsl:when test="$node[name()='uml:Model']">
- <xsl:value-of select="concat($modelName, '.')" />
+ <xsl:value-of select="concat($modelName, '.')"/>
</xsl:when>
</xsl:choose>
</xsl:template>
-
+
+ <xsl:template name="fullClassName3">
+ <xsl:param name="node"/>
+
+ <xsl:variable name="typeref" select="$node/@href"/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@xmi:type = 'uml:PrimitiveType'">
+ <xsl:value-of select="substring-after($typeref, '#')"/>
+ </xsl:when>
+
+ <xsl:when
+ test="$node/@xmi:type = 'uml:Enumeration' or $node/@xmi:type = 'uml:DataType' or $node/@xmi:type = 'uml:Class' or $node/@xmi:type = 'uml:Interface'">
+ <xsl:variable name="xmi-type" select="$node/@xmi:type"/>
+ <xsl:variable name="external-url" select="substring-before($typeref, '#')"/>
+ <xsl:variable name="external-id" select="substring-after($typeref, '#')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($external-url, 'ACCELEO')">
+ <!-- TODO: create resolver for ACCELEO resources -->
+ <xsl:value-of select="$typeref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="fullClassName2">
+ <!-- TODO: create resolver for external resources -->
+ <!-- WARING: specific code -->
+ <xsl:with-param name="node"
+ select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ </xsl:choose>
+
+ </xsl:template>
+
<!--
childpath param must be a Xpath relative path.
the node designed by childpath param must have @xmi:type and @href attributes.
print fullClassName of type designed by childpath param (helped by fullClassName2 template).
-->
<xsl:template name="fullClassName">
- <xsl:param name="childpath" />
- <xsl:variable name="child"
- select="child::*[name() = $childpath]" />
-
+ <xsl:param name="childpath"/>
+ <xsl:variable name="child" select="child::*[name() = $childpath]"/>
+
<xsl:if test="$child">
- <xsl:variable name="typeref" select="$child/@href" />
-
- <xsl:choose>
- <xsl:when
- test="$child/@xmi:type = 'uml:PrimitiveType'">
- <xsl:value-of
- select="substring-after($typeref, '#')" />
- </xsl:when>
-
- <xsl:when
- test="$child/@xmi:type = 'uml:Enumeration'">
- <xsl:variable name="external-url"
- select="substring-before($typeref, '#')" />
- <xsl:variable name="external-id"
- select="substring-after($typeref, '#')" />
- <xsl:call-template name="fullClassName2">
- <!-- TODO: create resolver for external resources -->
- <!-- WARING: specific code -->
- <xsl:with-param name="node"
- select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration'][@xmi:id=$external-id]" />
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="$child/@xmi:type = 'uml:Class'">
- <xsl:variable name="external-url"
- select="substring-before($typeref, '#')" />
- <xsl:variable name="external-id"
- select="substring-after($typeref, '#')" />
- <xsl:call-template name="fullClassName2">
- <!-- TODO: create resolver for external resources -->
- <!-- WARING: specific code -->
- <xsl:with-param name="node"
- select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$external-id]" />
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="$child/@xmi:type = 'uml:Interface'">
- <xsl:variable name="external-url"
- select="substring-before($typeref, '#')" />
- <xsl:variable name="external-id"
- select="substring-after($typeref, '#')" />
- <xsl:call-template name="fullClassName2">
- <!-- TODO: create resolver for external resources -->
- <!-- WARING: specific code -->
- <xsl:with-param name="node"
- select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Interface'][@xmi:id=$external-id]" />
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
+ <xsl:call-template name="fullClassName3">
+ <xsl:with-param name="node" select="$child"/>
+ </xsl:call-template>
</xsl:if>
</xsl:template>
-
+
</xsl:stylesheet>
1
0
[Lutingenerator-commits] r416 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 06 Feb '09
by schorlet@users.labs.libre-entreprise.org 06 Feb '09
06 Feb '09
Author: schorlet
Date: 2009-02-06 09:49:12 +0000 (Fri, 06 Feb 2009)
New Revision: 416
Modified:
lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
Log:
ajout de templates pour interfaceRealization et generalization
Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-05 14:43:52 UTC (rev 415)
+++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-06 09:49:12 UTC (rev 416)
@@ -74,6 +74,12 @@
<xsl:value-of select="@xmi.id" />
</xsl:variable>
+ <xsl:if test="@isAbstract='true'">
+ <xsl:attribute name="abstract">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
<xsl:element name="class">
<!-- class properties -->
<xsl:attribute name="name">
@@ -94,15 +100,43 @@
</xsl:element>
</xsl:for-each>
- <!-- class attributes -->
+ <!-- interfaces -->
+ <xsl:apply-templates select="interfaceRealization" />
+
+ <!-- extends -->
+ <xsl:apply-templates select="generalization" />
+
+ <!-- attributes -->
<xsl:apply-templates select="ownedAttribute" />
- <!-- class operations -->
+ <!-- operations -->
<xsl:apply-templates select="ownedOperation" />
</xsl:element>
</xsl:template>
+ <xsl:template match="interfaceRealization">
+
+ <xsl:element name="interface">
+ <xsl:attribute name="name">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">supplier</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="generalization">
+
+ <xsl:element name="superclass">
+ <xsl:attribute name="name">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">general</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
<xsl:template match="ownedAttribute">
<xsl:element name="attribute">
@@ -110,11 +144,7 @@
<xsl:value-of select="@name" />
</xsl:attribute>
- <xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="childpath">type</xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:call-template name="UMLParameter" />
</xsl:element>
</xsl:template>
@@ -129,10 +159,17 @@
<xsl:for-each select="ownedParameter">
<xsl:choose>
<xsl:when test="@direction = 'return'">
- <xsl:call-template name="UMLReturnParameter" />
+ <xsl:element name="returnParameter">
+ <xsl:call-template name="UMLParameter" />
+ </xsl:element>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="UMLParameter" />
+ <xsl:element name="parameter">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+ <xsl:call-template name="UMLParameter" />
+ </xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
@@ -140,73 +177,57 @@
</xsl:element>
</xsl:template>
-
+
<!--
. Named templates
-->
+
+ <!--
+ called by ownedAttribute and ownedOperation
+ -->
<xsl:template name="UMLParameter">
+
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">type</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
- <xsl:element name="parameter">
- <xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:when test="@type">
+ <xsl:attribute name="type">
+ <xsl:variable name="typeref"
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class' or @xmi:type='uml:DataType' or @xmi:type='uml:Enumeration'][@xmi:id=current()/@type]" />
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$typeref" />
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
- <xsl:choose>
- <xsl:when test="type">
- <xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="childpath">type</xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
-
- <xsl:when test="@type">
- <xsl:attribute name="type">
- <xsl:variable name="typeref"
- select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@type]" />
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
- select="$typeref" />
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
-
- </xsl:choose>
- </xsl:element>
+ </xsl:choose>
</xsl:template>
- <xsl:template name="UMLReturnParameter">
- <xsl:element name="returnParameter">
-
- <xsl:choose>
- <xsl:when test="type">
- <xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="childpath">type</xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
-
- <xsl:when test="@type">
- <xsl:attribute name="type">
- <xsl:variable name="typeref"
- select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@type]" />
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
- select="$typeref" />
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
-
- </xsl:choose>
-
- </xsl:element>
- </xsl:template>
-
+ <!--
+ node param must be a Xpath node.
+ the node designed by node param must have @xmi:type.
+ walks thru the model in order to print super package names.
+ print fullClassName of type designed by node param.
+ -->
<xsl:template name="fullClassName2">
<xsl:param name="node" />
<xsl:choose>
+ <xsl:when test="$node[@xmi:type='uml:DataType']">
+ <xsl:value-of select="$node/@name" />
+ </xsl:when>
+
+ <xsl:when test="$node[@xmi:type='uml:Enumeration']">
+ <xsl:value-of select="$node/@name" />
+ </xsl:when>
+
<xsl:when test="$node[@xmi:type = 'uml:Class']">
<xsl:call-template name="fullClassName2">
<xsl:with-param name="node"
@@ -215,6 +236,14 @@
<xsl:value-of select="$node/@name" />
</xsl:when>
+ <xsl:when test="$node[@xmi:type = 'uml:Interface']">
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ </xsl:call-template>
+ <xsl:value-of select="$node/@name" />
+ </xsl:when>
+
<xsl:when test="$node[@xmi:type='uml:Package']">
<xsl:choose>
<xsl:when
@@ -240,6 +269,11 @@
</xsl:choose>
</xsl:template>
+ <!--
+ childpath param must be a Xpath relative path.
+ the node designed by childpath param must have @xmi:type and @href attributes.
+ print fullClassName of type designed by childpath param (helped by fullClassName2 template).
+ -->
<xsl:template name="fullClassName">
<xsl:param name="childpath" />
<xsl:variable name="child"
@@ -247,12 +281,28 @@
<xsl:if test="$child">
<xsl:variable name="typeref" select="$child/@href" />
+
<xsl:choose>
<xsl:when
test="$child/@xmi:type = 'uml:PrimitiveType'">
<xsl:value-of
select="substring-after($typeref, '#')" />
</xsl:when>
+
+ <xsl:when
+ test="$child/@xmi:type = 'uml:Enumeration'">
+ <xsl:variable name="external-url"
+ select="substring-before($typeref, '#')" />
+ <xsl:variable name="external-id"
+ select="substring-after($typeref, '#')" />
+ <xsl:call-template name="fullClassName2">
+ <!-- TODO: create resolver for external resources -->
+ <!-- WARING: specific code -->
+ <xsl:with-param name="node"
+ select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration'][@xmi:id=$external-id]" />
+ </xsl:call-template>
+ </xsl:when>
+
<xsl:when test="$child/@xmi:type = 'uml:Class'">
<xsl:variable name="external-url"
select="substring-before($typeref, '#')" />
@@ -260,10 +310,24 @@
select="substring-after($typeref, '#')" />
<xsl:call-template name="fullClassName2">
<!-- TODO: create resolver for external resources -->
+ <!-- WARING: specific code -->
<xsl:with-param name="node"
- select="document(concat('file:///home/sch/tmp/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$external-id]" />
+ select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$external-id]" />
</xsl:call-template>
</xsl:when>
+
+ <xsl:when test="$child/@xmi:type = 'uml:Interface'">
+ <xsl:variable name="external-url"
+ select="substring-before($typeref, '#')" />
+ <xsl:variable name="external-id"
+ select="substring-after($typeref, '#')" />
+ <xsl:call-template name="fullClassName2">
+ <!-- TODO: create resolver for external resources -->
+ <!-- WARING: specific code -->
+ <xsl:with-param name="node"
+ select="document(concat('file:///usr/local/share/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Interface'][@xmi:id=$external-id]" />
+ </xsl:call-template>
+ </xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
1
0
[Lutingenerator-commits] r415 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 05 Feb '09
by schorlet@users.labs.libre-entreprise.org 05 Feb '09
05 Feb '09
Author: schorlet
Date: 2009-02-05 14:43:52 +0000 (Thu, 05 Feb 2009)
New Revision: 415
Modified:
lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
Log:
parameter des operations sur les class
TODO: besoin d'un resolver pour les resources externes
Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-04 08:46:11 UTC (rev 414)
+++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-05 14:43:52 UTC (rev 415)
@@ -17,7 +17,7 @@
<xsl:param name="extraPackages" />
<!-- TODO: replace(@name, '::', '.') -->
- <xsl:variable name="modelName" select="/xmi:XMI/uml:Model/@name"/>
+ <xsl:variable name="modelName" select="/xmi:XMI/uml:Model/@name" />
<!--
. Matching templates
@@ -146,6 +146,33 @@
-->
<xsl:template name="UMLParameter">
+ <xsl:element name="parameter">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">type</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="@type">
+ <xsl:attribute name="type">
+ <xsl:variable name="typeref"
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@type]" />
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$typeref" />
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+
+ </xsl:choose>
+ </xsl:element>
</xsl:template>
<xsl:template name="UMLReturnParameter">
@@ -165,7 +192,8 @@
<xsl:variable name="typeref"
select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@type]" />
<xsl:call-template name="fullClassName2">
- <xsl:with-param name="node" select="$typeref" />
+ <xsl:with-param name="node"
+ select="$typeref" />
</xsl:call-template>
</xsl:attribute>
</xsl:when>
@@ -189,7 +217,8 @@
<xsl:when test="$node[@xmi:type='uml:Package']">
<xsl:choose>
- <xsl:when test="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']">
+ <xsl:when
+ test="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']">
<xsl:call-template name="fullClassName2">
<xsl:with-param name="node"
select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
@@ -206,7 +235,7 @@
</xsl:when>
<xsl:when test="$node[name()='uml:Model']">
- <xsl:value-of select="concat($modelName, '.')"/>
+ <xsl:value-of select="concat($modelName, '.')" />
</xsl:when>
</xsl:choose>
</xsl:template>
@@ -217,12 +246,24 @@
select="child::*[name() = $childpath]" />
<xsl:if test="$child">
+ <xsl:variable name="typeref" select="$child/@href" />
<xsl:choose>
<xsl:when
test="$child/@xmi:type = 'uml:PrimitiveType'">
<xsl:value-of
- select="substring-after($child/@href, '#')" />
+ select="substring-after($typeref, '#')" />
</xsl:when>
+ <xsl:when test="$child/@xmi:type = 'uml:Class'">
+ <xsl:variable name="external-url"
+ select="substring-before($typeref, '#')" />
+ <xsl:variable name="external-id"
+ select="substring-after($typeref, '#')" />
+ <xsl:call-template name="fullClassName2">
+ <!-- TODO: create resolver for external resources -->
+ <xsl:with-param name="node"
+ select="document(concat('file:///home/sch/tmp/uml/', $external-url))/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$external-id]" />
+ </xsl:call-template>
+ </xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
1
0
[Lutingenerator-commits] r414 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 04 Feb '09
by schorlet@users.labs.libre-entreprise.org 04 Feb '09
04 Feb '09
Author: schorlet
Date: 2009-02-04 08:46:11 +0000 (Wed, 04 Feb 2009)
New Revision: 414
Modified:
lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
Log:
returnParameter des operation sur les class
Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-03 20:57:21 UTC (rev 413)
+++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-04 08:46:11 UTC (rev 414)
@@ -16,6 +16,9 @@
<xsl:param name="fullPackagePath" />
<xsl:param name="extraPackages" />
+ <!-- TODO: replace(@name, '::', '.') -->
+ <xsl:variable name="modelName" select="/xmi:XMI/uml:Model/@name"/>
+
<!--
. Matching templates
-->
@@ -23,13 +26,12 @@
<xsl:template match="/xmi:XMI/uml:Model">
<xsl:element name="objectModel">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
+ <xsl:value-of select="$modelName" />
</xsl:attribute>
<xsl:apply-templates>
- <!-- TODO: replace(@name, '::', '.') -->
<xsl:with-param name="parentLocalPackageName"
- select="@name" />
+ select="$modelName" />
</xsl:apply-templates>
</xsl:element>
</xsl:template>
@@ -94,6 +96,10 @@
<!-- class attributes -->
<xsl:apply-templates select="ownedAttribute" />
+
+ <!-- class operations -->
+ <xsl:apply-templates select="ownedOperation" />
+
</xsl:element>
</xsl:template>
@@ -112,10 +118,99 @@
</xsl:element>
</xsl:template>
+ <xsl:template match="ownedOperation">
+
+ <xsl:element name="operation">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+
+ <!-- operation parameters -->
+ <xsl:for-each select="ownedParameter">
+ <xsl:choose>
+ <xsl:when test="@direction = 'return'">
+ <xsl:call-template name="UMLReturnParameter" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="UMLParameter" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+
+ </xsl:element>
+ </xsl:template>
+
+
<!--
. Named templates
-->
+ <xsl:template name="UMLParameter">
+ </xsl:template>
+
+ <xsl:template name="UMLReturnParameter">
+ <xsl:element name="returnParameter">
+
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">type</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="@type">
+ <xsl:attribute name="type">
+ <xsl:variable name="typeref"
+ select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@type]" />
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node" select="$typeref" />
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+
+ </xsl:choose>
+
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="fullClassName2">
+ <xsl:param name="node" />
+
+ <xsl:choose>
+ <xsl:when test="$node[@xmi:type = 'uml:Class']">
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ </xsl:call-template>
+ <xsl:value-of select="$node/@name" />
+ </xsl:when>
+
+ <xsl:when test="$node[@xmi:type='uml:Package']">
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']">
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$node/ancestor::packagedElement[@xmi:type = 'uml:Package']" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
+ select="$node/ancestor::uml:Model" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="concat($node/@name, '.')" />
+ </xsl:when>
+
+ <xsl:when test="$node[name()='uml:Model']">
+ <xsl:value-of select="concat($modelName, '.')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
<xsl:template name="fullClassName">
<xsl:param name="childpath" />
<xsl:variable name="child"
1
0
[Lutingenerator-commits] r413 - lutingenerator/trunk
by tchemit@users.labs.libre-entreprise.org 03 Feb '09
by tchemit@users.labs.libre-entreprise.org 03 Feb '09
03 Feb '09
Author: tchemit
Date: 2009-02-03 20:57:21 +0000 (Tue, 03 Feb 2009)
New Revision: 413
Modified:
lutingenerator/trunk/pom.xml
Log:
prepare release lutinproject 3.4
Modified: lutingenerator/trunk/pom.xml
===================================================================
--- lutingenerator/trunk/pom.xml 2009-02-03 13:36:59 UTC (rev 412)
+++ lutingenerator/trunk/pom.xml 2009-02-03 20:57:21 UTC (rev 413)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -24,14 +25,14 @@
<version>${lutinutil.version}</version>
<scope>compile</scope>
</dependency>
-
+
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
-
+
<!-- JAXP parser impl for digester -->
<dependency>
<groupId>xerces</groupId>
@@ -61,7 +62,7 @@
<scope>compile</scope>
</dependency>
- <!-- dom4j dep -->
+ <!-- dom4j dep -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
@@ -85,25 +86,46 @@
<packaging>jar</packaging>
<properties>
-
+
<!-- id du projet du labs -->
<labs.id>39</labs.id>
-
+
<!-- name du projet du labs -->
<labs.project>lutingenerator</labs.project>
- <!-- lutinutil version -->
- <!--lutinutil.version>1.0</lutinutil.version-->
+ <!-- pour surcharger la version definie dans lutinproject -->
+ <generator.version>${project.version}</generator.version>
- <!-- todo pour la montee de version voir la doc -->
- <lutingenerator.version>${project.version}</lutingenerator.version>
-
</properties>
<build>
-
+
<defaultGoal>install</defaultGoal>
+ <plugins>
+ <!-- Always process jrst files, but only called on pre-site phase -->
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-jrst-plugin</artifactId>
+ <version>${jrst.version}</version>
+ <configuration>
+ <directoryIn>${maven.src.dir}/site</directoryIn>
+ <directoryOut>${maven.site.gen.dir}</directoryOut>
+ <defaultLocale>fr</defaultLocale>
+ <inputEncoding>${maven.compile.encoding}</inputEncoding>
+ <outputEncoding>${maven.compile.encoding}</outputEncoding>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>pre-site</phase>
+ <goals>
+ <goal>jrst</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
</build>
<!-- ************************************************************* -->
@@ -117,4 +139,39 @@
<url>${maven.scm.url}</url>
</scm>
+ <profiles>
+ <!-- perform only on a release stage when using the maven-release-plugin -->
+ <profile>
+ <id>release-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <!-- always add license and third-party files to classpath -->
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-license-switcher-plugin</artifactId>
+ <version>${license-switcher.version}</version>
+ <configuration>
+ <licenseName>${license-switcher.licenseName}</licenseName>
+ </configuration>
+ <executions>
+ <execution>
+ <id>attach-licenses</id>
+ <goals>
+ <goal>license</goal>
+ <goal>third-party</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
1
0
[Lutingenerator-commits] r412 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 03 Feb '09
by schorlet@users.labs.libre-entreprise.org 03 Feb '09
03 Feb '09
Author: schorlet
Date: 2009-02-03 13:36:59 +0000 (Tue, 03 Feb 2009)
New Revision: 412
Added:
lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
Log:
Fichier XSL de transformation de XMI 2.1 en objectmodel
Added: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl (rev 0)
+++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-03 13:36:59 UTC (rev 412)
@@ -0,0 +1,135 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xslt"
+ xmlns:extensions="http://www.codelutin.com/XSLTExtensions"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ extension-element-prefixes="extensions redirect"
+ xmlns="http://www.codelutin.org/lutingenerator/objectModel"
+ xmlns:packageValidator="xalan://org.codelutin.generator.PackageValidator"
+ xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
+ xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
+
+ <xsl:output method="xml" encoding="UTF-8" indent="yes"
+ xalan:indent-amount="2" />
+
+ <!-- processing entry point. We'll process everything from that root package path. Everything else is ignored -->
+ <xsl:param name="fullPackagePath" />
+ <xsl:param name="extraPackages" />
+
+ <!--
+ . Matching templates
+ -->
+
+ <xsl:template match="/xmi:XMI/uml:Model">
+ <xsl:element name="objectModel">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+
+ <xsl:apply-templates>
+ <!-- TODO: replace(@name, '::', '.') -->
+ <xsl:with-param name="parentLocalPackageName"
+ select="@name" />
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="text()|attribute" />
+
+ <xsl:template match="*">
+ <xsl:param name="parentLocalPackageName" />
+ <xsl:apply-templates>
+ <xsl:with-param name="parentLocalPackageName">
+ <xsl:value-of select="$parentLocalPackageName" />
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <xsl:template match="packagedElement[@xmi:type='uml:Package']">
+ <xsl:param name="parentLocalPackageName" />
+
+ <xsl:variable name="packageName">
+ <xsl:value-of select="@name" />
+ </xsl:variable>
+
+ <xsl:variable name="localPackageName">
+ <xsl:value-of
+ select="concat($parentLocalPackageName, '.', $packageName)" />
+ </xsl:variable>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="parentLocalPackageName">
+ <xsl:value-of select="$localPackageName" />
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="packagedElement[@xmi:type='uml:Class']">
+ <xsl:param name="parentLocalPackageName" />
+
+ <xsl:variable name="classId">
+ <xsl:value-of select="@xmi.id" />
+ </xsl:variable>
+
+ <xsl:element name="class">
+ <!-- class properties -->
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+
+ <xsl:attribute name="package">
+ <xsl:value-of select="$parentLocalPackageName" />
+ </xsl:attribute>
+
+ <!-- stereotypes -->
+ <xsl:for-each
+ select="/xmi:XMI/child::*[@base_Class = current()/@xmi:id]">
+ <xsl:element name="stereotype">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name()" />
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:for-each>
+
+ <!-- class attributes -->
+ <xsl:apply-templates select="ownedAttribute" />
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="ownedAttribute">
+
+ <xsl:element name="attribute">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
+
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">type</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <!--
+ . Named templates
+ -->
+
+ <xsl:template name="fullClassName">
+ <xsl:param name="childpath" />
+ <xsl:variable name="child"
+ select="child::*[name() = $childpath]" />
+
+ <xsl:if test="$child">
+ <xsl:choose>
+ <xsl:when
+ test="$child/@xmi:type = 'uml:PrimitiveType'">
+ <xsl:value-of
+ select="substring-after($child/@href, '#')" />
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
1
0