home *** CD-ROM | disk | FTP | other *** search
- package java.beans.beancontext;
-
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.TooManyListenersException;
-
- public class BeanContextServicesSupport$BCSSChild extends BeanContextSupport.BCSChild {
- private transient HashMap serviceClasses;
- private transient HashMap serviceRequestors;
- // $FF: synthetic field
- private final BeanContextServicesSupport this$0;
-
- BeanContextServicesSupport$BCSSChild(BeanContextServicesSupport var1, Object var2, Object var3) {
- super(var1, var2, var3);
- this.this$0 = var1;
- }
-
- synchronized void usingService(Object var1, Object var2, Class var3, BeanContextServiceProvider var4, boolean var5, BeanContextServiceRevokedListener var6) throws TooManyListenersException, UnsupportedOperationException {
- BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var7 = null;
- if (this.serviceClasses == null) {
- this.serviceClasses = new HashMap(1);
- } else {
- var7 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef)this.serviceClasses.get(var3);
- }
-
- if (var7 == null) {
- var7 = new BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef(this, var3, var4, var5);
- this.serviceClasses.put(var3, var7);
- } else {
- var7.verifyAndMaybeSetProvider(var4, var5);
- var7.verifyRequestor(var1, var6);
- }
-
- var7.addRequestor(var1, var6);
- var7.addRef(var5);
- BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var8 = null;
- Object var9 = null;
- if (this.serviceRequestors == null) {
- this.serviceRequestors = new HashMap(1);
- } else {
- var9 = (Map)this.serviceRequestors.get(var1);
- }
-
- if (var9 == null) {
- var9 = new HashMap(1);
- this.serviceRequestors.put(var1, var9);
- } else {
- var8 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)((Map)var9).get(var2);
- }
-
- if (var8 == null) {
- var8 = new BeanContextServicesSupport.BCSSChild.BCSSCServiceRef(this, var7, var5);
- ((Map)var9).put(var2, var8);
- } else {
- var8.addRef();
- }
-
- }
-
- synchronized void releaseService(Object var1, Object var2) {
- if (this.serviceRequestors != null) {
- Map var3 = (Map)this.serviceRequestors.get(var1);
- if (var3 != null) {
- BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var4 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var3.get(var2);
- if (var4 != null) {
- BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var5 = var4.getServiceClassRef();
- boolean var6 = var4.isDelegated();
- BeanContextServiceProvider var7 = var6 ? var5.getDelegateProvider() : var5.getServiceProvider();
- var7.releaseService(this.this$0.getBeanContextServicesPeer(), var1, var2);
- var5.releaseRef(var6);
- if (var4.release() == 0) {
- var3.remove(var2);
- if (var3.isEmpty()) {
- this.serviceRequestors.remove(var1);
- var5.removeRequestor(var1);
- }
-
- if (this.serviceRequestors.isEmpty()) {
- this.serviceRequestors = null;
- }
-
- if (var5.isEmpty()) {
- this.serviceClasses.remove(var5.getServiceClass());
- }
-
- if (this.serviceClasses.isEmpty()) {
- this.serviceClasses = null;
- }
- }
-
- }
- }
- }
- }
-
- synchronized void revokeService(Class var1, boolean var2, boolean var3) {
- if (this.serviceClasses != null) {
- BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var4 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef)this.serviceClasses.get(var1);
- if (var4 != null) {
- Iterator var5 = var4.cloneOfEntries();
- BeanContextServiceRevokedEvent var6 = new BeanContextServiceRevokedEvent(this.this$0.getBeanContextServicesPeer(), var1, var3);
-
- BeanContextServiceRevokedListener var9;
- for(boolean var7 = false; var5.hasNext(); var9.serviceRevoked(var6)) {
- Map.Entry var8 = (Map.Entry)var5.next();
- var9 = (BeanContextServiceRevokedListener)var8.getValue();
- if (var3) {
- Object var10 = var8.getKey();
- Map var11 = (Map)this.serviceRequestors.get(var10);
- if (var11 != null) {
- Iterator var12 = var11.entrySet().iterator();
-
- while(var12.hasNext()) {
- Map.Entry var13 = (Map.Entry)var12.next();
- BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var14 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var13.getValue();
- if (var14.getServiceClassRef().equals(var4) && var2 == var14.isDelegated()) {
- var12.remove();
- }
- }
-
- if (var7 = var11.isEmpty()) {
- this.serviceRequestors.remove(var10);
- }
- }
-
- if (var7) {
- var4.removeRequestor(var10);
- }
- }
- }
-
- if (var3 && this.serviceClasses != null) {
- if (var4.isEmpty()) {
- this.serviceClasses.remove(var1);
- }
-
- if (this.serviceClasses.isEmpty()) {
- this.serviceClasses = null;
- }
- }
-
- if (this.serviceRequestors != null && this.serviceRequestors.isEmpty()) {
- this.serviceRequestors = null;
- }
-
- }
- }
- }
-
- void cleanupReferences() {
- if (this.serviceRequestors != null) {
- Iterator var1 = this.serviceRequestors.entrySet().iterator();
-
- while(var1.hasNext()) {
- Map.Entry var2 = (Map.Entry)var1.next();
- Object var3 = var2.getKey();
- Iterator var4 = ((Map)var2.getValue()).entrySet().iterator();
- var1.remove();
-
- while(var4.hasNext()) {
- Map.Entry var5 = (Map.Entry)var4.next();
- Object var6 = var5.getKey();
- BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var7 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var5.getValue();
- BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var8 = var7.getServiceClassRef();
- BeanContextServiceProvider var9 = var7.isDelegated() ? var8.getDelegateProvider() : var8.getServiceProvider();
- var8.removeRequestor(var3);
- var4.remove();
-
- while(var7.release() >= 0) {
- var9.releaseService(this.this$0.getBeanContextServicesPeer(), var3, var6);
- }
- }
- }
-
- this.serviceRequestors = null;
- this.serviceClasses = null;
- }
- }
-
- void revokeAllDelegatedServicesNow() {
- if (this.serviceClasses != null) {
- for(BeanContextServicesSupport.BCSSChild.BCSSCServiceClassRef var2 : new HashSet(this.serviceClasses.values())) {
- if (var2.isDelegated()) {
- Iterator var3 = var2.cloneOfEntries();
- BeanContextServiceRevokedEvent var4 = new BeanContextServiceRevokedEvent(this.this$0.getBeanContextServicesPeer(), var2.getServiceClass(), true);
- boolean var5 = false;
-
- while(var3.hasNext()) {
- Map.Entry var6 = (Map.Entry)var3.next();
- BeanContextServiceRevokedListener var7 = (BeanContextServiceRevokedListener)var6.getValue();
- Object var8 = var6.getKey();
- Map var9 = (Map)this.serviceRequestors.get(var8);
- if (var9 != null) {
- Iterator var10 = var9.entrySet().iterator();
-
- while(var10.hasNext()) {
- Map.Entry var11 = (Map.Entry)var10.next();
- BeanContextServicesSupport.BCSSChild.BCSSCServiceRef var12 = (BeanContextServicesSupport.BCSSChild.BCSSCServiceRef)var11.getValue();
- if (var12.getServiceClassRef().equals(var2) && var12.isDelegated()) {
- var10.remove();
- }
- }
-
- if (var5 = var9.isEmpty()) {
- this.serviceRequestors.remove(var8);
- }
- }
-
- if (var5) {
- var2.removeRequestor(var8);
- }
-
- var7.serviceRevoked(var4);
- if (var2.isEmpty()) {
- this.serviceClasses.remove(var2.getServiceClass());
- }
- }
- }
- }
-
- if (this.serviceClasses.isEmpty()) {
- this.serviceClasses = null;
- }
-
- if (this.serviceRequestors != null && this.serviceRequestors.isEmpty()) {
- this.serviceRequestors = null;
- }
-
- }
- }
- }
-