Package org.osgi.service.obr

Examples of org.osgi.service.obr.Resolver


                    this.resolveResource(ra, filter, resources);
                }
            }

            // prepare the resolver
            Resolver resolver = ra.resolver();
            for (Iterator ri=resources.iterator(); ri.hasNext(); ) {
                resolver.add((org.osgi.service.obr.Resource) ri.next());
            }

            // resolve the resources
            if (!resolver.resolve()) {
                // TODO: dump why
            }

            HashSet bundles = new HashSet();
            org.osgi.service.obr.Resource[] list = resolver.getAddedResources();
            for (int i=0; list != null && i < list.length; i++) {
                bundles.add(this.getName(list[i].getURL().getPath()));
            }

            list = resolver.getRequiredResources();
            for (int i=0; list != null && i < list.length; i++) {
                bundles.add(this.getName(list[i].getURL().getPath()));
            }

            return bundles;
View Full Code Here


            logger.log( "No resources to deploy" );
            return;
        }

        RepositoryAdmin repoAdmin = ( RepositoryAdmin ) getRepositoryAdmin();
        Resolver resolver = repoAdmin.resolver();

        // prepare the deployment
        for ( int i = 0; i < bundles.length; i++ )
        {
            String bundle = bundles[i];
            if ( bundle == null || bundle.equals( "-" ) )
            {
                continue;
            }

            String filter = "(id=" + bundle + ")";
            Resource[] resources = repoAdmin.discoverResources( filter );
            if ( resources != null && resources.length > 0 )
            {
                resolver.add( resources[0] );
            }
        }

        OsgiDeployer.deploy( resolver, logger, start );
    }
View Full Code Here

                    .put( "filter", reqs[i].getFilter() ) //$NON-NLS-1$
                    .put( "optional", reqs[i].isOptional() ) ); //$NON-NLS-1$
            }

            final RepositoryAdmin admin = ( RepositoryAdmin ) getRepositoryAdmin();
            Resolver resolver = admin.resolver();
            resolver.add( resource );
            resolver.resolve(); // (Resolver.NO_OPTIONAL_RESOURCES);
            Resource[] required = resolver.getRequiredResources();
            for ( int i = 0; required != null && i < required.length; i++ )
            {
                json.append( "required", toJSON( required[i], bundles, false ) ); //$NON-NLS-1$
            }
            Resource[] optional = resolver.getOptionalResources();
            for ( int i = 0; optional != null && i < optional.length; i++ )
            {
                json.append( "optional", toJSON( optional[i], bundles, false ) ); //$NON-NLS-1$
            }
            Requirement/*Reason*/[] unsatisfied = resolver.getUnsatisfiedRequirements();
            for ( int i = 0; unsatisfied != null && i < unsatisfied.length; i++ )
            {
                json.append( "unsatisfied", new JSONObject() //$NON-NLS-1$
                    .put( "name", unsatisfied[i].getName() ) //$NON-NLS-1$
                    .put( "filter", unsatisfied[i].getFilter() ) //$NON-NLS-1$
View Full Code Here

        RepositoryAdmin ra = ( RepositoryAdmin ) getService( "org.osgi.service.obr.RepositoryAdmin" );
        if ( ra != null )
        {
            getLog().log( LogService.LOG_DEBUG, "Trying to update from OSGi Bundle Repository (OSGi API)" );

            final Resolver resolver = ra.resolver();

            String version = ( String ) bundle.getHeaders().get( Constants.BUNDLE_VERSION );
            if ( version == null )
            {
                version = "0.0.0";
            }
            final String filter = "(&(symbolicname=" + bundle.getSymbolicName() + ")(!(version=" + version
                + "))(version>=" + version + "))";

            final Resource[] resources = ra.discoverResources( filter );
            final Resource resource = selectHighestVersion( resources );
            if ( resource != null )
            {
                resolver.add( resource );

                if ( !resolver.resolve() )
                {
                    logRequirements( "Cannot updated bundle from OBR due to unsatisfied requirements", resolver
                        .getUnsatisfiedRequirements() );
                }
                else
                {
                    logResource( "Installing Requested Resources", resolver.getAddedResources() );
                    logResource( "Installing Required Resources", resolver.getRequiredResources() );
                    logResource( "Installing Optional Resources", resolver.getOptionalResources() );

                    // deploy the resolved bundles and ensure they are started
                    resolver.deploy( true );
                    getLog().log( LogService.LOG_INFO, "Bundle updated from OSGi Bundle Repository" );

                    return true;
                }
            }
View Full Code Here

    ServiceReference sref=this.bc.getServiceReference(RepositoryAdmin.class.getName());

    System.out.println("Starting "+location+" "+version);
    if (sref!=null){
      RepositoryAdmin brs=(RepositoryAdmin)this.bc.getService(sref);
      Resolver resolver=brs.resolver();
      Resource ressource = selectNewestVersion(searchRepository(brs, location, version));
      if (ressource!=null){
  resolver.add(ressource);
      }
      if ((resolver.getAddedResources() != null) &&
            (resolver.getAddedResources().length > 0)) {
        if (resolver.resolve()) {
          try{
            resolver.deploy(true); //Bundles are started
          }catch (IllegalStateException ex) {
            System.out.println(ex);
          }
        }
      }
View Full Code Here

   * want one apps by value content being used to resolve another. I'll ask for an OBR enhancement.
   */
  public synchronized Set<BundleInfo> resolve(AriesApplication app, ResolveConstraint... constraints) throws ResolverException
  {
    log.trace("resolving {}", app);
    Resolver obrResolver = repositoryAdmin.resolver();
   
    ApplicationMetadata appMeta = app.getApplicationMetadata();
   
    String appName = appMeta.getApplicationSymbolicName();
    Version appVersion = appMeta.getApplicationVersion();
    List<Content> appContent = appMeta.getApplicationContents();

    // add a resource describing the requirements of the application metadata.
    obrResolver.add(new ApplicationResourceImpl(appName, appVersion, appContent));

    URL appRepoURL = null;
   
    try {
      Document doc = RepositoryDescriptorGenerator.generateRepositoryDescriptor(appName + "_" + appVersion, app.getBundleInfo());
     
      File f = File.createTempFile(appName + "_" + appVersion, "repository.xml");
      TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc), new StreamResult(f));
     
      appRepoURL = f.toURI().toURL();
     
      repositoryAdmin.addRepository(appRepoURL);
      f.delete();
    } catch (Exception e) {
      throw new ResolverException(e);
    }
   
    try {
      if (obrResolver.resolve()) {
        Set<BundleInfo> result = new HashSet<BundleInfo>();
        for (Resource resource: obrResolver.getRequiredResources()) {
          BundleInfo bundleInfo = toBundleInfo(resource);
          result.add(bundleInfo);
        }
        for (Resource resource: obrResolver.getOptionalResources()) {
          BundleInfo bundleInfo = toBundleInfo(resource);
          result.add(bundleInfo);
        }
        return result;
      } else {
View Full Code Here

        }
        out.println("");
    }

    protected void doDeploy(RepositoryAdmin admin, List<String> bundles, boolean start) throws Exception {
        Resolver resolver = admin.resolver();
        for (String bundle : bundles) {
            String[] target = getTarget(bundle);
            Resource resource = selectNewestVersion(searchRepository(admin, target[0], target[1]));
            if (resource != null)
            {
                resolver.add(resource);
            }
            else
            {
                io.err.println("Unknown bundle - " + target[0]);
            }
        }
        if ((resolver.getAddedResources() != null) &&
            (resolver.getAddedResources().length > 0))
        {
            if (resolver.resolve())
            {
                io.out.println("Target resource(s):");
                printUnderline(io.out, 19);
                Resource[] resources = resolver.getAddedResources();
                for (int resIdx = 0; (resources != null) && (resIdx < resources.length); resIdx++)
                {
                    io.out.println("   " + resources[resIdx].getPresentationName()
                        + " (" + resources[resIdx].getVersion() + ")");
                }
                resources = resolver.getRequiredResources();
                if ((resources != null) && (resources.length > 0))
                {
                    io.out.println("\nRequired resource(s):");
                    printUnderline(io.out, 21);
                    for (int resIdx = 0; resIdx < resources.length; resIdx++)
                    {
                        io.out.println("   " + resources[resIdx].getPresentationName()
                            + " (" + resources[resIdx].getVersion() + ")");
                    }
                }
                resources = resolver.getOptionalResources();
                if ((resources != null) && (resources.length > 0))
                {
                    io.out.println("\nOptional resource(s):");
                    printUnderline(io.out, 21);
                    for (int resIdx = 0; resIdx < resources.length; resIdx++)
                    {
                        io.out.println("   " + resources[resIdx].getPresentationName()
                            + " (" + resources[resIdx].getVersion() + ")");
                    }
                }

                try
                {
                    io.out.print("\nDeploying...");
                    resolver.deploy(start);
                    io.out.println("done.");
                }
                catch (IllegalStateException ex)
                {
                    io.err.println(ex);
                }
            }
            else
            {
                Requirement[] reqs = resolver.getUnsatisfiedRequirements();
                if ((reqs != null) && (reqs.length > 0))
                {
                    io.out.println("Unsatisfied requirement(s):");
                    printUnderline(io.out, 27);
                    for (int reqIdx = 0; reqIdx < reqs.length; reqIdx++)
                    {
                        io.out.println("   " + reqs[reqIdx].getFilter());
                        Resource[] resources = resolver.getResources(reqs[reqIdx]);
                        for (int resIdx = 0; resIdx < resources.length; resIdx++)
                        {
                            io.out.println("      " + resources[resIdx].getPresentationName());
                        }
                    }
View Full Code Here

        }
        out.println("");
    }

    protected void doDeploy(RepositoryAdmin admin, List<String> bundles, boolean start) throws Exception {
        Resolver resolver = admin.resolver();
        for (String bundle : bundles) {
            String[] target = getTarget(bundle);
            Resource resource = selectNewestVersion(searchRepository(admin, target[0], target[1]));
            if (resource != null)
            {
                resolver.add(resource);
            }
            else
            {
                io.err.println("Unknown bundle - " + target[0]);
            }
        }
        if ((resolver.getAddedResources() != null) &&
            (resolver.getAddedResources().length > 0))
        {
            if (resolver.resolve())
            {
                io.out.println("Target resource(s):");
                printUnderline(io.out, 19);
                Resource[] resources = resolver.getAddedResources();
                for (int resIdx = 0; (resources != null) && (resIdx < resources.length); resIdx++)
                {
                    io.out.println("   " + resources[resIdx].getPresentationName()
                        + " (" + resources[resIdx].getVersion() + ")");
                }
                resources = resolver.getRequiredResources();
                if ((resources != null) && (resources.length > 0))
                {
                    io.out.println("\nRequired resource(s):");
                    printUnderline(io.out, 21);
                    for (int resIdx = 0; resIdx < resources.length; resIdx++)
                    {
                        io.out.println("   " + resources[resIdx].getPresentationName()
                            + " (" + resources[resIdx].getVersion() + ")");
                    }
                }
                resources = resolver.getOptionalResources();
                if ((resources != null) && (resources.length > 0))
                {
                    io.out.println("\nOptional resource(s):");
                    printUnderline(io.out, 21);
                    for (int resIdx = 0; resIdx < resources.length; resIdx++)
                    {
                        io.out.println("   " + resources[resIdx].getPresentationName()
                            + " (" + resources[resIdx].getVersion() + ")");
                    }
                }

                try
                {
                    io.out.print("\nDeploying...");
                    resolver.deploy(start);
                    io.out.println("done.");
                }
                catch (IllegalStateException ex)
                {
                    io.err.println(ex);
                }
            }
            else
            {
                Requirement[] reqs = resolver.getUnsatisfiedRequirements();
                if ((reqs != null) && (reqs.length > 0))
                {
                    io.out.println("Unsatisfied requirement(s):");
                    printUnderline(io.out, 27);
                    for (int reqIdx = 0; reqIdx < reqs.length; reqIdx++)
                    {
                        io.out.println("   " + reqs[reqIdx].getFilter());
                        Resource[] resources = resolver.getResources(reqs[reqIdx]);
                        for (int resIdx = 0; resIdx < resources.length; resIdx++)
                        {
                            io.out.println("      " + resources[resIdx].getPresentationName());
                        }
                    }
View Full Code Here

                return;
            }

            ServiceReference sr = ctx.getServiceReference(RepositoryAdmin.class.getName());
            RepositoryAdmin adm = (RepositoryAdmin) ctx.getService(sr);
            Resolver resolver = adm.resolver();

            for (Object object : bundles) {
                Bundle bundle = (Bundle) object;
                String symbolicName = bundle.getSymbolicName();
                // String version = (String) bundle.getHeaders().get(Constants.BUNDLE_VERSION);
                String filter = "(symbolicname=" + symbolicName + ")";
                logger.info("Resolving " + filter);
                Collection<Resource> resources = filterByVersion(adm.discoverResources(filter));
                logger.info("Found {} resources", resources.size());
                if (resources.size() > 0) {
                    try {
                        bundle.uninstall();
                        for (Resource resource : resources) {
                            logger.info("Adding {} to update list", resource.getSymbolicName());
                            resolver.add(resource);
                        }
                    } catch (BundleException e1) {
                        logger.error("error.uninstall_plugins");
                    }
                }
            }

            if (resolver.resolve()) {
                resolver.deploy(true); // deploy and start (true means "start")
            } else {
                logger.error(I18N.translate("error.load_list"));
            }
            updateInstalledList();
            updateAvailableList();
            updateInstalledDetails();
            JOptionPane.showMessageDialog(Main.getGUI(), I18N.translate("plugins_updated"), "PluginManager",
                    JOptionPane.INFORMATION_MESSAGE);
        } else if (e.getSource() == bInstall) {
            Object[] resources = availableList.getSelectedValues();
            if (resources.length == 0) {
                return;
            }

            ServiceReference sr = ctx.getServiceReference(RepositoryAdmin.class.getName());
            if (sr == null) {
                logger.error("OBR service not available");
                return;
            }

            RepositoryAdmin adm = (RepositoryAdmin) ctx.getService(sr);
            if (adm == null) {
                logger.error("OBR service not available");
                return;
            }

            // add resources to the resolver
            Resolver resolver = adm.resolver();
            for (Object object : resources) {
                Resource res = (Resource) object;
                resolver.add(res);
            }

            // try to resolve the bundles and then install them
            if (resolver.resolve()) {
                resolver.deploy(true);
            } else {
                logger.error(I18N.translate("error.load_list"));
            }

            // update the gui
View Full Code Here

TOP

Related Classes of org.osgi.service.obr.Resolver

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.