smell No Specification added
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/.settings/org.eclipse.core.resources.prefs b/org.eclipse.emf.refactor.smells.uml24.henshin/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..64f1b16
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//transformations/nospecification.henshin=UTF-8
+encoding//transformations/nospecification.henshin_diagram=UTF-8
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.smells.uml24.henshin/META-INF/MANIFEST.MF
index b4c47e9..70d9c27 100644
--- a/org.eclipse.emf.refactor.smells.uml24.henshin/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/META-INF/MANIFEST.MF
@@ -1,10 +1,13 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: SmellsUML24Henshin
-Bundle-SymbolicName: org.eclipse.emf.refactor.smells.uml24.henshin
-Bundle-Version: 0.7.0
-Bundle-Activator: org.eclipse.emf.refactor.smells.uml24.henshin.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.em
+ f.ecore,org.eclipse.emf.refactor.smells,org.eclipse.emf.refactor.smel
+ ls.henshin
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 0.7.0
+Bundle-Name: SmellsUML24Henshin
+Bundle-Activator: org.eclipse.emf.refactor.smells.uml24.henshin.Activa
+ tor
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.emf.refactor.smells.uml24.henshin;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/bin/org/eclipse/emf/refactor/modelsmell/NoSpecification.class b/org.eclipse.emf.refactor.smells.uml24.henshin/bin/org/eclipse/emf/refactor/modelsmell/NoSpecification.class
new file mode 100644
index 0000000..7e6af84
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/bin/org/eclipse/emf/refactor/modelsmell/NoSpecification.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/build.properties b/org.eclipse.emf.refactor.smells.uml24.henshin/build.properties
index 34d2e4d..e9863e2 100644
--- a/org.eclipse.emf.refactor.smells.uml24.henshin/build.properties
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/build.properties
@@ -1,4 +1,5 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ plugin.xml
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/plugin.xml b/org.eclipse.emf.refactor.smells.uml24.henshin/plugin.xml
new file mode 100644
index 0000000..63d4ab8
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<plugin>
+<extension point="org.eclipse.emf.refactor.smells">
+<modelsmell id="org.eclipse.emf.refactor.smells.uml24.nospecification" modelsmell_description="The model contains an abstract Class without any concrete subclasses." modelsmell_finderclass="org.eclipse.emf.refactor.modelsmell.NoSpecification" modelsmell_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" modelsmell_name="No Specification"/>
+</extension>
+</plugin>
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/src/org/eclipse/emf/refactor/modelsmell/NoSpecification.java b/org.eclipse.emf.refactor.smells.uml24.henshin/src/org/eclipse/emf/refactor/modelsmell/NoSpecification.java
new file mode 100644
index 0000000..99d22ee
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/src/org/eclipse/emf/refactor/modelsmell/NoSpecification.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.modelsmell;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.LinkedList;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.smells.henshin.managers.HenshinRuntimeManager;
+import org.eclipse.emf.refactor.smells.interfaces.IModelSmellFinder;
+
+public final class NoSpecification implements IModelSmellFinder {
+
+ private final String transformationPath = "transformations/";
+ private final String henshinFileName = "nospecification.henshin";
+
+ @Override
+ public LinkedList<LinkedList<EObject>> findSmell(EObject root) {
+ String fullPath = getFullPath(transformationPath + henshinFileName);
+ return HenshinRuntimeManager.run(root, fullPath);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(org.eclipse.emf.refactor.smells.uml24.henshin.Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin b/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin
new file mode 100644
index 0000000..a1b92ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_GdGW4FWvEeK0V4B2JYxJUg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_GdG98FWvEeK0V4B2JYxJUg" name="mainRule">
+ <lhs xmi:id="_GdG98VWvEeK0V4B2JYxJUg" name="Lhs">
+ <nodes xmi:id="_GdG98lWvEeK0V4B2JYxJUg" name="abstractClass">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ <attributes xmi:id="_Dk4MkFWvEeK0V4B2JYxJUg" value="true">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/isAbstract"/>
+ </attributes>
+ </nodes>
+ <formula xsi:type="henshin:Not" xmi:id="_h3WFgFWvEeK0V4B2JYxJUg">
+ <child xsi:type="henshin:NestedCondition" xmi:id="_h3WFgVWvEeK0V4B2JYxJUg">
+ <conclusion xmi:id="_h3WFglWvEeK0V4B2JYxJUg">
+ <nodes xmi:id="_h3XToFWvEeK0V4B2JYxJUg" name="abstractClass" incoming="_gZiDsFWvEeK0V4B2JYxJUg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ <attributes xmi:id="_h3XToVWvEeK0V4B2JYxJUg" value="true">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/isAbstract"/>
+ </attributes>
+ </nodes>
+ <nodes xmi:id="_ORdrEFWvEeK0V4B2JYxJUg" name="missingConcreteClass" outgoing="_gZiDsFWvEeK0V4B2JYxJUg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ <attributes xmi:id="_SqZaMFWvEeK0V4B2JYxJUg" value="false">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/isAbstract"/>
+ </attributes>
+ </nodes>
+ <edges xmi:id="_gZiDsFWvEeK0V4B2JYxJUg" source="_ORdrEFWvEeK0V4B2JYxJUg" target="_h3XToFWvEeK0V4B2JYxJUg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class/superClass"/>
+ </edges>
+ </conclusion>
+ <mappings xmi:id="_h3XTolWvEeK0V4B2JYxJUg" origin="_GdG98lWvEeK0V4B2JYxJUg" image="_h3XToFWvEeK0V4B2JYxJUg"/>
+ </child>
+ </formula>
+ </lhs>
+ <rhs xmi:id="_GdHlAFWvEeK0V4B2JYxJUg" name="Rhs">
+ <nodes xmi:id="_GdIMEFWvEeK0V4B2JYxJUg" name="abstractClass">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ <attributes xmi:id="_Dk7P4FWvEeK0V4B2JYxJUg" value="true">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/isAbstract"/>
+ </attributes>
+ </nodes>
+ </rhs>
+ <mappings xmi:id="_GdIzIFWvEeK0V4B2JYxJUg" origin="_GdG98lWvEeK0V4B2JYxJUg" image="_GdIMEFWvEeK0V4B2JYxJUg"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin_diagram b/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin_diagram
new file mode 100644
index 0000000..68c36a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24.henshin/transformations/nospecification.henshin_diagram
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_rpX1sFWuEeK0V4B2JYxJUg" type="Henshin" name="nospecification.henshin_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_2F77MFWuEeK0V4B2JYxJUg" type="2001" fontName="Segoe UI" italic="true" fillColor="16114135" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AM_DslWvEeK0V4B2JYxJUg" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AM_qwFWvEeK0V4B2JYxJUg" key="value" value="forbid"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2F8iQFWuEeK0V4B2JYxJUg" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2F8iQVWuEeK0V4B2JYxJUg" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_ANCHAFWvEeK0V4B2JYxJUg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ANCHAlWvEeK0V4B2JYxJUg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ANCHA1WvEeK0V4B2JYxJUg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ANCHBFWvEeK0V4B2JYxJUg" type="7002">
+ <children xmi:type="notation:Node" xmi:id="_Dk9FEFWvEeK0V4B2JYxJUg" type="3002">
+ <element xmi:type="henshin:Attribute" href="nospecification.henshin#_Dk4MkFWvEeK0V4B2JYxJUg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dk9FEVWvEeK0V4B2JYxJUg"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ANCuEFWvEeK0V4B2JYxJUg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ANCuEVWvEeK0V4B2JYxJUg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="nospecification.henshin#_GdG98lWvEeK0V4B2JYxJUg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ANCHAVWvEeK0V4B2JYxJUg" x="63" y="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ORlm4FWvEeK0V4B2JYxJUg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ORmN8FWvEeK0V4B2JYxJUg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ORmN8VWvEeK0V4B2JYxJUg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ORmN8lWvEeK0V4B2JYxJUg" type="7002">
+ <children xmi:type="notation:Node" xmi:id="_Sqe5wFWvEeK0V4B2JYxJUg" type="3002">
+ <element xmi:type="henshin:Attribute" href="nospecification.henshin#_SqZaMFWvEeK0V4B2JYxJUg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sqe5wVWvEeK0V4B2JYxJUg"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ORmN81WvEeK0V4B2JYxJUg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ORmN9FWvEeK0V4B2JYxJUg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="nospecification.henshin#_ORdrEFWvEeK0V4B2JYxJUg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ORlm4VWvEeK0V4B2JYxJUg" x="51" y="273"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="nospecification.henshin#_GdG98FWvEeK0V4B2JYxJUg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2F77MVWuEeK0V4B2JYxJUg" x="51" y="51" width="296" height="413"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_rpX1sVWuEeK0V4B2JYxJUg"/>
+ <element xmi:type="henshin:Module" href="nospecification.henshin#_GdGW4FWvEeK0V4B2JYxJUg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_gZluEFWvEeK0V4B2JYxJUg" type="4001" source="_ORlm4FWvEeK0V4B2JYxJUg" target="_ANCHAFWvEeK0V4B2JYxJUg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gZluE1WvEeK0V4B2JYxJUg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gZluFFWvEeK0V4B2JYxJUg" x="-11" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gZmVIFWvEeK0V4B2JYxJUg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gZmVIVWvEeK0V4B2JYxJUg" x="18" y="54"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gZluEVWvEeK0V4B2JYxJUg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="nospecification.henshin#_gZiDsFWvEeK0V4B2JYxJUg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gZluElWvEeK0V4B2JYxJUg" points="[-13, -15, 185, 209]$[-200, -255, -2, -31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gZrNoFWvEeK0V4B2JYxJUg" id="(0.46994535519125685,0.06349206349206349)"/>
+ </edges>
+</notation:Diagram>