Package aQute.bnd.osgi.Descriptors

Examples of aQute.bnd.osgi.Descriptors.PackageRef


   * @return
   */
  public Set<PackageRef> getUnreachable() {
    Set<PackageRef> unreachable = new HashSet<PackageRef>(uses.keySet()); // all
    for (Iterator<PackageRef> r = exports.keySet().iterator(); r.hasNext();) {
      PackageRef packageRef = r.next();
      removeTransitive(packageRef, unreachable);
    }
    if (activator != null) {
      removeTransitive(activator.getPackageRef(), unreachable);
    }
View Full Code Here


    // the used packages for each exported package to find out
    // if it refers to an internal package.
    //

    for (Iterator<PackageRef> i = toBeImported.iterator(); i.hasNext();) {
      PackageRef next = i.next();
      Collection<PackageRef> usedByExportedPackage = this.uses.get(next);

      // We had an NPE on usedByExportedPackage in GF.
      // I guess this can happen with hard coded
      // imports that do not match reality ...
      if (usedByExportedPackage == null || usedByExportedPackage.isEmpty()) {
        continue;
      }

      for (PackageRef privatePackage : privatePackages) {
        if (usedByExportedPackage.contains(privatePackage)) {
          i.remove();
          break;
        }
      }
    }

    // Clean up attributes and generate result map
    Packages result = new Packages();
    for (Iterator<PackageRef> i = toBeImported.iterator(); i.hasNext();) {
      PackageRef ep = i.next();
      Attrs parameters = exports.get(ep);

      String noimport = parameters == null ? null : parameters.get(NO_IMPORT_DIRECTIVE);
      if (noimport != null && noimport.equalsIgnoreCase("true"))
        continue;
View Full Code Here

      Manifest m = jar.getManifest();
      if (m != null) {
        Domain domain = Domain.domain(m);
        Parameters exported = domain.getExportPackage();
        for (Entry<String,Attrs> e : exported.entrySet()) {
          PackageRef ref = getPackageRef(e.getKey());
          if (!classpathExports.containsKey(ref)) {
            // TODO e.getValue().put(SOURCE_DIRECTIVE,
            // jar.getBsn()+"-"+jar.getVersion());

            classpathExports.put(ref, e.getValue());
View Full Code Here

  void doUses(Packages exports, Map<PackageRef,List<PackageRef>> uses, Packages imports) {
    if ("true".equalsIgnoreCase(getProperty(NOUSES)))
      return;

    for (Iterator<PackageRef> i = exports.keySet().iterator(); i.hasNext();) {
      PackageRef packageRef = i.next();
      String packageName = packageRef.getFQN();
      setProperty(CURRENT_PACKAGE, packageName);
      try {
        doUses(packageRef, exports, uses, imports);
      }
      finally {
View Full Code Here

      sharedPackages.remove(packageRef);

      StringBuilder sb = new StringBuilder();
      String del = "";
      for (Iterator<PackageRef> u = sharedPackages.iterator(); u.hasNext();) {
        PackageRef usedPackage = u.next();
        if (!usedPackage.isJava()) {
          sb.append(del);
          sb.append(usedPackage.getFQN());
          del = ",";
        }
      }
      if (override.indexOf('$') >= 0) {
        setProperty(CURRENT_USES, sb.toString());
View Full Code Here

    unreachable.remove(name);

    List<PackageRef> ref = uses.get(name);
    if (ref != null) {
      for (Iterator<PackageRef> r = ref.iterator(); r.hasNext();) {
        PackageRef element = r.next();
        removeTransitive(element, unreachable);
      }
    }
  }
View Full Code Here

          int n = relativePath.lastIndexOf('/');
          if (n < 0)
            n = relativePath.length();
          String relativeDir = relativePath.substring(0, n);

          PackageRef packageRef = getPackageRef(relativeDir);
          if (!packageRef.isMetaData() && !contained.containsKey(packageRef)) {
            contained.put(packageRef);

            // For each package we encounter for the first
            // time. Unfortunately we can only do this once
            // we found a class upto the bcp has a tendency
            // to overlap
            if (!packageRef.isMetaData()) {
              Resource pinfo = jar.getResource(prefix + packageRef.getPath() + "/packageinfo");
              getExportVersionsFromPackageInfo(packageRef, pinfo, classpathExports);
            }
          }
        }

        // Check class resources, we need to analyze them
        if (path.endsWith(".class")) {
          Resource resource = jar.getResource(path);
          Clazz clazz;
          Attrs info = null;

          try {
            InputStream in = resource.openInputStream();
            clazz = new Clazz(this, path, resource);
            try {
              // Check if we have a package-info
              if (relativePath.endsWith("/package-info.class")) {
                // package-info can contain an Export annotation
                info = new Attrs();
                parsePackageInfoClass(clazz, info);
              } else {
                // Otherwise we just parse it simply
                clazz.parseClassFile();
              }
            }
            finally {
              in.close();
            }
          }
          catch (Throwable e) {
            error("Invalid class file %s (%s)", e, relativePath, e);
            e.printStackTrace();
            continue next;
          }

          String calculatedPath = clazz.getClassName().getPath();
          if (!calculatedPath.equals(relativePath)) {
            // If there is a mismatch we
            // warning
            if (okToIncludeDirs) // assume already reported
              mismatched.put(clazz.getAbsolutePath(), clazz);
          } else {
            classspace.put(clazz.getClassName(), clazz);
            PackageRef packageRef = clazz.getClassName().getPackageRef();

            if (!contained.containsKey(packageRef)) {
              contained.put(packageRef);
              if (!packageRef.isMetaData()) {
                Resource pinfo = jar.getResource(prefix + packageRef.getPath() + "/packageinfo");
                getExportVersionsFromPackageInfo(packageRef, pinfo, classpathExports);
              }
            }
            if (info != null)
              contained.merge(packageRef, false, info);
View Full Code Here

  public boolean isNoBundle() {
    return isTrue(getProperty(RESOURCEONLY)) || isTrue(getProperty(NOMANIFEST));
  }

  public void referTo(TypeRef ref) {
    PackageRef pack = ref.getPackageRef();
    if (!referred.containsKey(pack))
      referred.put(pack, new Attrs());
  }
View Full Code Here

    for (Instruction instruction : filters) {
      boolean match = false;

      for (Iterator<PackageRef> i = refs.iterator(); i.hasNext();) {
        PackageRef packageRef = i.next();

        if (packageRef.isMetaData()) {
          i.remove(); // no use checking it again
          continue;
        }

        String packageName = packageRef.getFQN();

        if (instruction.matches(packageName)) {
          match = true;
          if (!instruction.isNegated()) {
            result.merge(packageRef, instruction.isDuplicate(), source.get(packageRef),
View Full Code Here

          // For each exported package in the specification JAR

          Attrs attrs = entry.getValue();
          String packageName = entry.getKey();
          PackageRef packageRef = analyzer.getPackageRef(packageName);

          String version = attrs.get(Constants.VERSION_ATTRIBUTE);

          PSpec pspec = new PSpec();
          pspec.packageName = packageName;
View Full Code Here

TOP

Related Classes of aQute.bnd.osgi.Descriptors.PackageRef

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.