From f33002e9983f9d61aa58e7ceb475afd92eb88a2a Mon Sep 17 00:00:00 2001
From: "pl@gohorb.ba-horb.de" <pl@gohorb.ba-horb.de>
Date: Fri, 29 Jan 2021 22:48:20 +0100
Subject: [PATCH 1/2] 	new file:  
 src/test/java/insertGenerics/TestTwoArgs.java 	new file:  
 src/test/resources/insertGenericsJav/TestTwoArgs.jav

---
 src/test/java/insertGenerics/TestTwoArgs.java | 72 +++++++++++++++++++
 .../insertGenericsJav/TestTwoArgs.jav         | 21 ++++++
 2 files changed, 93 insertions(+)
 create mode 100644 src/test/java/insertGenerics/TestTwoArgs.java
 create mode 100644 src/test/resources/insertGenericsJav/TestTwoArgs.jav

diff --git a/src/test/java/insertGenerics/TestTwoArgs.java b/src/test/java/insertGenerics/TestTwoArgs.java
new file mode 100644
index 00000000..7513b65f
--- /dev/null
+++ b/src/test/java/insertGenerics/TestTwoArgs.java
@@ -0,0 +1,72 @@
+package insertGenerics;
+
+import de.dhbwstuttgart.bytecode.genericsGeneratorTypes.GenericGenratorResultForSourceFile;
+import de.dhbwstuttgart.core.JavaTXCompiler;
+import de.dhbwstuttgart.syntaxtree.SourceFile;
+import de.dhbwstuttgart.syntaxtree.visual.ASTPrinter;
+import de.dhbwstuttgart.syntaxtree.visual.ASTTypePrinter;
+import de.dhbwstuttgart.typedeployment.TypeInsert;
+import de.dhbwstuttgart.typedeployment.TypeInsertFactory;
+import de.dhbwstuttgart.typeinference.result.ResultSet;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class TestTwoArgs {
+
+    public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/insertGenericsJav/";
+
+    @Test
+    public void ggFinder() throws IOException, ClassNotFoundException {
+        execute(new File(rootDirectory+"TestTwoArgs.jav"));
+    }
+
+    private static class TestResultSet{
+
+    }
+
+    public TestResultSet execute(File fileToTest) throws IOException, ClassNotFoundException {
+        JavaTXCompiler compiler = new JavaTXCompiler(fileToTest);
+        for(File f : compiler.sourceFiles.keySet()){
+            SourceFile sf = compiler.sourceFiles.get(f);
+        }
+        List<ResultSet> results = compiler.typeInference();
+        List<GenericGenratorResultForSourceFile> simplifyResultsForAllSourceFiles = compiler.getGeneratedGenericResultsForAllSourceFiles(results);
+        //compiler.generateBytecode(rootDirectory+"xxx.class", results, simplifyResultsForAllSourceFiles);
+        for(File f : compiler.sourceFiles.keySet()){
+            SourceFile sf = compiler.sourceFiles.get(f);
+            System.out.println(ASTTypePrinter.print(sf));
+            System.out.println(ASTPrinter.print(sf));
+            //List<ResultSet> results = compiler.typeInference(); PL 2017-10-03 vor die For-Schleife gezogen
+            assert results.size()>0;
+            Set<String> insertedTypes = new HashSet<>();
+            for(ResultSet resultSet : results){
+                Set<TypeInsert> result = TypeInsertFactory.createTypeInsertPoints(sf, resultSet, results, simplifyResultsForAllSourceFiles);
+                assert result.size()>0;
+                String content = readFile(f.getPath(), StandardCharsets.UTF_8);
+                for(TypeInsert tip : result){
+                    insertedTypes.add(tip.insert(content));
+                }
+            }
+            for(String s : insertedTypes){
+                System.out.println(s);
+            }
+        }
+        return new TestResultSet();
+    }
+
+    static String readFile(String path, Charset encoding)
+            throws IOException
+    {
+        byte[] encoded = Files.readAllBytes(Paths.get(path));
+        return new String(encoded, encoding);
+    }
+}
diff --git a/src/test/resources/insertGenericsJav/TestTwoArgs.jav b/src/test/resources/insertGenericsJav/TestTwoArgs.jav
new file mode 100644
index 00000000..78b274e4
--- /dev/null
+++ b/src/test/resources/insertGenericsJav/TestTwoArgs.jav
@@ -0,0 +1,21 @@
+class TestTwoArgs {
+    a;
+
+    id(b) {
+        var c = b;
+        return c;
+    }
+
+    setA(x) {
+        a = x;
+        return a;
+    }
+
+    m(x,y) {
+        x = id(y);
+    }
+    
+    main(x,y) {
+    	return m(id(x),setA(y));
+    }
+}
\ No newline at end of file

From c6d896fa3bdf8f6ecae01776cc30dbf500e1850c Mon Sep 17 00:00:00 2001
From: "pl@gohorb.ba-horb.de" <pl@gohorb.ba-horb.de>
Date: Sat, 30 Jan 2021 22:06:27 +0100
Subject: [PATCH 2/2] 	modified:  
 ../../../main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java
 	modified:   ../../java/insertGenerics/TestGGFinder.java 
 modified:   TestGGFinder.jav

---
 .../GeneratedGenericsFinder.java              |  8 +--
 .../java/insertGenerics/TestGGFinder.java     | 52 ++++++-------------
 .../insertGenericsJav/TestGGFinder.jav        |  2 +-
 3 files changed, 22 insertions(+), 40 deletions(-)

diff --git a/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java b/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java
index 7e89e755..7a7f876e 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java
@@ -157,9 +157,9 @@ public class GeneratedGenericsFinder implements ASTVisitor {
 			}
 			/**/
 
-			if(ggResult != null)
-				generatedGenericsForSF.addGenericGeneratorResultClass(ggResult);
-
+			if(ggResult != null) {  //Hinzufuegen von Fayez ggResult
+				//generatedGenericsForSF.addGenericGeneratorResultClass(ggResult);
+			}
 
 			List<GenericsGeneratorResult> listOfClassCons = new ArrayList<>();
 			for(TPHConstraint clCons: fogg.classConstraints) {
@@ -183,7 +183,7 @@ public class GeneratedGenericsFinder implements ASTVisitor {
 			ggRfaM = new GenericGeneratorResultsForAllMethods(listOfMethAndCons);
 			ggResultAlternative = new GenericsGeneratorResultForClass(className, listOfClassCons, ggRfaM);
 
-			if(ggResultAlternative != null) {
+			if(ggResultAlternative != null) {//hinzufuegen von Alis ggResult
 				generatedGenericsForSF.addGenericGeneratorResultClass(ggResultAlternative);
 				System.out.println(generatedGenericsForSF);
 			}
diff --git a/src/test/java/insertGenerics/TestGGFinder.java b/src/test/java/insertGenerics/TestGGFinder.java
index c517136c..3b9e378e 100644
--- a/src/test/java/insertGenerics/TestGGFinder.java
+++ b/src/test/java/insertGenerics/TestGGFinder.java
@@ -12,6 +12,9 @@ import org.junit.Test;
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.net.URLClassLoader;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -22,51 +25,30 @@ import java.util.Set;
 
 public class TestGGFinder {
 
-    public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/insertGenericsJav/";
-
+    private static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/insertGenericsJav/";
+    private String pathToClassFile = System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/";
+    private static ClassLoader loader;
+    private static Class<?> classToTest;
+	private static Object instanceOfClass;
+	private static String className = "TestGGFinder";
+	
     @Test
-    public void ggFinder() throws IOException, ClassNotFoundException {
-        execute(new File(rootDirectory+"TestGGFinder.jav"));
+    public void ggFinder() throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
+        execute(new File(rootDirectory+className+".jav"));
     }
 
     private static class TestResultSet{
 
     }
 
-    public TestResultSet execute(File fileToTest) throws IOException, ClassNotFoundException {
+    public TestResultSet execute(File fileToTest) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
         JavaTXCompiler compiler = new JavaTXCompiler(fileToTest);
-        for(File f : compiler.sourceFiles.keySet()){
-            SourceFile sf = compiler.sourceFiles.get(f);
-        }
         List<ResultSet> results = compiler.typeInference();
         List<GenericGenratorResultForSourceFile> simplifyResultsForAllSourceFiles = compiler.getGeneratedGenericResultsForAllSourceFiles(results);
-        //compiler.generateBytecode(rootDirectory+"xxx.class", results, simplifyResultsForAllSourceFiles);
-        for(File f : compiler.sourceFiles.keySet()){
-            SourceFile sf = compiler.sourceFiles.get(f);
-            System.out.println(ASTTypePrinter.print(sf));
-            System.out.println(ASTPrinter.print(sf));
-            //List<ResultSet> results = compiler.typeInference(); PL 2017-10-03 vor die For-Schleife gezogen
-            assert results.size()>0;
-            Set<String> insertedTypes = new HashSet<>();
-            for(ResultSet resultSet : results){
-                Set<TypeInsert> result = TypeInsertFactory.createTypeInsertPoints(sf, resultSet, results, simplifyResultsForAllSourceFiles);
-                assert result.size()>0;
-                String content = readFile(f.getPath(), StandardCharsets.UTF_8);
-                for(TypeInsert tip : result){
-                    insertedTypes.add(tip.insert(content));
-                }
-            }
-            for(String s : insertedTypes){
-                System.out.println(s);
-            }
-        }
+        compiler.generateBytecode(new File(pathToClassFile), results, simplifyResultsForAllSourceFiles);
+        loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)});
+        classToTest = loader.loadClass(className);
+		instanceOfClass = classToTest.getDeclaredConstructor().newInstance();
         return new TestResultSet();
     }
-
-    static String readFile(String path, Charset encoding)
-            throws IOException
-    {
-        byte[] encoded = Files.readAllBytes(Paths.get(path));
-        return new String(encoded, encoding);
-    }
 }
diff --git a/src/test/resources/insertGenericsJav/TestGGFinder.jav b/src/test/resources/insertGenericsJav/TestGGFinder.jav
index 9ce2691f..cc94cad5 100644
--- a/src/test/resources/insertGenericsJav/TestGGFinder.jav
+++ b/src/test/resources/insertGenericsJav/TestGGFinder.jav
@@ -1,4 +1,4 @@
-class TestGGFinder {
+public class TestGGFinder {
     a;
 
     id(b) {