home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / beans / beancontext / BeanContextServicesSupport$BCSSChild.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.0 KB  |  234 lines

  1. package java.beans.beancontext;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.TooManyListenersException;
  8.  
  9. public class BeanContextServicesSupport$BCSSChild extends BeanContextSupport.BCSChild {
  10.    private transient HashMap serviceClasses;
  11.    private transient HashMap serviceRequestors;
  12.    // $FF: synthetic field
  13.    private final BeanContextServicesSupport this$0;
  14.  
  15.    BeanContextServicesSupport$BCSSChild(BeanContextServicesSupport var1, Object var2, Object var3) {
  16.       super(var1, var2, var3);
  17.       this.this$0 = var1;
  18.    }
  19.  
  20.    synchronized void usingService(Object var1, Object var2, Class var3, BeanContextServiceProvider var4, boolean var5, BeanContextServiceRevokedListener var6) throws TooManyListenersException, UnsupportedOperationException {
  21.       BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var7 = null;
  22.       if (this.serviceClasses == null) {
  23.          this.serviceClasses = new HashMap(1);
  24.       } else {
  25.          var7 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef)this.serviceClasses.get(var3);
  26.       }
  27.  
  28.       if (var7 == null) {
  29.          var7 = new BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef(this, var3, var4, var5);
  30.          this.serviceClasses.put(var3, var7);
  31.       } else {
  32.          var7.verifyAndMaybeSetProvider(var4, var5);
  33.          var7.verifyRequestor(var1, var6);
  34.       }
  35.  
  36.       var7.addRequestor(var1, var6);
  37.       var7.addRef(var5);
  38.       BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var8 = null;
  39.       Object var9 = null;
  40.       if (this.serviceRequestors == null) {
  41.          this.serviceRequestors = new HashMap(1);
  42.       } else {
  43.          var9 = (Map)this.serviceRequestors.get(var1);
  44.       }
  45.  
  46.       if (var9 == null) {
  47.          var9 = new HashMap(1);
  48.          this.serviceRequestors.put(var1, var9);
  49.       } else {
  50.          var8 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)((Map)var9).get(var2);
  51.       }
  52.  
  53.       if (var8 == null) {
  54.          var8 = new BeanContextServicesSupport.BCSSChild.BCSSCServiceRef(this, var7, var5);
  55.          ((Map)var9).put(var2, var8);
  56.       } else {
  57.          var8.addRef();
  58.       }
  59.  
  60.    }
  61.  
  62.    synchronized void releaseService(Object var1, Object var2) {
  63.       if (this.serviceRequestors != null) {
  64.          Map var3 = (Map)this.serviceRequestors.get(var1);
  65.          if (var3 != null) {
  66.             BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var4 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var3.get(var2);
  67.             if (var4 != null) {
  68.                BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var5 = var4.getServiceClassRef();
  69.                boolean var6 = var4.isDelegated();
  70.                BeanContextServiceProvider var7 = var6 ? var5.getDelegateProvider() : var5.getServiceProvider();
  71.                var7.releaseService(this.this$0.getBeanContextServicesPeer(), var1, var2);
  72.                var5.releaseRef(var6);
  73.                if (var4.release() == 0) {
  74.                   var3.remove(var2);
  75.                   if (var3.isEmpty()) {
  76.                      this.serviceRequestors.remove(var1);
  77.                      var5.removeRequestor(var1);
  78.                   }
  79.  
  80.                   if (this.serviceRequestors.isEmpty()) {
  81.                      this.serviceRequestors = null;
  82.                   }
  83.  
  84.                   if (var5.isEmpty()) {
  85.                      this.serviceClasses.remove(var5.getServiceClass());
  86.                   }
  87.  
  88.                   if (this.serviceClasses.isEmpty()) {
  89.                      this.serviceClasses = null;
  90.                   }
  91.                }
  92.  
  93.             }
  94.          }
  95.       }
  96.    }
  97.  
  98.    synchronized void revokeService(Class var1, boolean var2, boolean var3) {
  99.       if (this.serviceClasses != null) {
  100.          BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var4 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef)this.serviceClasses.get(var1);
  101.          if (var4 != null) {
  102.             Iterator var5 = var4.cloneOfEntries();
  103.             BeanContextServiceRevokedEvent var6 = new BeanContextServiceRevokedEvent(this.this$0.getBeanContextServicesPeer(), var1, var3);
  104.  
  105.             BeanContextServiceRevokedListener var9;
  106.             for(boolean var7 = false; var5.hasNext(); var9.serviceRevoked(var6)) {
  107.                Map.Entry var8 = (Map.Entry)var5.next();
  108.                var9 = (BeanContextServiceRevokedListener)var8.getValue();
  109.                if (var3) {
  110.                   Object var10 = var8.getKey();
  111.                   Map var11 = (Map)this.serviceRequestors.get(var10);
  112.                   if (var11 != null) {
  113.                      Iterator var12 = var11.entrySet().iterator();
  114.  
  115.                      while(var12.hasNext()) {
  116.                         Map.Entry var13 = (Map.Entry)var12.next();
  117.                         BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var14 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var13.getValue();
  118.                         if (var14.getServiceClassRef().equals(var4) && var2 == var14.isDelegated()) {
  119.                            var12.remove();
  120.                         }
  121.                      }
  122.  
  123.                      if (var7 = var11.isEmpty()) {
  124.                         this.serviceRequestors.remove(var10);
  125.                      }
  126.                   }
  127.  
  128.                   if (var7) {
  129.                      var4.removeRequestor(var10);
  130.                   }
  131.                }
  132.             }
  133.  
  134.             if (var3 && this.serviceClasses != null) {
  135.                if (var4.isEmpty()) {
  136.                   this.serviceClasses.remove(var1);
  137.                }
  138.  
  139.                if (this.serviceClasses.isEmpty()) {
  140.                   this.serviceClasses = null;
  141.                }
  142.             }
  143.  
  144.             if (this.serviceRequestors != null && this.serviceRequestors.isEmpty()) {
  145.                this.serviceRequestors = null;
  146.             }
  147.  
  148.          }
  149.       }
  150.    }
  151.  
  152.    void cleanupReferences() {
  153.       if (this.serviceRequestors != null) {
  154.          Iterator var1 = this.serviceRequestors.entrySet().iterator();
  155.  
  156.          while(var1.hasNext()) {
  157.             Map.Entry var2 = (Map.Entry)var1.next();
  158.             Object var3 = var2.getKey();
  159.             Iterator var4 = ((Map)var2.getValue()).entrySet().iterator();
  160.             var1.remove();
  161.  
  162.             while(var4.hasNext()) {
  163.                Map.Entry var5 = (Map.Entry)var4.next();
  164.                Object var6 = var5.getKey();
  165.                BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var7 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var5.getValue();
  166.                BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var8 = var7.getServiceClassRef();
  167.                BeanContextServiceProvider var9 = var7.isDelegated() ? var8.getDelegateProvider() : var8.getServiceProvider();
  168.                var8.removeRequestor(var3);
  169.                var4.remove();
  170.  
  171.                while(var7.release() >= 0) {
  172.                   var9.releaseService(this.this$0.getBeanContextServicesPeer(), var3, var6);
  173.                }
  174.             }
  175.          }
  176.  
  177.          this.serviceRequestors = null;
  178.          this.serviceClasses = null;
  179.       }
  180.    }
  181.  
  182.    void revokeAllDelegatedServicesNow() {
  183.       if (this.serviceClasses != null) {
  184.          for(BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var2 : new HashSet(this.serviceClasses.values())) {
  185.             if (var2.isDelegated()) {
  186.                Iterator var3 = var2.cloneOfEntries();
  187.                BeanContextServiceRevokedEvent var4 = new BeanContextServiceRevokedEvent(this.this$0.getBeanContextServicesPeer(), var2.getServiceClass(), true);
  188.                boolean var5 = false;
  189.  
  190.                while(var3.hasNext()) {
  191.                   Map.Entry var6 = (Map.Entry)var3.next();
  192.                   BeanContextServiceRevokedListener var7 = (BeanContextServiceRevokedListener)var6.getValue();
  193.                   Object var8 = var6.getKey();
  194.                   Map var9 = (Map)this.serviceRequestors.get(var8);
  195.                   if (var9 != null) {
  196.                      Iterator var10 = var9.entrySet().iterator();
  197.  
  198.                      while(var10.hasNext()) {
  199.                         Map.Entry var11 = (Map.Entry)var10.next();
  200.                         BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var12 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var11.getValue();
  201.                         if (var12.getServiceClassRef().equals(var2) && var12.isDelegated()) {
  202.                            var10.remove();
  203.                         }
  204.                      }
  205.  
  206.                      if (var5 = var9.isEmpty()) {
  207.                         this.serviceRequestors.remove(var8);
  208.                      }
  209.                   }
  210.  
  211.                   if (var5) {
  212.                      var2.removeRequestor(var8);
  213.                   }
  214.  
  215.                   var7.serviceRevoked(var4);
  216.                   if (var2.isEmpty()) {
  217.                      this.serviceClasses.remove(var2.getServiceClass());
  218.                   }
  219.                }
  220.             }
  221.          }
  222.  
  223.          if (this.serviceClasses.isEmpty()) {
  224.             this.serviceClasses = null;
  225.          }
  226.  
  227.          if (this.serviceRequestors != null && this.serviceRequestors.isEmpty()) {
  228.             this.serviceRequestors = null;
  229.          }
  230.  
  231.       }
  232.    }
  233. }
  234.