Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,18 @@ public class UserDefinedJavaClassMeta

static {
IVariables vs = new Variables();
vs.initializeFrom(null); // sets up the default variables
// sets up the default variables
vs.initializeFrom(null);
String maxSizeStr = vs.getVariable(UserDefinedJavaClass.HOP_DEFAULT_CLASS_CACHE_SIZE, "100");
int maxCacheSize = -1;
int maxCacheSize;
try {
maxCacheSize = Integer.parseInt(maxSizeStr);
} catch (Exception ignored) {
maxCacheSize = 100; // default to 100 if property not set
// default to 100 if property not set
maxCacheSize = 100;
}
// Initialize Class ICache
classCache = CacheBuilder.newBuilder().maximumSize(maxCacheSize).build();
CLASS_CACHE = CacheBuilder.newBuilder().maximumSize(maxCacheSize).build();
}

@Getter
Expand Down Expand Up @@ -134,8 +136,8 @@ public Object clone() throws CloneNotSupportedException {
//
private Class<TransformClassBase> cookedTransformClass;
private List<Exception> cookErrors;
private static final Cache<String, Class<?>> classCache;
private boolean changed;
private static final Cache<String, Class<?>> CLASS_CACHE;
private boolean hasChanged;

@HopMetadataProperty(
key = "field",
Expand Down Expand Up @@ -180,7 +182,7 @@ public Object clone() throws CloneNotSupportedException {

public UserDefinedJavaClassMeta() {
super();
changed = true;
hasChanged = true;
cookErrors = new ArrayList<>();
infoTransformDefinitions = new ArrayList<>();
targetTransformDefinitions = new ArrayList<>();
Expand All @@ -201,11 +203,11 @@ public UserDefinedJavaClassMeta(UserDefinedJavaClassMeta m) {
}

@VisibleForTesting
Class<?> cookClass(UserDefinedJavaClassDef def, ClassLoader clsloader)
throws CompileException, IOException, RuntimeException, HopTransformException {
Class<?> cookClass(UserDefinedJavaClassDef def, ClassLoader clsLoader)
throws CompileException, IOException, HopTransformException {

String checksum = def.getChecksum();
Class<?> rtn = UserDefinedJavaClassMeta.classCache.getIfPresent(checksum);
Class<?> rtn = UserDefinedJavaClassMeta.CLASS_CACHE.getIfPresent(checksum);
if (rtn != null) {
return rtn;
}
Expand All @@ -215,10 +217,10 @@ Class<?> cookClass(UserDefinedJavaClassDef def, ClassLoader clsloader)
}

ClassBodyEvaluator cbe = new ClassBodyEvaluator();
if (clsloader == null) {
if (clsLoader == null) {
cbe.setParentClassLoader(Thread.currentThread().getContextClassLoader());
} else {
cbe.setParentClassLoader(clsloader);
cbe.setParentClassLoader(clsLoader);
}

cbe.setClassName(def.getClassName());
Expand All @@ -232,23 +234,21 @@ Class<?> cookClass(UserDefinedJavaClassDef def, ClassLoader clsloader)
}

cbe.setDefaultImports(
new String[] {
"org.apache.hop.pipeline.transforms.userdefinedjavaclass.*",
"org.apache.hop.pipeline.transform.*",
"org.apache.hop.core.row.*",
"org.apache.hop.core.*",
"org.apache.hop.core.exception.*",
"org.apache.hop.pipeline.*",
"org.apache.hop.workflow.*",
"org.apache.hop.workflow.action.*",
"org.apache.hop.core.plugins.*",
"org.apache.hop.core.variables.*",
"java.util.*",
});
"org.apache.hop.pipeline.transforms.userdefinedjavaclass.*",
"org.apache.hop.pipeline.transform.*",
"org.apache.hop.core.row.*",
"org.apache.hop.core.*",
"org.apache.hop.core.exception.*",
"org.apache.hop.pipeline.*",
"org.apache.hop.workflow.*",
"org.apache.hop.workflow.action.*",
"org.apache.hop.core.plugins.*",
"org.apache.hop.core.variables.*",
"java.util.*");

cbe.cook(new Scanner(null, sr));
rtn = cbe.getClazz();
UserDefinedJavaClassMeta.classCache.put(checksum, rtn);
UserDefinedJavaClassMeta.CLASS_CACHE.put(checksum, rtn);
return rtn;
}

Expand All @@ -275,7 +275,7 @@ public void cookClasses() throws HopException {
cookErrors.add(exception);
}
}
changed = false;
hasChanged = false;
}

public TransformClassBase newChildInstance(
Expand Down Expand Up @@ -310,7 +310,7 @@ public void setFieldInfo(List<FieldInfo> fields) {

public void replaceFields(List<FieldInfo> fields) {
this.fields = fields;
changed = true;
hasChanged = true;
}

/**
Expand Down Expand Up @@ -345,7 +345,7 @@ protected List<UserDefinedJavaClassDef> orderDefinitions(
public void replaceDefinitions(List<UserDefinedJavaClassDef> definitions) {
this.definitions.clear();
this.definitions = orderDefinitions(definitions);
changed = true;
hasChanged = true;
}

@Override
Expand All @@ -355,7 +355,7 @@ public UserDefinedJavaClassMeta clone() {

private boolean checkClassCooked(ILogChannel logChannel) {
boolean ok = cookedTransformClass != null && cookErrors.isEmpty();
if (changed) {
if (hasChanged) {
try {
cookClasses();
} catch (HopException e) {
Expand Down Expand Up @@ -383,9 +383,9 @@ public ITransformIOMeta getTransformIOMeta() {
}

try {
Method getTransformIOMeta =
Method getTransformIoMeta =
cookedTransformClass.getMethod("getTransformIOMeta", UserDefinedJavaClassMeta.class);
ITransformIOMeta transformIoMeta = (ITransformIOMeta) getTransformIOMeta.invoke(null, this);
ITransformIOMeta transformIoMeta = (ITransformIOMeta) getTransformIoMeta.invoke(null, this);
if (transformIoMeta == null) {
return super.getTransformIOMeta();
} else {
Expand Down Expand Up @@ -455,7 +455,7 @@ public void getFields(
public void check(
List<ICheckResult> remarks,
PipelineMeta pipelineMeta,
TransformMeta transforminfo,
TransformMeta transformInfo,
IRowMeta prev,
String[] input,
String[] output,
Expand All @@ -471,14 +471,14 @@ public void check(
ICheckResult.TYPE_RESULT_OK,
BaseMessages.getString(
PKG, "UserDefinedJavaClassMeta.CheckResult.ConnectedTransformOK2"),
transforminfo);
transformInfo);
remarks.add(cr);
} else {
cr =
new CheckResult(
ICheckResult.TYPE_RESULT_ERROR,
BaseMessages.getString(PKG, "UserDefinedJavaClassMeta.CheckResult.NoInputReceived"),
transforminfo);
transformInfo);
remarks.add(cr);
}
}
Expand Down
Loading