-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Labels
Description
in order to make sure that an attribute on emf side is used instead of the local variable in xtend, k3 generates some reflective calls.
ex for an Integer variable named "currentValue:
protected static Integer _privk3_currentValue(final VariableAspectVariableAspectProperties _self_, final Variable _self) {
try {
for (java.lang.reflect.Method m : _self.getClass().getMethods()) {
if (m.getName().equals("getCurrentValue") &&
m.getParameterTypes().length == 0) {
Object ret = m.invoke(_self);
if (ret != null) {
return (java.lang.Integer) ret;
} else {
return null;
}
}
}
} catch (Exception e) {
// Chut !
}
return _self_.currentValue;
}
protected static void _privk3_currentValue(final VariableAspectVariableAspectProperties _self_, final Variable _self, final Integer currentValue) {
boolean setterCalled = false;
try {
for (java.lang.reflect.Method m : _self.getClass().getMethods()) {
if (m.getName().equals("setCurrentValue")
&& m.getParameterTypes().length == 1) {
m.invoke(_self, currentValue);
setterCalled = true;
}
}
} catch (Exception e) {
// Chut !
}
if (!setterCalled) {
_self_.currentValue = currentValue;
}
}
}they could benefit from the following study in order to use a more efficient coding of the reflective call: https://dzone.com/articles/java-reflection-but-faster?edition=398191&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202018-09-18
Reactions are currently unavailable