Skip to content
This repository has been archived by the owner on Apr 3, 2018. It is now read-only.

Commit

Permalink
Fixed tests regression
Browse files Browse the repository at this point in the history
  • Loading branch information
bruno-medeiros committed Apr 27, 2016
1 parent 8d030d5 commit d15d6db
Showing 1 changed file with 28 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,35 +26,24 @@ public interface IDisableableWidget extends IWidgetComponent {
*/
void setEnabled(boolean enabled);


/* ----------------- ----------------- */

default void _IDisableableComponent$verifyContract() {
_verify_setEnabled(getClass());
DisableableWidgetContractCheckHelper.verify_setEnabled_contract(getClass());
}

public static void _verify_setEnabled(Class<?> klass) {
}


class DisableableWidgetContractCheckHelper {

public static void verify_setEnabled_contract(Class<?> klass) {
if(klass == AbstractDisableableWidget.class) {
return;
}

boolean needsMethodOverride = false;
boolean needs_setEnabled_MethodOverride =
!Modifier.isAbstract(klass.getModifiers()) && hasUIControlField(klass);

Field[] declaredFields = klass.getDeclaredFields();
for(Field field : declaredFields) {
if(field.getName().startsWith("this$")) {
continue;
}
if(Modifier.isStatic(field.getModifiers()) || field.getType().isPrimitive()) {
continue;
}
if(isUIControlField(field)) {
needsMethodOverride = true;
break;
}

}
if(needsMethodOverride) {
if(needs_setEnabled_MethodOverride) {

// if the subclass has declared new UI control fields, ensure it has override setEnabled too

Expand All @@ -70,12 +59,29 @@ public static void _verify_setEnabled(Class<?> klass) {

} else {

_verify_setEnabled(klass.getSuperclass());
verify_setEnabled_contract(klass.getSuperclass());
return;
}

}

public static boolean hasUIControlField(Class<?> klass) {
Field[] declaredFields = klass.getDeclaredFields();
for(Field field : declaredFields) {
if(field.getName().startsWith("this$")) {
continue;
}
if(Modifier.isStatic(field.getModifiers()) || field.getType().isPrimitive()) {
continue;
}
if(isUIControlField(field)) {
return true;
}

}
return false;
}

public static boolean isUIControlField(Field field) {
Type fieldType = field.getAnnotatedType().getType();
if(fieldType instanceof Class) {
Expand Down

0 comments on commit d15d6db

Please sign in to comment.