示例#1
0
 final void freeHolders() {
   synchronized (refHolders) {
     for (Iterator<Map.Entry<String, LinkedList<RefHolder>>> i1 = refHolders.entrySet().iterator();
         i1.hasNext(); ) {
       Map.Entry<String, LinkedList<RefHolder>> e = i1.next();
       String oid = e.getKey();
       LinkedList<RefHolder> l = e.getValue();
       for (Iterator<RefHolder> i2 = l.iterator(); i2.hasNext(); ) {
         RefHolder rh = i2.next();
         for (boolean done = false; !done; ) {
           done = rh.release();
           _java_environment.revokeInterface(oid, rh.getType());
           release();
         }
       }
     }
     refHolders.clear();
   }
 }
示例#2
0
 final void remRefHolder(Type type, String oid) {
   synchronized (refHolders) {
     LinkedList<RefHolder> l = refHolders.get(oid);
     if (l == null) {
       return;
     }
     for (RefHolder rh : l) {
       if (rh.getType().equals(type)) {
         try {
           if (rh.release()) {
             l.remove(rh);
             if (l.isEmpty()) {
               refHolders.remove(oid);
             }
           }
         } finally {
           release();
         }
         break;
       }
     }
   }
 }