}
}
@Override
public void handleMultiple() {
throw new DefinitionException(MULTIPLE_INTERCEPTORS, file + "@" + locator.getLineNumber());
}
});
containers.add(new Container(JAVAEE_URI, "decorators", "class") {
@Override
public void processEndChildElement(String uri, String localName, String qName, String nestedText) {
if (isInNamespace(uri) && "class".equals(localName)) {
decorators.add(new XmlMetadata<String>(qName, propertyReplacer.replaceProperties(trim(nestedText)), file, locator.getLineNumber()));
}
}
@Override
public void handleMultiple() {
throw new DefinitionException(MULTIPLE_DECORATORS, file + "@" + locator.getLineNumber());
}
});
containers.add(new Container(JAVAEE_URI, "alternatives", "class", "stereotype") {
@Override
public void processEndChildElement(String uri, String localName, String qName, String nestedText) {
if (isInNamespace(uri) && "class".equals(localName)) {
alternativeClasses.add(new XmlMetadata<String>(qName, propertyReplacer.replaceProperties(trim(nestedText)), file, locator.getLineNumber()));
} else if (isInNamespace(uri) && "stereotype".equals(localName)) {
alternativeStereotypes.add(new XmlMetadata<String>(qName, propertyReplacer.replaceProperties(trim(nestedText)), file, locator.getLineNumber()));
}
}
@Override
public void handleMultiple() {
throw new DefinitionException(MULTIPLE_ALTERNATIVES, file + "@" + locator.getLineNumber());
}
});
containers.add(new Container(WELD_URI, "scan") {
String name;
String pattern;
Collection<Metadata<SystemPropertyActivation>> systemPropertyActivations;
Collection<Metadata<ClassAvailableActivation>> classAvailableActivations;
@Override
public void processStartChildElement(String uri, String localName, String qName, Attributes attributes) {
if (isFilterElement(uri, localName)) {
name = trim(attributes.getValue("name"));
pattern = trim(attributes.getValue("pattern"));
systemPropertyActivations = new ArrayList<Metadata<SystemPropertyActivation>>();
classAvailableActivations = new ArrayList<Metadata<ClassAvailableActivation>>();
} else if (isInNamespace(uri) && "if-system-property".equals(localName)) {
String systemPropertyName = trim(attributes.getValue("name"));
String systemPropertyValue = trim(attributes.getValue("value"));
Metadata<SystemPropertyActivation> systemPropertyActivation = new XmlMetadata<SystemPropertyActivation>(qName, new SystemPropertyActivationImpl(systemPropertyName, systemPropertyValue), file, locator.getLineNumber());
systemPropertyActivations.add(systemPropertyActivation);
} else if (isInNamespace(uri) && "if-class-available".equals(localName)) {
String className = trim(attributes.getValue("name"));
Metadata<ClassAvailableActivation> classAvailableActivation = new XmlMetadata<ClassAvailableActivation>(qName, new ClassAvailableActivationImpl(className), file, locator.getLineNumber());
classAvailableActivations.add(classAvailableActivation);
}
}
@Override
public void processEndChildElement(String uri, String localName, String qName, String nestedText) {
if (isFilterElement(uri, localName)) {
Metadata<Filter> filter = new XmlMetadata<Filter>(qName, new FilterImpl(pattern, name, systemPropertyActivations, classAvailableActivations), file, locator.getLineNumber());
if ("include".equals(localName)) {
includes.add(filter);
} else if ("exclude".equals(localName)) {
excludes.add(filter);
}
// reset
name = null;
pattern = null;
systemPropertyActivations = null;
classAvailableActivations = null;
}
}
private boolean isFilterElement(String uri, String localName) {
return isInNamespace(uri) && ("include".equals(localName) || "exclude".equals(localName));
}
@Override
public void handleMultiple() {
throw new DefinitionException(MULTIPLE_SCANNING, file + "@" + locator.getLineNumber());
}
});
}