Package org.apache.felix.sigil.common.model.osgi

Examples of org.apache.felix.sigil.common.model.osgi.IRequiredBundle


                    throw new SAXParseException("Failed to parse filter", locator, e);
                }
            }
            else if ("bundle".equals(name))
            {
                IRequiredBundle b = ModelElementFactory.getInstance().newModelElement(
                    IRequiredBundle.class);
                try
                {
                    LDAPExpr expr = LDAPParser.parseExpression(attributes.getValue("filter"));
                    b.setSymbolicName(decodeSymbolicName(expr, locator));
                    b.setVersions(decodeVersions(expr, locator));
                    b.setOptional(Boolean.valueOf(attributes.getValue("optional")));
                    bundle.getBundleInfo().addRequiredBundle(b);
                }
                catch (Exception e)
                {
                    System.err.println("Failed to parse filter in bundle "
View Full Code Here


            IPackageImport pi = (IPackageImport) requirement;
            found.addAll(rep.findAllProviders(pi, config.getOptions()));
        }
        else if (requirement instanceof IRequiredBundle)
        {
            IRequiredBundle rb = (IRequiredBundle) requirement;
            found.addAll(rep.findAllProviders(rb, config.getOptions()));
        }
        else
        {
            // shouldn't get here - developer error if do
View Full Code Here

                    unresolvedElements.add(pkgImport);
                }
                else if (marker.getType().equals(
                    SigilCore.MARKER_UNRESOLVED_REQUIRE_BUNDLE))
                {
                    IRequiredBundle req = factory.newModelElement(IRequiredBundle.class);
                    req.setSymbolicName(elementName);
                    req.setVersions(VersionRange.parseVersionRange(versionRangeStr));
                    unresolvedElements.add(req);
                }
            }
        }
    }
View Full Code Here

                        return false;
                    }
                }
                else if (element instanceof IRequiredBundle)
                {
                    IRequiredBundle rb = (IRequiredBundle) element;
                    try
                    {
                        IRepositoryManager manager = SigilProject.this.getRepositoryManager();
                        ResolutionConfig config = new ResolutionConfig(
                            ResolutionConfig.IGNORE_ERRORS);
View Full Code Here

            HashMap<String, VersionRange> versions = new HashMap<String, VersionRange>();
            for (IModelElement child : requirements.children())
            {
                if (child instanceof IRequiredBundle)
                {
                    IRequiredBundle bundle = (IRequiredBundle) child;
                    versions.put(bundle.getSymbolicName(), bundle.getVersions());
                }
            }

            IBldResolver resolver = findResolver();
            if (resolver == null)
            {
                // this can happen in IvyDE, but it retries and is OK next time.
                Log.warn("failed to find resolver - IvyContext not yet available.");
                return;
            }

            IResolution resolution = resolver.resolve(requirements, false);
            Log.verbose("resolution: " + resolution.getBundles());

            ModuleRevisionId masterMrid = md.getModuleRevisionId();
            DefaultDependencyDescriptor dd;
            ModuleRevisionId mrid;

            for (ISigilBundle bundle : resolution.getBundles())
            {
                IBundleModelElement info = bundle.getBundleInfo();
                String name = info.getSymbolicName();

                if ("system bundle".equals(name))
                {
                    // e.g. SystemProvider with framework=null
                    Log.verbose("Discarding system bundle");
                    continue;
                }

                ModuleDescriptor bmd = (ModuleDescriptor) bundle.getMeta().get(
                    ModuleDescriptor.class);
                if (bmd != null)
                {
                    ModuleRevisionId bmrid = bmd.getModuleRevisionId();
                    String org = bmrid.getOrganisation();
                    if (org == null)
                        org = masterMrid.getOrganisation();
                    String module = bmrid.getName();
                    String rev = "latest." + bmd.getStatus();

                    mrid = ModuleRevisionId.newInstance(org, module, rev);

                    dd = new SigilDependencyDescriptor(md, mrid, force, changing,
                        transitive);

                    Artifact artifact = (Artifact) bundle.getMeta().get(Artifact.class);
                    if (artifact != null)
                    {
                        dd.addDependencyArtifact(mrid.getName(),
                            new DefaultDependencyArtifactDescriptor(dd,
                                artifact.getName(), "jar", "jar", null, null));
                    }
                }
                else
                {
                    // XXX see FELIX-1395
                    // The following code has been commented out as it causes
                    // problems with require bundle dependencies
                    // VersionRange version = versions.get( name );
                    // String rev = version != null ? version.toString() : info.getVersion().toString();
                    String rev = info.getVersion().toString();
                    mrid = ModuleRevisionId.newInstance(SigilResolver.ORG_SIGIL, name,
                        rev);
                    dd = new SigilDependencyDescriptor(md, mrid, force, changing,
                        transitive);
                }

                int nDeps = 0;
                boolean foundDefault = false;

                // TODO: make dependency configurations configurable SIGIL-176
                for (String conf : md.getConfigurationsNames())
                {
                    if (conf.equals("default"))
                    {
                        foundDefault = true;
                    }
                    else if (md.getArtifacts(conf).length == 0)
                    {
                        dd.addDependencyConfiguration(conf, conf + "(default)");
                        nDeps++;
                    }
                }

                if (nDeps > 0)
                {
                    if (foundDefault)
                        dd.addDependencyConfiguration("default", "default");
                }
                else
                {
                    dd.addDependencyConfiguration("*", "*"); // all configurations
                }

                md.addDependency(dd);
            }

            boolean resolved = true;
            for (IModelElement child : requirements.children())
            {
                ISigilBundle provider = resolution.getProvider(child);
                if (provider == null)
                {
                    resolved = false;
                    // this is parse phase, so only log verbose message.
                    // error is produced during resolution phase.
                    Log.verbose("WARN: can't resolve: " + child);

                    String name;
                    String version;
                    if (child instanceof IRequiredBundle)
                    {
                        IRequiredBundle rb = (IRequiredBundle) child;
                        name = rb.getSymbolicName();
                        version = rb.getVersions().toString();
                    }
                    else
                    {
                        IPackageImport pi = (IPackageImport) child;
                        name = "import!" + pi.getPackageName();
View Full Code Here

        public ISigilBundle getProvider()
        {
            ISigilBundle b = bundleReference == null ? null : bundleReference.get();
            if (b == null)
            {
                IRequiredBundle rb = ModelElementFactory.getInstance().newModelElement(
                    IRequiredBundle.class);
                rb.setSymbolicName(bundleSymbolicName);
                VersionRange versions = new VersionRange(false, version, version, false);
                rb.setVersions(versions);
                b = rep.findProvider(rb, 0);
                bundleReference = new SoftReference<ISigilBundle>(b);
            }
            return b;
        }
View Full Code Here

        public URI[] resolve(URI base) throws URISyntaxException
        {
            ArrayList<URI> uris = new ArrayList<URI>(1);

            IBundleResolver resolver = manager.getBundleResolver();
            IRequiredBundle element = ModelElementFactory.getInstance().newModelElement(
                IRequiredBundle.class);
            String[] parts = base.getSchemeSpecificPart().split(":");
            switch (parts.length)
            {
                case 2:
                    Version v = Version.parseVersion(parts[1]);
                    element.setVersions(new VersionRange(false, v, v, false));
                    // fall through on purpose
                case 1:
                    element.setSymbolicName(parts[0]);
                    break;
                default:
                    throw new URISyntaxException(base.toString(),
                        "Unexpected number of parts: " + parts.length);
            }
View Full Code Here

                    return false;
                }
            }
            else if (e instanceof IRequiredBundle)
            {
                IRequiredBundle rb = (IRequiredBundle) e;
                if (!rb.isOptional())
                {
                    return false;
                }
            }
        }
View Full Code Here

TOP

Related Classes of org.apache.felix.sigil.common.model.osgi.IRequiredBundle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.