コード例 #1
1
ファイル: Macro.java プロジェクト: bramk/bnd
  public String _range(String args[]) {
    verifyCommand(args, _rangeHelp, _rangePattern, 2, 3);
    Version version = null;
    if (args.length >= 3) version = new Version(args[2]);
    else {
      String v = domain.getProperty("@");
      if (v == null) return null;
      version = new Version(v);
    }
    String spec = args[1];

    Matcher m = RANGE_MASK.matcher(spec);
    m.matches();
    String floor = m.group(1);
    String floorMask = m.group(2);
    String ceilingMask = m.group(3);
    String ceiling = m.group(4);

    String left = version(version, floorMask);
    String right = version(version, ceilingMask);
    StringBuilder sb = new StringBuilder();
    sb.append(floor);
    sb.append(left);
    sb.append(",");
    sb.append(right);
    sb.append(ceiling);

    String s = sb.toString();
    VersionRange vr = new VersionRange(s);
    if (!(vr.includes(vr.getHigh()) || vr.includes(vr.getLow()))) {
      domain.error(
          "${range} macro created an invalid range %s from %s and mask %s", s, version, spec);
    }
    return sb.toString();
  }
コード例 #2
1
 public void computeImports() throws CoreException {
   // some existing imports may valid and can be preserved
   Vector preservedImports = new Vector(fImports.size());
   // new imports
   ArrayList newImports = new ArrayList();
   IPluginModelBase model = null;
   for (int i = 0; i < fPlugins.size(); i++) {
     IFeaturePlugin fp = (IFeaturePlugin) fPlugins.get(i);
     ModelEntry entry = PluginRegistry.findEntry(fp.getId());
     if (entry == null) continue;
     IPluginModelBase[] models = entry.getActiveModels();
     for (int j = 0; j < models.length; j++) {
       IPluginModelBase m = models[j];
       if (fp.getVersion().equals(m.getPluginBase().getVersion())
           || fp.getVersion().equals("0.0.0")) // $NON-NLS-1$
       model = m;
     }
     if (model != null) {
       addPluginImports(preservedImports, newImports, model.getPluginBase());
       if (model.isFragmentModel()) {
         BundleDescription desc = model.getBundleDescription();
         if (desc == null) continue;
         HostSpecification hostSpec = desc.getHost();
         String id = hostSpec.getName();
         String version = null;
         int match = IMatchRules.NONE;
         VersionRange versionRange = hostSpec.getVersionRange();
         if (!(versionRange == null || VersionRange.emptyRange.equals(versionRange))) {
           version =
               versionRange.getMinimum() != null ? versionRange.getMinimum().toString() : null;
           match = PluginBase.getMatchRule(versionRange);
         }
         addNewDependency(id, version, match, preservedImports, newImports);
       }
     }
   }
   // preserve imports of features
   for (int i = 0; i < fImports.size(); i++) {
     IFeatureImport iimport = (IFeatureImport) fImports.get(i);
     if (iimport.getType() == IFeatureImport.FEATURE) preservedImports.add(iimport);
   }
   // removed = old - preserved
   Vector removedImports = ((Vector) fImports.clone());
   removedImports.removeAll(preservedImports);
   // perform remove
   fImports = preservedImports;
   if (removedImports.size() > 0) {
     fireStructureChanged(
         (IFeatureImport[]) removedImports.toArray(new IFeatureImport[removedImports.size()]),
         IModelChangedEvent.REMOVE);
   }
   // perform add
   if (newImports.size() > 0) {
     fImports.addAll(newImports);
     fireStructureChanged(
         (IFeatureImport[]) newImports.toArray(new IFeatureImport[newImports.size()]),
         IModelChangedEvent.INSERT);
   }
 }
コード例 #3
0
 void dumpPackages(PrintStream out, String tag, Map map) {
   for (Iterator it = map.keySet().iterator(); it.hasNext(); ) {
     String pkg = (String) it.next();
     VersionRange spec = (VersionRange) map.get(pkg);
     boolean bSkip = false;
     String skipReason = null;
     if ("import-package".equals(tag)) {
       VersionRange exportSpec = (VersionRange) pkgExportMap.get(pkg);
       if (exportSpec != null && spec.contains(exportSpec.lowerBound)) {
         // Skip import of exported packages
         bSkip = true;
         skipReason = "own import since exported with same version ";
       }
       if (optionalPkgs.contains(pkg)) {
         // Skip import of package with optional resolution
         bSkip = true;
         skipReason = "pkg with optional resolution ";
       }
     }
     if (bSkip) {
       out.println("  <!-- skip " + skipReason + pkg + "; " + spec + " -->");
     } else {
       out.print("  <" + tag + " package=\"" + pkg + "\"");
       if ("".equals(spec)) {
         out.println("/>");
       } else {
         out.println("\n                  specification-version=\"" + spec + "\"/>");
       }
     }
   }
 }
コード例 #4
0
 static StringBuffer addFilterAttribute(
     StringBuffer filter, String attr, Object value, boolean escapeWildCard) {
   if (value instanceof VersionRange) {
     VersionRange range = (VersionRange) value;
     filter.append(range.toFilterString(attr));
   } else {
     filter
         .append('(')
         .append(attr)
         .append('=')
         .append(escapeValue(value, escapeWildCard))
         .append(')');
   }
   return filter;
 }