summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java43
1 files changed, 37 insertions, 6 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
index eda61f92b0..ec48aa7936 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
@@ -84,8 +84,18 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
private final Map<String, Object> _defaultAttributes = new HashMap<String, Object>();
private final TaskExecutor _taskExecutor;
- private final long _createdTime;
- private final String _createdBy;
+
+ @ManagedAttributeField
+ private long _createdTime;
+
+ @ManagedAttributeField
+ private String _createdBy;
+
+ @ManagedAttributeField
+ private long _lastUpdatedTime;
+
+ @ManagedAttributeField
+ private String _lastUpdatedBy;
@ManagedAttributeField
private String _name;
@@ -197,8 +207,18 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
}
}
}
- _createdTime = MapValueConverter.getLongAttribute(CREATED_TIME, attributes, System.currentTimeMillis());
- _createdBy = MapValueConverter.getStringAttribute(CREATED_BY, attributes, getCurrentUserName());
+ if(!_attributes.containsKey(CREATED_BY))
+ {
+ final AuthenticatedPrincipal currentUser = SecurityManager.getCurrentUser();
+ if(currentUser != null)
+ {
+ _attributes.put(CREATED_BY, currentUser);
+ }
+ }
+ if(!_attributes.containsKey(CREATED_TIME))
+ {
+ _attributes.put(CREATED_TIME, System.currentTimeMillis());
+ }
for(Attribute<?,?> attr : _attributeTypes.values())
{
if(attr.getAnnotation().mandatory() && !(attributes.containsKey(attr.getName())|| defaults.containsKey(attr.getName())))
@@ -334,6 +354,17 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
protected void attributeSet(String attributeName, Object oldAttributeValue, Object newAttributeValue)
{
+
+ final AuthenticatedPrincipal currentUser = SecurityManager.getCurrentUser();
+ if(currentUser != null)
+ {
+ _attributes.put(LAST_UPDATED_BY, currentUser.getName());
+ _lastUpdatedBy = currentUser.getName();
+ }
+ final long currentTime = System.currentTimeMillis();
+ _attributes.put(LAST_UPDATED_TIME, currentTime);
+ _lastUpdatedTime = currentTime;
+
synchronized (_changeListeners)
{
List<ConfigurationChangeListener> copy = new ArrayList<ConfigurationChangeListener>(_changeListeners);
@@ -659,13 +690,13 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
@Override
public String getLastUpdatedBy()
{
- return null;
+ return _lastUpdatedBy;
}
@Override
public long getLastUpdatedTime()
{
- return 0;
+ return _lastUpdatedTime;
}
@Override