public UnitHandler()

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) {
            // }
            // });

        }