Skip to content

Commit

Permalink
Refactor instances: adds an abstract Intance
Browse files Browse the repository at this point in the history
  • Loading branch information
tdurieux committed Feb 9, 2016
1 parent 91b26db commit 7b60f47
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package fr.inria.spirals.npefix.resi.context.instance;

public abstract class AbstractInstance<T> implements Instance<T> {

protected Class getClassFromString (String className) {
if(className.equals("int")) {
return int.class;
}
if(className.equals("int[]")) {
return int[].class;
}
if(className.equals("long")) {
return long.class;
}
if(className.equals("long[]")) {
return long[].class;
}
if(className.equals("float")) {
return float.class;
}
if(className.equals("float[]")) {
return float[].class;
}
if(className.equals("double")) {
return double.class;
}
if(className.equals("double[]")) {
return double[].class;
}
if(className.equals("byte")) {
return byte.class;
}
if(className.equals("byte[]")) {
return byte[].class;
}
if(className.equals("char")) {
return char.class;
}
if(className.equals("char[]")) {
return char[].class;
}
if(className.equals("boolean")) {
return boolean.class;
}
if(className.equals("boolean[]")) {
return boolean[].class;
}
try {
return getClass().forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import java.lang.reflect.Array;
import java.util.List;

public class ArrayInstance<T> implements Instance<T> {
public class ArrayInstance<T> extends AbstractInstance<T> {

private final String clazz;
private List<Instance<?>> values;
Expand All @@ -15,17 +15,13 @@ public ArrayInstance(String clazz, List<Instance<?>> values) {

@Override
public T getValue() {
try {
Class<?> aClass = getClass().forName(clazz);
T t = (T) Array.newInstance(aClass, values.size());
for (int i = 0; i < values.size(); i++) {
Instance<?> value = values.get(i);
Array.set(t, i, value.getValue());
}
return t;
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
Class<?> aClass = getClassFromString(clazz);
T t = (T) Array.newInstance(aClass, values.size());
for (int i = 0; i < values.size(); i++) {
Instance<?> value = values.get(i);
Array.set(t, i, value.getValue());
}
return t;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.util.Arrays;
import java.util.List;

public class NewInstance<T> implements Instance<T> {
public class NewInstance<T> extends AbstractInstance<T> {

private final String clazz;
private String[] parameterType;
Expand All @@ -20,55 +20,6 @@ public NewInstance(String clazz, String[] parameterType,
this.parameters = parameters;
}

private Class getClassFromString (String className) {
if(className.equals("int")) {
return int.class;
}
if(className.equals("int[]")) {
return int[].class;
}
if(className.equals("long")) {
return long.class;
}
if(className.equals("long[]")) {
return long[].class;
}
if(className.equals("float")) {
return float.class;
}
if(className.equals("float[]")) {
return float[].class;
}
if(className.equals("double")) {
return double.class;
}
if(className.equals("double[]")) {
return double[].class;
}
if(className.equals("byte")) {
return byte.class;
}
if(className.equals("byte[]")) {
return byte[].class;
}
if(className.equals("char")) {
return char.class;
}
if(className.equals("char[]")) {
return char[].class;
}
if(className.equals("boolean")) {
return boolean.class;
}
if(className.equals("boolean[]")) {
return boolean[].class;
}
try {
return getClass().forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public T getValue() {
boolean wasEnable = CallChecker.isEnable();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fr.inria.spirals.npefix.resi.context.instance;

public class PrimitiveInstance<T> implements Instance<T> {
public class PrimitiveInstance<T> extends AbstractInstance<T> {

public T value;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import java.lang.reflect.Field;

public class StaticVariableInstance<T> implements Instance<T> {
public class StaticVariableInstance<T> extends AbstractInstance<T> {

private final String clazz;
private String fieldName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import fr.inria.spirals.npefix.resi.CallChecker;

public class VariableInstance<T> implements Instance<T> {
public class VariableInstance<T> extends AbstractInstance<T> {

private String variableName;
public VariableInstance(String variableName) {
Expand Down

0 comments on commit 7b60f47

Please sign in to comment.