Package org.osgi.service.indexer

Examples of org.osgi.service.indexer.Builder


    if (headerStr == null) return;
    Map<String, Map<String, String>> header = OSGiHeader.parseHeader(headerStr);
   
    for (Entry<String, Map<String, String>> entry : header.entrySet()) {
      String namespace = OSGiHeader.removeDuplicateMarker(entry.getKey());
      Builder builder = new Builder().setNamespace(namespace);
     
      Map<String, String> attribs = entry.getValue();
      Util.copyAttribsToBuilder(builder, attribs);
      output.yield(builder);
    }
View Full Code Here


  }

  public void analyzeResource(Resource resource, List<Capability> caps, List<Requirement> reqs) throws Exception {
    Resource fwkFactorySvc = resource.getChild(SERVICE_FRAMEWORK_FACTORY);
    if (fwkFactorySvc != null) {
      Builder builder = new Builder().setNamespace(Namespaces.NS_CONTRACT).addAttribute(Namespaces.NS_CONTRACT, Namespaces.CONTRACT_OSGI_FRAMEWORK);

      Version specVersion = null;
      StringBuilder uses = new StringBuilder();
      boolean firstPkg = true;
     
      for (Capability cap : caps) {
        if (Namespaces.NS_WIRING_PACKAGE.equals(cap.getNamespace())) {
          // Add to the uses directive
          if (!firstPkg)
            uses.append(',');
          String pkgName = (String) cap.getAttributes().get(Namespaces.NS_WIRING_PACKAGE);
          uses.append(pkgName);
          firstPkg = false;
         
          // If it's org.osgi.framework, get the package version and map to OSGi spec version
          if (FRAMEWORK_PACKAGE.equals(pkgName)) {
            Version frameworkPkgVersion = (Version) cap.getAttributes().get(Namespaces.ATTR_VERSION);
            specVersion = mapFrameworkPackageVersion(frameworkPkgVersion);
          }
        }
      }
     
      if (specVersion != null)
        builder.addAttribute(Namespaces.ATTR_VERSION, specVersion);
     
      builder.addDirective(Namespaces.DIRECTIVE_USES, uses.toString());
      caps.add(builder.buildCapability());
    }
  }
View Full Code Here

      return null;
    }
  }

  private static Requirement createRequirement(VersionRange range) {
    Builder builder = new Builder().setNamespace(Namespaces.NS_EXTENDER);
   
    StringBuilder filter = new StringBuilder();
    filter.append('(').append(Namespaces.NS_EXTENDER).append('=').append(Namespaces.EXTENDER_SCR).append(')');
   
    filter.insert(0"(&");
    Util.addVersionFilter(filter, range, VersionKey.PackageVersion);
    filter.append(')');
   
    builder.addDirective(Namespaces.DIRECTIVE_FILTER, filter.toString());
    Requirement requirement = builder.buildRequirement();
    return requirement;
  }
View Full Code Here

      String indicator = OSGiHeader.removeDuplicateMarker(entry.getKey());
      String[] parsedIndicator = indicator.split("@", 2);
      if (parsedIndicator.length == 2) {
        String type = parsedIndicator[0];
        String namespace = parsedIndicator[1];
        Builder builder = new Builder().setNamespace(namespace);
       
        Map<String, String> attribs = entry.getValue();
        Util.copyAttribsToBuilder(builder, attribs);
       
        if ("capability".equalsIgnoreCase(type) || "cap".equalsIgnoreCase(type))
          caps.add(builder.buildCapability());
        else if ("requirement".equalsIgnoreCase(type) || "req".equalsIgnoreCase(type))
          reqs.add(builder.buildRequirement());
        else throw new IllegalArgumentException(MessageFormat.format("Invalid indicator type in known-bundle parsing for bundle \"{0}\", must be either cap[ability] or req[uirement], found \"{1}\".", bundleRef));
      } else {
        throw new IllegalArgumentException(MessageFormat.format("Invalid indicator format in known-bundle parsing for bundle  \"{0}\", expected type@namespace, found \"{1}\".", bundleRef, indicator));
      }
    }
View Full Code Here

    if (blueprintEnabled)
      requirements.add(createRequirement());
  }

  private Requirement createRequirement() {
    Builder builder = new Builder().setNamespace(Namespaces.NS_EXTENDER);
    String filter = String.format("(&(%s=%s)(version>=1.0.0)(!(version>=2.0.0)))", Namespaces.NS_EXTENDER, Namespaces.EXTENDER_BLUEPRINT);
    builder.addDirective(Namespaces.DIRECTIVE_FILTER, filter)
      .addDirective(Namespaces.DIRECTIVE_EFFECTIVE, Namespaces.EFFECTIVE_ACTIVE);
    return builder.buildRequirement();
  }
View Full Code Here

    SymbolicName bsn = Util.getSymbolicName(resource);
    boolean singleton = Boolean.TRUE.toString().equalsIgnoreCase(bsn.getAttributes().get(Constants.SINGLETON_DIRECTIVE + ":"));
   
    Version version = Util.getVersion(resource);
   
    Builder builder = new Builder()
        .setNamespace(Namespaces.NS_IDENTITY)
        .addAttribute(Namespaces.NS_IDENTITY, bsn.getName())
        .addAttribute(Namespaces.ATTR_IDENTITY_TYPE, identity)
        .addAttribute(Namespaces.ATTR_VERSION, version);
    if (singleton)
      builder.addDirective(Namespaces.DIRECTIVE_SINGLETON, Boolean.TRUE.toString());
    caps.add(builder.buildCapability());
  }
View Full Code Here

  private GeneratorState getStateLocal() {
    return state.get();
  }
 
  private void doContent(Resource resource, List<? super Capability> capabilities) throws Exception {
    Builder builder = new Builder()
      .setNamespace(Namespaces.NS_CONTENT);
   
    String sha = calculateSHA(resource);
    builder.addAttribute(Namespaces.NS_CONTENT, sha);
   
    String location = calculateLocation(resource);
    builder.addAttribute(Namespaces.ATTR_CONTENT_URL, location);

    long size = resource.getSize();
    if (size > 0L) builder.addAttribute(Namespaces.ATTR_CONTENT_SIZE, size);
   
    builder.addAttribute(Namespaces.ATTR_CONTENT_MIME, MIME_TYPE_OSGI_BUNDLE);
   
    capabilities.add(builder.buildCapability());
  }
View Full Code Here

   
    return props;
  }

  private void doBundleAndHost(Resource resource, List<? super Capability> caps) throws Exception {
    Builder bundleBuilder = new Builder().setNamespace(Namespaces.NS_WIRING_BUNDLE);
    Builder hostBuilder   = new Builder().setNamespace(Namespaces.NS_WIRING_HOST);
    boolean allowFragments = true;
   
    Attributes attribs = resource.getManifest().getMainAttributes();
    if (attribs.getValue(Constants.FRAGMENT_HOST) != null)
      return;
   
    SymbolicName bsn = Util.getSymbolicName(resource);
    Version version = Util.getVersion(resource);
   
    bundleBuilder.addAttribute(Namespaces.NS_WIRING_BUNDLE, bsn.getName())
      .addAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE, version);
    hostBuilder.addAttribute(Namespaces.NS_WIRING_HOST, bsn.getName())
      .addAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE, version);
   
    for (Entry<String, String> attribEntry : bsn.getAttributes().entrySet()) {
      String key = attribEntry.getKey();
      if (key.endsWith(":")) {
        String directiveName = key.substring(0, key.length() - 1);
        if (Constants.FRAGMENT_ATTACHMENT_DIRECTIVE.equalsIgnoreCase(directiveName)) {
          if (Constants.FRAGMENT_ATTACHMENT_NEVER.equalsIgnoreCase(attribEntry.getValue()))
            allowFragments = false;
        } else if (!Constants.SINGLETON_DIRECTIVE.equalsIgnoreCase(directiveName)) {
          bundleBuilder.addDirective(directiveName, attribEntry.getValue());
        }
      } else {
        bundleBuilder.addAttribute(key, attribEntry.getValue());
      }
    }
   
    caps.add(bundleBuilder.buildCapability());
    if (allowFragments)
      caps.add(hostBuilder.buildCapability());
  }
View Full Code Here

    Manifest manifest = resource.getManifest();
   
    String exportsStr = manifest.getMainAttributes().getValue(Constants.EXPORT_PACKAGE);
    Map<String, Map<String, String>> exports = OSGiHeader.parseHeader(exportsStr);
    for (Entry<String, Map<String, String>> entry : exports.entrySet()) {
      Builder builder = new Builder().setNamespace(Namespaces.NS_WIRING_PACKAGE);
     
      String pkgName = OSGiHeader.removeDuplicateMarker(entry.getKey());
      builder.addAttribute(Namespaces.NS_WIRING_PACKAGE, pkgName);
     
      String versionStr = entry.getValue().get(Constants.VERSION_ATTRIBUTE);
      Version version = (versionStr != null) ? new Version(versionStr) : new Version(0, 0, 0);
      builder.addAttribute(Namespaces.ATTR_VERSION, version);

      for (Entry<String, String> attribEntry : entry.getValue().entrySet()) {
        String key = attribEntry.getKey();
        if (!"specification-version".equalsIgnoreCase(key) && !Constants.VERSION_ATTRIBUTE.equalsIgnoreCase(key)) {
          if (key.endsWith(":"))
            builder.addDirective(key.substring(0, key.length() - 1), attribEntry.getValue());
          else
            builder.addAttribute(key, attribEntry.getValue());
        }
      }
     
      SymbolicName bsn = Util.getSymbolicName(resource);
      builder.addAttribute(Namespaces.ATTR_BUNDLE_SYMBOLIC_NAME, bsn.getName());
      Version bundleVersion = Util.getVersion(resource);
      builder.addAttribute(Namespaces.ATTR_BUNDLE_VERSION, bundleVersion);
     
      caps.add(builder.buildCapability());
    }
  }
View Full Code Here

        filter.insert(0, "(&");
        Util.addVersionFilter(filter, version, VersionKey.PackageVersion);
        filter.append(")");
      }
     
      Builder builder = new Builder()
        .setNamespace(Namespaces.NS_WIRING_PACKAGE)
        .addDirective(Namespaces.DIRECTIVE_FILTER, filter.toString());
     
      for (Entry<String, String> attribEntry : entry.getValue().entrySet()) {
        String key = attribEntry.getKey();
       
        if (!Constants.VERSION_ATTRIBUTE.equalsIgnoreCase(key) && !"specification-version".equals(key)) {
          if (key.endsWith(":")) {
            String directive = key.substring(0, key.length() - 1);
            builder.addDirective(directive, attribEntry.getValue());
          } else {
            builder.addAttribute(key, attribEntry.getValue());
          }
        }
      }

      reqs.add(builder.buildRequirement());
    }
  }
View Full Code Here

TOP

Related Classes of org.osgi.service.indexer.Builder

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.