Example #1
0
 Object remove(VersionSupplier toBeRemoved) {
   VersionSupplier[] existing = (VersionSupplier[]) internal.get(toBeRemoved.getName());
   if (existing != null) {
     for (int i = 0; i < existing.length; i++) {
       if (toBeRemoved == existing[i]) {
         remove(existing, toBeRemoved.getName(), i);
         return toBeRemoved;
       }
     }
   }
   return null;
 }
Example #2
0
 boolean contains(VersionSupplier vs) {
   VersionSupplier[] existing = (VersionSupplier[]) internal.get(vs.getName());
   if (existing == null) return false;
   for (int i = 0; i < existing.length; i++) {
     if (existing[i] == vs) return true;
   }
   return false;
 }
Example #3
0
 Object put(VersionSupplier versionSupplier) {
   VersionSupplier[] existing = (VersionSupplier[]) internal.get(versionSupplier.getName());
   if (existing == null) {
     VersionSupplier[] vss = new VersionSupplier[1];
     vss[0] = versionSupplier;
     internal.put(versionSupplier.getName(), vss);
   } else {
     for (int i = 0; i < existing.length; i++) {
       VersionSupplier e = existing[i];
       if (e == versionSupplier) return e;
       if (versionSupplier.getBundle().isResolved() && !e.getBundle().isResolved()) {
         // Put resolved bundles ahead of unresolved bundles
         internal.put(versionSupplier.getName(), add(i, versionSupplier, existing));
         return null;
       } else if (versionSupplier.getBundle().isResolved() == e.getBundle().isResolved()) {
         if (versionSupplier.getVersion().compareTo(e.getVersion()) > 0) {
           // Put highest versions first
           internal.put(versionSupplier.getName(), add(i, versionSupplier, existing));
           return null;
         } else if (e.getVersion().equals(versionSupplier.getVersion())) {
           if (versionSupplier.getBundle().getBundleId() < e.getBundle().getBundleId()) {
             // Versions match - order by bundle ID
             internal.put(versionSupplier.getName(), add(i, versionSupplier, existing));
             return e;
           }
         }
       }
     }
     // Lowest version, so add at end
     internal.put(versionSupplier.getName(), add(existing.length, versionSupplier, existing));
   }
   return null;
 }