package org.timepedia.exporter.rebind;
import com.google.gwt.core.ext.typeinfo.JAbstractMethod;
import com.google.gwt.core.ext.typeinfo.JParameter;
import com.google.gwt.core.ext.typeinfo.JType;
/**
* Wrapper utility class for dealing with exportable constructors
*
* @author Ray Cromwell (ray@timepedia.org)
*/
public class JExportableConstructor extends JExportableMethod {
private static final String STATIC_FACTORY_NAME = "___create";
public JExportableConstructor(JExportableClassType exportableEnclosingType,
JAbstractMethod method) {
super(exportableEnclosingType, method);
}
private void assertExportable(JType param) {
}
public String getJSNIReference() {
String reference = exportableEnclosingType.getQualifiedSourceName() + "::"
+ getStaticFactoryMethodName() + "(";
JParameter[] params = method.getParameters();
for (int i = 0; i < params.length; i++) {
reference += params[i].getType().getJNISignature();
}
reference += ")";
return reference;
}
public String getStaticFactoryMethodName() {
return STATIC_FACTORY_NAME;
}
public JExportableType getExportableReturnType() {
return exportableEnclosingType;
}
public String getStaticFactoryJSNIReference() {
String reference =
exportableEnclosingType.getQualifiedExporterImplementationName() + "::"
+ getStaticFactoryMethodName() + "(";
JParameter[] params = method.getParameters();
for (int i = 0; i < params.length; i++) {
reference += params[i].getType().getJNISignature();
}
reference += ")";
return reference;
}
public String getJSQualifiedExportName() {
return exportableEnclosingType.getJSQualifiedExportName();
}
}