in src/java/org/apache/ivy/osgi/p2/P2MetadataParser.java [241:391]
public UnitHandler() {
super(UNIT);
// addChild(new UpdateHandler(), new ChildElementHandler() {
// public void childHandled(DelegatingHandler child) {
// }
// });
addChild(new PropertiesHandler(CATEGORY_PROPERTY),
new ChildElementHandler<PropertiesHandler>() {
@Override
public void childHandled(PropertiesHandler child) {
String category = child.properties.get(CATEGORY_PROPERTY);
if (category != null && Boolean.valueOf(category)) {
// this is a category definition, this is useless, skip this unit
child.getParent().skip();
bundleInfo = null;
}
}
});
addChild(new ProvidesHandler(), new ChildElementHandler<ProvidesHandler>() {
@Override
public void childHandled(ProvidesHandler child) {
if ("source".equals(child.eclipseType)) {
// this is some source of some bundle
bundleInfo.setSource(true);
// we need to parse the manifest in the touchpointData to figure out the
// targeted bundle
// in case we won't have the proper data in the manifest, prepare the source
// data from the convention
String symbolicName = bundleInfo.getSymbolicName();
if (symbolicName.endsWith(".source")) {
bundleInfo.setSymbolicNameTarget(symbolicName.substring(0,
symbolicName.length() - 7));
bundleInfo.setVersionTarget(bundleInfo.getVersion());
}
}
for (BundleCapability capability : child.capabilities) {
bundleInfo.addCapability(capability);
}
}
});
addChild(new FilterHandler(), new ChildElementHandler<FilterHandler>() {
@Override
public void childHandled(FilterHandler child) {
}
});
addChild(new RequiresHandler(), new ChildElementHandler<RequiresHandler>() {
@Override
public void childHandled(RequiresHandler child) {
for (BundleRequirement requirement : child.requirements) {
bundleInfo.addRequirement(requirement);
}
}
});
addChild(new HostRequirementsHandler(),
new ChildElementHandler<HostRequirementsHandler>() {
@Override
public void childHandled(HostRequirementsHandler child) {
}
});
addChild(new MetaRequirementsHandler(),
new ChildElementHandler<MetaRequirementsHandler>() {
@Override
public void childHandled(MetaRequirementsHandler child) {
}
});
addChild(new ArtifactsHandler(), new ChildElementHandler<ArtifactsHandler>() {
@Override
public void childHandled(ArtifactsHandler child) {
}
});
// addChild(new TouchpointHandler(), new ChildElementHandler() {
// public void childHandled(DelegatingHandler child) {
// }
// });
addChild(new TouchpointDataHandler(), new ChildElementHandler<TouchpointDataHandler>() {
@Override
public void childHandled(TouchpointDataHandler child) throws SAXParseException {
if (child.zipped != null) {
bundleInfo.setHasInnerClasspath(child.zipped);
}
if (!bundleInfo.isSource()) {
// we only care about parsing the manifest if it is a source
return;
}
if (child.manifest != null) {
// Eclipse may have serialized a little bit weirdly
String manifest = ManifestParser.formatLines(child.manifest.trim());
BundleInfo embeddedInfo;
try {
embeddedInfo = ManifestParser.parseManifest(manifest);
} catch (IOException e) {
if (logLevel >= Message.MSG_VERBOSE) {
Message.verbose(
"The Manifest of the source bundle "
+ bundleInfo.getSymbolicName() + " could not be parsed",
e);
}
return;
} catch (ParseException e) {
if (logLevel >= Message.MSG_VERBOSE) {
Message.verbose(
"The Manifest of the source bundle "
+ bundleInfo.getSymbolicName() + " is ill formed", e);
}
return;
}
if (!embeddedInfo.isSource()) {
if (logLevel >= Message.MSG_VERBOSE) {
Message.verbose("The Manifest of the source bundle "
+ bundleInfo.getSymbolicName()
+ " is not declaring being a source.");
}
return;
}
String symbolicNameTarget = embeddedInfo.getSymbolicNameTarget();
if (symbolicNameTarget == null) {
if (logLevel >= Message.MSG_VERBOSE) {
Message.verbose("The Manifest of the source bundle "
+ bundleInfo.getSymbolicName()
+ " is not declaring a target symbolic name.");
}
return;
}
Version versionTarget = embeddedInfo.getVersionTarget();
if (versionTarget == null) {
if (logLevel >= Message.MSG_VERBOSE) {
Message.verbose("The Manifest of the source bundle "
+ bundleInfo.getSymbolicName()
+ " is not declaring a target version.");
}
return;
}
bundleInfo.setSymbolicNameTarget(symbolicNameTarget);
bundleInfo.setVersionTarget(versionTarget);
}
}
});
// addChild(new LicensesHandler(), new ChildElementHandler() {
// public void childHandled(DelegatingHandler child) {
// }
// });
// addChild(new CopyrightHandler(), new ChildElementHandler() {
// public void childHandled(DelegatingHandler child) {
// }
// });
// addChild(new ChangesHandler(), new ChildElementHandler() {
// public void childHandled(DelegatingHandler child) {
// }
// });
}