com.googlecode.gwt.test.uibinder.UiBinderCreateHandler Maven / Gradle / Ivy
package com.googlecode.gwt.test.uibinder;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.googlecode.gwt.test.GwtCreateHandler;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
/**
* GwtCreateHandler in charge of creating UiBinder objects through deferred binding, parsing .ui.xml
* files and binding to java {@link UiField}. For internal use only.
*
* @author Gael Lazzari
*/
public class UiBinderCreateHandler implements GwtCreateHandler {
private static final UiBinderCreateHandler INSTANCE = new UiBinderCreateHandler();
public static UiBinderCreateHandler get() {
return INSTANCE;
}
private UiBinderCreateHandler() {
}
/*
* (non-Javadoc)
*
* @see com.googlecode.gwt.test.GwtCreateHandler#create(java.lang.Class)
*/
@SuppressWarnings("unchecked")
public Object create(Class classLiteral) throws Exception {
if (UiBinder.class.isAssignableFrom(classLiteral)) {
return createProxy((Class>) classLiteral);
} else {
return null;
}
}
private Object createProxy(Class> uiBinderClass) {
InvocationHandler ih = new UiBinderInvocationHandler(uiBinderClass);
return Proxy.newProxyInstance(this.getClass().getClassLoader(),
new Class[]{uiBinderClass}, ih);
}
}