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
December 2008
- 3 participants
- 27 discussions
[Lutingenerator-commits] r388 - lutingenerator/trunk
by tchemit@users.labs.libre-entreprise.org 10 Dec '08
by tchemit@users.labs.libre-entreprise.org 10 Dec '08
10 Dec '08
Author: tchemit
Date: 2008-12-10 14:31:54 +0000 (Wed, 10 Dec 2008)
New Revision: 388
Added:
lutingenerator/trunk/README.txt
lutingenerator/trunk/changelog.txt
Removed:
lutingenerator/trunk/changelog
Modified:
lutingenerator/trunk/pom.xml
Log:
use lutinproject 3.2 and lutinutil 1.0
Added: lutingenerator/trunk/README.txt
===================================================================
--- lutingenerator/trunk/README.txt (rev 0)
+++ lutingenerator/trunk/README.txt 2008-12-10 14:31:54 UTC (rev 388)
@@ -0,0 +1,2 @@
+To deploy new version of pom: mvn deploy
+To install localy: mvn install
Deleted: lutingenerator/trunk/changelog
===================================================================
--- lutingenerator/trunk/changelog 2008-12-09 09:49:14 UTC (rev 387)
+++ lutingenerator/trunk/changelog 2008-12-10 14:31:54 UTC (rev 388)
@@ -1,78 +0,0 @@
-0.62-SNAPSHOT
- * 20081208 [chorlet] correction bug #1737: Prise en compte du MetaModel UML dans les fichiers XMI
- - ajout du support des fichiers default-java.xml et default-uml14.xmi
-
-0.62 chemit 200811??
- * 20081203 [chemit] add a encoding property on generator to control file generation encoding
- * 20081118 [chemit] use lutinproject 3.1
- * 20081117 [chemit] : GeneratorTask can have a dedicated classLoader to be used to instanciate generator implementations
-
-0.61 chatellier 20081114
- * 20081101 [chemit]
- - add a parent setter on ChildGenerator
- - add an excludeTemplates property on Generator and GeneratorTask to permit exclusion of generators for some composite generator
-
-0.60 chemit 20081013
- * 20081013 [chemit]
- - make tests works again
- - clean pom
-
-ver-0-51 thimel 20080925
-
- * 20080925 [thimel] super pom in version 3.0
- * 20080901 [chatellier] Maven2 layout and LGPL3
- * 20070528 [chatellier] add tag values support to stateModel
- * 20070528 [chatellier] modify defaut stateModel generation
- * 20070523 [chatellier] remove lutinxml dependency
- * 20070523 [chatellier] UIModel implementation over digester :
- - use generics
- - non tested
- - no digester rules definided (no samples available)
- * 20070523 [chatellier] change property reverveAttribute to
- reverveAttributeName to resolve conflict in objectModel model.
- * 20070522 [chatellier] modify ObjectModel implementation :
- - to use JavaBeans conventions
- - parsed with commons-digester
- - to use generics
- * 20070520 [chatellier] add stateModel (parsed with commons-digester)
- * 20070520 [chatellier] correct generic type error on objectModel interfaces
-
-ver-0-50 poussin 20070425
-
- * add associationType for all attributes
- * 20070420 [chatellier] Ajout de l'export de la version du modèle xmi dans
- xmi1.2ToObjectModel.xsl
- * 20070420 [chatellier] ajout de la DTD objectModel
-
-ver-0-31 thimel 20060825
-
- * ajout de isIndexed sur les attributs
- * isOrdered est vrai si isIndexed est vrai ou que le tagValue order-by est
- present ou que ordering fixe sur ordered
- * Ajout de validateurs de modele + impl de validateur "basiques" base sur des
- noms (attributs, classes, ...).
-
-ver-0-30 thimel 20060303
-
- * Ajout des exceptions pour les operations
- * Correction du support des interfaces et classes abstraites
- * Double compatibilite Poseidon 3.2 / 4
-
-ver-0-29 thimel 20060228
-
- * Support de l'hértage pour les classes d'association
-
-ver-0-28 thimel 20060224
-
- * Support de Poseidon4
- * Possibilite d'avoir des tagValues sur les modeles
- * Ajout de l'extraction de ordered et de la navigabilite
-
-ver-0-27 thimel 20051213
-
- * Ajout d'une methode pour avoir la liste des attributs d'une classe
- * Correction erreur de fonctionnement dans ObjectModelImpl(XML).getInterface (doit renvoyer null si non trouve)
-
-0.26
-
- * Ajout du support des stereotypes sur les attributs
Copied: lutingenerator/trunk/changelog.txt (from rev 383, lutingenerator/trunk/changelog)
===================================================================
--- lutingenerator/trunk/changelog.txt (rev 0)
+++ lutingenerator/trunk/changelog.txt 2008-12-10 14:31:54 UTC (rev 388)
@@ -0,0 +1,78 @@
+0.62 chemit 20081210
+ * 20081210 [chemit] use lutinproject 3.2 and lutinutil 1.0
+ * 20081208 [chorlet] - correction bug #1737: Prise en compte du MetaModel UML dans les fichiers XMI
+ - ajout du support des fichiers default-java.xml et default-uml14.xmi
+
+ * 20081203 [chemit] add a encoding property on generator to control file generation encoding
+ * 20081118 [chemit] use lutinproject 3.1
+ * 20081117 [chemit] : GeneratorTask can have a dedicated classLoader to be used to instanciate generator implementations
+
+0.61 chatellier 20081114
+ * 20081101 [chemit]
+ - add a parent setter on ChildGenerator
+ - add an excludeTemplates property on Generator and GeneratorTask to permit exclusion of generators for some composite generator
+
+0.60 chemit 20081013
+ * 20081013 [chemit]
+ - make tests works again
+ - clean pom
+
+ver-0-51 thimel 20080925
+
+ * 20080925 [thimel] super pom in version 3.0
+ * 20080901 [chatellier] Maven2 layout and LGPL3
+ * 20070528 [chatellier] add tag values support to stateModel
+ * 20070528 [chatellier] modify defaut stateModel generation
+ * 20070523 [chatellier] remove lutinxml dependency
+ * 20070523 [chatellier] UIModel implementation over digester :
+ - use generics
+ - non tested
+ - no digester rules definided (no samples available)
+ * 20070523 [chatellier] change property reverveAttribute to
+ reverveAttributeName to resolve conflict in objectModel model.
+ * 20070522 [chatellier] modify ObjectModel implementation :
+ - to use JavaBeans conventions
+ - parsed with commons-digester
+ - to use generics
+ * 20070520 [chatellier] add stateModel (parsed with commons-digester)
+ * 20070520 [chatellier] correct generic type error on objectModel interfaces
+
+ver-0-50 poussin 20070425
+
+ * add associationType for all attributes
+ * 20070420 [chatellier] Ajout de l'export de la version du modèle xmi dans
+ xmi1.2ToObjectModel.xsl
+ * 20070420 [chatellier] ajout de la DTD objectModel
+
+ver-0-31 thimel 20060825
+
+ * ajout de isIndexed sur les attributs
+ * isOrdered est vrai si isIndexed est vrai ou que le tagValue order-by est
+ present ou que ordering fixe sur ordered
+ * Ajout de validateurs de modele + impl de validateur "basiques" base sur des
+ noms (attributs, classes, ...).
+
+ver-0-30 thimel 20060303
+
+ * Ajout des exceptions pour les operations
+ * Correction du support des interfaces et classes abstraites
+ * Double compatibilite Poseidon 3.2 / 4
+
+ver-0-29 thimel 20060228
+
+ * Support de l'hértage pour les classes d'association
+
+ver-0-28 thimel 20060224
+
+ * Support de Poseidon4
+ * Possibilite d'avoir des tagValues sur les modeles
+ * Ajout de l'extraction de ordered et de la navigabilite
+
+ver-0-27 thimel 20051213
+
+ * Ajout d'une methode pour avoir la liste des attributs d'une classe
+ * Correction erreur de fonctionnement dans ObjectModelImpl(XML).getInterface (doit renvoyer null si non trouve)
+
+0.26
+
+ * Ajout du support des stereotypes sur les attributs
\ No newline at end of file
Property changes on: lutingenerator/trunk/changelog.txt
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified: lutingenerator/trunk/pom.xml
===================================================================
--- lutingenerator/trunk/pom.xml 2008-12-09 09:49:14 UTC (rev 387)
+++ lutingenerator/trunk/pom.xml 2008-12-10 14:31:54 UTC (rev 388)
@@ -9,15 +9,23 @@
<parent>
<groupId>org.codelutin</groupId>
<artifactId>lutinproject</artifactId>
- <version>3.1</version>
+ <version>3.2</version>
</parent>
<artifactId>lutingenerator</artifactId>
+ <version>0.62-SNAPSHOT</version>
<!-- POM Relationships : Inheritance : Dependencies -->
<dependencies>
<dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinutil</artifactId>
+ <version>${lutinutil.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>1.8</version>
@@ -39,13 +47,6 @@
</dependency>
<dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinutil</artifactId>
- <version>0.31</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
@@ -64,7 +65,7 @@
<!-- *** Project Information ************************************* -->
<!-- ************************************************************* -->
<name>Lutin Generator</name>
- <version>0.62-SNAPSHOT</version>
+
<description>Générateurs en tout genre.</description>
<inceptionYear>2004</inceptionYear>
@@ -77,13 +78,19 @@
<!-- 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>
+
</properties>
<build>
<plugins>
+
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
1
0
[Lutingenerator-commits] r387 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 09 Dec '08
by schorlet@users.labs.libre-entreprise.org 09 Dec '08
09 Dec '08
Author: schorlet
Date: 2008-12-09 09:49:14 +0000 (Tue, 09 Dec 2008)
New Revision: 387
Modified:
lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
Log:
Correction bug 1737 Prise en compte du MetaModel UML dans les fichiers XMI.
Modified: lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-08 11:37:55 UTC (rev 386)
+++ lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-09 09:49:14 UTC (rev 387)
@@ -562,37 +562,12 @@
</xsl:attribute>
</xsl:if>
- <xsl:variable name="id">
- <xsl:value-of select="concat(UML:StructuralFeature.type/*/@xmi.idref,UML2:TypedElement.type/*/@xmi.idref)"/>
- </xsl:variable>
-<!--
- <xsl:if test="concat($id,'none')='none'">
- <xsl:variable name="id">
- <xsl:value-of select="UML:StructuralFeature.type/*/@xmi.idref"/>
- </xsl:variable>
- </xsl:if>
--->
- <xsl:choose>
- <xsl:when test="$id != ''">
- <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
- <xsl:attribute name="type">
- <xsl:call-template name="packagePathOfWithDot"/>
- <xsl:value-of select="@name"/>
- </xsl:attribute>
- </xsl:for-each>
- </xsl:when>
- <xsl:when test="UML:StructuralFeature.type/UML:*/@href != ''">
- <xsl:variable name="external-url" select="substring-before(UML:StructuralFeature.type/UML:*/@href, '#')"/>
- <xsl:variable name="external-id" select="substring-after(UML:StructuralFeature.type/UML:*/@href, '#')"/>
- <xsl:for-each select="document($external-url)//descendant::*[@xmi.id=$external-id]">
- <xsl:attribute name="type">
- <xsl:call-template name="packagePathOfWithDot"/>
- <xsl:value-of select="@name"/>
- </xsl:attribute>
- </xsl:for-each>
- </xsl:when>
- </xsl:choose>
-
+ <xsl:attribute name="type">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">UML:StructuralFeature.type</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+
<xsl:if test="UML:StructuralFeature.multiplicity">
<xsl:variable name="minMultiplicity">
<xsl:value-of select="UML:StructuralFeature.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@lower"/>
@@ -706,22 +681,11 @@
<xsl:value-of select="@name"/>
</xsl:attribute>
- <xsl:variable name="id">
- <xsl:value-of select="concat(UML:Parameter.type/*/@xmi.idref,UML2:TypedElement.type/*/@xmi.idref)"/>
- </xsl:variable>
-<!--
- <xsl:if test="concat($id,'none')='none'">
- <xsl:variable name="id">
- <xsl:value-of select="UML:Parameter.type/*/@xmi.idref"/>
- </xsl:variable>
- </xsl:if>
--->
- <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
<xsl:attribute name="type">
- <xsl:call-template name="packagePathOfWithDot"/>
- <xsl:value-of select="@name"/>
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">UML:Parameter.type</xsl:with-param>
+ </xsl:call-template>
</xsl:attribute>
- </xsl:for-each>
</xsl:element>
</xsl:template>
@@ -733,19 +697,12 @@
<xsl:variable name="id">
<xsl:value-of select="concat(UML:Parameter.type/*/@xmi.idref,UML2:TypedElement.type/*/@xmi.idref)"/>
</xsl:variable>
-<!--
- <xsl:if test="concat($id,'none')='none'">
- <xsl:variable name="id">
- <xsl:value-of select="UML:Parameter.type/*/@xmi.idref"/>
- </xsl:variable>
- </xsl:if>
--->
- <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
+
<xsl:attribute name="type">
- <xsl:call-template name="packagePathOfWithDot"/>
- <xsl:value-of select="@name"/>
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">UML:Parameter.type</xsl:with-param>
+ </xsl:call-template>
</xsl:attribute>
- </xsl:for-each>
</xsl:element>
</xsl:template>
@@ -807,19 +764,9 @@
<xsl:value-of select="UML:TaggedValue.type/UML:TagDefinition/@xmi.idref"/>
</xsl:variable>
<xsl:variable name="tagName">
- <!-- see bug http://lists.labs.libre-entreprise.org/pipermail/lutingenerator-devel/2007-…
- les UML:TagDefinition n'apparaisent pas au meme endroit (a voir pk)
- <xsl:value-of select="//UML:TagDefinition[@xmi.id = $tagId]/@name"/>-->
- <xsl:choose>
- <xsl:when test="$tagId != '' and /XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]">
- <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]/@name"/>
- </xsl:when>
- <xsl:when test="UML:TaggedValue.type/UML:TagDefinition/@href != ''">
- <xsl:variable name="external-url" select="substring-before(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
- <xsl:variable name="external-id" select="substring-after(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
- <xsl:value-of select="document($external-url)//descendant::*[@xmi.id=$external-id]/@name"/>
- </xsl:when>
- </xsl:choose>
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="childpath">UML:TaggedValue.type</xsl:with-param>
+ </xsl:call-template>
</xsl:variable>
<xsl:element name="tagValue">
<xsl:attribute name="name">
@@ -832,6 +779,33 @@
</xsl:template>
+ <xsl:template name="fullClassName">
+ <xsl:param name="childpath"/>
+
+ <xsl:if test="count(child::*[name() = $childpath]) = 1">
+ <xsl:choose>
+ <xsl:when test="child::*[name() = $childpath]/*/(a)xmi.idref">
+ <xsl:variable name="id" select="child::*[name() = $childpath]/*/(a)xmi.idref"/>
+ <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
+ <xsl:call-template name="packagePathOfWithDot"/>
+ <xsl:value-of select="@name"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="child::*[name() = $childpath]/*/@href">
+ <xsl:variable name="href" select="child::*[name() = $childpath]/*/@href"/>
+ <xsl:variable name="external-url" select="substring-before($href, '#')"/>
+ <xsl:variable name="external-id" select="substring-after($href, '#')"/>
+ <xsl:for-each select="document($external-url)//descendant::*[@xmi.id=$external-id]">
+ <xsl:call-template name="packagePathOfWithDot"/>
+ <xsl:value-of select="@name"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
<xsl:template name="packagePathOfWithDot">
<xsl:if test="name()!='UML:DataType'">
<xsl:for-each select="ancestor::UML:Package">
1
0
[Lutingenerator-commits] r386 - lutingenerator/trunk/src/main/xsl
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
08 Dec '08
Author: schorlet
Date: 2008-12-08 11:37:55 +0000 (Mon, 08 Dec 2008)
New Revision: 386
Modified:
lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
Log:
Correction bug 1737 Prise en compte du MetaModel UML dans les fichiers XMI.
Modified: lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-08 10:22:41 UTC (rev 385)
+++ lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-08 11:37:55 UTC (rev 386)
@@ -581,7 +581,7 @@
</xsl:attribute>
</xsl:for-each>
</xsl:when>
- <xsl:otherwise>
+ <xsl:when test="UML:StructuralFeature.type/UML:*/@href != ''">
<xsl:variable name="external-url" select="substring-before(UML:StructuralFeature.type/UML:*/@href, '#')"/>
<xsl:variable name="external-id" select="substring-after(UML:StructuralFeature.type/UML:*/@href, '#')"/>
<xsl:for-each select="document($external-url)//descendant::*[@xmi.id=$external-id]">
@@ -590,7 +590,7 @@
<xsl:value-of select="@name"/>
</xsl:attribute>
</xsl:for-each>
- </xsl:otherwise>
+ </xsl:when>
</xsl:choose>
<xsl:if test="UML:StructuralFeature.multiplicity">
@@ -809,11 +809,17 @@
<xsl:variable name="tagName">
<!-- see bug http://lists.labs.libre-entreprise.org/pipermail/lutingenerator-devel/2007-…
les UML:TagDefinition n'apparaisent pas au meme endroit (a voir pk)
- <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]/@name"/>
<xsl:value-of select="//UML:TagDefinition[@xmi.id = $tagId]/@name"/>-->
- <xsl:variable name="external-url" select="substring-before(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
- <xsl:variable name="external-id" select="substring-after(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
- <xsl:value-of select="document($external-url)//descendant::*[@xmi.id=$external-id]/@name"/>
+ <xsl:choose>
+ <xsl:when test="$tagId != '' and /XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]">
+ <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]/@name"/>
+ </xsl:when>
+ <xsl:when test="UML:TaggedValue.type/UML:TagDefinition/@href != ''">
+ <xsl:variable name="external-url" select="substring-before(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
+ <xsl:variable name="external-id" select="substring-after(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
+ <xsl:value-of select="document($external-url)//descendant::*[@xmi.id=$external-id]/@name"/>
+ </xsl:when>
+ </xsl:choose>
</xsl:variable>
<xsl:element name="tagValue">
<xsl:attribute name="name">
1
0
[Lutingenerator-commits] r385 - in maven-generator-plugin/trunk: . src/main/java/org/codelutin/generator/plugin src/main/java/org/codelutin/generator/plugin/helper
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
08 Dec '08
Author: schorlet
Date: 2008-12-08 10:22:41 +0000 (Mon, 08 Dec 2008)
New Revision: 385
Added:
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java
Modified:
maven-generator-plugin/trunk/changelog
maven-generator-plugin/trunk/pom.xml
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java
Log:
#1737: Prise en compte du MetaModel UML dans les fichiers XMI
- ajout du support des fichiers default-java.xml et default-uml14.xmi
Modified: maven-generator-plugin/trunk/changelog
===================================================================
--- maven-generator-plugin/trunk/changelog 2008-12-08 10:19:24 UTC (rev 384)
+++ maven-generator-plugin/trunk/changelog 2008-12-08 10:22:41 UTC (rev 385)
@@ -1,3 +1,7 @@
+0.62-SNAPSHOT
+ * 20081208 [chorlet] correction bug #1737: Prise en compte du MetaModel UML dans les fichiers XMI
+ - ajout du support des fichiers default-java.xml et default-uml14.xmi
+
0.62 chemit 200811??
* 20081203 [chemit] add a encoding goal property to be dispatched in all generator to control file generation encoding
* 20081118 [chemit] use lutinproject 3.1
@@ -33,4 +37,4 @@
0.50 ??? ???
* 20070420 [chatellier] add goal to copy a set of generated files
- * 20070420 [chatellier] update lutingenerator depencency to 0.50
\ No newline at end of file
+ * 20070420 [chatellier] update lutingenerator depencency to 0.50
Modified: maven-generator-plugin/trunk/pom.xml
===================================================================
--- maven-generator-plugin/trunk/pom.xml 2008-12-08 10:19:24 UTC (rev 384)
+++ maven-generator-plugin/trunk/pom.xml 2008-12-08 10:22:41 UTC (rev 385)
@@ -25,13 +25,6 @@
</dependency>
<dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinpluginutil</artifactId>
- <version>0.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
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 2008-12-08 10:19:24 UTC (rev 384)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/Xmi2Model.java 2008-12-08 10:22:41 UTC (rev 385)
@@ -30,7 +30,17 @@
package org.codelutin.generator.plugin;
import java.io.File;
+import java.io.FileFilter;
+import java.io.FileOutputStream;
+import java.net.URL;
+import java.util.List;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -38,135 +48,146 @@
import org.apache.tools.ant.NoBannerLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Copy;
-import org.apache.tools.ant.taskdefs.XSLTProcess;
import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.resources.URLResource;
+import org.codelutin.generator.plugin.helper.ResourceResolver;
+import org.codelutin.util.FileUtil;
import org.codelutin.util.Resource;
/**
- * Converti les fichiers XMI en fichier Model via une transformation XSLT
- * a définir.
+ * Converti les fichiers XMI en fichier Model via une transformation XSLT a
+ * définir.
*
* Class abstraite sans feuille de style.
*/
public abstract class Xmi2Model extends AbstractMojo {
-
- /**
- * Répertoire source des fichiers XMI
- *
- * @parameter alias="srcXmiDest"
- * @required
- */
- protected File srcDirXmi;
- /**
- * Répertoire cible des fichiers générés
- *
- * @parameter alias="srcGenDest"
- * @required
- */
- protected File destDirObjectModel;
+ /**
+ * Répertoire source des fichiers XMI
+ *
+ * @parameter alias="srcXmiDest"
+ * @required
+ */
+ protected File srcDirXmi;
- /**
- * Nom du paquetage pour les fichiers générés
- *
- * @parameter expression="org.codelutin.${project.artifactId}"
- */
- protected String fullPackagePath;
+ /**
+ * Répertoire cible des fichiers générés
+ *
+ * @parameter alias="srcGenDest"
+ * @required
+ */
+ protected File destDirObjectModel;
- /**
- * Nom du paquetage à généré
- *
- * @parameter
- */
- protected String extractedPackages = "";
+ /**
+ * 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 default-value="false"
- */
- private boolean overwrite = false;
+ /**
+ * Nom du paquetage à généré
+ *
+ * @parameter
+ */
+ protected String extractedPackages = "";
- public void execute() throws MojoExecutionException, MojoFailureException {
- actionXsl();
- actionCopy();
- }
+ /**
+ * Ecrase les fichiers générés
+ *
+ * @parameter default-value="false"
+ */
+ private boolean overwrite = false;
- private void actionXsl() {
- /* Création d'un projet ant */
- Project project = createProject();
-
- XSLTProcess xslt = new XSLTProcess();
- xslt.setProject(project);
- xslt.setTaskName("XSL");
- xslt.setBasedir(srcDirXmi);
- xslt.setIncludes("**/*.xmi");
-
- destDirObjectModel.mkdirs();
- xslt.setDestdir(destDirObjectModel);
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ actionXsl();
+ actionCopy();
+ }
- xslt.setExtension("." + getExtension());
- xslt.setXslResource(new URLResource(Resource.getURL(getStyleSheet())));
+ private void actionXsl() throws MojoExecutionException {
+ List<File> files = FileUtil.getFilteredElements(srcDirXmi, new FileFilter() {
+ public boolean accept(File pathname) {
+ if (pathname != null && pathname.getName().endsWith(".xmi")) {
+ return true;
+ }
+ return false;
+ }
+ }, false);
-// Param createParam = xsl.createParam();
-// createParam.setName("fullPackagePath");
-// createParam.setExpression(fullPackagePath);
-// createParam = xsl.createParam();
-// createParam.setName("extraPackages");
-// createParam.setExpression(extractedPackages);*/
-
- /* Execution */
- xslt.execute();
- }
-
- private void actionCopy(){
- /* Création d'un projet ant */
- Project project = createProject();
+ destDirObjectModel.mkdirs();
- /* Création de la tâche ant Copy */
- Copy copy = new Copy();
- copy.setProject(project);
- copy.setTaskName("Copy ressources");
+ TransformerFactory factory = TransformerFactory.newInstance();
+ URIResolver resolver = new ResourceResolver();
+ for (File file : files) {
+ try {
+ URL xsl = Resource.getURL(getStyleSheet());
+ File result = new File(destDirObjectModel, FileUtil.basename(file, ".xmi").concat(
+ ".").concat(getExtension()));
- /* Configuration */
- copy.setTodir(destDirObjectModel);
- copy.setOverwrite(overwrite);
-
- FileSet fileSet = new FileSet();
- fileSet.setProject(project);
- fileSet.setDir(srcDirXmi);
- fileSet.setExcludes("**/*.xmi");
- copy.addFileset(fileSet);
-
- /* Execution */
- copy.execute();
- }
+ Transformer transformer = factory
+ .newTransformer(new StreamSource(xsl.openStream()));
+ transformer.setURIResolver(resolver);
+ transformer.transform(new StreamSource(file), new StreamResult(
+ new FileOutputStream(result)));
+ transformer = null;
- private 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);
-
- project.init();
- project.getBaseDir();
- project.addBuildListener(logger);
- return project;
- }
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new MojoExecutionException(e.getMessage());
+ }
+ }
+ factory = null;
+ resolver = null;
+ }
- /**
- * Set extention
- * @return the extention
- */
- protected abstract String getExtension();
-
- /**
- * Set style sheet
- * @return the stylesheet
- */
- protected abstract String getStyleSheet();
+ private 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");
+
+ /* Configuration */
+ copy.setTodir(destDirObjectModel);
+ copy.setOverwrite(overwrite);
+
+ FileSet fileSet = new FileSet();
+ fileSet.setProject(project);
+ fileSet.setDir(srcDirXmi);
+ fileSet.setExcludes("**/*.xmi");
+ copy.addFileset(fileSet);
+
+ /* Execution */
+ copy.execute();
+ }
+
+ private 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);
+
+ project.init();
+ project.getBaseDir();
+ project.addBuildListener(logger);
+ return project;
+ }
+
+ /**
+ * Set extention
+ *
+ * @return the extention
+ */
+ protected abstract String getExtension();
+
+ /**
+ * Set style sheet
+ *
+ * @return the stylesheet
+ */
+ protected abstract String getStyleSheet();
}
Added: 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 (rev 0)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2008-12-08 10:22:41 UTC (rev 385)
@@ -0,0 +1,78 @@
+package org.codelutin.generator.plugin.helper;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+
+import org.codelutin.util.Resource;
+
+/**
+ * ResourceResolver is a URIResolver for XSL transformation. <br/>
+ * Its purpose is to catch the XSL document(...) function call and return a
+ * valid data source only if the wanted resource is present in the project
+ * resources. <br/>
+ * The main goal of ResourceResolver is to retrieve datasources locally, if the
+ * wanted resource is not present in project resource then null will be
+ * returned.<br/>
+ * <p>
+ * The resolve function search for the file part of href parameter: <br/>
+ * href: http://argouml.org/profiles/uml14/default-uml14.xmi <br/>
+ * file part: default-uml14.xmi. <br/>
+ * The resource is searched this way: <br/>
+ * eg: <code>[file part extension]/[file part]</code> <br/>
+ * eg: <code>xmi/default-uml14.xmi</code>
+ * <p>
+ * You should assign this ResourceResolver on
+ * {@link javax.xml.transform.Transformer} but not on
+ * {@link javax.xml.transform.TransformerFactory}. <br/>
+ *
+ * @author chorlet
+ *
+ */
+public class ResourceResolver implements URIResolver {
+
+ /**
+ * resolve href on local resource.
+ *
+ * @return null if local resource not found
+ */
+ public Source resolve(String href, String base) {
+ // System.out.println("[ResourceResolver] " + href);
+ String filename = null;
+ try {
+ filename = new URL(href).getPath();
+ int beginIndex = filename.lastIndexOf('/');
+ if (beginIndex > 0) {
+ filename = filename.substring(beginIndex + 1);
+ }
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ return null;
+ }
+ if (filename == null || filename.length() == 0) {
+ return null;
+ }
+ return findSource(filename);
+ }
+
+ Source findSource(String filename) {
+ // System.out.println("[ResourceResolver] " + filename);
+
+ String extension = null;
+ int beginIndex = filename.lastIndexOf('.');
+ if (beginIndex > 0) {
+ extension = filename.substring(beginIndex + 1);
+ }
+
+ URL url = Resource.getURLOrNull(extension + "/" + filename);
+ if (url == null) {
+ return null;
+ }
+ System.out.println("[ResourceResolver] " + url.toString());
+
+ return new StreamSource(url.toString());
+ }
+}
1
0
[Lutingenerator-commits] r384 - in lutingenerator/trunk: . src/main/resources src/main/resources/xmi src/main/xsl
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
by schorlet@users.labs.libre-entreprise.org 08 Dec '08
08 Dec '08
Author: schorlet
Date: 2008-12-08 10:19:24 +0000 (Mon, 08 Dec 2008)
New Revision: 384
Added:
lutingenerator/trunk/src/main/resources/xmi/
lutingenerator/trunk/src/main/resources/xmi/default-java.xmi
lutingenerator/trunk/src/main/resources/xmi/default-uml14.xmi
Modified:
lutingenerator/trunk/changelog
lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
Log:
[#1737] Prise en compte du MetaModel UML dans les fichiers XMI
Ajout du support pour default-java.xmi and default-uml14.xmi
Modified: lutingenerator/trunk/changelog
===================================================================
--- lutingenerator/trunk/changelog 2008-12-03 12:25:24 UTC (rev 383)
+++ lutingenerator/trunk/changelog 2008-12-08 10:19:24 UTC (rev 384)
@@ -1,3 +1,7 @@
+0.62-SNAPSHOT
+ * 20081208 [chorlet] correction bug #1737: Prise en compte du MetaModel UML dans les fichiers XMI
+ - ajout du support des fichiers default-java.xml et default-uml14.xmi
+
0.62 chemit 200811??
* 20081203 [chemit] add a encoding property on generator to control file generation encoding
* 20081118 [chemit] use lutinproject 3.1
@@ -71,4 +75,4 @@
0.26
- * Ajout du support des stereotypes sur les attributs
\ No newline at end of file
+ * Ajout du support des stereotypes sur les attributs
Added: lutingenerator/trunk/src/main/resources/xmi/default-java.xmi
===================================================================
--- lutingenerator/trunk/src/main/resources/xmi/default-java.xmi (rev 0)
+++ lutingenerator/trunk/src/main/resources/xmi/default-java.xmi 2008-12-08 10:19:24 UTC (rev 384)
@@ -0,0 +1,117 @@
+<?xml version = '1.0' encoding = 'UTF-8' ?>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Fri May 02 13:16:12 EDT 2008'>
+ <XMI.header> <XMI.documentation>
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
+ <XMI.exporterVersion>PRE-0.25.5(5) revised on $Date: 2007-05-12 02:08:08 -0400 (Sat, 12 May 2007) $ </XMI.exporterVersion>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
+ <XMI.content>
+ <UML:Model xmi.id = '.:000000000000087A' name = 'UML Profile for Java' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A3'/>
+ </UML:ModelElement.stereotype>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A4'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>This profile contains common Java classes and datatypes which are not contained in the UML Standard Elements profile. It only includes the basics, but may be easily extended to include anything else which is useful.</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '.:0000000000000869' name = 'java' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '.:000000000000085A' name = 'lang' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '.:0000000000000850' name = 'Object' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000851' name = 'Char' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000852' name = 'Byte' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000853' name = 'Boolean' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000854' name = 'Short' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000855' name = 'Integer' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000856' name = 'Long' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000857' name = 'Float' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000858' name = 'Double' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000859' name = 'String' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '.:0000000000000863' name = 'util' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '.:000000000000085B' name = 'Vector' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Interface xmi.id = '.:000000000000085C' name = 'Collection' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:Interface xmi.id = '.:000000000000085D' name = 'Iterator' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:Interface xmi.id = '.:000000000000085E' name = 'List' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:Class xmi.id = '.:000000000000085F' name = 'Date' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000860' name = 'Time' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Interface xmi.id = '.:0000000000000861' name = 'Set' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:Interface xmi.id = '.:0000000000000862' name = 'SortedSet' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '.:0000000000000866' name = 'math' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '.:0000000000000864' name = 'BigDecimal' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ <UML:Class xmi.id = '.:0000000000000865' name = 'BigInteger' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '.:0000000000000868' name = 'net' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '.:0000000000000867' name = 'URL' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:DataType xmi.id = '.:000000000000086B' name = 'void' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:000000000000086C' name = 'int' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:000000000000086D' name = 'short' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:000000000000086E' name = 'long' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:000000000000086F' name = 'double' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:0000000000000870' name = 'float' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:0000000000000871' name = 'char' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:0000000000000872' name = 'byte' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:DataType xmi.id = '.:0000000000000873' name = 'boolean' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
+ <UML:Stereotype xmi.id = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A3'
+ name = 'profile' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Model</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+</XMI>
Added: lutingenerator/trunk/src/main/resources/xmi/default-uml14.xmi
===================================================================
--- lutingenerator/trunk/src/main/resources/xmi/default-uml14.xmi (rev 0)
+++ lutingenerator/trunk/src/main/resources/xmi/default-uml14.xmi 2008-12-08 10:19:24 UTC (rev 384)
@@ -0,0 +1,258 @@
+<?xml version = '1.0' encoding = 'UTF-8' ?>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Tue Aug 14 18:51:04 BRT 2007'>
+ <XMI.header> <XMI.documentation>
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
+ <XMI.exporterVersion>PRE-0.25.4(5) revised on $Date: 2007-05-12 03:08:08 -0300 $ </XMI.exporterVersion>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
+ <XMI.content>
+ <UML:Model xmi.id = '.:000000000000087A' name = 'UML 1.4 Standard Elements' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '.:000000000000087B' isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>This model contains the UML Standard Elements from Appendix A of the UML 1.4 specification.</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition xmi.idref = '.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Namespace.ownedElement>
+ <UML:Stereotype xmi.id = '.:0000000000000821' name = 'access' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000822' name = 'friend' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000823' name = 'import' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000824' name = 'association' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000825' name = 'global' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000826' name = 'local' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000827' name = 'parameter' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000828' name = 'self' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000829' name = 'become' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Flow</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000082A' name = 'copy' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Flow</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000082B' name = 'create' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>BehavioralFeature</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>CallEvent</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000082C' name = 'call' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000082D' name = 'instantiate' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000082E' name = 'send' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000830' name = 'destroy' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>BehavioralFeature</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>CallEvent</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000833' name = 'derive' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000834' name = 'realize' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000835' name = 'refine' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000836' name = 'trace' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000837' name = 'document' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000838' name = 'executable' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000839' name = 'file' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083A' name = 'library' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083B' name = 'table' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083C' name = 'facade' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083D' name = 'framework' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083E' name = 'metamodel' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000083F' name = 'stub' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000840' name = 'implementation' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Generalization</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000842' name = 'type' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000843' name = 'implicit' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Association</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000844' name = 'invariant' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000845' name = 'postcondition' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000846' name = 'precondition' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000847' name = 'metaclass' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000848' name = 'powertype' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000849' name = 'process' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084A' name = 'thread' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084B' name = 'utility' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084C' name = 'requirement' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Comment</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084D' name = 'responsibility' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Comment</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084E' name = 'topLevel' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000084F' name = 'systemModel' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:000000000000086A' name = 'signalflow' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>ObjectFlowState</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000874' name = 'appliedProfile' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>Dependency</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000875' name = 'auxiliary' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000876' name = 'modelLibrary' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ <UML:Stereotype.baseClass>Dependency</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000877' name = 'profile' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000878' name = 'source' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '.:0000000000000879' name = 'stateInvariant' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:TagDefinition xmi.id = '.:000000000000087C' name = 'documentation'
+ isSpecification = 'false' tagType = 'String'>
+ <UML:TagDefinition.multiplicity>
+ <UML:Multiplicity xmi.id = '.:000000000000087D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '.:000000000000087E' lower = '0' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:TagDefinition.multiplicity>
+ </UML:TagDefinition>
+ <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087C'
+ name = 'Integer' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'/>
+ <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087D'
+ name = 'UnlimitedInteger' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'/>
+ <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087E'
+ name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'/>
+ <UML:Enumeration xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000880'
+ name = 'Boolean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Enumeration.literal>
+ <UML:EnumerationLiteral xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000881'
+ name = 'TRUE' isSpecification = 'false'/>
+ <UML:EnumerationLiteral xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000882'
+ name = 'FALSE' isSpecification = 'false'/>
+ </UML:Enumeration.literal>
+ </UML:Enumeration>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+</XMI>
Modified: lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl
===================================================================
--- lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-03 12:25:24 UTC (rev 383)
+++ lutingenerator/trunk/src/main/xsl/xmi1.2ToObjectModel.xsl 2008-12-08 10:19:24 UTC (rev 384)
@@ -572,13 +572,27 @@
</xsl:variable>
</xsl:if>
-->
- <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
- <xsl:attribute name="type">
- <xsl:call-template name="packagePathOfWithDot"/>
- <xsl:value-of select="@name"/>
- </xsl:attribute>
- </xsl:for-each>
-
+ <xsl:choose>
+ <xsl:when test="$id != ''">
+ <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]">
+ <xsl:attribute name="type">
+ <xsl:call-template name="packagePathOfWithDot"/>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="external-url" select="substring-before(UML:StructuralFeature.type/UML:*/@href, '#')"/>
+ <xsl:variable name="external-id" select="substring-after(UML:StructuralFeature.type/UML:*/@href, '#')"/>
+ <xsl:for-each select="document($external-url)//descendant::*[@xmi.id=$external-id]">
+ <xsl:attribute name="type">
+ <xsl:call-template name="packagePathOfWithDot"/>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
<xsl:if test="UML:StructuralFeature.multiplicity">
<xsl:variable name="minMultiplicity">
<xsl:value-of select="UML:StructuralFeature.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@lower"/>
@@ -795,8 +809,11 @@
<xsl:variable name="tagName">
<!-- see bug http://lists.labs.libre-entreprise.org/pipermail/lutingenerator-devel/2007-…
les UML:TagDefinition n'apparaisent pas au meme endroit (a voir pk)
- <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]/@name"/>-->
- <xsl:value-of select="//UML:TagDefinition[@xmi.id = $tagId]/@name"/>
+ <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@xmi.id = $tagId]/@name"/>
+ <xsl:value-of select="//UML:TagDefinition[@xmi.id = $tagId]/@name"/>-->
+ <xsl:variable name="external-url" select="substring-before(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
+ <xsl:variable name="external-id" select="substring-after(UML:TaggedValue.type/UML:TagDefinition/@href, '#')"/>
+ <xsl:value-of select="document($external-url)//descendant::*[@xmi.id=$external-id]/@name"/>
</xsl:variable>
<xsl:element name="tagValue">
<xsl:attribute name="name">
1
0
[Lutingenerator-commits] r383 - lutingenerator/trunk lutingenerator/trunk/src/main/java/org/codelutin/generator maven-generator-plugin/trunk maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin
by tchemit@users.labs.libre-entreprise.org 03 Dec '08
by tchemit@users.labs.libre-entreprise.org 03 Dec '08
03 Dec '08
Author: tchemit
Date: 2008-12-03 12:25:24 +0000 (Wed, 03 Dec 2008)
New Revision: 383
Modified:
lutingenerator/trunk/changelog
lutingenerator/trunk/src/main/java/org/codelutin/generator/ChildGenerator.java
lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java
lutingenerator/trunk/src/main/java/org/codelutin/generator/GeneratorTask.java
lutingenerator/trunk/src/main/java/org/codelutin/generator/ObjectModelGenerator.java
maven-generator-plugin/trunk/changelog
maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java
Log:
add a encoding goal property to be dispatched in all generator to control file generation encoding
add a encoding property on generator to control file generation encoding
Modified: lutingenerator/trunk/changelog
===================================================================
--- lutingenerator/trunk/changelog 2008-12-03 10:22:59 UTC (rev 382)
+++ lutingenerator/trunk/changelog 2008-12-03 12:25:24 UTC (rev 383)
@@ -1,4 +1,5 @@
0.62 chemit 200811??
+ * 20081203 [chemit] add a encoding property on generator to control file generation encoding
* 20081118 [chemit] use lutinproject 3.1
* 20081117 [chemit] : GeneratorTask can have a dedicated classLoader to be used to instanciate generator implementations
Modified: lutingenerator/trunk/src/main/java/org/codelutin/generator/ChildGenerator.java
===================================================================
--- lutingenerator/trunk/src/main/java/org/codelutin/generator/ChildGenerator.java 2008-12-03 10:22:59 UTC (rev 382)
+++ lutingenerator/trunk/src/main/java/org/codelutin/generator/ChildGenerator.java 2008-12-03 12:25:24 UTC (rev 383)
@@ -38,7 +38,7 @@
}
public ChildGenerator(Generator parent){
- this.parent = parent;
+ setParent(parent);
}
@Override
@@ -70,6 +70,7 @@
public void setParent(Generator parent) {
this.parent = parent;
+ setEncoding(parent.getEncoding());
}
} // ChildGenerator
Modified: lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java
===================================================================
--- lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java 2008-12-03 10:22:59 UTC (rev 382)
+++ lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java 2008-12-03 12:25:24 UTC (rev 383)
@@ -19,71 +19,78 @@
package org.codelutin.generator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.io.File;
import java.io.FileOutputStream;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
-import java.nio.charset.Charset;
import java.util.List;
import java.util.Properties;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
/**
* Generator.
- *
+ *
* @author cedric
- *
- *
*/
public abstract class Generator {
protected static final Log log = LogFactory.getLog(Generator.class);
-
+
protected Properties properties = new Properties();
protected boolean overwrite = true;
/** date de derniere modification de la source la plus recente */
protected long lastModifiedSource = 0;
protected List<String> excludeTemplates;
-
- public Generator(){
+
+ protected String encoding;
+
+ public Generator() {
}
public void generate(File file, File destDir) {
- generate(new File[] {file}, destDir);
+ generate(new File[]{file}, destDir);
}
public void generate(File file) {
- generate(new File[] {file}, new File("."));
+ generate(new File[]{file}, new File("."));
}
- public void setProperties(Properties p){
+ public void setProperties(Properties p) {
this.properties = p;
}
- public void setOverwrite(boolean v){
+ public void setOverwrite(boolean v) {
overwrite = v;
}
- public boolean getOverwrite(){
+ public boolean getOverwrite() {
return overwrite;
}
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
/**
- * Permet de recuperer la proprieté passé en argument
+ * Permet de recuperer la proprieté passé en argument
+ *
* @param name le nom de la propriete
* @return la valeur de la propriété
*/
- public String getProperty(String name){
+ public String getProperty(String name) {
return properties.getProperty(name);
}
- protected void setLastModifiedSource(File [] files){
+ protected void setLastModifiedSource(File[] files) {
for (File file : files) {
if (isNewerThanSource(file)) {
lastModifiedSource = file.lastModified();
@@ -92,7 +99,7 @@
}
}
- protected long getLastModifiedSource(){
+ protected long getLastModifiedSource() {
return lastModifiedSource;
}
@@ -100,16 +107,16 @@
/**
* @param file fichier a tester
* @return vrai si le fichier passé en parametre est plus recent que
- * les sources sur generateur.
+ * les sources sur generateur.
*/
- protected boolean isNewerThanSource(File file){
- if(log.isDebugEnabled()) {
- log.debug("source date: " + getLastModifiedSource() +" file date: " + file.lastModified() + "("+file+")");
+ protected boolean isNewerThanSource(File file) {
+ if (log.isDebugEnabled()) {
+ log.debug("source date: " + getLastModifiedSource() + " file date: " + file.lastModified() + "(" + file + ")");
}
return file.lastModified() > getLastModifiedSource();
}
- protected File getDestinationFile(File destDir, String filename){
+ protected File getDestinationFile(File destDir, String filename) {
return new File(destDir, filename);
}
@@ -118,19 +125,19 @@
try {
outputFile = outputFile.getCanonicalFile();
outputFile.getParentFile().mkdirs();
-
- //Writer output = new FileWriter(outputFile);
- // force UTF-8 encoding
- // resolve iso generated file on mac os
- // FIXME param it
- Writer output = new OutputStreamWriter(new FileOutputStream(outputFile), Charset.forName("UTF-8"));
-
+
+ if (log.isDebugEnabled()) {
+ log.debug("encoding to use "+encoding+" : "+this);
+ }
+ Writer output = new OutputStreamWriter(new FileOutputStream(outputFile), encoding);
+ //Writer output = new OutputStreamWriter(new FileOutputStream(outputFile), Charset.forName("UTF-8"));
+
output.write(out.getBuffer().toString());
output.close();
} catch (IOException eee) {
- if(log.isWarnEnabled()) {
+ if (log.isWarnEnabled()) {
log.warn(
- "Unable to write file : " + outputFile.getAbsolutePath(), eee);
+ "Unable to write file : " + outputFile.getAbsolutePath(), eee);
}
throw new RuntimeException(eee);
}
Modified: lutingenerator/trunk/src/main/java/org/codelutin/generator/GeneratorTask.java
===================================================================
--- lutingenerator/trunk/src/main/java/org/codelutin/generator/GeneratorTask.java 2008-12-03 10:22:59 UTC (rev 382)
+++ lutingenerator/trunk/src/main/java/org/codelutin/generator/GeneratorTask.java 2008-12-03 12:25:24 UTC (rev 383)
@@ -30,18 +30,18 @@
package org.codelutin.generator;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.taskdefs.MatchingTask;
+
import java.io.File;
-import java.util.Properties;
-import java.util.List;
import java.util.Arrays;
import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-
/**
* exemple d'utilisation dans ant <generator
* template="org.codelutin.generator.generators.persistence.TopiaModelToDTOGenerator.java,org.codelutin.generator.generators.persistence.TopiaModelToTJDOGenerator.java"
@@ -87,6 +87,8 @@
// to enable a customized classloader
protected ClassLoader loader;
+ protected String encoding;
+
public void setOverwrite(boolean v) {
overwrite = v;
}
@@ -99,6 +101,10 @@
this.excludeTemplates = excludeTemplates;
}
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
/**
* Permet d'ajouter des properties. exemple: toto=1,package=org.codelutin
* @param properties TODO
@@ -151,6 +157,7 @@
//generators[i] = (Generator) Class.forName(templateName).newInstance();
generators[i].setExcludeTemplates(excludeTemplates);
+ generators[i].setEncoding(encoding);
} catch (ClassCastException eee) {
System.out.println("Generator don't herite Generator Class : "
Modified: lutingenerator/trunk/src/main/java/org/codelutin/generator/ObjectModelGenerator.java
===================================================================
--- lutingenerator/trunk/src/main/java/org/codelutin/generator/ObjectModelGenerator.java 2008-12-03 10:22:59 UTC (rev 382)
+++ lutingenerator/trunk/src/main/java/org/codelutin/generator/ObjectModelGenerator.java 2008-12-03 12:25:24 UTC (rev 383)
@@ -29,20 +29,6 @@
package org.codelutin.generator;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -62,6 +48,20 @@
import org.codelutin.util.StringUtil;
import org.xml.sax.SAXException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* Pour utiliser ce type de générateur il faut implanter au moins une des trois
* méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un
@@ -132,8 +132,6 @@
* stereotype ou des tag value sur les class, attribute ou operation
* @param destDir le répertoire dans lequel il faudra mettre les fichiers
* générés
- * @throws SAXException
- * @throws IOException
*/
public void generate(File[] files, File destDir) {
setLastModifiedSource(files);
@@ -142,23 +140,23 @@
// Digester parser configuration
Digester digester = new Digester();
digester.addRuleSet(new DigesterObjectModelRuleSet());
-
- for (int i = 0; i < files.length; i++) {
- try {
- digester.push(objectModel);
- objectModel = (ObjectModel)digester.parse(files[i]);
- } catch (IOException e) {
- log.warn("Unable to parse ObjectModel input file : "
- + files[i], e);
- } catch (SAXException e) {
- log.warn("Unable to parse ObjectModel input file : "
- + files[i], e);
- }
-
+
+ for (File file : files) {
+ try {
+ digester.push(objectModel);
+ objectModel = (ObjectModel) digester.parse(file);
+ } catch (IOException e) {
+ log.warn("Unable to parse ObjectModel input file : "
+ + file, e);
+ } catch (SAXException e) {
+ log.warn("Unable to parse ObjectModel input file : "
+ + file, e);
+ }
+
// recherche est charge le fichier propriete associe au modele
- File dir = files[i].getParentFile();
- String ext = FileUtil.extension(files[i]);
- String name = FileUtil.basename(files[i], "." + ext);
+ File dir = file.getParentFile();
+ String ext = FileUtil.extension(file);
+ String name = FileUtil.basename(file, "." + ext);
File propFile = new File(dir, name + ".properties");
RecursiveProperties prop = new RecursiveProperties();
if (!propFile.exists()) {
@@ -188,20 +186,20 @@
log.warn("only tagvalue is allowed on model in properties");
} else {
String tag = key.substring("model.tagvalue.".length());
-
+
ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue();
tagvalue.setName(tag);
tagvalue.setValue(value);
- ((ObjectModelImpl)objectModel).addTagValue(tagvalue);
+ ((ObjectModelImpl) objectModel).addTagValue(tagvalue);
}
} else {
-
+
Matcher matcher = propertiesPattern.matcher(key);
-
+
if (log.isDebugEnabled()) {
log.debug("Propriete: '" + key + "'");
}
-
+
if (matcher.find()) {
// fqn is fully qualified name of class
String fqn = matcher.group(1);
@@ -213,14 +211,14 @@
// type is stereotype or tagvalue
String type = matcher.group(4);
String tag = matcher.group(5);
-
+
if (log.isDebugEnabled()) {
log.debug("Propriete: '" + key + "' => " + "fqn:"
+ fqn + " target:" + target
+ " targetName:" + targetName + " type:"
+ type + " tag:" + tag);
}
-
+
ObjectModelClassifier omc = objectModel
.getClassifier(fqn);
if (omc instanceof ObjectModelClassifierImpl) {
@@ -256,8 +254,7 @@
} else {
// TODO il faudra avoir des methodes d'acces en
// Set sur l'interface pour eviter ce message
- log
- .warn("Can't add properties to model, it's not an ObjectModelClassifierImpl");
+ log.warn("Can't add properties to model, it's not an ObjectModelClassifierImpl");
}
}
}
@@ -284,6 +281,9 @@
* getFilenameFor.... La methode generateFrom... n'utilise pas le Writer
* alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien
* écrire alors le fichier sera généré.
+ * @param model
+ * @param destDir
+ * @throws java.io.IOException
*/
public void generate(ObjectModel model, File destDir) throws IOException {
{
@@ -307,22 +307,20 @@
}
}
- for (Iterator classes = model.getClassifiers().iterator(); classes
- .hasNext();) {
- ObjectModelClassifier clazz = (ObjectModelClassifier) classes
- .next();
+ for (Object o : model.getClassifiers()) {
+ ObjectModelClassifier clazz = (ObjectModelClassifier) o;
String filename = getFilenameForClassifier(clazz);
File outputFile = getDestinationFile(destDir, filename);
if (getOverwrite() || !isNewerThanSource(outputFile)) {
- try{
+ try {
StringWriter out = new StringWriter();
MonitorWriter monitorOut = new MonitorWriter(out);
generateFromClassifier(monitorOut, clazz);
write(outputFile, monitorOut);
} catch (Exception eee) {
log.warn("Erreur lors de la génération du fichier " + outputFile);
- throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
+ throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
}
} else {
Logger.getLogger(getClass().getName() + ".generate").log(
@@ -330,22 +328,20 @@
}
}
- for (Iterator interfaces = model.getInterfaces().iterator(); interfaces
- .hasNext();) {
- ObjectModelInterface interfacez = (ObjectModelInterface) interfaces
- .next();
+ for (Object o : model.getInterfaces()) {
+ ObjectModelInterface interfacez = (ObjectModelInterface) o;
String filename = getFilenameForInterface(interfacez);
File outputFile = getDestinationFile(destDir, filename);
if (getOverwrite() || !isNewerThanSource(outputFile)) {
- try{
+ try {
StringWriter out = new StringWriter();
MonitorWriter monitorOut = new MonitorWriter(out);
generateFromInterface(monitorOut, interfacez);
write(outputFile, monitorOut);
} catch (Exception eee) {
log.warn("Erreur lors de la génération du fichier " + outputFile);
- throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
+ throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
}
} else {
Logger.getLogger(getClass().getName() + ".generate").log(
@@ -353,21 +349,20 @@
}
}
- for (Iterator classes = model.getClasses().iterator(); classes
- .hasNext();) {
- ObjectModelClass clazz = (ObjectModelClass) classes.next();
+ for (Object o : model.getClasses()) {
+ ObjectModelClass clazz = (ObjectModelClass) o;
String filename = getFilenameForClass(clazz);
File outputFile = getDestinationFile(destDir, filename);
if (getOverwrite() || !isNewerThanSource(outputFile)) {
- try{
+ try {
StringWriter out = new StringWriter();
MonitorWriter monitorOut = new MonitorWriter(out);
generateFromClass(monitorOut, clazz);
write(outputFile, monitorOut);
} catch (Exception eee) {
log.warn("Erreur lors de la génération du fichier " + outputFile);
- throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
+ throw new RuntimeException("Erreur lors de la génération du fichier " + outputFile, eee);
}
} else {
Logger.getLogger(getClass().getName() + ".generate").log(
Modified: maven-generator-plugin/trunk/changelog
===================================================================
--- maven-generator-plugin/trunk/changelog 2008-12-03 10:22:59 UTC (rev 382)
+++ maven-generator-plugin/trunk/changelog 2008-12-03 12:25:24 UTC (rev 383)
@@ -1,5 +1,6 @@
0.62 chemit 200811??
- * 20081118 [chemit] use lutinproject 3.1
+ * 20081203 [chemit] add a encoding goal property to be dispatched in all generator to control file generation encoding
+ * 20081118 [chemit] use lutinproject 3.1
* 20081117 [chemit]
- add extraClassPathDirectory parameter to can specify an extra directory to add in classLoader
- bump lutingenerator version
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 2008-12-03 10:22:59 UTC (rev 382)
+++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2008-12-03 12:25:24 UTC (rev 383)
@@ -40,9 +40,9 @@
import org.codelutin.generator.GeneratorTask;
import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.net.URLClassLoader;
-import java.net.URL;
-import java.net.MalformedURLException;
import java.util.Arrays;
import java.util.List;
@@ -121,7 +121,14 @@
*/
protected File extraClassPathDirectory;
+ /**
+ * Encoding to be used for generation of files.
+ *
+ * @parameter expression="${generator.encoding}" default-value="${maven.compile.encoding}
+ */
+ protected String encoding;
+
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");
@@ -145,11 +152,10 @@
/* Configuration */
generator.setOverwrite(overwrite);
-
generator.setTemplates(templates);
-
generator.setSrcdir(srcDirGen);
-
+ generator.setEncoding(encoding);
+
destDirGen.mkdirs();
generator.setDestdir(destDirGen);
@@ -161,7 +167,7 @@
generator.setExcludeTemplates(excludeTemplates == null ? java.util.Collections.<String>emptyList() : excludeTemplates);
if (extraClassPathDirectory != null) {
- getLog().info("will add the cp to classloader "+ extraClassPathDirectory);
+ getLog().info("will add the cp to classloader " + extraClassPathDirectory);
generator.setLoader(fixClassLoader(extraClassPathDirectory));
}
/* Execution */
@@ -174,7 +180,7 @@
*/
protected void fixCompileSourceRoots() {
- if (!project.getCompileSourceRoots().contains(destDirGen.getPath())) {
+ if (project != null && !project.getCompileSourceRoots().contains(destDirGen.getPath())) {
getLog().info("add compile source root : " + destDirGen);
project.addCompileSourceRoot(destDirGen.getPath());
Resource resources = new Resource();
@@ -184,7 +190,7 @@
project.addResource(resources);
}
-
+
}
protected ClassLoader fixClassLoader(File dirToAdd) throws MojoExecutionException {
@@ -196,6 +202,5 @@
}
-
}
}
1
0
[Lutingenerator-commits] r382 - lutingenerator/trunk/src/main/java/org/codelutin/generator
by chatellier@users.labs.libre-entreprise.org 03 Dec '08
by chatellier@users.labs.libre-entreprise.org 03 Dec '08
03 Dec '08
Author: chatellier
Date: 2008-12-03 10:22:59 +0000 (Wed, 03 Dec 2008)
New Revision: 382
Modified:
lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java
Log:
Force la generation des fichiers en UTF-8
Modified: lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java
===================================================================
--- lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java 2008-11-26 11:55:27 UTC (rev 381)
+++ lutingenerator/trunk/src/main/java/org/codelutin/generator/Generator.java 2008-12-03 10:22:59 UTC (rev 382)
@@ -20,11 +20,14 @@
package org.codelutin.generator;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.List;
import java.util.Properties;
-import java.util.List;
-import java.io.Writer;
-import java.io.IOException;
-import java.io.FileWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -115,12 +118,20 @@
try {
outputFile = outputFile.getCanonicalFile();
outputFile.getParentFile().mkdirs();
- Writer output = new FileWriter(outputFile);
+
+ //Writer output = new FileWriter(outputFile);
+ // force UTF-8 encoding
+ // resolve iso generated file on mac os
+ // FIXME param it
+ Writer output = new OutputStreamWriter(new FileOutputStream(outputFile), Charset.forName("UTF-8"));
+
output.write(out.getBuffer().toString());
output.close();
} catch (IOException eee) {
- log.warn(
- "I was unable to write file : " + outputFile.getAbsolutePath(), eee);
+ if(log.isWarnEnabled()) {
+ log.warn(
+ "Unable to write file : " + outputFile.getAbsolutePath(), eee);
+ }
throw new RuntimeException(eee);
}
}
1
0