package org.fusesource.restygwt.rebind;
import com.google.gwt.core.ext.Generator;
import com.google.gwt.core.ext.GeneratorContext;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType;
public class DirectRestServiceGenerator extends Generator {
@Override
public String generate(TreeLogger logger, GeneratorContext context, String source) throws UnableToCompleteException {
try {
JClassType restService = find(logger, context, source);
DirectRestServiceInterfaceClassCreator restyInterfaceCreator =
new DirectRestServiceInterfaceClassCreator(logger, context, restService);
restyInterfaceCreator.create();
DirectRestServiceClassCreator generator = new DirectRestServiceClassCreator(logger, context, restService);
return generator.create();
} finally {
BaseSourceCreator.clearGeneratedClasses();
}
}
static JClassType find(TreeLogger logger, GeneratorContext context, String type) throws UnableToCompleteException {
JClassType rc = context.getTypeOracle().findType(type);
if (rc == null) {
logger.log(TreeLogger.ERROR, "TypeOracle could not find " + type);
throw new UnableToCompleteException();
}
return rc;
}
}