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>