Author: rgodfrey
Date: Wed Jul 16 20:35:11 2014
New Revision: 1611181

URL: http://svn.apache.org/r1611181
Log:
QPID-5787 : [Java Broker] Management can observe a child object before its 
constructor has completed

Modified:
    
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java

Modified: 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
 Wed Jul 16 20:35:11 2014
@@ -686,6 +686,7 @@ public class BDBHAVirtualHostNodeImpl ex
         private void recoverRemoteReplicationNode(ReplicationNode node)
         {
             BDBHARemoteReplicationNodeImpl remoteNode = new 
BDBHARemoteReplicationNodeImpl(BDBHAVirtualHostNodeImpl.this, 
nodeToAttributes(node), getReplicatedEnvironmentFacade());
+            remoteNode.registerWithParents();
             remoteNode.open();
 
             getEventLogger().message(getVirtualHostNodeLogSubject(), 
HighAvailabilityMessages.ATTACHED(remoteNode.getName(), getGroupName(), 
String.valueOf(remoteNode.getState())));

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 Wed Jul 16 20:35:11 2014
@@ -237,14 +237,6 @@ public abstract class AbstractConfigured
             _childrenByName.put(childClass, new ConcurrentHashMap<String, 
ConfiguredObject<?>>());
         }
 
-        for(ConfiguredObject<?> parent : parents.values())
-        {
-            if(parent instanceof AbstractConfiguredObject<?>)
-            {
-                ((AbstractConfiguredObject<?>)parent).registerChild(this);
-            }
-        }
-
         for(Map.Entry<Class<? extends ConfiguredObject>, ConfiguredObject<?>> 
entry : parents.entrySet())
         {
             addParent((Class<ConfiguredObject<?>>) entry.getKey(), 
entry.getValue());
@@ -405,6 +397,17 @@ public abstract class AbstractConfigured
         }
     }
 
+    public void registerWithParents()
+    {
+        for(ConfiguredObject<?> parent : _parents.values())
+        {
+            if(parent instanceof AbstractConfiguredObject<?>)
+            {
+                ((AbstractConfiguredObject<?>)parent).registerChild(this);
+            }
+        }
+    }
+
     protected void closeChildren()
     {
         applyToChildren(new Action<ConfiguredObject<?>>()
@@ -453,6 +456,7 @@ public abstract class AbstractConfigured
     {
         if(_dynamicState.compareAndSet(DynamicState.UNINIT, 
DynamicState.OPENED))
         {
+            registerWithParents();
             final AuthenticatedPrincipal currentUser = 
SecurityManager.getCurrentUser();
             if(currentUser != null)
             {

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
 Wed Jul 16 20:35:11 2014
@@ -109,7 +109,9 @@ abstract public class AbstractConfigured
         {
             Map<String,Object> attributesWithId = new HashMap<String, 
Object>(getRecord().getAttributes());
             attributesWithId.put(ConfiguredObject.ID, getRecord().getId());
-            return createInstance(attributesWithId, getParents());
+            X instance = createInstance(attributesWithId, getParents());
+            instance.registerWithParents();
+            return instance;
         }
     }
 }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
 Wed Jul 16 20:35:11 2014
@@ -61,7 +61,6 @@ public final class ConnectionAdapter ext
                 deleted();
             }
         });
-        open();
 
         conn.addSessionListener(this);
     }
@@ -215,6 +214,7 @@ public final class ConnectionAdapter ext
     public void sessionAdded(final AMQSessionModel<?, ?> session)
     {
         SessionAdapter adapter = new SessionAdapter(this, session);
+        adapter.create();
         childAdded(adapter);
     }
 

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 Wed Jul 16 20:35:11 2014
@@ -146,6 +146,7 @@ public class FileBasedGroupProviderImpl
             attrMap.put(Group.NAME, group.getName());
             GroupAdapter groupAdapter = new GroupAdapter(attrMap);
             principals.add(groupAdapter);
+            groupAdapter.registerWithParents();
             groupAdapter.open();
         }
 
@@ -407,6 +408,7 @@ public class FileBasedGroupProviderImpl
                 attrMap.put(GroupMember.ID,id);
                 attrMap.put(GroupMember.NAME, principal.getName());
                 GroupMemberAdapter groupMemberAdapter = new 
GroupMemberAdapter(attrMap);
+                groupMemberAdapter.registerWithParents();
                 groupMemberAdapter.open();
                 members.add(groupMemberAdapter);
             }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
 Wed Jul 16 20:35:11 2014
@@ -78,7 +78,6 @@ final class SessionAdapter extends Abstr
             }
         });
 
-        open();
     }
 
     private static Map<String, Object> createAttributes(final AMQSessionModel 
session)

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
 Wed Jul 16 20:35:11 2014
@@ -110,6 +110,7 @@ public abstract class PrincipalDatabaseA
             for (Principal user : users)
             {
                 PrincipalAdapter principalAdapter = new PrincipalAdapter(user);
+                principalAdapter.registerWithParents();
                 principalAdapter.open();
                 _userMap.put(user, principalAdapter);
             }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1611181&r1=1611180&r2=1611181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
 Wed Jul 16 20:35:11 2014
@@ -768,7 +768,8 @@ public abstract class AbstractVirtualHos
             connection.block();
         }
 
-        Connection c = new ConnectionAdapter(connection);
+        ConnectionAdapter c = new ConnectionAdapter(connection);
+        c.create();
         childAdded(c);
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to