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
September 2009
- 5 participants
- 9 discussions
Author: tchemit
Date: 2009-09-29 16:38:34 +0200 (Tue, 29 Sep 2009)
New Revision: 634
Modified:
trunk/pom.xml
Log:
mavenpom use now maven-helper-plugin 1.1.0
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-09-29 11:46:23 UTC (rev 633)
+++ trunk/pom.xml 2009-09-29 14:38:34 UTC (rev 634)
@@ -240,9 +240,6 @@
<!-- pour un muli module on doit fixer le projectId -->
<projectId>eugene</projectId>
- <!-- must be removed after mavenpom release, avoid hudson to break -->
- <helper.version>1.1.0-SNAPSHOT</helper.version>
-
<!-- TODO TC-20090823 remove ant deps -->
<ant.version>1.7.1</ant.version>
1
0
r633 - in trunk: . maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin
by tchemit@users.nuiton.org 29 Sep '09
by tchemit@users.nuiton.org 29 Sep '09
29 Sep '09
Author: tchemit
Date: 2009-09-29 13:46:23 +0200 (Tue, 29 Sep 2009)
New Revision: 633
Modified:
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java
trunk/pom.xml
Log:
use maven-helper-plugin 1.1.0, mavenpom 1.0.3
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-09-29 11:46:23 UTC (rev 633)
@@ -16,7 +16,7 @@
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
package org.nuiton.eugene.plugin;
-import org.nuiton.util.PluginIOContext;
+import org.nuiton.plugin.PluginIOContext;
import java.io.File;
import java.io.FileFilter;
@@ -28,7 +28,7 @@
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
-import org.nuiton.util.PluginHelper;
+import org.nuiton.plugin.PluginHelper;
/**
* Copy a file set to a versionned directory structure.
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-09-29 11:46:23 UTC (rev 633)
@@ -1,6 +1,6 @@
package org.nuiton.eugene.plugin;
-import org.nuiton.util.PluginIOContext;
+import org.nuiton.plugin.PluginIOContext;
import java.io.File;
import java.net.URL;
import java.util.Arrays;
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-09-29 11:46:23 UTC (rev 633)
@@ -16,7 +16,6 @@
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
package org.nuiton.eugene.plugin;
-import org.nuiton.util.PluginIOContext;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
@@ -35,7 +34,8 @@
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.nuiton.eugene.Generator;
-import org.nuiton.util.PluginHelper;
+import org.nuiton.plugin.PluginIOContext;
+import org.nuiton.plugin.PluginHelper;
/**
* Effectue toutes les générations et copie les fichiers générés
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-09-29 11:46:23 UTC (rev 633)
@@ -16,7 +16,7 @@
* <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/
package org.nuiton.eugene.plugin;
-import org.nuiton.util.PluginIOContext;
+import org.nuiton.plugin.PluginIOContext;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -40,9 +40,9 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
+import org.nuiton.plugin.PluginHelper;
import org.nuiton.util.FasterCachedResourceResolver;
import org.nuiton.util.FileUtil;
-import org.nuiton.util.PluginHelper;
import org.nuiton.util.Resource;
import org.nuiton.util.ResourceResolver;
import org.nuiton.util.StringUtil;
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-09-29 11:46:23 UTC (rev 633)
@@ -17,12 +17,12 @@
package org.nuiton.eugene.plugin;
import java.io.IOException;
-import org.nuiton.util.PluginIOContext;
import java.io.File;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.nuiton.util.PluginHelper;
+import org.nuiton.plugin.PluginIOContext;
+import org.nuiton.plugin.PluginHelper;
/**
* Extract zipped XMI files from zargo archive.
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-09-22 10:05:07 UTC (rev 632)
+++ trunk/pom.xml 2009-09-29 11:46:23 UTC (rev 633)
@@ -9,7 +9,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom</artifactId>
- <version>1.0.1</version>
+ <version>1.0.3-SNAPSHOT</version>
</parent>
<artifactId>eugene</artifactId>
@@ -109,6 +109,72 @@
<groupId>org.nuiton</groupId>
<artifactId>maven-helper-plugin</artifactId>
<version>${helper.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-profile</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>plexus</groupId>
+ <artifactId>plexus-mail-sender-simple</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>plexus</groupId>
+ <artifactId>plexus-mail-sender-api</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>plexus</groupId>
+ <artifactId>plexus-mail-sender-javamail</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-cipher</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-sec-dispatcher</artifactId>
+ </exclusion>
+
+ </exclusions>
</dependency>
<!-- TODO TC-20090823 remove ant deps -->
@@ -149,7 +215,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>4.6</version>
+ <version>4.7</version>
<scope>test</scope>
</dependency>
@@ -159,7 +225,7 @@
<!-- ************************************************************* -->
<!-- *** Project Information ************************************* -->
<!-- ************************************************************* -->
- <name>EUGene - pom</name>
+ <name>EUGene - project</name>
<description>Efficient Universal Generator</description>
<inceptionYear>2004</inceptionYear>
<url>http://maven-site.nuiton.org/eugene</url>
@@ -174,6 +240,9 @@
<!-- pour un muli module on doit fixer le projectId -->
<projectId>eugene</projectId>
+ <!-- must be removed after mavenpom release, avoid hudson to break -->
+ <helper.version>1.1.0-SNAPSHOT</helper.version>
+
<!-- TODO TC-20090823 remove ant deps -->
<ant.version>1.7.1</ant.version>
@@ -192,7 +261,7 @@
<dependency>
<groupId>org.nuiton.jrst</groupId>
<artifactId>doxia-module-jrst</artifactId>
- <version>1.0.0</version>
+ <version>${jrst.version}</version>
</dependency>
</dependencies>
</plugin>
1
0
Author: echatellier
Date: 2009-09-22 12:00:14 +0200 (Tue, 22 Sep 2009)
New Revision: 630
Modified:
trunk/eugene/src/site/rst/index.rst
Log:
Replace plugin url
Modified: trunk/eugene/src/site/rst/index.rst
===================================================================
(Binary files differ)
2
1
Author: echatellier
Date: 2009-09-22 12:05:07 +0200 (Tue, 22 Sep 2009)
New Revision: 632
Modified:
trunk/eugene/src/site/rst/index.rst
Log:
Fix svn property (not binary file)
Property changes on: trunk/eugene/src/site/rst/index.rst
___________________________________________________________________
Deleted: svn:executable
- *
Deleted: svn:mime-type
- application/octet-stream
1
0
Author: echatellier
Date: 2009-09-22 12:03:03 +0200 (Tue, 22 Sep 2009)
New Revision: 631
Modified:
trunk/eugene/src/site/rst/index.rst
Log:
Fix processor url
Modified: trunk/eugene/src/site/rst/index.rst
===================================================================
(Binary files differ)
1
0
r629 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object
by fdesbois@users.nuiton.org 21 Sep '09
by fdesbois@users.nuiton.org 21 Sep '09
21 Sep '09
Author: fdesbois
Date: 2009-09-21 22:29:09 +0200 (Mon, 21 Sep 2009)
New Revision: 629
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
Log:
Add comment for isStatic in innerClass case
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-09-21 20:17:46 UTC (rev 628)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-09-21 20:29:09 UTC (rev 629)
@@ -111,7 +111,8 @@
/**
* Return if this element has static declaration, only valid when
- * getDeclaringElement is classifier
+ * getDeclaringElement is classifier. Not possible for the moment
+ * to have static innerClass (from XMI 1.2 and 2.1).
* @return true if element is static
*/
public boolean isStatic();
1
0
r628 - in trunk/eugene: . src/main/xsl src/test/java/org/nuiton/eugene/xmi/objectmodel src/test/resources/xmi/2.1
by fdesbois@users.nuiton.org 21 Sep '09
by fdesbois@users.nuiton.org 21 Sep '09
21 Sep '09
Author: fdesbois
Date: 2009-09-21 22:17:46 +0200 (Mon, 21 Sep 2009)
New Revision: 628
Modified:
trunk/eugene/changelog.txt
trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl
trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java
trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.uml
trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi
Log:
[Evol] #58 and #59 : Support InnerClasses and static operations for XMI 2.1
Modified: trunk/eugene/changelog.txt
===================================================================
--- trunk/eugene/changelog.txt 2009-09-21 16:56:15 UTC (rev 627)
+++ trunk/eugene/changelog.txt 2009-09-21 20:17:46 UTC (rev 628)
@@ -1,6 +1,6 @@
1.0.1
- * 20090921 [desbois] [Evol #59] support innerClasses for XMI 1.2
- * 20090921 [desbois] [Evol #58] support static on operations from XMI 1.2 et 2.1 and static on classes only for XMI 1.2
+ * 20090921 [desbois] [Evol #59] support innerClasses
+ * 20090921 [desbois] [Evol #58] support static on operations
* 20090903 [poussin] move attribute from class to classifier, interface can have static attribute
* 20090903 [poussin] add JavaClassBuilder
* 20090903 [poussin] add new generator type JavaClassGenerator
Modified: trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl
===================================================================
--- trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl 2009-09-21 16:56:15 UTC (rev 627)
+++ trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl 2009-09-21 20:17:46 UTC (rev 628)
@@ -1,3 +1,4 @@
+
<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"
@@ -24,8 +25,8 @@
<xsl:template match="uml:Model">
<xsl:element name="objectModel">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<xsl:apply-templates>
<xsl:with-param name="parentLocalPackageName" />
@@ -57,10 +58,10 @@
<xsl:variable name="parentLocalPackageNameDot">
<xsl:if test="$parentLocalPackageName=''">
- <xsl:value-of select="$parentLocalPackageName" />
+ <xsl:value-of select="$parentLocalPackageName" />
</xsl:if>
<xsl:if test="$parentLocalPackageName!=''">
- <xsl:value-of select="concat($parentLocalPackageName,'.')" />
+ <xsl:value-of select="concat($parentLocalPackageName,'.')" />
</xsl:if>
</xsl:variable>
@@ -80,29 +81,36 @@
<!-- uml:Class -->
<xsl:template match="packagedElement[@xmi:type='uml:Class']">
<xsl:param name="parentLocalPackageName" />
+ <xsl:call-template name="UMLClass">
+ <xsl:with-param name="parentLocalPackageName" select="$parentLocalPackageName" />
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="UMLClass">
+ <xsl:param name="parentLocalPackageName" />
<xsl:element name="class">
<!-- class properties -->
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<xsl:attribute name="package">
- <xsl:value-of select="$parentLocalPackageName" />
- </xsl:attribute>
+ <xsl:value-of select="$parentLocalPackageName" />
+ </xsl:attribute>
<xsl:if test="@isAbstract='true'">
<xsl:attribute name="abstract">
- <xsl:text>true</xsl:text>
- </xsl:attribute>
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
</xsl:if>
<!-- stereotypes -->
<xsl:for-each select="//child::*[@base_Class = current()/@xmi:id]">
<xsl:element name="stereotype">
<xsl:attribute name="name">
- <xsl:value-of select="local-name()" />
- </xsl:attribute>
+ <xsl:value-of select="local-name()" />
+ </xsl:attribute>
</xsl:element>
</xsl:for-each>
@@ -111,7 +119,6 @@
<xsl:with-param name="parent" select="current()" />
</xsl:call-template>
-
<!-- interfaces -->
<xsl:apply-templates select="interfaceRealization" />
@@ -124,6 +131,13 @@
<!-- operations -->
<xsl:apply-templates select="ownedOperation" />
+ <!-- inner classes -->
+ <xsl:for-each select="nestedClassifier[@xmi:type='uml:Class']">
+ <xsl:call-template name="UMLClass">
+ <xsl:with-param name="parentLocalPackageName" select="$parentLocalPackageName" />
+ </xsl:call-template>
+ </xsl:for-each>
+
<!-- associations , Association & AssociationClass -->
<xsl:call-template name="UMLAssociations" />
@@ -193,17 +207,17 @@
<xsl:element name="interface">
<!-- interface properties -->
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<xsl:attribute name="package">
- <xsl:value-of select="$parentLocalPackageName" />
- </xsl:attribute>
+ <xsl:value-of select="$parentLocalPackageName" />
+ </xsl:attribute>
<xsl:if test="@isAbstract='true'">
<xsl:attribute name="abstract">
- <xsl:text>true</xsl:text>
- </xsl:attribute>
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
</xsl:if>
<!-- stereotypes -->
@@ -211,8 +225,8 @@
select="//child::*[@base_Interface = current()/@xmi:id]">
<xsl:element name="stereotype">
<xsl:attribute name="name">
- <xsl:value-of select="local-name()" />
- </xsl:attribute>
+ <xsl:value-of select="local-name()" />
+ </xsl:attribute>
</xsl:element>
</xsl:for-each>
@@ -238,9 +252,9 @@
<xsl:element name="interface">
<xsl:attribute name="name">
<xsl:call-template name="supplierName">
- <xsl:with-param name="parent" select="current()" />
+ <xsl:with-param name="parent" select="current()" />
</xsl:call-template>
- </xsl:attribute>
+ </xsl:attribute>
</xsl:element>
</xsl:template>
@@ -249,22 +263,22 @@
<xsl:element name="superclass">
<xsl:attribute name="name">
- <xsl:choose>
- <xsl:when test="general">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="node" select="general" />
- </xsl:call-template>
- </xsl:when>
+ <xsl:choose>
+ <xsl:when test="general">
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="node" select="general" />
+ </xsl:call-template>
+ </xsl:when>
- <xsl:when test="@general">
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
+ <xsl:when test="@general">
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@general]" />
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
- </xsl:attribute>
+ </xsl:attribute>
</xsl:element>
</xsl:template>
@@ -294,8 +308,8 @@
<xsl:template match="ownedLiteral">
<xsl:element name="literal">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<!-- Documentation... Not yet supported by the memory representation-->
<!--
@@ -317,8 +331,8 @@
<xsl:if test="@isStatic">
<xsl:attribute name="static">
- <xsl:value-of select="@isStatic" />
- </xsl:attribute>
+ <xsl:value-of select="@isStatic" />
+ </xsl:attribute>
</xsl:if>
<xsl:choose>
@@ -340,8 +354,8 @@
<xsl:element name="operation">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<xsl:choose>
<xsl:when test="@visibility">
@@ -356,10 +370,16 @@
<xsl:if test="@isAbstract='true'">
<xsl:attribute name="abstract">
- <xsl:text>true</xsl:text>
- </xsl:attribute>
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
</xsl:if>
+ <xsl:if test="@isStatic">
+ <xsl:attribute name="static">
+ <xsl:value-of select="@isStatic" />
+ </xsl:attribute>
+ </xsl:if>
+
<!-- operation parameters -->
<xsl:for-each select="ownedParameter">
<xsl:choose>
@@ -371,8 +391,8 @@
<xsl:otherwise>
<xsl:element name="parameter">
<xsl:attribute name="name">
- <xsl:value-of select="@name" />
- </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:attribute>
<xsl:call-template name="UMLParameter" />
</xsl:element>
</xsl:otherwise>
@@ -385,10 +405,10 @@
<xsl:for-each select="raisedException">
<xsl:element name="exceptionParameter">
<xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="node" select="." />
+ </xsl:call-template>
+ </xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:when>
@@ -437,11 +457,11 @@
<xsl:when test="$value != ''">
<xsl:element name="exceptionParameter">
<xsl:attribute name="type">
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node"
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node"
select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$value]" />
- </xsl:call-template>
- </xsl:attribute>
+ </xsl:call-template>
+ </xsl:attribute>
</xsl:element>
</xsl:when>
</xsl:choose>
@@ -491,20 +511,20 @@
<xsl:choose>
<xsl:when test="type">
<xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="node" select="type" />
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:call-template name="fullClassName">
+ <xsl:with-param name="node" select="type" />
+ </xsl:call-template>
+ </xsl:attribute>
</xsl:when>
<xsl:when test="@type">
<xsl:attribute name="type">
- <xsl:variable name="typeref"
+ <xsl:variable name="typeref"
select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface' or @xmi:type='uml:PrimitiveType'][@xmi:id=current()/@type]" />
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node" select="$typeref" />
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node" select="$typeref" />
+ </xsl:call-template>
+ </xsl:attribute>
</xsl:when>
</xsl:choose>
@@ -573,30 +593,30 @@
<xsl:choose>
<xsl:when test="$endnode/type">
<xsl:attribute name="type">
- <xsl:call-template name="fullClassName">
- <xsl:with-param name="node" select="$endnode/type" />
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:call-template name="fullClassName">
+ <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"
+ <xsl:variable name="typeref"
select="//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:call-template name="fullClassName2">
+ <xsl:with-param name="node" select="$typeref" />
+ </xsl:call-template>
+ </xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:attribute name="reverseAttributeName">
- <xsl:value-of select="$reversenode/@name" />
- </xsl:attribute>
+ <xsl:value-of select="$reversenode/@name" />
+ </xsl:attribute>
<xsl:attribute name="reverseMaxMultiplicity">
- <xsl:choose>
- <xsl:when test="$reversenode/upperValue/@value">
+ <xsl:choose>
+ <xsl:when test="$reversenode/upperValue/@value">
<xsl:choose>
<xsl:when test="$reversenode/upperValue/@value='*'">
<xsl:text>-1</xsl:text>
@@ -605,17 +625,17 @@
<xsl:value-of select="$reversenode/upperValue/@value" />
</xsl:otherwise>
</xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>-1</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>-1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
<xsl:if test="$endnode/@aggregation">
<xsl:attribute name="associationType">
- <xsl:value-of select="$endnode/@aggregation" />
- </xsl:attribute>
+ <xsl:value-of select="$endnode/@aggregation" />
+ </xsl:attribute>
</xsl:if>
<xsl:call-template name="multiplicities">
@@ -623,13 +643,13 @@
</xsl:call-template>
<xsl:attribute name="navigable">
- <xsl:value-of select="contains(parent::packagedElement/@navigableOwnedEnd, $endnode/@xmi:id)"/>
+ <xsl:value-of select="contains(parent::packagedElement/@navigableOwnedEnd, $endnode/@xmi:id)"/>
</xsl:attribute>
<xsl:if test="$endnode/@isOrdered">
<xsl:attribute name="ordering">
- <xsl:text>ordered</xsl:text>
- </xsl:attribute>
+ <xsl:text>ordered</xsl:text>
+ </xsl:attribute>
</xsl:if>
<!-- stereotypes -->
@@ -820,16 +840,16 @@
</xsl:when>
<xsl:otherwise>
<!-- Dans les modeles externes, le cas est different, FQN seulement pour les types non primitifs -->
- <xsl:choose>
- <xsl:when test="$node/@xmi:type = 'uml:PrimitiveType'">
- <xsl:value-of select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="fullClassName2">
- <xsl:with-param name="node" select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$node/@xmi:type = 'uml:PrimitiveType'">
+ <xsl:value-of select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]/@name" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="fullClassName2">
+ <xsl:with-param name="node" select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
<!-- / fin du cas particulier -->
</xsl:otherwise>
</xsl:choose>
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java 2009-09-21 16:56:15 UTC (rev 627)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java 2009-09-21 20:17:46 UTC (rev 628)
@@ -147,7 +147,7 @@
assertNotNull(model);
assertEquals("XMITest21", model.getName());
- assertEquals(14, model.getClassifiers().size());
+ assertEquals(15, model.getClassifiers().size());
// ClassB
ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB");
@@ -453,6 +453,12 @@
assertTrue(strings.isStatic());
assertEquals("azerty",strings.getDefaultValue());
+ // static operation
+ ObjectModelClass classD = model.getClass("org.nuiton.eugene.test21.ClassD");
+ assertNotNull(classD);
+ List<ObjectModelOperation> operations = (List<ObjectModelOperation>)classD.getOperations("getInstance");
+ assertEquals(operations.size(), 1);
+ assertTrue(operations.get(0).isStatic());
}
/**
@@ -483,6 +489,35 @@
}
/**
+ * Apply XSL stylesheet on a topcased model.
+ * Test for InnerClasses
+ *
+ * @throws URISyntaxException
+ * @throws IOException
+ * @throws TransformerException
+ */
+ @Test
+ public void testTestXMI21InnerClasses() throws URISyntaxException, IOException,
+ TransformerException {
+
+ ObjectModel model = xmiToObjectModel("TestXMI21");
+
+ // OuterClass
+ ObjectModelClass outer = model.getClass("org.nuiton.eugene.test21.OuterClass");
+
+ List<ObjectModelClass> inners = (List<ObjectModelClass>)outer.getInnerClasses();
+ assertNotNull(inners);
+ assertEquals(inners.size(), 1);
+
+ // InnerClass
+ ObjectModelClass inner = inners.get(0);
+ assertNotNull(inner);
+ assertNotNull(inner.getDeclaringElement());
+ assertEquals(inner.getDeclaringElement().getName(), "OuterClass");
+ assertTrue(inner.isInner());
+ }
+
+ /**
* Apply XSL stylesheet on TestXMI21
* Check documentation tags on model, class, attribute, operation and enumerations
*/
Modified: trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.uml
===================================================================
--- trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.uml 2009-09-21 16:56:15 UTC (rev 627)
+++ trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.uml 2009-09-21 20:17:46 UTC (rev 628)
@@ -228,6 +228,9 @@
<ownedLiteral xmi:id="_BGl0IGWBEd64qsCRqbn5Bg" name="Literal1"/>
<ownedLiteral xmi:id="_B75EcmWBEd64qsCRqbn5Bg" name="Literal2"/>
</packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_O-CukKbcEd6m3c2K_Ke8nQ" name="OuterClass">
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_uUWDEKbcEd6m3c2K_Ke8nQ" name="InnerClass"/>
+ </packagedElement>
<profileApplication xmi:id="_7Jv4UP6gEd2zEeRO-8Et9Q">
<eAnnotations xmi:id="_7Jv4Uf6gEd2zEeRO-8Et9Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/>
Modified: trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi
===================================================================
--- trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi 2009-09-21 16:56:15 UTC (rev 627)
+++ trunk/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi 2009-09-21 20:17:46 UTC (rev 628)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<diagrams:Diagrams xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.topcased.org/DI/1.0" xmlns:diagrams="http://www.topcased.org/Diagrams/1.0" xmi:id="__zkfAf3jEd2LebRc8diKJw" activeDiagram="__zpXgP3jEd2LebRc8diKJw">
<model href="TestXMI21.uml#_w8IxIM37EdqwVrslYOdUDA"/>
- <diagrams xmi:id="__zpXgP3jEd2LebRc8diKJw" position="0,0" size="100,100" name="CDTest21" viewport="0,80">
+ <diagrams xmi:id="__zpXgP3jEd2LebRc8diKJw" position="0,0" size="100,100" name="CDTest21" viewport="0,358">
<property xmi:id="__7azcP3jEd2LebRc8diKJw" key="pageFormatName" value="A4"/>
<property xmi:id="__7azcf3jEd2LebRc8diKJw" key="diagramWidth" value="840"/>
<property xmi:id="__7azcv3jEd2LebRc8diKJw" key="diagramHeight" value="1188"/>
@@ -14,7 +14,7 @@
<semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__zqloP3jEd2LebRc8diKJw" presentation="org.topcased.modeler.uml.classdiagram">
<element href="TestXMI21.uml#_w8IxIM37EdqwVrslYOdUDA"/>
</semanticModel>
- <contained xsi:type="di:GraphNode" xmi:id="_NM0cAP58Ed2zEeRO-8Et9Q" position="237,149" size="253,-1">
+ <contained xsi:type="di:GraphNode" xmi:id="_NM0cAP58Ed2zEeRO-8Et9Q" position="125,149" size="365,-1">
<anchorage xmi:id="_X7T_AP58Ed2zEeRO-8Et9Q" graphEdge="_X7Y3gP58Ed2zEeRO-8Et9Q _YbdesP58Ed2zEeRO-8Et9Q _eo4qQP58Ed2zEeRO-8Et9Q _hujasP58Ed2zEeRO-8Et9Q"/>
<semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NM0cAf58Ed2zEeRO-8Et9Q" presentation="default">
<element href="TestXMI21.uml#_NNUyUP58Ed2zEeRO-8Et9Q"/>
@@ -523,5 +523,22 @@
</contained>
</contained>
</contained>
+ <contained xsi:type="di:GraphNode" xmi:id="_O992EKbcEd6m3c2K_Ke8nQ" position="190,604" size="100,-1">
+ <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O992EabcEd6m3c2K_Ke8nQ" presentation="default">
+ <element href="TestXMI21.uml#_O-CukKbcEd6m3c2K_Ke8nQ"/>
+ </semanticModel>
+ <contained xsi:type="di:GraphNode" xmi:id="_O992EqbcEd6m3c2K_Ke8nQ">
+ <property xmi:id="_O992E6bcEd6m3c2K_Ke8nQ" key="eStructuralFeatureID" value="37"/>
+ <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O992FKbcEd6m3c2K_Ke8nQ" presentation="default">
+ <element href="TestXMI21.uml#_O-CukKbcEd6m3c2K_Ke8nQ"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di:GraphNode" xmi:id="_O992FabcEd6m3c2K_Ke8nQ">
+ <property xmi:id="_O992FqbcEd6m3c2K_Ke8nQ" key="eStructuralFeatureID" value="47"/>
+ <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O992F6bcEd6m3c2K_Ke8nQ" presentation="default">
+ <element href="TestXMI21.uml#_O-CukKbcEd6m3c2K_Ke8nQ"/>
+ </semanticModel>
+ </contained>
+ </contained>
</diagrams>
</diagrams:Diagrams>
1
0
r627 - in trunk/eugene: . src/main/java/org/nuiton/eugene/models/object src/main/java/org/nuiton/eugene/models/object/xml src/main/xsl src/test/java/org/nuiton/eugene/xmi/objectmodel src/test/resources/xmi/1.2
by fdesbois@users.nuiton.org 21 Sep '09
by fdesbois@users.nuiton.org 21 Sep '09
21 Sep '09
Author: fdesbois
Date: 2009-09-21 18:56:15 +0200 (Mon, 21 Sep 2009)
New Revision: 627
Modified:
trunk/eugene/changelog.txt
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl
trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java
trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi
trunk/eugene/src/test/resources/xmi/1.2/topiatest.zargo
Log:
[Evol] #58 and #59 : static and innerClasses support for XMI 1.2 only (already support static on attributes)
Modified: trunk/eugene/changelog.txt
===================================================================
--- trunk/eugene/changelog.txt 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/changelog.txt 2009-09-21 16:56:15 UTC (rev 627)
@@ -1,4 +1,6 @@
1.0.1
+ * 20090921 [desbois] [Evol #59] support innerClasses for XMI 1.2
+ * 20090921 [desbois] [Evol #58] support static on operations from XMI 1.2 et 2.1 and static on classes only for XMI 1.2
* 20090903 [poussin] move attribute from class to classifier, interface can have static attribute
* 20090903 [poussin] add JavaClassBuilder
* 20090903 [poussin] add new generator type JavaClassGenerator
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-09-21 16:56:15 UTC (rev 627)
@@ -39,7 +39,7 @@
public interface ObjectModel extends Model {
/**
- * Returns all classifiers defined in this model.
+ * Returns all classifiers defined in this model. (Except innerClasses)
* @see ObjectModelClassifier
*
* @return a Collection containing all ObjectModelClassifier for this model.
@@ -56,7 +56,7 @@
String qualifiedClassifierName);
/**
- * Returns all classes defined in this model.
+ * Returns all classes defined in this model. (Except innerClasses)
* @see ObjectModelClass
*
* @return a Collection containing all ObjectModelClass for this model.
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-09-21 16:56:15 UTC (rev 627)
@@ -40,15 +40,23 @@
*
* @return a Collection containing all parent ObjectModelClass for this class.
*/
- public Collection<ObjectModelClass> getSuperclasses();
+ Collection<ObjectModelClass> getSuperclasses();
/**
+ * Returns all inner classes for this class.
+ * @see ObjectModelClass
+ *
+ * @return a Collection containing all inner ObjectModelClass for this class.
+ */
+ Collection<ObjectModelClass> getInnerClasses();
+
+ /**
* Returns the discriminator for the given superclass.
*
* @param superclass super class to get discriminator
* @return the discriminator for the given superclass as a String if it exists, null otherwise.
*/
- public String getDiscriminator(ObjectModelClass superclass);
+ String getDiscriminator(ObjectModelClass superclass);
/**
* Returns all known direct specialized classes for this class.
@@ -56,7 +64,7 @@
*
* @return a Collection containing all known direct specialized ObjectModelClass for this class.
*/
- public Collection<ObjectModelClass> getSpecialisations();
+ Collection<ObjectModelClass> getSpecialisations();
/**
* Returns all known direct specialized classes for this class for the specified discriminator.
@@ -65,17 +73,23 @@
* @param discriminator discriminator to get specialisations
* @return a Collection containing all known direct specialized ObjectModelClass for this class for the specified discriminator.
*/
- public Collection<ObjectModelClass> getSpecialisations(
- String discriminator);
+ Collection<ObjectModelClass> getSpecialisations(String discriminator);
/**
* Returns whether this class is abstract or not.
*
* @return a boolean indicating whether this class is abstract or not.
*/
- public boolean isAbstract();
+ boolean isAbstract();
/**
+ * Returns whether this class is inner an other class or not.
+ *
+ * @return a boolean indicating whether this class is inner an other class or not.
+ */
+ boolean isInner();
+
+ /**
* Returns all operations defined on all Super class extended by this
* classifier, directly or indirectly. and all interface implemented by the
* super class.
@@ -83,7 +97,6 @@
* are add to list.
* @return a Collection of ObjectModelOperation
*/
- public Collection<ObjectModelOperation> getAllSuperclassOperations(
- boolean distinct);
+ Collection<ObjectModelOperation> getAllSuperclassOperations(boolean distinct);
} //ObjectModelClass
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java 2009-09-21 16:56:15 UTC (rev 627)
@@ -69,9 +69,9 @@
// root element must be present on stask
d.addSetProperties("objectModel");
- d.addObjectCreate("objectModel/class", ObjectModelClassImpl.class);
- d.addSetProperties("objectModel/class");
- d.addSetNext("objectModel/class", "addClass");
+ d.addObjectCreate("*/class", ObjectModelClassImpl.class);
+ d.addSetProperties("*/class");
+ d.addSetNext("*/class", "addClass");
d.addObjectCreate("objectModel/interface",
ObjectModelInterfaceImpl.class);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-09-21 16:56:15 UTC (rev 627)
@@ -51,7 +51,9 @@
protected Map<ObjectModelClass, String> superclassesDiscriminators = new HashMap<ObjectModelClass, String>();
protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>();
protected List<ObjectModelClass> specialisations = null;
+ protected List<ObjectModelClass> innerClasses = null;
protected boolean abstractz = false;
+ protected boolean inner = false;
public ObjectModelClassImpl() {
super();
@@ -63,6 +65,23 @@
superclasses = null;
}
+ /**
+ * Digester method to add innerClass to this ObjectModelClass.
+ * @param innerClass the ObjectModelClass to add
+ */
+ public void addClass(ObjectModelClassImpl innerClass) {
+ innerClass.setDeclaringElement(this);
+ innerClass.setInner(true);
+ if (innerClasses == null) {
+ innerClasses = new ArrayList<ObjectModelClass>();
+ }
+ innerClasses.add(innerClass);
+ }
+
+ public void setInner(boolean inner) {
+ this.inner = inner;
+ }
+
public void setAbstract(boolean abstractz) {
this.abstractz = abstractz;
}
@@ -85,6 +104,11 @@
return superclasses;
}
+ @Override
+ public Collection<ObjectModelClass> getInnerClasses() {
+ return this.innerClasses;
+ }
+
/**
* Returns the discriminator for the given superclass.
*
@@ -152,6 +176,11 @@
}
@Override
+ public boolean isInner() {
+ return inner;
+ }
+
+ @Override
public Collection<ObjectModelOperation> getAllOtherOperations(
boolean distinct) {
Collection<ObjectModelOperation> result = getAllInterfaceOperations(distinct);
Modified: trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl
===================================================================
--- trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl 2009-09-21 16:56:15 UTC (rev 627)
@@ -240,6 +240,15 @@
<xsl:call-template name="UMLOperation"/>
</xsl:for-each>
+ <!-- inner classes -->
+ <xsl:for-each select="UML:Namespace.ownedElement/UML:Class">
+ <xsl:call-template name="UMLClass">
+ <xsl:with-param name="localPackageName">
+ <xsl:value-of select="$localPackageName"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+
<xsl:call-template name="UMLAssociations">
<xsl:with-param name="classId">
<xsl:value-of select="$classId"/>
@@ -652,6 +661,12 @@
<xsl:text>true</xsl:text>
</xsl:attribute>
</xsl:if>
+
+ <xsl:if test="@ownerScope='classifier'">
+ <xsl:attribute name="static">
+ <xsl:text>true</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
<xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue">
<xsl:call-template name="taggedValue"/>
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java 2009-09-21 16:56:15 UTC (rev 627)
@@ -24,6 +24,7 @@
import java.net.URISyntaxException;
import java.net.URL;
+import java.util.List;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@@ -157,7 +158,17 @@
Assert.assertNotNull(personneClass);
ObjectModelAttribute addressAttr = personneClass.getAttribute("address");
Assert.assertNotNull(addressAttr);
- Assert.assertTrue(addressAttr.isAggregate());
+ Assert.assertTrue(addressAttr.isAggregate());
+
+ // Test for inner class
+ ObjectModelClass storeClass = model.getClass("org.nuiton.topiatest.Store");
+ Assert.assertNotNull(storeClass);
+ List<ObjectModelClass> inners = (List<ObjectModelClass>) storeClass.getInnerClasses();
+ Assert.assertNotNull(inners);
+ Assert.assertEquals(inners.size(), 1);
+ ObjectModelClass rowClass = inners.get(0);
+ Assert.assertNotNull(rowClass);
+ Assert.assertEquals(rowClass.getDeclaringElement().getName(), "Store");
}
/**
Modified: trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi
===================================================================
--- trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi 2009-09-04 14:54:57 UTC (rev 626)
+++ trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi 2009-09-21 16:56:15 UTC (rev 627)
@@ -1,5 +1,5 @@
<?xml version = '1.0' encoding = 'UTF-8' ?>
-<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Tue Jul 21 15:18:23 CEST 2009'>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Sep 21 18:42:26 CEST 2009'>
<XMI.header> <XMI.documentation>
<XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
<XMI.exporterVersion>0.28(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion>
@@ -312,6 +312,48 @@
<UML:ModelElement.stereotype>
<UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
</UML:ModelElement.stereotype>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000104C'
+ name = 'Row' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001051'
+ name = 'num' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001052'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001053'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:Attribute.initialValue>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001057'
+ language = '' body = ''/>
+ </UML:Attribute.initialValue>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001054'
+ name = 'position' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001055'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001056'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
<UML:Classifier.feature>
<UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D'
name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
@@ -324,10 +366,65 @@
</UML:Multiplicity.range>
</UML:Multiplicity>
</UML:StructuralFeature.multiplicity>
+ <UML:Attribute.initialValue>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001046'
+ language = '' body = ''/>
+ </UML:Attribute.initialValue>
<UML:StructuralFeature.type>
<UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
</UML:StructuralFeature.type>
</UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001034'
+ name = 'DEFAULT_NUM' visibility = 'public' isSpecification = 'false' ownerScope = 'classifier'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001035'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001036'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:Attribute.initialValue>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001041'
+ language = '' body = 'B78947'/>
+ </UML:Attribute.initialValue>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Operation xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103A'
+ name = 'getDefaultNum' visibility = 'public' isSpecification = 'false' ownerScope = 'classifier'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103B'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Attribute xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001042'
+ name = 'numStore' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001043'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001044'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:Attribute.initialValue>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001045'
+ language = '' body = ''/>
+ </UML:Attribute.initialValue>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'
@@ -1318,6 +1415,16 @@
</UML:Stereotype>
</UML:Namespace.ownedElement>
</UML:Model>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103C'
+ language = '' body = 'B'/>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103D'
+ language = '' body = 'B7'/>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103E'
+ language = '' body = 'B78'/>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:000000000000103F'
+ language = '' body = 'B789'/>
+ <UML:Expression xmi.id = '-64--88-99-15--68a124bf:123dcd43ccb:-8000:0000000000001040'
+ language = '' body = 'B7894'/>
<UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'>
<UML:Multiplicity.range>
<UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234'
Modified: trunk/eugene/src/test/resources/xmi/1.2/topiatest.zargo
===================================================================
(Binary files differ)
1
0
r626 - in trunk/eugene: . src/main/java/org/nuiton/eugene/models/object src/main/java/org/nuiton/eugene/models/object/xml src/site/rst
by bpoussin@users.nuiton.org 04 Sep '09
by bpoussin@users.nuiton.org 04 Sep '09
04 Sep '09
Author: bpoussin
Date: 2009-09-04 16:54:57 +0200 (Fri, 04 Sep 2009)
New Revision: 626
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java
Modified:
trunk/eugene/changelog.txt
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java
trunk/eugene/src/site/rst/Todo.rst
Log:
- ajout du support de static sur tout type d'element (manque le support dans le xsl)
- une interface peu avoir des attributs (s'ils sont statics) donc deplacement des attributs dans classifier
- debut d'implantation du JavaClassBuilder
- ajout du support du contenu (bodyCode) pour les operations
- le changelog est en avance sur ce qui est fait, mais j'espere que ca va changer :)
Modified: trunk/eugene/changelog.txt
===================================================================
--- trunk/eugene/changelog.txt 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/changelog.txt 2009-09-04 14:54:57 UTC (rev 626)
@@ -1,3 +1,10 @@
+1.0.1
+ * 20090903 [poussin] move attribute from class to classifier, interface can have static attribute
+ * 20090903 [poussin] add JavaClassBuilder
+ * 20090903 [poussin] add new generator type JavaClassGenerator
+ * 20090903 [poussin] add bodyCode to ObjectModelOperation
+ * 20090903 [poussin] add static declaration to ObjectModelElement
+
1.0.0 xxx xxx
* Add multiple models loading and restricted package generation
* Add Enumeration support
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -0,0 +1,60 @@
+/* *##%
+ * Copyright (c) 2009 poussin. All rights reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *##%*/
+
+package org.nuiton.eugene.models.object;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
+
+/**
+ * class that help to build java class or interface object.
+ *
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class JavaClassBuilder {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(JavaClassBuilder.class);
+
+ public ObjectModelClass createClass(String name) {
+ ObjectModelClassImpl result = new ObjectModelClassImpl();
+ return result;
+ }
+
+ public ObjectModelInterface createInterface(String name) {
+ ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl();
+ return result;
+ }
+
+ public ObjectModelOperation addOperation(ObjectModelClassifier clazz,
+ String name, String failbackName) {
+ ObjectModelOperationImpl result = new ObjectModelOperationImpl();
+ result.setName(name);
+ ((ObjectModelClassifierImpl)clazz).addOperation(result);
+ return result;
+ }
+}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -69,22 +69,6 @@
String discriminator);
/**
- * Returns all attributes defined on this class.
- * @see ObjectModelAttribute
- *
- * @return a Collection containing all ObjectModelAttribute for this class.
- */
- public Collection<ObjectModelAttribute> getAttributes();
-
- /**
- * Returns the attribute corresponding to the given name, or null if the class contains no attribute for this name.
- *
- * @param attributeName attribute name
- * @return the ObjectModelAttribute of the found attribute, or null if the class contains no attribute for this name.
- */
- public ObjectModelAttribute getAttribute(String attributeName);
-
- /**
* Returns whether this class is abstract or not.
*
* @return a boolean indicating whether this class is abstract or not.
@@ -102,11 +86,4 @@
public Collection<ObjectModelOperation> getAllSuperclassOperations(
boolean distinct);
- /**
- * Returns all attributes defined on all super class extended by this
- * classifier, directly or indirectly.
- * @return a Collection of ObjectModelAttribute
- */
- public Collection<ObjectModelAttribute> getAllOtherAttributes();
-
} //ObjectModelClass
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -95,8 +95,37 @@
public Collection<ObjectModelOperation> getAllOtherOperations(
boolean distinct);
+ /**
+ * Returns all attributes defined on this class.
+ * @see ObjectModelAttribute
+ *
+ * @return a Collection containing all ObjectModelAttribute for this class.
+ */
+ public Collection<ObjectModelAttribute> getAttributes();
/**
+ * Returns the attribute corresponding to the given name, or null if the class contains no attribute for this name.
+ *
+ * @param attributeName attribute name
+ * @return the ObjectModelAttribute of the found attribute, or null if the class contains no attribute for this name.
+ */
+ public ObjectModelAttribute getAttribute(String attributeName);
+
+ /**
+ * Returns all attributes defined on all interfaces implemented by this
+ * classifier, directly or indirectly.
+ * @return a Collection of ObjectModelAttribute
+ */
+ public Collection<ObjectModelAttribute> getAllInterfaceAttributes();
+
+ /**
+ * Returns all attributes defined on all super class extended by this
+ * classifier, directly or indirectly.
+ * @return a Collection of ObjectModelAttribute
+ */
+ public Collection<ObjectModelAttribute> getAllOtherAttributes();
+
+ /**
* Returns all dependencies of this client classifier
*
* @return a Collection of ObjectModelDependency
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -62,10 +62,12 @@
public String getDescription();
/**
- * Returns the source documentation part associated with this element.
- *
- * @return the source documentation part associated with this element.
- */
+ * Returns the source documentation part associated with this element.
+ * Source documentation is at end of documentation and are separated of
+ * over documentation by "--"
+ *
+ * @return the source documentation part associated with this element.
+ */
public String getSourceDocumentation();
/**
@@ -108,6 +110,13 @@
public boolean hasTagValue(String tagValue);
/**
+ * Return if this element has static declaration, only valid when
+ * getDeclaringElement is classifier
+ * @return true if element is static
+ */
+ public boolean isStatic();
+
+ /**
* Returns all comments lied to this particular model element
*
* @return a List containing all comments for this element as Strings.
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -84,4 +84,10 @@
*/
public Set<String> getExceptions();
+ /**
+ * Return body of the operation (source code)
+ * @return body of the operation (source code)
+ */
+ public String getBodyCode();
+
} //ObjectModelOperation
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -51,8 +51,6 @@
protected Map<ObjectModelClass, String> superclassesDiscriminators = new HashMap<ObjectModelClass, String>();
protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>();
protected List<ObjectModelClass> specialisations = null;
- protected Map<String, ObjectModelAttribute> attributes = new HashMap<String, ObjectModelAttribute>();
- protected List<ObjectModelAttribute> orderedAttributes = new ArrayList<ObjectModelAttribute>();
protected boolean abstractz = false;
public ObjectModelClassImpl() {
@@ -60,22 +58,11 @@
}
public void addSuperclass(ObjectModelImplRef ref) {
- //if (ref == null)
- //return new ObjectModelImplSuperClassRef();
superclassesRefs.add(ref);
- //return ref;
+ // superclassesRefs is modified, superclasses must be reset
+ superclasses = null;
}
- public void addAttribute(ObjectModelAttributeImpl attribute) {
- //if (attribute == null)
- //return new ObjectModelAttributeImpl(objectModelImpl, this);
- attribute.postInit();
- attribute.setDeclaringElement(this);
- attributes.put(attribute.getName(), attribute);
- orderedAttributes.add(attribute);
- //return attribute;
- }
-
public void setAbstract(boolean abstractz) {
this.abstractz = abstractz;
}
@@ -154,24 +141,7 @@
return discriminatedSpecialisations;
}
- @Override
- public Collection<ObjectModelAttribute> getAttributes() {
- return orderedAttributes;
- }
-
/**
- * Returns the attribute corresponding to the given name, or null if the
- * class contains no attribute for this name.
- *
- * @return the ObjectModelAttribute of the found attribute, or null if the
- * class contains no attribute for this name.
- */
- @Override
- public ObjectModelAttribute getAttribute(String attributeName) {
- return (attributeName == null ? null : attributes.get(attributeName));
- }
-
- /**
* Returns whether this class is abstract or not.
*
* @return a boolean indicating whether this class is abstract or not.
@@ -215,7 +185,7 @@
@Override
public Collection<ObjectModelAttribute> getAllOtherAttributes() {
- Collection<ObjectModelAttribute> result = new LinkedList<ObjectModelAttribute>();
+ Collection<ObjectModelAttribute> result = getAllInterfaceAttributes();
getAllOtherAttributes(result);
return result;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -19,11 +19,14 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelDependency;
import org.nuiton.eugene.models.object.ObjectModelInterface;
@@ -49,6 +52,8 @@
protected List<ObjectModelInterface> interfaces = null;
protected List<ObjectModelImplRef> interfacesRefs = new ArrayList<ObjectModelImplRef>();
protected List<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>();
+ protected Map<String, ObjectModelAttribute> attributes = new HashMap<String, ObjectModelAttribute>();
+ protected List<ObjectModelAttribute> orderedAttributes = new ArrayList<ObjectModelAttribute>();
protected List<ObjectModelDependency> dependencies = new ArrayList<ObjectModelDependency>();
protected String type = null;
@@ -90,6 +95,13 @@
//return operation;
}
+ public void addAttribute(ObjectModelAttributeImpl attribute) {
+ attribute.postInit();
+ attribute.setDeclaringElement(this);
+ attributes.put(attribute.getName(), attribute);
+ orderedAttributes.add(attribute);
+ }
+
public void addDependency(ObjectModelDependencyImpl dependency) {
dependency.postInit();
dependency.setClient(this);
@@ -138,11 +150,13 @@
return operations;
}
+ @Override
public Collection<ObjectModelOperation> getAllOtherOperations(
boolean distinct) {
return getAllInterfaceOperations(distinct);
}
+ @Override
public Collection<ObjectModelOperation> getAllInterfaceOperations(
boolean distinct) {
Collection<ObjectModelOperation> result = null;
@@ -165,6 +179,46 @@
}
@Override
+ public Collection<ObjectModelAttribute> getAttributes() {
+ return orderedAttributes;
+ }
+
+ /**
+ * Returns the attribute corresponding to the given name, or null if the
+ * class contains no attribute for this name.
+ *
+ * @return the ObjectModelAttribute of the found attribute, or null if the
+ * class contains no attribute for this name.
+ */
+ @Override
+ public ObjectModelAttribute getAttribute(String attributeName) {
+ return (attributeName == null ? null : attributes.get(attributeName));
+ }
+
+ @Override
+ public Collection<ObjectModelAttribute> getAllInterfaceAttributes() {
+ Collection<ObjectModelAttribute> result = new LinkedList<ObjectModelAttribute>();
+ getAllInterfaceAttributes(result);
+ return result;
+ }
+
+ @Override
+ public Collection<ObjectModelAttribute> getAllOtherAttributes() {
+ Collection<ObjectModelAttribute> result = getAllInterfaceAttributes();
+ return result;
+ }
+
+ protected Collection<ObjectModelAttribute> getAllInterfaceAttributes(
+ Collection<ObjectModelAttribute> result) {
+ for (Iterator<?> i = getInterfaces().iterator(); i.hasNext();) {
+ ObjectModelClassifierImpl clazz = (ObjectModelClassifierImpl) i.next();
+ result.addAll(clazz.getAttributes());
+ clazz.getAllInterfaceAttributes(result);
+ }
+ return result;
+ }
+
+ @Override
public Collection<ObjectModelDependency> getDependencies() {
return this.dependencies;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -43,6 +43,7 @@
protected ObjectModelElement declaringElement;
protected String name = null;
+ protected boolean isStatic = false;
protected String documentation = null;
protected List<String> stereotypes = new ArrayList<String>();
protected Map<String, String> tagValues = new HashMap<String, String>();
@@ -106,10 +107,15 @@
return tagValue;
}
+ public void setStatic(boolean isStatic) {
+ this.isStatic = isStatic;
+ }
+
public void addComment(String comment) {
this.comments.add(comment);
}
+ @Override
public String getName() {
return name;
}
@@ -119,6 +125,7 @@
*
* @return the ObjectModelElement in which this element is defined, or null if there's none.
*/
+ @Override
public ObjectModelElement getDeclaringElement() {
return declaringElement;
}
@@ -128,6 +135,7 @@
*
* @return the whole documentation associated with this element.
*/
+ @Override
public String getDocumentation() {
if (documentation == null && hasTagValue("documentation")) {
return getTagValue("documentation");
@@ -140,6 +148,7 @@
*
* @return the description associated with this element.
*/
+ @Override
public String getDescription() {
return getDocumentation().substring(0, getDocumentation().indexOf("--"));
}
@@ -149,6 +158,7 @@
*
* @return the source documentation part associated with this element.
*/
+ @Override
public String getSourceDocumentation() {
return getDocumentation().substring(getDocumentation().indexOf("--") + 2);
}
@@ -158,6 +168,7 @@
*
* @return a Collection containing all stereotypes names associated with this element as String.
*/
+ @Override
public Collection<String> getStereotypes() {
return stereotypes;
}
@@ -167,6 +178,7 @@
*
* @return a boolean indicating whether this element has a stereotype corresponding to the given name, or not.
*/
+ @Override
public boolean hasStereotype(String stereotypeName) {
return stereotypes.contains(stereotypeName);
}
@@ -177,6 +189,7 @@
*
* @return a Map containing all tagValues associated with this element
*/
+ @Override
public Map<String, String> getTagValues() {
return tagValues;
}
@@ -186,6 +199,7 @@
*
* @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
*/
+ @Override
public String getTagValue(String tagValue) {
return (tagValue == null ? null : (String) tagValues.get(tagValue));
}
@@ -195,15 +209,22 @@
*
* @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
*/
+ @Override
public boolean hasTagValue(String tagValue) {
return tagValues.containsKey(tagValue);
}
+ @Override
+ public boolean isStatic() {
+ return isStatic;
+ }
+
/**
* Returns all comments lied to this particular model element
*
* @return a List containing all comments for this element as Strings.
*/
+ @Override
public List<String> getComments() {
return comments;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2009-09-04 14:54:57 UTC (rev 626)
@@ -53,6 +53,8 @@
protected Set<String> exceptions = new HashSet<String>();
+ protected String bodyCode = "";
+
public ObjectModelOperationImpl() {
super();
}
@@ -111,11 +113,24 @@
this.returnParameter = returnParameter;
}
+ public void setBodyCode(String bodyCode) {
+ this.bodyCode = bodyCode;
+ }
+
+ /**
+ * Add some code to current body
+ * @param bodyCode code to add
+ */
+ public void addBodyCode(String bodyCode) {
+ this.bodyCode += bodyCode;
+ }
+
@Override
public ObjectModelParameter getReturnParameter() {
return this.returnParameter;
}
+ @Override
public String getReturnType() {
if (returnParameter != null) {
return returnParameter.getType();
@@ -123,6 +138,7 @@
return "void";
}
+ @Override
public String getVisibility() {
return visibility;
}
@@ -132,10 +148,12 @@
*
* @return a boolean indicating whether this operation is abstract or not.
*/
+ @Override
public boolean isAbstract() {
return abstractz;
}
+ @Override
public Collection<ObjectModelParameter> getParameters() {
return parameters;
}
@@ -152,8 +170,14 @@
this.exceptions.add(raisedParameter.getType());
}
+ @Override
public Set<String> getExceptions() {
return exceptions;
}
+ @Override
+ public String getBodyCode() {
+ return bodyCode;
+ }
+
}
Modified: trunk/eugene/src/site/rst/Todo.rst
===================================================================
--- trunk/eugene/src/site/rst/Todo.rst 2009-08-25 22:40:23 UTC (rev 625)
+++ trunk/eugene/src/site/rst/Todo.rst 2009-09-04 14:54:57 UTC (rev 626)
@@ -10,8 +10,12 @@
Idées ou choses à faire
=======================
+- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
+ dans un element UML:Namespace.ownedElement)
-- Création d'un plugin Eclipse pour la coloration syntaxique des templates
+- support des static (tout element declarer dans une class/interface: methode,
+ attribut, enumeration, class, ...)
+ (en xmi argo: ownerScope='classifier' ou ownerScope='instance')
- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
1
0