You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/06/10 13:28:24 UTC

svn commit: r1747707 - in /qpid/java/trunk/broker-core/src: main/java/org/apache/qpid/server/model/ test/java/org/apache/qpid/server/model/testmodels/hierarchy/ test/java/org/apache/qpid/server/model/testmodels/singleton/

Author: rgodfrey
Date: Fri Jun 10 13:28:24 2016
New Revision: 1747707

URL: http://svn.apache.org/viewvc?rev=1747707&view=rev
Log:
QPID-7221 : Allow for attributes to have their defaults copied / materialized at creation time.  Apply to virtual host isDeadLetterQueueEnabled

Added:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java   (with props)
Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableAttribute.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableInjectedAttribute.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Fri Jun 10 13:28:24 2016
@@ -763,16 +763,7 @@ public abstract class AbstractConfigured
             {
                 if (_dynamicState.compareAndSet(DynamicState.UNINIT, DynamicState.OPENED))
                 {
-                    final AuthenticatedPrincipal currentUser = SecurityManager.getCurrentUser();
-                    if (currentUser != null)
-                    {
-                        String currentUserName = currentUser.getName();
-                        _attributes.put(LAST_UPDATED_BY, currentUserName);
-                        _attributes.put(CREATED_BY, currentUserName);
-                    }
-                    final Date currentTime = new Date();
-                    _attributes.put(LAST_UPDATED_TIME, currentTime);
-                    _attributes.put(CREATED_TIME, currentTime);
+                    initializeAttributes();
 
                     CreateExceptionHandler createExceptionHandler = new CreateExceptionHandler();
                     try
@@ -826,6 +817,50 @@ public abstract class AbstractConfigured
 
     }
 
+    private void initializeAttributes()
+    {
+        final AuthenticatedPrincipal currentUser = SecurityManager.getCurrentUser();
+        if (currentUser != null)
+        {
+            String currentUserName = currentUser.getName();
+            _attributes.put(LAST_UPDATED_BY, currentUserName);
+            _attributes.put(CREATED_BY, currentUserName);
+        }
+
+        final Date currentTime = new Date();
+        _attributes.put(LAST_UPDATED_TIME, currentTime);
+        _attributes.put(CREATED_TIME, currentTime);
+
+        ConfiguredObject<?> proxyForInitialization = null;
+        for(ConfiguredObjectAttribute<?,?> attr : _attributeTypes.values())
+        {
+            if(!attr.isDerived())
+            {
+                ConfiguredSettableAttribute autoAttr = (ConfiguredSettableAttribute)attr;
+                final boolean isPresent = _attributes.containsKey(attr.getName());
+                final boolean hasDefault = !"".equals(autoAttr.defaultValue());
+                if(!isPresent && hasDefault)
+                {
+                    switch(autoAttr.getInitialization())
+                    {
+                        case copy:
+                            _attributes.put(autoAttr.getName(), autoAttr.defaultValue());
+                            break;
+                        case materialize:
+
+                            if(proxyForInitialization == null)
+                            {
+                                proxyForInitialization = createProxyForInitialization(_attributes);
+                            }
+                            _attributes.put(autoAttr.getName(), autoAttr.convert(autoAttr.defaultValue(),
+                                                                                 proxyForInitialization));
+                            break;
+                    }
+                }
+            }
+        }
+    }
+
     protected void validateOnCreate()
     {
     }
@@ -2614,6 +2649,13 @@ public abstract class AbstractConfigured
                                                             new AttributeGettingHandler(attributes, _attributeTypes, this));
     }
 
+    private ConfiguredObject<?> createProxyForInitialization(final Map<String, Object> attributes)
+    {
+        return (ConfiguredObject<?>) Proxy.newProxyInstance(getClass().getClassLoader(),
+                                                            new Class<?>[]{_bestFitInterface},
+                                                            new AttributeInitializationInvocationHandler(attributes, _attributeTypes, this));
+    }
+
     private ConfiguredObject<?> createProxyForAuthorisation(final Class<? extends ConfiguredObject> category,
                                                             final Map<String, Object> attributes,
                                                             final ConfiguredObject<?> parent,
@@ -3000,6 +3042,35 @@ public abstract class AbstractConfigured
         {
             return _configuredObject.getCategoryClass();
         }
+
+        ConfiguredObject<?> getConfiguredObject()
+        {
+            return _configuredObject;
+        }
+    }
+
+    private static class AttributeInitializationInvocationHandler extends AttributeGettingHandler
+    {
+
+        AttributeInitializationInvocationHandler(final Map<String, Object> modifiedAttributes,
+                                                 final Map<String, ConfiguredObjectAttribute<?, ?>> attributeTypes,
+                                                 final ConfiguredObject<?> configuredObject)
+        {
+            super(modifiedAttributes, attributeTypes, configuredObject);
+        }
+
+        @Override
+        public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable
+        {
+            if (Arrays.asList("getModel", "getCategoryClass", "getParent").contains(method.getName()))
+            {
+                return method.invoke(getConfiguredObject(), args);
+            }
+            else
+            {
+                return super.invoke(proxy, method, args);
+            }
+        }
     }
 
     private static class AuthorisationProxyInvocationHandler extends AttributeGettingHandler

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java Fri Jun 10 13:28:24 2016
@@ -175,6 +175,12 @@ public class ConfiguredAutomatedAttribut
         return _annotation.oversizedAltText();
     }
 
+    @Override
+    public Initialization getInitialization()
+    {
+        return _annotation.initialization();
+    }
+
     public String getDescription()
     {
         return _annotation.description();

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableAttribute.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableAttribute.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableAttribute.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableAttribute.java Fri Jun 10 13:28:24 2016
@@ -40,4 +40,5 @@ public interface ConfiguredSettableAttri
 
     T convert(Object value, C object);
 
+    Initialization getInitialization();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableInjectedAttribute.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableInjectedAttribute.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableInjectedAttribute.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredSettableInjectedAttribute.java Fri Jun 10 13:28:24 2016
@@ -53,6 +53,7 @@ public class ConfiguredSettableInjectedA
     private final String _description;
     private final String[] _validValues;
     private final String _validValuePattern;
+    private Initialization _initialization;
 
     public ConfiguredSettableInjectedAttribute(final String name,
                                                final Class<T> type,
@@ -66,7 +67,9 @@ public class ConfiguredSettableInjectedA
                                                final String oversizedAltText,
                                                final String description,
                                                final String[] validValues,
-                                               final String validValuePattern, final TypeValidator typeValidator)
+                                               final String validValuePattern,
+                                               final TypeValidator typeValidator,
+                                               final Initialization initialization)
     {
         super(name, type, genericType, typeValidator);
         _converter = AttributeValueConverter.getConverter(type, genericType);
@@ -80,6 +83,7 @@ public class ConfiguredSettableInjectedA
         _description = description;
         _validValues = validValues;
         _validValuePattern = validValuePattern;
+        _initialization = initialization;
 
         Method validValuesMethod = null;
 
@@ -159,6 +163,12 @@ public class ConfiguredSettableInjectedA
         return _defaultValue;
     }
 
+    @Override
+    public Initialization getInitialization()
+    {
+        return _initialization;
+    }
+
     public boolean isSecure()
     {
         return _secure;

Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java?rev=1747707&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java Fri Jun 10 13:28:24 2016
@@ -0,0 +1,28 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.model;
+
+public enum Initialization
+{
+    none,
+    copy,
+    materialize
+}

Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Initialization.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java Fri Jun 10 13:28:24 2016
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.model;
 
+import static org.apache.qpid.server.model.Initialization.none;
+
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -41,6 +43,7 @@ public @interface ManagedAttribute
     String secureValueFilter() default "";
     /** If true, the model attribute value cannot be mutated after construction. */
     boolean immutable() default false;
+    Initialization initialization() default none;
 
     boolean updateAttributeDespiteUnchangedValue() default false;
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Fri Jun 10 13:28:24 2016
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.model;
 
+import static org.apache.qpid.server.model.Initialization.materialize;
+
 import java.security.AccessControlContext;
 import java.security.AccessControlException;
 import java.security.Principal;
@@ -81,7 +83,7 @@ public interface VirtualHost<X extends V
     public static final boolean DEFAULT_DEAD_LETTER_QUEUE_ENABLED = false;
     String DEFAULT_DLE_NAME_SUFFIX = "_DLE";
 
-    @ManagedAttribute( defaultValue = "${queue.deadLetterQueueEnabled}")
+    @ManagedAttribute( defaultValue = "${queue.deadLetterQueueEnabled}", initialization = materialize)
     boolean isQueue_deadLetterQueueEnabled();
 
     @ManagedContextDefault( name = "virtualhost.housekeepingCheckPeriod")

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java Fri Jun 10 13:28:24 2016
@@ -127,7 +127,7 @@ public class InjectedAttributeTest exten
                                                                              "",
                                                                              "",
                                                                              null,
-                                                                             "", validator);
+                                                                             "", validator, Initialization.none);
 
         TestModel model = new TestModel(null, new TestInjector(attrInjector));
 
@@ -175,7 +175,7 @@ public class InjectedAttributeTest exten
                                                                              "",
                                                                              "",
                                                                              new String[] { "42", "49" },
-                                                                             "", validator);
+                                                                             "", validator, Initialization.none);
 
         TestModel model = new TestModel(null, new TestInjector(attrInjector));
 
@@ -203,19 +203,19 @@ public class InjectedAttributeTest exten
     {
         final ConfiguredSettableInjectedAttribute<?, ?> attribute =
                 new ConfiguredSettableInjectedAttribute<TestCar<?>, Colour>("trimColour",
-                                                                             Colour.class,
-                                                                             Colour.class,
-                                                                             Colour.BLACK.name(),
-                                                                             false,
-                                                                             true,
-                                                                             false,
-                                                                             "",
-                                                                             false,
-                                                                             "",
-                                                                             "",
-                                                                             null,
-                                                                             "",
-                                                                             null);
+                                                                            Colour.class,
+                                                                            Colour.class,
+                                                                            Colour.BLACK.name(),
+                                                                            false,
+                                                                            true,
+                                                                            false,
+                                                                            "",
+                                                                            false,
+                                                                            "",
+                                                                            "",
+                                                                            null,
+                                                                            "",
+                                                                            null, Initialization.none);
 
         assertEquals("The attribute's valid values should match the set of the enum",
                      Lists.newArrayList("BLACK", "RED", "BLUE", "GREY"),
@@ -238,7 +238,7 @@ public class InjectedAttributeTest exten
                                                                             "",
                                                                             new String[] {Colour.GREY.name(), Colour.BLACK.name()},
                                                                             "",
-                                                                            null);
+                                                                            null, Initialization.none);
 
         assertEquals("The attribute's valid values should match the restricted set defined on the attribute itself",
                      Lists.newArrayList("GREY", "BLACK"),

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java Fri Jun 10 13:28:24 2016
@@ -142,6 +142,53 @@ public class AbstractConfiguredObjectTes
         assertEquals(TestSingleton.DEFAULTED_VALUE_DEFAULT, object.getDefaultedValue());
     }
 
+    public void testDefaultInitialization()
+    {
+        TestSingleton object =
+                _model.getObjectFactory().create(TestSingleton.class,
+                                                 Collections.<String, Object>singletonMap(ConfiguredObject.NAME,
+                                                                                          "testDefaultInitialization")
+                                                );
+        assertEquals(object.getAttrWithDefaultFromContextNoInit(), TestSingleton.testGlobalDefault);
+        assertEquals(object.getAttrWithDefaultFromContextCopyInit(), TestSingleton.testGlobalDefault);
+        assertEquals(object.getAttrWithDefaultFromContextMaterializeInit(), TestSingleton.testGlobalDefault);
+
+        assertFalse(object.getActualAttributes().containsKey("attrWithDefaultFromContextNoInit"));
+        assertEquals("${"+TestSingleton.TEST_CONTEXT_DEFAULT+"}",object.getActualAttributes().get("attrWithDefaultFromContextCopyInit"));
+        assertEquals(TestSingleton.testGlobalDefault,object.getActualAttributes().get("attrWithDefaultFromContextMaterializeInit"));
+
+
+        Map<String, Object> attributes = new HashMap<>();
+        attributes.put(ConfiguredObject.NAME, "testDefaultInitialization2");
+        attributes.put(ConfiguredObject.CONTEXT, Collections.singletonMap(TestSingleton.TEST_CONTEXT_DEFAULT, "foo"));
+        object = _model.getObjectFactory().create(TestSingleton.class,
+                                         attributes
+                                        );
+        assertEquals("foo", object.getAttrWithDefaultFromContextNoInit());
+        assertEquals("foo", object.getAttrWithDefaultFromContextCopyInit());
+        assertEquals("foo", object.getAttrWithDefaultFromContextMaterializeInit());
+
+        assertFalse(object.getActualAttributes().containsKey("attrWithDefaultFromContextNoInit"));
+        assertEquals("${"+TestSingleton.TEST_CONTEXT_DEFAULT+"}",object.getActualAttributes().get("attrWithDefaultFromContextCopyInit"));
+        assertEquals("foo",object.getActualAttributes().get("attrWithDefaultFromContextMaterializeInit"));
+
+
+        setTestSystemProperty(TestSingleton.TEST_CONTEXT_DEFAULT, "bar");
+        object = _model.getObjectFactory().create(TestSingleton.class,
+                                        Collections.<String, Object>singletonMap(ConfiguredObject.NAME,
+                                                                                 "testDefaultInitialization3")
+                                       );
+
+        assertEquals("bar", object.getAttrWithDefaultFromContextNoInit());
+        assertEquals("bar", object.getAttrWithDefaultFromContextCopyInit());
+        assertEquals("bar", object.getAttrWithDefaultFromContextMaterializeInit());
+
+        assertFalse(object.getActualAttributes().containsKey("attrWithDefaultFromContextNoInit"));
+        assertEquals("${"+TestSingleton.TEST_CONTEXT_DEFAULT+"}",object.getActualAttributes().get("attrWithDefaultFromContextCopyInit"));
+        assertEquals("bar",object.getActualAttributes().get("attrWithDefaultFromContextMaterializeInit"));
+
+    }
+
     public void testEnumAttributeValueFromString()
     {
         final String objectName = "myName";

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java Fri Jun 10 13:28:24 2016
@@ -18,6 +18,9 @@
  */
 package org.apache.qpid.server.model.testmodels.singleton;
 
+import static org.apache.qpid.server.model.Initialization.copy;
+import static org.apache.qpid.server.model.Initialization.materialize;
+
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -25,6 +28,7 @@ import java.util.Set;
 
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.DerivedAttribute;
+import org.apache.qpid.server.model.Initialization;
 import org.apache.qpid.server.model.ManagedAttribute;
 import org.apache.qpid.server.model.ManagedContextDefault;
 import org.apache.qpid.server.model.ManagedObject;
@@ -111,4 +115,13 @@ public interface TestSingleton<X extends
     @ManagedStatistic(units = StatisticUnit.ABSOLUTE_TIME, statisticType = StatisticType.POINT_IN_TIME)
     Long getLongStatistic();
 
+    @ManagedAttribute( defaultValue = "${TEST_CONTEXT_DEFAULT}")
+    String getAttrWithDefaultFromContextNoInit();
+
+    @ManagedAttribute( defaultValue = "${TEST_CONTEXT_DEFAULT}", initialization = copy)
+    String getAttrWithDefaultFromContextCopyInit();
+
+    @ManagedAttribute( defaultValue = "${TEST_CONTEXT_DEFAULT}", initialization = materialize)
+    String getAttrWithDefaultFromContextMaterializeInit();
+
 }

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java?rev=1747707&r1=1747706&r2=1747707&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java Fri Jun 10 13:28:24 2016
@@ -83,6 +83,15 @@ public class TestSingletonImpl extends A
     @ManagedAttributeField
     private Date _dateValue;
 
+    @ManagedAttributeField
+    private String _attrWithDefaultFromContextNoInit;
+
+    @ManagedAttributeField
+    private String _attrWithDefaultFromContextCopyInit;
+
+    @ManagedAttributeField
+    private String _attrWithDefaultFromContextMaterializeInit;
+
     @ManagedObjectFactoryConstructor
     public TestSingletonImpl(final Map<String, Object> attributes)
     {
@@ -206,4 +215,22 @@ public class TestSingletonImpl extends A
     {
         return System.currentTimeMillis();
     }
+
+    @Override
+    public String getAttrWithDefaultFromContextNoInit()
+    {
+        return _attrWithDefaultFromContextNoInit;
+    }
+
+    @Override
+    public String getAttrWithDefaultFromContextCopyInit()
+    {
+        return _attrWithDefaultFromContextCopyInit;
+    }
+
+    @Override
+    public String getAttrWithDefaultFromContextMaterializeInit()
+    {
+        return _attrWithDefaultFromContextMaterializeInit;
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org