public Class<ContributionMetadata> getModelType() {
return ContributionMetadata.class;
}
public ContributionMetadata read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException {
ContributionMetadata contribution = null;
QName name = null;
try {
while (reader.hasNext()) {
int event = reader.getEventType();
switch (event) {
case START_ELEMENT:
name = reader.getName();
if (CONTRIBUTION_QNAME.equals(name)) {
// Read <contribution>
contribution = this.contributionFactory.createContributionMetadata();
contribution.setSpecVersion(SCA11_NS);
contribution.setUnresolved(true);
readExtendedAttributes(reader, contribution, attributeProcessor, assemblyFactory, context);
} else if (DEPLOYABLE_QNAME.equals(name)) {
// Read <deployable>
QName compositeName = getQName(reader, "composite");
if (compositeName == null) {
error(context.getMonitor(), "AttributeCompositeMissing", reader);
//throw new ContributionReadException("Attribute 'composite' is missing");
} else {
if (contribution != null) {
Composite composite = assemblyFactory.createComposite();
composite.setName(compositeName);
composite.setUnresolved(true);
contribution.getDeployables().add(composite);
}
}
} else {
// Read an extension element
Object extension = extensionProcessor.read(reader, context);
if (extension != null && contribution != null) {
if (extension instanceof Import) {
// The value of the @package attribute on the <import.java/> element MUST be
// unique across all other <import.java/> elements within the contribution.
if (extension instanceof JavaImport) {
for (Import imports : contribution.getImports()) {
if (imports instanceof JavaImport) {
if (((JavaImport)extension).getPackage().equals(((JavaImport) imports).getPackage())) {
error(context.getMonitor(), "DuplicateJavaImports", reader);
}
}
}
}
contribution.getImports().add((Import)extension);
} else if (extension instanceof Export) {
// The value of the @package attribute on the <export.java/> element MUST be
// unique across all other <export.java/> elements within the contribution.
if (extension instanceof JavaExport) {
for (Export exports : contribution.getExports()) {
if (exports instanceof JavaExport) {
if (((JavaExport)extension).getPackage().equals(((JavaExport) exports).getPackage())) {
error(context.getMonitor(), "DuplicateJavaExports", reader);
}
}
}
}
contribution.getExports().add((Export)extension);
} else {
contribution.getExtensions().add(extension);
}
}
}
break;