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]