use of org.jboss.hal.spi.AsyncColumn in project console by hal.
the class RequiredResourcesProcessor method onProcess.
@Override
protected boolean onProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (Element e : roundEnv.getElementsAnnotatedWith(Requires.class)) {
TypeElement requiredElement = (TypeElement) e;
Requires requires = requiredElement.getAnnotation(Requires.class);
// Get the related id. Currently @Requires can be placed at named proxies or (async) columns
String id = null;
NameToken token = requiredElement.getAnnotation(NameToken.class);
if (token != null) {
id = token.value()[0];
} else {
AsyncColumn asyncColumn = requiredElement.getAnnotation(AsyncColumn.class);
if (asyncColumn != null) {
id = asyncColumn.value();
} else {
Column column = requiredElement.getAnnotation(Column.class);
if (column != null) {
id = column.value();
}
}
}
// noinspection ConstantConditions
if (id != null) {
RequiredInfo requiredInfo = new RequiredInfo(id, requiredElement);
requiredInfo.addResources(requires.value());
requiredInfo.setRecursive(requires.recursive());
if (requiredInfos.containsKey(id)) {
RequiredInfo other = requiredInfos.get(id);
if (!requiredInfo.getResources().equals(other.getResources())) {
error(requiredElement, "Different required resources for the same id \"%s\". This class conflicts with %s", id, other.source.getQualifiedName());
}
}
requiredInfos.put(id, requiredInfo);
}
}
if (!requiredInfos.isEmpty()) {
debug("Generating code for required resources registry");
code(REQUIRED_RESOURCES_TEMPLATE, REQUIRED_RESOURCES_PACKAGE, REQUIRED_RESOURCES_CLASS, context(REQUIRED_RESOURCES_PACKAGE, REQUIRED_RESOURCES_CLASS));
List<RegistryBinding> bindings = ImmutableList.of(new RegistryBinding(REQUIRED_RESOURCES_PACKAGE + ".RequiredResources", REQUIRED_RESOURCES_PACKAGE + "." + REQUIRED_RESOURCES_CLASS));
debug("Generating code for registry module");
code(REGISTRY_MODULE_TEMPLATE, REGISTRY_MODULE_PACKAGE, REGISTRY_MODULE_CLASS, () -> {
Map<String, Object> context = new HashMap<>();
context.put(GENERATED_WITH, RequiredResourcesProcessor.class.getName());
context.put(PACKAGE_NAME, REGISTRY_MODULE_PACKAGE);
context.put(CLASS_NAME, REGISTRY_MODULE_CLASS);
context.put("bindings", bindings);
return context;
});
info("Successfully generated required resources registry [%s] and related module [%s].", REQUIRED_RESOURCES_CLASS, REGISTRY_MODULE_CLASS);
requiredInfos.clear();
}
return false;
}
use of org.jboss.hal.spi.AsyncColumn in project console by hal.
the class ColumnRegistrationProcessor method columnInfo.
private ColumnInfo columnInfo(TypeElement element, boolean async) {
String columnClass = element.getQualifiedName().toString();
String id;
if (async) {
AsyncColumn asyncColumn = element.getAnnotation(AsyncColumn.class);
id = asyncColumn.value();
} else {
Column asyncColumn = element.getAnnotation(Column.class);
id = asyncColumn.value();
}
return new ColumnInfo(columnClass, id, async);
}
Aggregations