binary files added
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..efe9a54
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..2a30d4c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createreferencedeclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..9a5d8dc
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..0bfc775
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsubeclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..97e9d2e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..2073e90
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/createsupereclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..2d857d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest.class
new file mode 100644
index 0000000..2e5deaa
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/moveeattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..d5fa4f9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..9e084e0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pullupeattributeusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..20dabef
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..90b6958
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/pushdowneattributeusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..d06189b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..596cc15
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptyreferencedeclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..f2a2abe
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..8b2073e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysubeclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..e8feeee
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..648aad8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/removeemptysupereclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..29dde0e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..00bc3c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeattributeusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..8a912c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..925a071
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeclassusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..48bab8d
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..a45811b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameedatatypeusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..6d919d0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..5ceda4c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameeenumliteralusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..6b76bd7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..b89c345
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameepackageusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest$1.class
new file mode 100644
index 0000000..346716e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest.class
new file mode 100644
index 0000000..9330409
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore.henshin/bin/org/eclipse/emf/refactor/refactorings/ecore/henshin/renameereferenceusinghenshin/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest$1.class
new file mode 100644
index 0000000..9d77724
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest.class
new file mode 100644
index 0000000..5d0d0a5
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/addparameter/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest$1.class
new file mode 100644
index 0000000..bea183b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest.class
new file mode 100644
index 0000000..5ab5834
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createreferencedeclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest$1.class
new file mode 100644
index 0000000..ee2cdc2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest.class
new file mode 100644
index 0000000..02868b7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsubeclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest$1.class
new file mode 100644
index 0000000..8e75db8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest.class
new file mode 100644
index 0000000..d3e187c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/createsupereclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..ac4d2b7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest.class
new file mode 100644
index 0000000..64b1af8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest$1.class
new file mode 100644
index 0000000..74af14a
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest.class
new file mode 100644
index 0000000..51250c4
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/moveeoperation/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..ec14c04
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest.class
new file mode 100644
index 0000000..eb6cdb5
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest$1.class
new file mode 100644
index 0000000..9740e1b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest.class
new file mode 100644
index 0000000..b400094
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pullupeoperation/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..39dd4a9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest.class
new file mode 100644
index 0000000..b18dcfb
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest$1.class
new file mode 100644
index 0000000..f543ac0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest.class
new file mode 100644
index 0000000..f9762e7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/pushdowneoperation/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest$1.class
new file mode 100644
index 0000000..45987a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest.class
new file mode 100644
index 0000000..3789d1b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptyreferencedeclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest$1.class
new file mode 100644
index 0000000..5f7dfa5
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest.class
new file mode 100644
index 0000000..d8be90c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysubeclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest$1.class
new file mode 100644
index 0000000..6a0e1ae
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest.class
new file mode 100644
index 0000000..5bf323e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeemptysupereclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest$1.class
new file mode 100644
index 0000000..c7a494d
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest.class
new file mode 100644
index 0000000..7d3d6b9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/removeeparameter/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..bfdf039
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest.class
new file mode 100644
index 0000000..85538e7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest$1.class
new file mode 100644
index 0000000..40566d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest.class
new file mode 100644
index 0000000..310b011
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest$1.class
new file mode 100644
index 0000000..c7aa1ec
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest.class
new file mode 100644
index 0000000..628a2cd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameedatatype/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest$1.class
new file mode 100644
index 0000000..a14451e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest.class
new file mode 100644
index 0000000..cf040e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeenumliteral/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest$1.class
new file mode 100644
index 0000000..456f9fc
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest.class
new file mode 100644
index 0000000..adaae62
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeoperation/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest$1.class
new file mode 100644
index 0000000..e7bfe76
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest.class
new file mode 100644
index 0000000..b46fbf3
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameepackage/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest$1.class
new file mode 100644
index 0000000..4ffe579
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest.class
new file mode 100644
index 0000000..178e0c7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameeparameter/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest$1.class
new file mode 100644
index 0000000..c459339
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest.class
new file mode 100644
index 0000000..c0a0b14
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.ecore/bin/org/eclipse/emf/refactor/refactorings/ecore/renameereference/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/henshin/Activator.class b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/henshin/Activator.class
new file mode 100644
index 0000000..b91c830
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/henshin/Activator.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.refactorings.uml24/META-INF/MANIFEST.MF
index e07a9b4..7cefe49 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.refactorings.uml24/META-INF/MANIFEST.MF
@@ -1,10 +1,16 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: RefactoringsUML24
-Bundle-SymbolicName: org.eclipse.emf.refactor.refactorings.uml24;singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Activator: org.eclipse.emf.refactor.refactorings.uml24.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.co
+ re.expressions,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org
+ .eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.ecli
+ pse.emf.refactor.refactoring,org.eclipse.emf.refactor.refactoring.run
+ time,org.junit;bundle-version="4.8.1",org.eclipse.uml2.uml
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 0.7.0
+Bundle-Name: RefactoringsUML24
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.emf.refactor.refactorings.uml24.Activato
+ r
+Bundle-SymbolicName: org.eclipse.emf.refactor.refactorings.uml24;singl
+ eton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.class
new file mode 100644
index 0000000..4281a9f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$1.class
new file mode 100644
index 0000000..62f1f5b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..7ae55cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.class
new file mode 100644
index 0000000..dffb810
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.class
new file mode 100644
index 0000000..8b70165
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
new file mode 100644
index 0000000..a4bafe3
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest$1.class
new file mode 100644
index 0000000..edf62cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.class
new file mode 100644
index 0000000..662dacd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.class
new file mode 100644
index 0000000..f6f4305
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.class
new file mode 100644
index 0000000..6f6318b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
new file mode 100644
index 0000000..dfeedf0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<plugin>
+<extension point="org.eclipse.emf.refactor.refactorings">
+<refactoring controller="org.eclipse.emf.refactor.refactorings.uml24.pullupattribute.RefactoringController" gui="org.eclipse.emf.refactor.refactorings.uml24.pullupattribute.RefactoringGuiHandler" id="org.eclipse.emf.refactor.refactorings.uml24.PullUpAttribute" menulabel="Pull Up Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+</extension>
+</plugin>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.java
new file mode 100644
index 0000000..6fe992e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/UmlUtils.java
@@ -0,0 +1,854 @@
+package org.eclipse.emf.refactor.refactorings.uml24;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.VisibilityKind;
+
+public abstract class UmlUtils {
+
+ public static boolean haveSameSignatures(Operation op1, Operation op2) { // 23
+ EList<Parameter> inputParametersOp1 = getInputParameterList(op1.getOwnedParameters());
+ EList<Parameter> inputParametersOp2 = getInputParameterList(op2.getOwnedParameters());
+ if (inputParametersOp1.size() != inputParametersOp2.size()) return false;
+ for (int i=0; i < inputParametersOp1.size(); i++) {
+ Parameter par1 = inputParametersOp1.get(i);
+ Parameter par2 = inputParametersOp2.get(i);
+ if (! (haveSameNames(par1, par2)
+ && haveSameTypes(par1, par2)
+ && haveSameDirections(par1, par2)
+ && haveSameMultiplicities(par1, par2))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean haveSameMultiplicities(Parameter par1, Parameter par2) { // 3
+ if (par1.getLower() != par2.getLower()) return false;
+ if (par1.getUpper() != par2.getUpper()) return false;
+ return true;
+ }
+
+ private static boolean haveSameDirections(Parameter par1, Parameter par2) { // 1
+ return par1.getDirection().equals(par2.getDirection());
+ }
+
+ private static boolean haveSameTypes(Parameter par1, Parameter par2) { // 4
+ if (par1.getType() == null && par2.getType() == null) return true;
+ if (par1.getType() == null && par2.getType() != null) return false;
+ if (par1.getType() != null && par2.getType() == null) return false;
+ return (par1.getType().equals(par2.getType()));
+ }
+
+ private static boolean haveSameNames(Parameter par1, Parameter par2) { // 1
+ return par1.getName().equals(par2.getName());
+ }
+
+ public static EList<Parameter> getInputParameterList( // 5
+ EList<Parameter> parameters) {
+ EList<Parameter> inputParameterList = new BasicEList<Parameter>();
+ for (Parameter param : parameters) {
+ if (param.getDirection().getValue() != ParameterDirectionKind.RETURN) {
+ inputParameterList.add(param);
+ }
+ }
+ return inputParameterList;
+ }
+
+ public static boolean haveSameTypes(Operation op1, Operation op2) { // 4
+ if (op1.getType() == null && op2.getType() == null) return true;
+ if (op1.getType() == null && op2.getType() != null) return false;
+ if (op1.getType() != null && op2.getType() == null) return false;
+ return (op1.getType().equals(op2.getType()));
+ }
+
+ public static boolean hasAttributes(Class cl) { // 1
+ return (! cl.getOwnedAttributes().isEmpty());
+ }
+
+ public static boolean hasOperations(Class cl) { // 1
+ return (! cl.getOwnedOperations().isEmpty());
+ }
+
+ public static boolean hasSuperclasses(Class cl) { // 1
+ return (! cl.getSuperClasses().isEmpty());
+ }
+
+ public static boolean hasInnerClasses(Class cl) { // 1
+ return (! cl.getNestedClassifiers().isEmpty());
+ }
+
+ public static boolean hasOutgoingAssociations(Class cl) { // 13
+ ArrayList<Association> associations = getAllAssociations(cl.getModel());
+ for (Association association : associations) {
+ for (Property associationEnd : association.getMemberEnds()) {
+ if (associationEnd.getType().equals(cl) && (! associationEnd.isNavigable()))
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static ArrayList<Association> getAllAssociations(Model model) { // 7
+ ArrayList<Association> associations = new ArrayList<Association>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Association) {
+ associations.add((Association) eObject);
+ }
+ }
+ return associations;
+ }
+
+ public static boolean hasIncomingAssociations(Class cl) { // 13
+ ArrayList<Association> associations = getAllAssociations(cl.getModel());
+ for (Association association : associations) {
+ for (Property associationEnd : association.getMemberEnds()) {
+ if (associationEnd.getType().equals(cl) && associationEnd.isNavigable())
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean implementsInterfaces(Class cl) { // 1
+ return (! cl.getInterfaceRealizations().isEmpty());
+ }
+
+ public static boolean usesInterfaces(Class cl) { // 14
+ ArrayList<Usage> usages = getAllUsages(cl.getModel());
+ for (Usage usage : usages) {
+ if (usage.getClients().contains(cl)) {
+ EList<NamedElement> suppliers = usage.getSuppliers();
+ for (NamedElement supplier : suppliers) {
+ if (supplier instanceof Interface) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private static ArrayList<Usage> getAllUsages(Model model) { // 7
+ ArrayList<Usage> usages = new ArrayList<Usage>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Usage) {
+ usages.add((Usage) eObject);
+ }
+ }
+ return usages;
+ }
+
+ public static boolean isUsedAsAttributeType(Class cl) { // 12
+ ArrayList<Property> attributes = getAllAttributes(cl.getModel());
+ for (Property attribute : attributes) {
+ if (attribute.getType() != null
+ && attribute.getType().equals(cl)) return true;
+ }
+ return false;
+ }
+
+ private static ArrayList<Property> getAllAttributes(Model model) { // 8
+ ArrayList<Property> attributes = new ArrayList<Property>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Property) {
+ Property attribute = (Property) eObject;
+ if (attribute.getClass_() != null) attributes.add(attribute);
+ }
+ }
+ return attributes;
+ }
+
+ public static boolean isUsedAsParameterType(Class cl) { // 11
+ ArrayList<Parameter> parameters = getAllParameters(cl.getModel());
+ for (Parameter parameter : parameters) {
+ if (parameter.getType() != null
+ && parameter.getType().equals(cl)) return true;
+ }
+ return false;
+ }
+
+ private static ArrayList<Parameter> getAllParameters(Model model) { // 7
+ ArrayList<Parameter> parameters = new ArrayList<Parameter>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Parameter) {
+ parameters.add((Parameter) eObject);
+ }
+ }
+ return parameters;
+ }
+
+ public static EList<Type> getTypes(Model model) { // 11
+ EList<Type> types = new BasicEList<Type>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if ((eObject instanceof Type)
+ && !(eObject instanceof Association)) {
+ types.add((Type) eObject);
+ }
+ }
+ EList<PackageableElement> importedElements = model.getImportedMembers();
+ for (PackageableElement elem : importedElements) {
+ if ((elem instanceof Type)
+ && !(elem instanceof Association)) {
+ types.add((Type) elem);
+ }
+ }
+ return types;
+ }
+
+ public static EList<NamedElement> getNamedElementsFromList( // 4
+ EList<Type> types, String name) {
+ EList<NamedElement> namedElements = new BasicEList<NamedElement>();
+ for (Type ne : types) {
+ if (ne.getName().equals(name)) namedElements.add(ne);
+ }
+ return namedElements;
+ }
+
+ public static boolean hasSubclasses(Class cl) { // 11
+ ArrayList<Class> classes = getAllClasses(cl.getModel());
+ for (Class cls : classes) {
+ if (cls.getSuperClasses().contains(cl)) return true;
+ }
+ return false;
+ }
+
+ public static ArrayList<Class> getAllClasses(Model model) { // 7
+ ArrayList<Class> classes = new ArrayList<Class>();
+ TreeIterator<EObject> iter = model.eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Class) {
+ classes.add((Class) eObject);
+ }
+ }
+ return classes;
+ }
+
+ private static Collection<? extends Class> getOtherAssociationEndsTypeClasses( // 6
+ Property assocend) {
+ ArrayList<Class> classes = new ArrayList<Class>();
+ Association assoc = assocend.getAssociation();
+ for (Property ae : assoc.getMemberEnds()) {
+ if ((! ae.equals(assocend))
+ && (! ae.getType().equals(assocend.getType()))) {
+ classes.add((Class) ae.getType());
+ }
+ }
+ return classes;
+ }
+
+ public static List<Class> getOne2OneAssociatedClasses(Class cl) { // 59
+ ArrayList<Class> result = new ArrayList<Class>();
+ ArrayList<Association> incomingAssociations =
+ getIncomingAssociations(cl);
+ ArrayList<Association> outgoingAssociations =
+ getOutgoingAssociations(cl);
+ ArrayList<Class> classesFromIncomingAssociations =
+ getOtherClassesFromAssociations(cl, incomingAssociations);
+ ArrayList<Class> classesFromOutgoingAssociations =
+ getOtherClassesFromAssociations(cl, outgoingAssociations);
+ ArrayList<Class> associatedClasses = new ArrayList<Class>();
+ for (Class associatedClass : classesFromIncomingAssociations) {
+ if (classesFromOutgoingAssociations.contains(associatedClass))
+ associatedClasses.add(associatedClass);
+ }
+ for (Class associatedClass : associatedClasses) {
+ if (incomingAssociationHasOne2OneMultiplicityAndIsPublic
+ (cl, incomingAssociations, associatedClass)
+ && outgoingAssociationHasOne2OneMultiplicityAndIsPublic
+ (cl, outgoingAssociations, associatedClass)){
+ result.add(associatedClass);
+ }
+ }
+ return result;
+ }
+
+ private static boolean outgoingAssociationHasOne2OneMultiplicityAndIsPublic( // 8
+ Class cl,
+ ArrayList<Association> outgoingAssociations,
+ Class associatedClass) {
+ for (Association assoc : outgoingAssociations) {
+ for (Property ae1 : assoc.getMemberEnds()) {
+ if (ae1.getType().equals(cl)) {
+ for (Property ae2 : assoc.getMemberEnds()) {
+ if (ae2.getType().equals(associatedClass)) {
+ if ((ae2.getLower() == 1)
+ && (ae2.getUpper() == 1)
+ && (ae2.getVisibility().equals(VisibilityKind.PUBLIC_LITERAL)))
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private static boolean incomingAssociationHasOne2OneMultiplicityAndIsPublic( // 8
+ Class cl,
+ ArrayList<Association> incomingAssociations,
+ Class associatedClass) {
+ for (Association assoc : incomingAssociations) {
+ for (Property ae1 : assoc.getMemberEnds()) {
+ if (ae1.getType().equals(cl)) {
+ for (Property ae2 : assoc.getMemberEnds()) {
+ if (ae2.getType().equals(associatedClass)) {
+ if ((ae1.getLower() == 1)
+ && (ae1.getUpper() == 1)
+ && (ae2.getVisibility().equals(VisibilityKind.PUBLIC_LITERAL)))
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private static ArrayList<Class> getOtherClassesFromAssociations( // 8
+ Class cl, ArrayList<Association> incomingAssociations) {
+ ArrayList<Class> result = new ArrayList<Class>();
+ for (Association assoc : incomingAssociations) {
+ for (Property associationEnd1 : assoc.getMemberEnds()) {
+ if (associationEnd1.getType().equals(cl)){
+ for (Property associationEnd2 : assoc.getMemberEnds()) {
+ if ((! associationEnd1.equals(associationEnd2))
+ && associationEnd2.getType() instanceof Class
+ && (! associationEnd2.getType().equals(cl))) {
+ result.add((Class) associationEnd2.getType());
+ }
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ private static ArrayList<Association> getOutgoingAssociations(Class cl) { // 16
+ ArrayList<Association> associations = getAllAssociations(cl.getModel());
+ ArrayList<Association> result = new ArrayList<Association>();
+ for (Association association : associations) {
+ for (Property associationEnd1 : association.getMemberEnds()) {
+ if (associationEnd1.getType().equals(cl)){
+ for (Property associationEnd2 : association.getMemberEnds()) {
+ if ((! associationEnd1.equals(associationEnd2))
+ && associationEnd2.isNavigable()) {
+ result.add(association);
+ }
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ private static ArrayList<Association> getIncomingAssociations(Class cl) { // 14
+ ArrayList<Association> associations = getAllAssociations(cl.getModel());
+ ArrayList<Association> result = new ArrayList<Association>();
+ for (Association association : associations) {
+ for (Property associationEnd : association.getMemberEnds()) {
+ if (associationEnd.getType().equals(cl) && associationEnd.isNavigable())
+ result.add(association);
+ }
+ }
+ return result;
+ }
+
+ public static Class getAssociatedClass(List<Class> classes, String className) { // 4
+ Class associatedClass = null;
+ for (Class cl : classes) {
+ if (cl.getName().equals(className)) associatedClass = cl;
+ }
+ return associatedClass;
+ }
+
+ public static boolean isAssociatedClass(List<Class> classes, String className) { // 3
+ for (Class cl : classes) {
+ if (cl.getName().equals(className)) return true;
+ }
+ return false;
+ }
+
+ private static boolean haveSameStaticProperties(Operation op, Operation oper) { // 1
+ return (op.isStatic() == oper.isStatic());
+ }
+
+ private static boolean haveSameAbstractProperties(Operation op, // 1
+ Operation oper) {
+ return (op.isAbstract() == oper.isAbstract());
+ }
+
+ private static boolean haveSameQueryProperties(Operation op, Operation oper) { // 1
+ return (op.isQuery() == oper.isQuery());
+ }
+
+ private static boolean haveSameLeafProperties(Operation op, Operation oper) { // 1
+ return (op.isLeaf() == oper.isLeaf());
+ }
+
+ private static boolean haveSameMultiplicities(Operation op, Operation oper) { // 1
+ return ((op.getLower() == oper.getLower())
+ && (op.getUpper() == oper.getUpper()));
+ }
+
+ private static boolean haveSameVisibilities(Operation op, Operation oper) { // 1
+ return op.getVisibility().equals(oper.getVisibility());
+ }
+
+ public static boolean haveSameType(Operation op, Operation oper) { // 3
+ if ((op.getType() == null) && (oper.getType() == null)) return true;
+ if ((op.getType() != null)
+ && (oper.getType() != null)
+ && (op.getType().equals(oper.getType()))) return true;
+ return false;
+ }
+
+ public static boolean haveSameNames(Operation op, Operation oper) { // 1
+ return op.getName().equals(oper.getName());
+ }
+
+ private static int getOtherSideUpper(Property attribute) { // 4
+ int upper = 0;
+ for (Property ae : attribute.getAssociation().getMemberEnds()) {
+ if (! ae.equals(attribute)) upper = ae.getUpper();
+ }
+ return upper;
+ }
+
+ private static boolean haveSameDerivedUnionProperties(Property att1, Property att2) { // 1
+ return (att1.isDerivedUnion() == att2.isDerivedUnion());
+ }
+
+ private static boolean haveSameStaticProperties(Property att1, Property att2) { // 1
+ return (att1.isStatic() == att2.isStatic());
+ }
+
+ private static boolean haveSameOrderedProperties(Property att1, Property att2) { // 1
+ return (att1.isOrdered() == att2.isOrdered());
+ }
+
+ private static boolean haveSameUniqueProperties(Property att1, Property att2) { // 1
+ return (att1.isUnique() == att2.isUnique());
+ }
+
+ private static boolean haveSameReadOnlyProperties(Property att1, Property att2) { // 1
+ return (att1.isReadOnly() == att2.isReadOnly());
+ }
+
+ private static boolean haveSameLeafProperties(Property att1, Property att2) { // 1
+ return (att1.isLeaf() == att2.isLeaf());
+ }
+
+ private static boolean haveSameDerivedProperties(Property att1, Property att2) { // 1
+ return (att1.isDerived() == att2.isDerived());
+ }
+
+ private static boolean haveSameDefaultValues(Property att1, Property att2) { // 3
+ if ((att1.getDefault() == null) && (att2.getDefault() == null)) return true;
+ if ((att1.getDefault() != null)
+ && (att2.getDefault() != null)
+ && (att1.getDefault().equals(att2.getDefault()))) return true;
+ return false;
+ }
+
+ private static boolean haveSameAggregations(Property att1, Property att2) { // 1
+ return att1.getAggregation().equals(att2.getAggregation());
+ }
+
+ private static boolean haveSameMultiplicities(Property att1, Property att2) { // 1
+ return ((att1.getLower() == att2.getLower())
+ && (att1.getUpper() == att2.getUpper()));
+ }
+
+ private static boolean haveSameVisibilities(Property att1, Property att2) { // 1
+ return att1.getVisibility().equals(att2.getVisibility());
+ }
+
+ private static boolean haveSameNames(Property att1, Property att2) { // 1
+ return att1.getName().equals(att2.getName());
+ }
+
+ private static boolean haveSameType(Property att1, Property att2) { // 3
+ if ((att1.getType() == null) && (att2.getType() == null)) return true;
+ if ((att1.getType() != null)
+ && (att2.getType() != null)
+ && (att1.getType().equals(att2.getType()))) return true;
+ return false;
+ }
+
+ public static ArrayList<Class> getAllSubClasses(Class superClass) { // 12
+ ArrayList<Class> classes = getAllClasses(superClass.getModel());
+ ArrayList<Class> subClasses = new ArrayList<Class>();
+ for (Class cls : classes) {
+ if (cls.getSuperClasses().contains(superClass)) subClasses.add(cls);
+ }
+ return subClasses;
+ }
+
+ public static boolean operationHasParameters(Operation op, // 16
+ ArrayList<Parameter> parameters) {
+ for (Parameter param : parameters) {
+ if (! operationHasParameter(op, param)) return false;
+ }
+ return true;
+ }
+
+ private static boolean operationHasParameter(Operation op, Parameter param) { // 13
+ for (Parameter par : op.getOwnedParameters()) {
+ if (haveSameNames(param, par)
+ && haveSameTypes(param, par)
+ && haveSameDirections(param, par)
+ && haveSameMultiplicities(param, par)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static Parameter getEqualParameterInOperation(Operation op, // 13
+ Parameter param) {
+ for (Parameter par : op.getOwnedParameters()) {
+ if (haveSameNames(param, par)
+ && haveSameTypes(param, par)
+ && haveSameDirections(param, par)
+ && haveSameMultiplicities(param, par)) {
+ return par;
+ }
+ }
+ return null;
+ }
+
+ public static boolean isInputParameter(Parameter param) { // 3
+ if (param.getDirection().equals(ParameterDirectionKind.IN_LITERAL)) return true;
+ if (param.getDirection().equals(ParameterDirectionKind.INOUT_LITERAL)) return true;
+ return false;
+ }
+
+ public static boolean oneSubClassInheritsEquallyOperation( // 47
+ Class superClass,
+ Operation operation) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ for (Class cls : classes) {
+ for (NamedElement ne: cls.getInheritedMembers()) {
+ if ((! ne.equals(operation))
+ && (ne instanceof Operation)) {
+ Operation op = (Operation) ne;
+ if (haveSameNames(op, operation)
+ && haveSameType(op, operation)
+ && haveSameSignatures(op, operation)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static boolean oneSubClassHasEquallyOperation( // 47
+ Class superClass,
+ Operation operation) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ for (Class cls : classes) {
+ for (Operation op : cls.getOwnedOperations()) {
+ if (haveSameNames(op, operation)
+ && haveSameType(op, operation)
+ && haveSameSignatures(op, operation)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public static boolean oneSubClassInheritsEquallyNamedAttribute( // 18
+ Class superClass,
+ Property attribute) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ for (Class cls : classes) {
+ for (NamedElement ne: cls.getInheritedMembers()) {
+ if ((! ne.equals(attribute))
+ && (ne.getName().equals(attribute.getName()))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public static boolean oneSubClassHasEquallyNamedAttribute( // 18
+ Class superClass,
+ Property attribute) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ for (Class cls : classes) {
+ for (Property attr : cls.getOwnedAttributes()) {
+ if (attr.getName().equals(attribute.getName())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private static ArrayList<String> getReasonsWhySubClassDoesNotHaveOperation( // 55
+ Class cls, Operation op) {
+ ArrayList<String> reasons = new ArrayList<String>();
+ Operation equalOperation = null;
+ for (Operation oper : cls.getOwnedOperations()) {
+ if (haveSameNames(op, oper)
+ && haveSameType(op, oper)
+ && haveSameSignatures(op, oper)) {
+ equalOperation = oper;
+ break;
+ }
+ }
+ if (equalOperation == null) {
+ reasons.add("Class '" + cls.getName() +
+ "' does not have an operation named '" + op.getName() +
+ "' and with the same type and parameter list!");
+ } else {
+ if (! haveSameVisibilities(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' of different visibility!");
+ if (! haveSameMultiplicities(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' with different multiplicity!");
+ if (! haveSameLeafProperties(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' with different leaf property!");
+ if (! haveSameStaticProperties(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' with different static property!");
+ if (! haveSameQueryProperties(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' with different query property!");
+ if (! haveSameAbstractProperties(equalOperation, op))
+ reasons.add("Class '" + cls.getName() + "' has an operation named '" +
+ op.getName() + "' with different abstract property!");
+ }
+ return reasons;
+ }
+
+
+ public static ArrayList<String> getReasonsWhySubClassesDoNotHaveOperation( // 74
+ Class superClass, Operation op) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ ArrayList<String> reasons = new ArrayList<String>();
+ for (Class cls : classes) {
+ ArrayList<String> reasonsWhySubClassDoesNotHaveOperation =
+ getReasonsWhySubClassDoesNotHaveOperation(cls, op);
+ if (! reasonsWhySubClassDoesNotHaveOperation.isEmpty()) {
+ reasons.addAll(reasonsWhySubClassDoesNotHaveOperation);
+ }
+ }
+ return reasons;
+ }
+
+
+ private static ArrayList<String> getReasonsWhyClassDoesNotHaveAttribute( // 58
+ Class cls, Property attribute) {
+ ArrayList<String> reasons = new ArrayList<String>();
+ Property equalAttribute = null;
+ for (Property attr : cls.getOwnedAttributes()) {
+ if (haveSameNames(attr, attribute)) {
+ equalAttribute = attr;
+ break;
+ }
+ }
+ if (equalAttribute == null) {
+ reasons.add("Class '" + cls.getName() +
+ "' does not have an attribute named '" +
+ attribute.getName() + "'!");
+ } else {
+ if (! haveSameType(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' of different type!");
+ if (! haveSameVisibilities(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' of different visibility!");
+ if (! haveSameMultiplicities(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different multiplicity!");
+ if (! haveSameAggregations(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' of different aggregation kind!");
+ if (! haveSameDefaultValues(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different default value!");
+ if (! haveSameDerivedProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different derived property!");
+ if (! haveSameLeafProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different leaf property!");
+ if (! haveSameReadOnlyProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different read only property!");
+ if (! haveSameUniqueProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different unique property!");
+ if (! haveSameOrderedProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different ordered property!");
+ if (! haveSameStaticProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different static property!");
+ if (! haveSameDerivedUnionProperties(equalAttribute, attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' with different derived union property!");
+ if ((equalAttribute.getAssociation() != null) && (attribute.getAssociation() != null)) {
+ if (getOtherSideUpper(equalAttribute) != getOtherSideUpper(attribute))
+ reasons.add("Class '" + cls.getName() + "' has an attribute named '" +
+ attribute.getName() + "' as end of an association whose " +
+ "opposite end has an upper multiplicity bound " +
+ "different from " + getOtherSideUpper(attribute) + "!");
+ }
+ }
+ return reasons;
+ }
+
+ public static ArrayList<String> getReasonsWhySubClassesDoNotHaveAttribute( // 77
+ Class superClass, Property attribute) {
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ ArrayList<String> reasons = new ArrayList<String>();
+ for (Class cls : classes) {
+ ArrayList<String> reasonsWhySubClassDoesNotHaveAttribute =
+ getReasonsWhyClassDoesNotHaveAttribute(cls, attribute);
+ if (! reasonsWhySubClassDoesNotHaveAttribute.isEmpty()) {
+ reasons.addAll(reasonsWhySubClassDoesNotHaveAttribute);
+ }
+ }
+ return reasons;
+ }
+
+ public static boolean classHasEqualOperation(Class cls, Operation op) { // 48
+ if (op.getClass_().equals(cls)) return true;
+ boolean classHasEqualOperation = false;
+ for (Operation oper : cls.getOwnedOperations()) {
+ if (! haveSameNames(op, oper)) continue;
+ if (! haveSameType(op, oper)) continue;
+ if (! haveSameVisibilities(op, oper)) continue;
+ if (! haveSameMultiplicities(op, oper)) continue;
+ if (! haveSameSignatures(op, oper)) continue;
+ if (! haveSameLeafProperties(op, oper)) continue;
+ if (! haveSameQueryProperties(op, oper)) continue;
+ if (! haveSameAbstractProperties(op, oper)) continue;
+ if (! haveSameStaticProperties(op, oper)) continue;
+ classHasEqualOperation = true;
+ break;
+ }
+ return classHasEqualOperation;
+ }
+
+ private static boolean classHasEqualAttribute(Class cls, Property attribute) { // 41
+ if (attribute.getClass_().equals(cls)) return true;
+ boolean classHasEqualAttribute = false;
+ for (Property attr : cls.getOwnedAttributes()) {
+ if (! haveSameNames(attr, attribute)) continue;
+ if (! haveSameType(attr, attribute)) continue;
+ if (! haveSameVisibilities(attr, attribute)) continue;
+ if (! haveSameMultiplicities(attr, attribute)) continue;
+ if (! haveSameAggregations(attr, attribute)) continue;
+ if (! haveSameDefaultValues(attr, attribute)) continue;
+ if (! haveSameDerivedProperties(attr, attribute)) continue;
+ if (! haveSameLeafProperties(attr, attribute)) continue;
+ if (! haveSameReadOnlyProperties(attr, attribute)) continue;
+ if (! haveSameUniqueProperties(attr, attribute)) continue;
+ if (! haveSameOrderedProperties(attr, attribute)) continue;
+ if (! haveSameStaticProperties(attr, attribute)) continue;
+ if (! haveSameDerivedUnionProperties(attr, attribute)) continue;
+ if ((attr.getAssociation() != null) && (attribute.getAssociation() != null)) {
+ if (getOtherSideUpper(attr) != getOtherSideUpper(attribute)) continue;
+ }
+ classHasEqualAttribute = true;
+ break;
+ }
+ return classHasEqualAttribute;
+ }
+
+ public static boolean subClassesHaveAttribute(Class superClass, Property attribute) { // 60
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ boolean eachSubclassHasAttribute = true;
+ for (Class cls : classes) {
+ if (! classHasEqualAttribute(cls, attribute)) {
+ eachSubclassHasAttribute = false;
+ break;
+ }
+ }
+ return eachSubclassHasAttribute;
+ }
+
+ public static boolean subClassesHaveOperation(Class superClass, Operation operation) { // 67
+ ArrayList<Class> classes = getAllSubClasses(superClass);
+ boolean eachSubclassHasAttribute = true;
+ for (Class cls : classes) {
+ if (! classHasEqualOperation(cls, operation)) {
+ eachSubclassHasAttribute = false;
+ break;
+ }
+ }
+ return eachSubclassHasAttribute;
+ }
+
+ public static List<Association> getAssociations(Class cl) { // 14
+ ArrayList<Association> allAssociations = getAllAssociations(cl.getModel());
+ ArrayList<Association> associations = new ArrayList<Association>();
+ for (Association association : allAssociations) {
+ for (Property associationEnd : association.getMemberEnds()) {
+ if (associationEnd.getType().equals(cl))
+ if (! associations.contains(association)) associations.add(association);
+ }
+ }
+ return associations;
+ }
+
+ public static boolean isUsedAsFurtherAttributeType(Class cl) { // 12
+ ArrayList<Property> attributes = getAllAttributes(cl.getModel());
+ for (Property attribute : attributes) {
+ if (attribute.getType() != null
+ && attribute.getType().equals(cl)
+ && (attribute.getAssociation() == null)) return true;
+ }
+ return false;
+ }
+
+ public static ArrayList<Class> getOtherAssociatedClasses(Class cl) { // 20
+ ArrayList<Class> classes = new ArrayList<Class>();
+ ArrayList<Association> associations = getAllAssociations(cl.getModel());
+ for (Association assoc : associations) {
+ for (Property assocend : assoc.getMemberEnds()) {
+ if (assocend.getType().equals(cl)) {
+ classes.addAll(getOtherAssociationEndsTypeClasses(assocend));
+ }
+ }
+ }
+ return classes;
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.java
new file mode 100644
index 0000000..e8a60a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringController.java
@@ -0,0 +1,291 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.2 2012/10/16 21:03:02 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;
+import org.eclipse.emf.refactor.refactorings.uml24.UmlUtils;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.VisibilityKind;
+
+public final class RefactoringController implements IController{
+
+ /**
+ * Refactoring supported by the controller.
+ * @generated
+ */
+ private Refactoring parent;
+
+ /**
+ * DataManagement object of the model refactoring.
+ * @generated
+ */
+ private RefactoringDataManagement dataManagement =
+ new RefactoringDataManagement();
+
+ /**
+ * Invocation context of the model refactoring.
+ * @generated
+ */
+ private List<EObject> selection = new ArrayList<EObject>();
+
+ /**
+ * Ltk RefactoringProcessor of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor refactoringProcessor = null;
+
+ /**
+ * Gets the Refactoring supported by the controller.
+ * @return Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IController#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return this.parent;
+ }
+
+ /**
+ * Sets the Refactoring supported by the controller.
+ * @param emfRefactoring Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IController#
+ * setParent(org.eclipse.emf.refactor.refactoring.core.Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring emfRefactoring) {
+ this.parent = emfRefactoring;
+ }
+
+ /**
+ * Returns the DataManagement object of the model refactoring.
+ * @return DataManagement object of the model refactoring.
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IController#
+ * getDataManagementObject()
+ * @generated
+ */
+ @Override
+ public IDataManagement getDataManagementObject() {
+ return this.dataManagement;
+ }
+
+ /**
+ * Returns the ltk RefactoringProcessor of the model refactoring.
+ * @return Ltk RefactoringProcessor of the model refactoring.
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IController#
+ * getLtkRefactoringProcessor()
+ * @generated
+ */
+ @Override
+ public RefactoringProcessor getLtkRefactoringProcessor() {
+ return this.refactoringProcessor;
+ }
+
+ /**
+ * Sets the selected EObject (invocation context of the model refactoring).
+ * @param selection Invocation context of the model refactoring.
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IController#
+ * setSelection(java.util.List)
+ * @generated
+ */
+ @Override
+ public void setSelection(List<EObject> selection) {
+ this.selection = selection;
+ this.refactoringProcessor =
+ new InternalRefactoringProcessor(this.selection);
+ }
+
+ /**
+ * Returns a Runnable object that executes the model refactoring.
+ * @return Runnable object that executes the model refactoring.
+ * @generated
+ */
+ private Runnable applyRefactoring() {
+ return new Runnable() {
+ /**
+ * @see java.lang.Runnable#run()
+ * @generated
+ */
+ @Override
+ public void run() {
+ org.eclipse.uml2.uml.Property selectedEObject =
+ (org.eclipse.uml2.uml.Property) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ String className =
+ (String) dataManagement.getInPortByName("className").getValue();
+ // execute: move selected attribute to specified superclass
+ Class oldClass = selectedEObject.getClass_();
+ Class newClass = oldClass.getSuperClass(className);
+ oldClass.getOwnedAttributes().remove(selectedEObject);
+ newClass.getOwnedAttributes().add(selectedEObject);
+ // if attribute is association end: change opposite end type
+ if (selectedEObject.getAssociation() != null) {
+ Property associationEndToRemove = null;
+ for (Property ae : selectedEObject.getAssociation().getMemberEnds()) {
+ if ((! ae.equals(selectedEObject)) && (ae.getClass_() != null)) {
+ associationEndToRemove = ae;
+ break;
+ }
+ }
+ if (associationEndToRemove != null) // change opposite end type
+ associationEndToRemove.setType(newClass);
+ }
+ // execute: remove equivalent attributes from subclasses
+ ArrayList<Class> classes = UmlUtils.getAllSubClasses(newClass);
+ classes.remove(oldClass);
+ for (Class cls : classes) {
+ Property attributeToRemove = null;
+ for (Property attr : cls.getOwnedAttributes()) {
+ if (attr.getName().equals(selectedEObject.getName())) {
+ attributeToRemove = attr;
+ break;
+ }
+ }
+ if (attributeToRemove.getAssociation() != null) {
+ Association assoc = attributeToRemove.getAssociation();
+ Property associationEndToRemove = null;
+ for (Property ae : attributeToRemove.getAssociation().getMemberEnds()) {
+ if ((! ae.equals(attributeToRemove)) && (ae.getClass_() != null)) {
+ associationEndToRemove = ae;
+ break;
+ }
+ }
+ if (associationEndToRemove != null) { // remove opposite association end if owned by a class
+ Class owningClass = associationEndToRemove.getClass_();
+ owningClass.getOwnedAttributes().remove(associationEndToRemove);
+ }
+ // remove association from owning package
+ Package owningPackage = assoc.getPackage();
+ owningPackage.getPackagedElements().remove(assoc);
+ }
+ // remove equivalent attribute from subclass
+ Class owningSubClass = attributeToRemove.getClass_();
+ owningSubClass.getOwnedAttributes().remove(attributeToRemove);
+ }
+ }
+ };
+ }
+
+ /**
+ * Internal class for providing an instance of a LTK RefactoringProcessor
+ * used for EMF model refactorings.
+ * @generated
+ */
+ public final class InternalRefactoringProcessor extends
+ LtkEmfRefactoringProcessorAdapter {
+
+ /**
+ * Constructor using the invocation context of the model refactoring.
+ * @param selection Invocation context of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor(List<EObject> selection){
+ super(getParent(), selection, applyRefactoring());
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkInitialConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ org.eclipse.uml2.uml.Property selectedEObject =
+ (org.eclipse.uml2.uml.Property) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // test: the selected property must be an attribute (owned by a class)
+ String msg = "This refactoring can only be applied" +
+ " on properties which are owned attributes of a class!";
+ if (selectedEObject.getClass_() == null) {
+ result.addFatalError(msg);
+ } else {
+ // test: the selected attribute must be public
+ msg = "This refactoring can only be applied on public class attributes!";
+ if (! selectedEObject.getVisibility().equals(VisibilityKind.PUBLIC_LITERAL))
+ result.addFatalError(msg);
+ // test: the selected attribute must not redefine another one
+ msg = "This refactoring can not be applied because the selected attribute" +
+ " redefines another one in the inheritance hierarchy!";
+ if (! selectedEObject.getRedefinedElements().isEmpty())
+ result.addFatalError(msg);
+ // test: the owning class must have at least one superclass
+ msg = "This refactoring can not be applied because the owning class " +
+ "of the selected attribute does not have any superclasses!";
+ if (selectedEObject.getClass_().getSuperClasses().isEmpty())
+ result.addFatalError(msg);
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor,
+ * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkFinalConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ org.eclipse.uml2.uml.Property selectedEObject =
+ (org.eclipse.uml2.uml.Property) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ String className =
+ (String) dataManagement.getInPortByName("className").getValue();
+ // test: the owning class must have a superclass with the specified name
+ String msg = "The owning class does not have a superclass named '" +
+ className + "'!";
+ Class superClass = selectedEObject.getClass_().getSuperClass(className);
+ if (superClass == null) {
+ result.addFatalError(msg);
+ } else {
+ // test: each subclass of the specified superclass must have an
+ // attribute equal to the selected attribute
+ if (! UmlUtils.subClassesHaveAttribute(superClass, selectedEObject)) {
+ ArrayList<String> msgs =
+ UmlUtils.getReasonsWhySubClassesDoNotHaveAttribute(superClass, selectedEObject);
+ for (String str : msgs) {
+ result.addFatalError(str);
+ }
+ } else {
+ // test: the super class must not own an attribute with the
+ // same name as the selected attribute
+ msg = "The superclass already owns an attribute named '" +
+ selectedEObject.getName() + "'!";
+ for (Property att : superClass.getOwnedAttributes()) {
+ if (att.getName().equals(selectedEObject.getName()))
+ result.addFatalError(msg);
+ }
+ // test: the superclass must already inherit an element with the
+ // same name as the selected attribute
+ msg = "The superclass already inherits an element named '" +
+ selectedEObject.getName() + "'!";
+ for (NamedElement att : superClass.getInheritedMembers()) {
+ if (att.getName().equals(selectedEObject.getName()))
+ result.addFatalError(msg);
+ }
+ }
+ }
+ return result;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.java
new file mode 100644
index 0000000..73a0f2f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringDataManagement.java
@@ -0,0 +1,57 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.3 2012/11/26 15:39:40 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;
+import org.eclipse.emf.refactor.refactoring.core.Port;
+
+/**
+ * Class for specific data concerning a model refactoring.
+ * @generated
+ */
+public class RefactoringDataManagement extends DataManagementAdapter {
+
+ protected final String SELECTEDEOBJECT = "selectedEObject";
+
+ /**
+ * Default constructor.
+ * @generated
+ */
+ public RefactoringDataManagement() {
+ this.addPorts();
+ }
+
+ /**
+ * Adds the ports to the data management used for parameter passing.
+ * @generated
+ */
+ private void addPorts(){
+ this.inPorts.add
+ (new Port<org.eclipse.uml2.uml.Property>
+ (SELECTEDEOBJECT, org.eclipse.uml2.uml.Property.class));
+ this.inPorts.add
+ (new Port<String>
+ ("className", String.class, "unspecified"));
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement#
+ * preselect(java.util.List)
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void preselect(List<EObject> selection) {
+ getInPortByName(SELECTEDEOBJECT).
+ setValue((org.eclipse.uml2.uml.Property) selection.get(0));
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
new file mode 100644
index 0000000..cdff5ab
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringGuiHandler.javajet,v 1.3 2012/11/26 15:39:40 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;
+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
+
+/**
+ * Class used for specifying gui topics of a specific model refactoring.
+ * @generated
+ */
+public class RefactoringGuiHandler implements IGuiHandler {
+
+ /**
+ * Refactoring supported by the GuiHandler.
+ * @generated
+ */
+ private Refactoring parent;
+
+ /**
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return parent;
+ }
+
+ /**
+ * @see oorg.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler#
+ * setParent(Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring refactoring) {
+ this.parent = refactoring;
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler#show()
+ * @generated
+ */
+ @Override
+ public RefactoringWizard show() {
+ return new org.eclipse.emf.refactor.refactorings.uml24.pullupattribute.RefactoringWizard
+ ((RefactoringController)this.parent.getController());
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler#
+ * showInMenu(java.util.List)
+ * @generated
+ */
+ @Override
+ public boolean showInMenu(List<EObject> selection) {
+ for(EObject o:selection){
+ if(null != o){
+ if (o instanceof org.eclipse.uml2.uml.Property) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.java
new file mode 100644
index 0000000..f0edadc
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringTest.java
@@ -0,0 +1,96 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringTest.javajet,v 1.3 2012/11/26 15:39:40 tarendt Exp $
+ */
+
+package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.runtime.test.JUnitTestCaseAdapter;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Class used for running individual JUnit test cases
+ * of the specific model refactoring.
+ * @generated
+ */
+@RunWith(value = Parameterized.class)
+public class RefactoringTest extends JUnitTestCaseAdapter {
+
+ /**
+ * Number of test cases.
+ * @generated
+ */
+ private String number;
+
+ /**
+ * Constructor implementation.
+ * @param number Number of test cases.
+ * @generated
+ */
+ public RefactoringTest(String number) throws IOException {
+ super("org.eclipse.emf.refactor.refactorings.uml24.PullUpAttribute",
+ "uml",
+ new File(".").getCanonicalPath(),
+ new Refactoring(null, "", "http://www.eclipse.org/uml2/4.0.0/UML", new RefactoringGuiHandler(), new RefactoringController()));
+ this.number = number;
+ }
+
+ @Parameters
+ public static Collection<Object[]> data() {
+ List<String> testNumbers = getTestNumbers();
+ Object[][] data = new Object[testNumbers.size()][1];
+ for (int i = 0; i < testNumbers.size(); i++) {
+ data[i][0] = testNumbers.get(i);
+ }
+ return Arrays.asList(data);
+ }
+
+ private static List<String> getTestNumbers() {
+ List<String> numbers = new ArrayList<String>();
+ try {
+ String pathPrefix = new File(".").getCanonicalPath() + "/tests/" + "PullUpAttribute";
+ File testCaseDir = new File(pathPrefix,"/");
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.startsWith("test_");
+ }
+ };
+ String[] children = testCaseDir.list(filter);
+ if (children != null) {
+ for (String child : children) {
+ numbers.add(
+ child.substring(
+ child.indexOf('_') + 1));
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return numbers;
+ }
+
+ /**
+ * Runs the test.
+ */
+ @Test
+ public void test() {
+ System.out.println("running test test_" + number);
+ executeTestCase(number);
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.java
new file mode 100644
index 0000000..eb9f5f5
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizard.javajet,v 1.3 2012/11/26 15:39:40 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;
+
+/**
+ * Class used for providing an implementation of an LTK
+ * RefactoringWizard in EMF Refactor.
+ * @generated
+ */
+public class RefactoringWizard
+ extends AbstractRefactoringWizard {
+
+ /**
+ * Default constructor implementation.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizard(IController controller) {
+ super(controller);
+ }
+
+ /**
+ * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#
+ * addUserInputPages()
+ * @generated
+ */
+ @Override
+ protected void addUserInputPages() {
+ addPage(new RefactoringWizardPage
+ (controller.getParent().getName(), (RefactoringController)controller));
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.java
new file mode 100644
index 0000000..6fa9291
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringWizardPage.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.2 2012/10/16 21:03:02 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.pullupattribute;
+
+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Class for setting model refactoring specific parameters
+ * by the user.
+ * @generated
+ */
+public class RefactoringWizardPage extends
+ UserInputWizardPage implements Listener {
+
+ /**
+ * Controller of the EMF model refactoring.
+ * @generated
+ */
+ private final RefactoringController controller;
+
+ /**
+ * Label for each parameter.
+ * @generated
+ */
+ private Label classNameLabel;
+
+ /**
+ * TextField for each parameter.
+ * @generated
+ */
+ private Text classNameWidget;
+
+ /**
+ * Default constructor using a name and the controller of the
+ * EMF model refactoring.
+ * @param name Name of the WizardPage.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizardPage
+ (String name, RefactoringController controller) {
+ super(name);
+ this.controller = controller;
+ }
+
+ /**
+ * @see org.eclipse.swt.widgets.Listener#
+ * handleEvent(org.eclipse.swt.widgets.Event)
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void handleEvent(Event event) {
+ getWizard().getContainer().updateButtons();
+
+ if (classNameWidget != null) {
+ String className = classNameWidget.getText();
+ if (!className.isEmpty()){
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("className").
+ setValue(className);
+ } else {
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("className").
+ setValue("unspecified");
+ }
+ }
+
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.IDialogPage#
+ * createControl(org.eclipse.swt.widgets.Composite)
+ * @generated
+ */
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ composite.setLayout(gl);
+
+
+ classNameLabel = new Label(composite, SWT.NONE);
+ classNameLabel.setText("Name of the superclass the attribute should be moved to: ");
+ classNameLabel.setEnabled(true);
+
+ classNameWidget = new Text(composite, SWT.BORDER);
+ classNameWidget.setToolTipText
+ ("value of variable 'className'");
+ classNameWidget.setEnabled(true);
+ classNameWidget.setLayoutData(gd);
+ classNameWidget.addListener(SWT.Modify, this);
+
+
+ setControl(composite);
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_001/config.xml b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_001/config.xml
new file mode 100644
index 0000000..7f153a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_001/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+
+ <param>
+ <name>className</name>
+ <value>enter value here...</value>
+ </param>
+
+</config>
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_002/config.xml b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_002/config.xml
new file mode 100644
index 0000000..7f153a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_002/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+
+ <param>
+ <name>className</name>
+ <value>enter value here...</value>
+ </param>
+
+</config>
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_003/config.xml b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_003/config.xml
new file mode 100644
index 0000000..7f153a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_003/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+
+ <param>
+ <name>className</name>
+ <value>enter value here...</value>
+ </param>
+
+</config>
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_004/config.xml b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_004/config.xml
new file mode 100644
index 0000000..7f153a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/tests/PullUpAttribute/test_004/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+
+ <param>
+ <name>className</name>
+ <value>enter value here...</value>
+ </param>
+
+</config>
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.smells.ecore.henshin/bin/org/eclipse/emf/refactor/smells/ecore/henshin/SpeculativeGeneralityEClass.class b/org.eclipse.emf.refactor.smells.ecore.henshin/bin/org/eclipse/emf/refactor/smells/ecore/henshin/SpeculativeGeneralityEClass.class
new file mode 100644
index 0000000..c158939
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.ecore.henshin/bin/org/eclipse/emf/refactor/smells/ecore/henshin/SpeculativeGeneralityEClass.class
Binary files differ