You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/12/29 18:08:21 UTC
svn commit: r1648393 [1/2] - in /qpid/trunk/qpid/java/broker-core/src:
main/java/org/apache/qpid/server/plugin/
test/java/org/apache/qpid/server/model/
test/java/org/apache/qpid/server/model/testmodel/
test/java/org/apache/qpid/server/model/testmodels/...
Author: kwall
Date: Mon Dec 29 17:08:20 2014
New Revision: 1648393
URL: http://svn.apache.org/r1648393
Log:
QPID-6292: [Java Broker Tests] Refactor AbstractConfiguredObjects unit tests to use several smaller test models
We now have two test models:
* 'singleton' with a single object - used for tests around the behaviour of attributes, context variables etc
* 'hierarchy' with a hierarchy of objects - used to test parent/child interactions, supported child types, and
managed interfaces.
Added:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/AbstractConfiguredObjectTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface1.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecCar.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngine.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngineImpl.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategoryImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestEngine.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface2.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngine.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngineImpl.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass3.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCarImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestModel.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngine.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngineImpl.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass1.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestRechargeable.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface3.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCarImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/TestConfiguredObject.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestEnum.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestModel.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestRootCategory.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java
- copied, changed from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/Test2RootCategoryImpl.java
Removed:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistryTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/Test2RootCategory.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/Test2RootCategoryImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategory.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategoryImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass0.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass1.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass2.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass3.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass4.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass5.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface1.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface2.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface3.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestRootCategory.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestRootCategoryImpl.java
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java?rev=1648393&r1=1648392&r2=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java Mon Dec 29 17:08:20 2014
@@ -84,7 +84,8 @@ public class QpidServiceLoader
private boolean isDisabledConfiguredType(final ConfiguredObjectTypeFactory<?> typeFactory)
{
- return Boolean.getBoolean("qpid.type.disabled:" + typeFactory.getCategoryClass().getSimpleName().toLowerCase()
+ String simpleName = typeFactory.getCategoryClass().getSimpleName().toLowerCase();
+ return Boolean.getBoolean("qpid.type.disabled:" + simpleName
+ "." + typeFactory.getType());
}
}
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java?rev=1648393&r1=1648392&r2=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java Mon Dec 29 17:08:20 2014
@@ -37,8 +37,8 @@ import java.util.Set;
import junit.framework.TestCase;
-import org.apache.qpid.server.model.testmodel.TestModel;
-import org.apache.qpid.server.model.testmodel.TestRootCategory;
+import org.apache.qpid.server.model.testmodels.hierarchy.TestModel;
+import org.apache.qpid.server.model.testmodels.hierarchy.TestCar;
public class AttributeValueConverterTest extends TestCase
{
@@ -61,7 +61,7 @@ public class AttributeValueConverterTest
_context.put("mapWithInterpolatedContents", "{\"${mykey}\" : \"b\"}");
_context.put("mykey", "mykey1");
- ConfiguredObject object = _objectFactory.create(TestRootCategory.class, _attributes);
+ ConfiguredObject object = _objectFactory.create(TestCar.class, _attributes);
AttributeValueConverter<Map> mapConverter = getConverter(Map.class, Map.class);
@@ -96,7 +96,7 @@ public class AttributeValueConverterTest
{
_context.put("simpleCollection", "[\"a\", \"b\"]");
- ConfiguredObject object = _objectFactory.create(TestRootCategory.class, _attributes);
+ ConfiguredObject object = _objectFactory.create(TestCar.class, _attributes);
AttributeValueConverter<Collection> collectionConverter = getConverter(Collection.class, Collection.class);
@@ -131,7 +131,7 @@ public class AttributeValueConverterTest
{
_context.put("simpleList", "[\"a\", \"b\"]");
- ConfiguredObject object = _objectFactory.create(TestRootCategory.class, _attributes);
+ ConfiguredObject object = _objectFactory.create(TestCar.class, _attributes);
AttributeValueConverter<List> listConverter = getConverter(List.class, List.class);
@@ -164,7 +164,7 @@ public class AttributeValueConverterTest
{
_context.put("simpleSet", "[\"a\", \"b\"]");
- ConfiguredObject object = _objectFactory.create(TestRootCategory.class, _attributes);
+ ConfiguredObject object = _objectFactory.create(TestCar.class, _attributes);
AttributeValueConverter<Set> setConverter = getConverter(Set.class, Set.class);;
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/AbstractConfiguredObjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/AbstractConfiguredObjectTest.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/AbstractConfiguredObjectTest.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/AbstractConfiguredObjectTest.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,97 @@
+/*
+ * 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.testmodels.hierarchy;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Model;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+/**
+ * Tests behaviour of AbstractConfiguredObjects when hierarchies of objects are used together.
+ * Responsibilities to include adding/removing of children and correct firing of listeners.
+ */
+public class AbstractConfiguredObjectTest extends QpidTestCase
+{
+ private final Model _model = TestModel.getInstance();
+
+ public void testCreateCategoryDefault()
+ {
+ final String objectName = "testCreateCategoryDefault";
+ Map<String, Object> attributes = Collections.<String, Object>singletonMap(ConfiguredObject.NAME, objectName);
+
+ TestCar object = _model.getObjectFactory().create(TestCar.class, attributes);
+
+ assertEquals(objectName, object.getName());
+ assertEquals(TestStandardCarImpl.TEST_STANDARD_CAR_TYPE, object.getType());
+ assertTrue(object instanceof TestStandardCar);
+ }
+
+ public void testCreateUnrecognisedType()
+ {
+ final String objectName = "testCreateCategoryDefault";
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, objectName);
+ attributes.put(ConfiguredObject.TYPE, "notatype");
+
+ try
+ {
+ _model.getObjectFactory().create(TestCar.class, attributes);
+ fail("Exception not thrown");
+ }
+ catch (IllegalConfigurationException ice)
+ {
+ // PASS
+ }
+ }
+
+ public void testCreateCarWithEngine()
+ {
+ final String carName = "myCar";
+ Map<String, Object> carAttributes = new HashMap<>();
+ carAttributes.put(ConfiguredObject.NAME, carName);
+ carAttributes.put(ConfiguredObject.TYPE, TestKitCarImpl.TEST_KITCAR_TYPE);
+
+ TestCar car = _model.getObjectFactory().create(TestCar.class, carAttributes);
+
+ assertEquals(carName, car.getName());
+
+ assertEquals(0, car.getChildren(TestEngine.class).size());
+
+ String engineName = "myEngine";
+
+ Map<String, Object> engineAttributes = new HashMap<>();
+ engineAttributes.put(ConfiguredObject.NAME, engineName);
+ engineAttributes.put(ConfiguredObject.TYPE, TestElecEngineImpl.TEST_ELEC_ENGINE_TYPE);
+
+ TestEngine engine = (TestEngine) car.createChild(TestEngine.class, engineAttributes);
+
+ assertEquals(1, car.getChildren(TestEngine.class).size());
+
+ assertEquals(engineName, engine.getName());
+ assertEquals(TestElecEngineImpl.TEST_ELEC_ENGINE_TYPE, engine.getType());
+
+ }
+
+}
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,74 @@
+/*
+ *
+ * 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.testmodels.hierarchy;
+
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.Collection;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;
+import org.apache.qpid.server.model.ManagedInterface;
+
+public class ConfiguredObjectTypeRegistryTest extends TestCase
+{
+ private ConfiguredObjectTypeRegistry _typeRegistry = TestModel.getInstance().getTypeRegistry();
+
+ public void testTypeSpecialisations()
+ {
+ Collection<Class<? extends ConfiguredObject>> types = _typeRegistry.getTypeSpecialisations(TestEngine.class);
+
+ assertEquals("Unexpected number of specialisations for " + TestEngine.class + " Found : " + types, 3, types.size());
+ assertTrue(types.contains(TestPetrolEngineImpl.class));
+ assertTrue(types.contains(TestHybridEngineImpl.class));
+ assertTrue(types.contains(TestElecEngineImpl.class));
+ }
+
+ public void testGetValidChildTypes()
+ {
+ // The standard car restricts its engine type
+ Collection<String> standardCarValidEnginesTypes = _typeRegistry.getValidChildTypes(TestStandardCarImpl.class, TestEngine.class);
+ assertThat(standardCarValidEnginesTypes, hasItem(TestPetrolEngineImpl.TEST_PETROL_ENGINE_TYPE));
+ assertThat(standardCarValidEnginesTypes, hasItem(TestHybridEngineImpl.TEST_HYBRID_ENGINE_TYPE));
+ assertThat(standardCarValidEnginesTypes.size(), is(2));
+
+ Collection<String> kitCarValidEngineTypes = _typeRegistry.getValidChildTypes(TestKitCarImpl.class, TestEngine.class);
+ // Would it be more useful to producers of management UIs if this were populated with all possible types?
+ assertNull(kitCarValidEngineTypes);
+ }
+
+ public void testManagedInterfaces()
+ {
+ // The electric engine is recharable
+ Set<Class<? extends ManagedInterface>> elecEngIntfcs = _typeRegistry.getManagedInterfaces(TestElecEngine.class);
+ assertThat(elecEngIntfcs, hasItem(TestRechargeable.class));
+ assertThat(elecEngIntfcs.size(), is(1));
+
+ // The pertrol engine implements no additional interfaces
+ Set<Class<? extends ManagedInterface>> stdCarIntfcs = _typeRegistry.getManagedInterfaces(TestPetrolEngine.class);
+ assertThat(stdCarIntfcs.size(), is(0));
+ }
+}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface1.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface1.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface1.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java Mon Dec 29 17:08:20 2014
@@ -18,16 +18,12 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
-import org.apache.qpid.server.model.ManagedAnnotation;
-import org.apache.qpid.server.model.ManagedInterface;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedObject;
-/**
- * This is a test managed interface which has ManagedAnnotation.
- * All types implementing this interface will inherit the annotation and will be managed entities of type TestManagedInterface1
- */
-@ManagedAnnotation
-public interface TestManagedInterface1 extends ManagedInterface
+@ManagedObject( defaultType = TestStandardCarImpl.TEST_STANDARD_CAR_TYPE)
+public interface TestCar<X extends TestCar<X>> extends ConfiguredObject<X>
{
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecCar.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecCar.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecCar.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecCar.java Mon Dec 29 17:08:20 2014
@@ -17,16 +17,11 @@
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
+import org.apache.qpid.server.model.ManagedObject;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject(category = false)
+public interface TestElecCar<X extends TestElecCar<X>> extends TestCar<X>
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngine.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngine.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngine.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngine.java Mon Dec 29 17:08:20 2014
@@ -17,16 +17,11 @@
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
+import org.apache.qpid.server.model.ManagedObject;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject (category = false)
+public interface TestElecEngine<X extends TestElecEngine<X>> extends TestEngine<X>, TestRechargeable
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngineImpl.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategoryImpl.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngineImpl.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngineImpl.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategoryImpl.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestChildCategoryImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestElecEngineImpl.java Mon Dec 29 17:08:20 2014
@@ -18,55 +18,34 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
-import java.util.Set;
import org.apache.qpid.server.model.AbstractConfiguredObject;
-import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.State;
-@ManagedObject( category = false, type = TestChildCategoryImpl.TEST_CHILD_TYPE )
-public class TestChildCategoryImpl
- extends AbstractConfiguredObject<TestChildCategoryImpl> implements TestChildCategory<TestChildCategoryImpl>
+@ManagedObject( category = false, type = TestElecEngineImpl.TEST_ELEC_ENGINE_TYPE)
+public class TestElecEngineImpl
+ extends AbstractConfiguredObject<TestElecEngineImpl> implements TestElecEngine<TestElecEngineImpl>
{
- public static final String TEST_CHILD_TYPE = "testchild";
-
-
- @ManagedAttributeField
- private String _validValueNotInterpolated;
-
- @ManagedAttributeField
- private int _intValue;
-
- @ManagedAttributeField
- private Set<Integer> _integerSet;
-
+ public static final String TEST_ELEC_ENGINE_TYPE = "ELEC";
@ManagedObjectFactoryConstructor
- public TestChildCategoryImpl(final Map<String, Object> attributes, TestRootCategory<?> parent)
+ public TestElecEngineImpl(final Map<String, Object> attributes, TestCar<?> parent)
{
super(parentsMap(parent), attributes);
}
- @Override
- public String getValidValueNotInterpolated()
+ @SuppressWarnings("unused")
+ public static Map<String, Collection<String>> getSupportedChildTypes()
{
- return _validValueNotInterpolated;
+ Collection<String> types = Arrays.asList(TestElecEngineImpl.TEST_ELEC_ENGINE_TYPE);
+ return Collections.singletonMap(TestEngine.class.getSimpleName(), types);
}
- @Override
- public int getIntValue()
- {
- return _intValue;
- }
-
- @Override
- public Set<Integer> getIntegerSet()
- {
- return _integerSet;
- }
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestEngine.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface2.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestEngine.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestEngine.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface2.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface2.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestEngine.java Mon Dec 29 17:08:20 2014
@@ -18,14 +18,12 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
-import org.apache.qpid.server.model.ManagedInterface;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedObject;
-/**
- * This is a test managed interface which has no ManagedAnnotation.
- * All types implementing this interface would need to have ManagedAnnotation declared in order to became managed entity.
- */
-public interface TestManagedInterface2 extends ManagedInterface
+@ManagedObject(category = true)
+public interface TestEngine<X extends TestEngine<X>> extends ConfiguredObject<X>
{
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngine.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngine.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngine.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngine.java Mon Dec 29 17:08:20 2014
@@ -16,17 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.qpid.server.model.testmodels.hierarchy;
-package org.apache.qpid.server.model.testmodel;
+import org.apache.qpid.server.model.ManagedObject;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject (category = false)
+public interface TestHybridEngine<X extends TestHybridEngine<X>> extends TestEngine<X>, TestRechargeable
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngineImpl.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass3.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngineImpl.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngineImpl.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass3.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass3.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestHybridEngineImpl.java Mon Dec 29 17:08:20 2014
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,23 +15,24 @@
* 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.testmodel;
+
+package org.apache.qpid.server.model.testmodels.hierarchy;
import java.util.Map;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-/**
- * This is a test managed type implementing managed interface TestManagedInterface1 and TestManagedInterface3.
- * The instances of this class will be managed entities of types TestManagedInterface1 and TestManagedInterface3.
- */
-@ManagedObject( category = false , type = "ChildClass3" )
-public class TestManagedClass3 extends TestChildCategoryImpl implements TestManagedInterface1,TestManagedInterface3
+@ManagedObject( category = false, type = TestHybridEngineImpl.TEST_HYBRID_ENGINE_TYPE)
+public class TestHybridEngineImpl extends AbstractConfiguredObject<TestHybridEngineImpl> implements TestHybridEngine<TestHybridEngineImpl>
{
- public TestManagedClass3(final Map<String, Object> attributes, TestRootCategory<?> parent)
+ public static final String TEST_HYBRID_ENGINE_TYPE = "HYBRID";
+
+ @ManagedObjectFactoryConstructor
+ public TestHybridEngineImpl(final Map<String, Object> attributes, TestCar<?> parent)
{
- super(attributes, parent);
+ super(parentsMap(parent), attributes);
}
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java Mon Dec 29 17:08:20 2014
@@ -16,17 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.qpid.server.model.testmodels.hierarchy;
-package org.apache.qpid.server.model.testmodel;
+import org.apache.qpid.server.model.ManagedObject;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject(category = false)
+public interface TestKitCar<X extends TestKitCar<X>> extends TestCar<X>
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCarImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCarImpl.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCarImpl.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCarImpl.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,56 @@
+/*
+ * 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.testmodels.hierarchy;
+
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+
+@ManagedObject( category = false,
+ type = TestKitCarImpl.TEST_KITCAR_TYPE)
+public class TestKitCarImpl extends AbstractConfiguredObject<TestKitCarImpl>
+ implements TestKitCar<TestKitCarImpl>
+{
+ public static final String TEST_KITCAR_TYPE = "testkitcar";
+
+ @ManagedObjectFactoryConstructor
+ public TestKitCarImpl(final Map<String, Object> attributes)
+ {
+ super(parentsMap(), attributes, newTaskExecutor(), TestModel.getInstance());
+ }
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(final Class<C> childClass,
+ final Map<String, Object> attributes,
+ final ConfiguredObject... otherParents)
+ {
+ return (C) getObjectFactory().create(childClass, attributes, this);
+ }
+
+ private static CurrentThreadTaskExecutor newTaskExecutor()
+ {
+ CurrentThreadTaskExecutor currentThreadTaskExecutor = new CurrentThreadTaskExecutor();
+ currentThreadTaskExecutor.start();
+ return currentThreadTaskExecutor;
+ }
+}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestModel.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestModel.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestModel.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestModel.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestModel.java Mon Dec 29 17:08:20 2014
@@ -18,7 +18,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
import java.util.Arrays;
import java.util.Collection;
@@ -34,10 +34,10 @@ import org.apache.qpid.server.plugin.Con
public class TestModel extends Model
{
private static final Model INSTANCE = new TestModel();
- private Class<? extends ConfiguredObject>[] _supportedClasses =
+ private Class<? extends ConfiguredObject>[] _supportedCategories =
new Class[] {
- TestRootCategory.class,
- TestChildCategory.class
+ TestCar.class,
+ TestEngine.class
};
private final ConfiguredObjectFactory _objectFactory;
@@ -51,49 +51,38 @@ public class TestModel extends Model
public TestModel(final ConfiguredObjectFactory objectFactory)
{
_objectFactory = objectFactory == null ? new ConfiguredObjectFactoryImpl(this) : objectFactory;
- ConfiguredObjectRegistration configuredObjectRegistration = new ConfiguredObjectRegistration()
- {
- @Override
- public Collection<Class<? extends ConfiguredObject>> getConfiguredObjectClasses()
- {
- return Arrays.<Class<? extends ConfiguredObject>>asList(TestRootCategoryImpl.class, Test2RootCategoryImpl.class);
- }
-
- @Override
- public String getType()
- {
- return "org.apache.qpid.server.model.testmodel";
- }
- };
- _registry = new ConfiguredObjectTypeRegistry(Arrays.asList(configuredObjectRegistration), getSupportedCategories());
+
+ ConfiguredObjectRegistration configuredObjectRegistration = new ConfiguredObjectRegistrationImpl();
+
+ _registry = new ConfiguredObjectTypeRegistry(Collections.singletonList(configuredObjectRegistration), Collections.EMPTY_LIST);
}
@Override
public Collection<Class<? extends ConfiguredObject>> getSupportedCategories()
{
- return Arrays.asList(_supportedClasses);
+ return Arrays.asList(_supportedCategories);
}
@Override
public Collection<Class<? extends ConfiguredObject>> getChildTypes(final Class<? extends ConfiguredObject> parent)
{
- return TestRootCategory.class.isAssignableFrom(parent)
- ? Collections.<Class<? extends ConfiguredObject>>singleton(TestChildCategory.class)
+ return TestCar.class.isAssignableFrom(parent)
+ ? Collections.<Class<? extends ConfiguredObject>>singleton(TestEngine.class)
: Collections.<Class<? extends ConfiguredObject>>emptySet();
}
@Override
public Class<? extends ConfiguredObject> getRootCategory()
{
- return TestRootCategory.class;
+ return TestCar.class;
}
@Override
public Collection<Class<? extends ConfiguredObject>> getParentTypes(final Class<? extends ConfiguredObject> child)
{
- return TestChildCategory.class.isAssignableFrom(child)
- ? Collections.<Class<? extends ConfiguredObject>>singleton(TestRootCategory.class)
+ return TestEngine.class.isAssignableFrom(child)
+ ? Collections.<Class<? extends ConfiguredObject>>singleton(TestCar.class)
: Collections.<Class<? extends ConfiguredObject>>emptySet();
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngine.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngine.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngine.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngine.java Mon Dec 29 17:08:20 2014
@@ -17,16 +17,11 @@
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
+import org.apache.qpid.server.model.ManagedObject;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject (category = false)
+public interface TestPetrolEngine<X extends TestPetrolEngine<X>> extends TestEngine<X>
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngineImpl.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass1.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngineImpl.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngineImpl.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass1.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedClass1.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestPetrolEngineImpl.java Mon Dec 29 17:08:20 2014
@@ -18,22 +18,23 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
import java.util.Map;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-/**
- * This is a test managed type extending TestManagedClass0.
- * Because TestManagedClass0 implements managed interface TestManagedInterface1 with ManagedAnnotation set,
- * the instances of this class will be managed entities of type TestManagedInterface1.
- */
-@ManagedObject( category = false , type = "ChildClass" )
-public class TestManagedClass1 extends TestManagedClass0
+@ManagedObject( category = false, type = TestPetrolEngineImpl.TEST_PETROL_ENGINE_TYPE)
+public class TestPetrolEngineImpl
+ extends AbstractConfiguredObject<TestPetrolEngineImpl> implements TestPetrolEngine<TestPetrolEngineImpl>
{
- public TestManagedClass1(final Map<String, Object> attributes, TestRootCategory<?> parent)
+ public static final String TEST_PETROL_ENGINE_TYPE = "PETROL";
+
+ @ManagedObjectFactoryConstructor
+ public TestPetrolEngineImpl(final Map<String, Object> attributes, TestCar<?> parent)
{
- super(attributes, parent);
+ super(parentsMap(parent), attributes);
}
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestRechargeable.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface3.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestRechargeable.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestRechargeable.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface3.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestManagedInterface3.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestRechargeable.java Mon Dec 29 17:08:20 2014
@@ -18,12 +18,13 @@
* under the License.
*
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
import org.apache.qpid.server.model.ManagedAnnotation;
import org.apache.qpid.server.model.ManagedInterface;
+
@ManagedAnnotation
-public interface TestManagedInterface3 extends ManagedInterface
+public interface TestRechargeable extends ManagedInterface
{
}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java Mon Dec 29 17:08:20 2014
@@ -17,16 +17,11 @@
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.hierarchy;
+import org.apache.qpid.server.model.ManagedObject;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public enum TestEnum
+@ManagedObject(category = false)
+public interface TestStandardCar<X extends TestStandardCar<X>> extends TestCar<X>
{
- TEST_ENUM1,
- TEST_ENUM2,
- TEST_ENUM3;
}
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCarImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCarImpl.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCarImpl.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCarImpl.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,60 @@
+/*
+ *
+ * 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.testmodels.hierarchy;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+
+@ManagedObject( category = false,
+ type = TestStandardCarImpl.TEST_STANDARD_CAR_TYPE,
+ validChildTypes = "org.apache.qpid.server.model.testmodels.hierarchy.TestStandardCarImpl#getSupportedChildTypes()")
+public class TestStandardCarImpl extends AbstractConfiguredObject<TestStandardCarImpl>
+ implements TestStandardCar<TestStandardCarImpl>
+{
+ public static final String TEST_STANDARD_CAR_TYPE = "testpertrolcar";
+
+ @ManagedObjectFactoryConstructor
+ public TestStandardCarImpl(final Map<String, Object> attributes)
+ {
+ super(parentsMap(), attributes, newTaskExecutor(), TestModel.getInstance());
+ }
+
+ private static CurrentThreadTaskExecutor newTaskExecutor()
+ {
+ CurrentThreadTaskExecutor currentThreadTaskExecutor = new CurrentThreadTaskExecutor();
+ currentThreadTaskExecutor.start();
+ return currentThreadTaskExecutor;
+ }
+
+ @SuppressWarnings("unused")
+ public static Map<String, Collection<String>> getSupportedChildTypes()
+ {
+ Collection<String> types = Arrays.asList(TestPetrolEngineImpl.TEST_PETROL_ENGINE_TYPE, TestHybridEngineImpl.TEST_HYBRID_ENGINE_TYPE);
+ return Collections.singletonMap(TestEngine.class.getSimpleName(), types);
+ }
+}
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,217 @@
+/*
+ * 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.testmodels.lifecycle;
+
+import java.util.Collections;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class AbstractConfiguredObjectTest extends QpidTestCase
+{
+
+ public void testOpeningResultsInErroredStateWhenResolutionFails() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnPostResolve(true);
+ object.open();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ERRORED, object.getState());
+
+ object.setThrowExceptionOnPostResolve(false);
+ object.setAttributes(Collections.<String, Object>singletonMap(Port.DESIRED_STATE, State.ACTIVE));
+ assertTrue("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ACTIVE, object.getState());
+ }
+
+ public void testOpeningInERROREDStateAfterFailedOpenOnDesiredStateChangeToActive() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnOpen(true);
+ object.open();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ERRORED, object.getState());
+
+ object.setThrowExceptionOnOpen(false);
+ object.setAttributes(Collections.<String, Object>singletonMap(Port.DESIRED_STATE, State.ACTIVE));
+ assertTrue("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ACTIVE, object.getState());
+ }
+
+ public void testOpeningInERROREDStateAfterFailedOpenOnStart() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnOpen(true);
+ object.open();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ERRORED, object.getState());
+
+ object.setThrowExceptionOnOpen(false);
+ object.start();
+ assertTrue("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ACTIVE, object.getState());
+ }
+
+ public void testDeletionERROREDStateAfterFailedOpenOnDelete() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnOpen(true);
+ object.open();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ERRORED, object.getState());
+
+ object.delete();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.DELETED, object.getState());
+ }
+
+ public void testDeletionInERROREDStateAfterFailedOpenOnDesiredStateChangeToDelete() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnOpen(true);
+ object.open();
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ERRORED, object.getState());
+
+ object.setAttributes(Collections.<String, Object>singletonMap(Port.DESIRED_STATE, State.DELETED));
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.DELETED, object.getState());
+ }
+
+
+ public void testCreationWithExceptionThrownFromValidationOnCreate() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnValidationOnCreate(true);
+ try
+ {
+ object.create();
+ fail("IllegalConfigurationException is expected to be thrown");
+ }
+ catch(IllegalConfigurationException e)
+ {
+ //pass
+ }
+ assertFalse("Unexpected opened", object.isOpened());
+ }
+
+ public void testCreationWithoutExceptionThrownFromValidationOnCreate() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnValidationOnCreate(false);
+ object.create();
+ assertTrue("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.ACTIVE, object.getState());
+ }
+
+ public void testCreationWithExceptionThrownFromOnOpen() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnOpen(true);
+ try
+ {
+ object.create();
+ fail("Exception should have been re-thrown");
+ }
+ catch (RuntimeException re)
+ {
+ // pass
+ }
+
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.DELETED, object.getState());
+ }
+
+ public void testCreationWithExceptionThrownFromOnCreate() throws Exception
+ {
+ TestConfiguredObject object = new TestConfiguredObject(getName());
+ object.setThrowExceptionOnCreate(true);
+ try
+ {
+ object.create();
+ fail("Exception should have been re-thrown");
+ }
+ catch (RuntimeException re)
+ {
+ // pass
+ }
+
+ assertFalse("Unexpected opened", object.isOpened());
+ assertEquals("Unexpected state", State.DELETED, object.getState());
+ }
+
+ public void testUnresolvedChildInERROREDStateIsNotValidatedOrOpenedOrAttainedDesiredStateOnParentOpen() throws Exception
+ {
+ TestConfiguredObject parent = new TestConfiguredObject("parent");
+ TestConfiguredObject child1 = new TestConfiguredObject("child1", parent, parent.getTaskExecutor());
+ child1.registerWithParents();
+ TestConfiguredObject child2 = new TestConfiguredObject("child2", parent, parent.getTaskExecutor());
+ child2.registerWithParents();
+
+ child1.setThrowExceptionOnPostResolve(true);
+
+ parent.open();
+
+ assertTrue("Parent should be resolved", parent.isResolved());
+ assertTrue("Parent should be validated", parent.isValidated());
+ assertTrue("Parent should be opened", parent.isOpened());
+ assertEquals("Unexpected parent state", State.ACTIVE, parent.getState());
+
+ assertTrue("Child2 should be resolved", child2.isResolved());
+ assertTrue("Child2 should be validated", child2.isValidated());
+ assertTrue("Child2 should be opened", child2.isOpened());
+ assertEquals("Unexpected child2 state", State.ACTIVE, child2.getState());
+
+ assertFalse("Child2 should not be resolved", child1.isResolved());
+ assertFalse("Child1 should not be validated", child1.isValidated());
+ assertFalse("Child1 should not be opened", child1.isOpened());
+ assertEquals("Unexpected child1 state", State.ERRORED, child1.getState());
+ }
+
+ public void testUnvalidatedChildInERROREDStateIsNotOpenedOrAttainedDesiredStateOnParentOpen() throws Exception
+ {
+ TestConfiguredObject parent = new TestConfiguredObject("parent");
+ TestConfiguredObject child1 = new TestConfiguredObject("child1", parent, parent.getTaskExecutor());
+ child1.registerWithParents();
+ TestConfiguredObject child2 = new TestConfiguredObject("child2", parent, parent.getTaskExecutor());
+ child2.registerWithParents();
+
+ child1.setThrowExceptionOnValidate(true);
+
+ parent.open();
+
+ assertTrue("Parent should be resolved", parent.isResolved());
+ assertTrue("Parent should be validated", parent.isValidated());
+ assertTrue("Parent should be opened", parent.isOpened());
+ assertEquals("Unexpected parent state", State.ACTIVE, parent.getState());
+
+ assertTrue("Child2 should be resolved", child2.isResolved());
+ assertTrue("Child2 should be validated", child2.isValidated());
+ assertTrue("Child2 should be opened", child2.isOpened());
+ assertEquals("Unexpected child2 state", State.ACTIVE, child2.getState());
+
+ assertTrue("Child1 should be resolved", child1.isResolved());
+ assertFalse("Child1 should not be validated", child1.isValidated());
+ assertFalse("Child1 should not be opened", child1.isOpened());
+ assertEquals("Unexpected child1 state", State.ERRORED, child1.getState());
+ }
+
+}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/TestConfiguredObject.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/TestConfiguredObject.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/TestConfiguredObject.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/TestConfiguredObject.java Mon Dec 29 17:08:20 2014
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+
+package org.apache.qpid.server.model.testmodels.lifecycle;
import static org.mockito.Mockito.mock;
Added: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java?rev=1648393&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java Mon Dec 29 17:08:20 2014
@@ -0,0 +1,445 @@
+/*
+ * 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.testmodels.singleton;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.store.ConfiguredObjectRecord;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+/**
+ * Tests behaviour of AbstractConfiguredObject related to attributes including
+ * persistence, defaulting, and attribute values derived from context variables.
+ */
+public class AbstractConfiguredObjectTest extends QpidTestCase
+{
+ private final Model _model = TestModel.getInstance();
+
+ public void testAttributePersistence()
+ {
+ final String objectName = "testNonPersistAttributes";
+ TestSingleton object =
+ _model.getObjectFactory().create(TestSingleton.class,
+ Collections.<String, Object>singletonMap(ConfiguredObject.NAME,
+ objectName)
+ );
+
+ assertEquals(objectName, object.getName());
+ assertNull(object.getAutomatedNonPersistedValue());
+ assertNull(object.getAutomatedPersistedValue());
+ assertEquals(TestSingletonImpl.DERIVED_VALUE, object.getDerivedValue());
+
+ ConfiguredObjectRecord record = object.asObjectRecord();
+
+ assertEquals(objectName, record.getAttributes().get(ConfiguredObject.NAME));
+
+ assertFalse(record.getAttributes().containsKey(TestSingleton.AUTOMATED_PERSISTED_VALUE));
+ assertFalse(record.getAttributes().containsKey(TestSingleton.AUTOMATED_NONPERSISTED_VALUE));
+ assertFalse(record.getAttributes().containsKey(TestSingleton.DERIVED_VALUE));
+
+ Map<String, Object> updatedAttributes = new HashMap<>();
+
+ final String newValue = "newValue";
+
+ updatedAttributes.put(TestSingleton.AUTOMATED_PERSISTED_VALUE, newValue);
+ updatedAttributes.put(TestSingleton.AUTOMATED_NONPERSISTED_VALUE, newValue);
+ updatedAttributes.put(TestSingleton.DERIVED_VALUE, System.currentTimeMillis()); // Will be ignored
+ object.setAttributes(updatedAttributes);
+
+ assertEquals(newValue, object.getAutomatedPersistedValue());
+ assertEquals(newValue, object.getAutomatedNonPersistedValue());
+
+ record = object.asObjectRecord();
+ assertEquals(objectName, record.getAttributes().get(ConfiguredObject.NAME));
+ assertEquals(newValue, record.getAttributes().get(TestSingleton.AUTOMATED_PERSISTED_VALUE));
+
+ assertFalse(record.getAttributes().containsKey(TestSingleton.AUTOMATED_NONPERSISTED_VALUE));
+ assertFalse(record.getAttributes().containsKey(TestSingleton.DERIVED_VALUE));
+
+ }
+
+ public void testDefaultedAttributeValue()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = Collections.<String, Object>singletonMap(TestSingleton.NAME, objectName);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(TestSingleton.DEFAULTED_VALUE_DEFAULT, object1.getDefaultedValue());
+ }
+
+ public void testOverriddenDefaultedAttributeValue()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.DEFAULTED_VALUE, "override");
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object.getName());
+ assertEquals("override", object.getDefaultedValue());
+
+ }
+
+ public void testOverriddenDefaultedAttributeValueRevertedToDefault()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.DEFAULTED_VALUE, "override");
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object.getName());
+ assertEquals("override", object.getDefaultedValue());
+
+ object.setAttributes(Collections.singletonMap(TestSingleton.DEFAULTED_VALUE, null));
+
+ assertEquals(TestSingleton.DEFAULTED_VALUE_DEFAULT, object.getDefaultedValue());
+ }
+
+ public void testEnumAttributeValueFromString()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.ENUM_VALUE, TestEnum.TEST_ENUM1.name());
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(TestEnum.TEST_ENUM1, object1.getEnumValue());
+ }
+
+ public void testEnumAttributeValueFromEnum()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.ENUM_VALUE, TestEnum.TEST_ENUM1);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(TestEnum.TEST_ENUM1, object1.getEnumValue());
+ }
+
+ public void testIntegerAttributeValueFromString()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.INT_VALUE, "-4");
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(-4, object1.getIntValue());
+ }
+
+ public void testIntegerAttributeValueFromInteger()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.INT_VALUE, 5);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(5, object1.getIntValue());
+ }
+
+ public void testIntegerAttributeValueFromDouble()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.INT_VALUE, 6.1);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(6, object1.getIntValue());
+ }
+
+ public void testStringAttributeValueFromContextVariableProvidedBySystemProperty()
+ {
+ String sysPropertyName = "testStringAttributeValueFromContextVariableProvidedBySystemProperty";
+ String contextToken = "${" + sysPropertyName + "}";
+
+ System.setProperty(sysPropertyName, "myValue");
+
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.STRING_VALUE, contextToken);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals("myValue", object1.getStringValue());
+
+ // System property set empty string
+
+ System.setProperty(sysPropertyName, "");
+ TestSingleton object2 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals("", object2.getStringValue());
+
+ // System property not set
+ System.clearProperty(sysPropertyName);
+
+ TestSingleton object3 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ // yields the unexpanded token - not sure if this is really useful behaviour?
+ assertEquals(contextToken, object3.getStringValue());
+ }
+
+ public void testMapAttributeValueFromContextVariableProvidedBySystemProperty()
+ {
+ String sysPropertyName = "testMapAttributeValueFromContextVariableProvidedBySystemProperty";
+ String contextToken = "${" + sysPropertyName + "}";
+
+ Map<String,String> expectedMap = new HashMap<>();
+ expectedMap.put("field1", "value1");
+ expectedMap.put("field2", "value2");
+
+ System.setProperty(sysPropertyName, "{ \"field1\" : \"value1\", \"field2\" : \"value2\"}");
+
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(TestSingleton.NAME, objectName);
+ attributes.put(TestSingleton.MAP_VALUE, contextToken);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+ assertEquals(objectName, object1.getName());
+ assertEquals(expectedMap, object1.getMapValue());
+
+ // System property not set
+ System.clearProperty(sysPropertyName);
+ }
+
+ public void testStringAttributeValueFromContextVariableProvidedObjectsContext()
+ {
+ String contextToken = "${myReplacement}";
+
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, objectName);
+ attributes.put(ConfiguredObject.CONTEXT, Collections.singletonMap("myReplacement", "myValue"));
+ attributes.put(TestSingleton.STRING_VALUE, contextToken);
+
+ TestSingleton object1 = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+ // Check the object's context itself
+ assertTrue(object1.getContext().containsKey("myReplacement"));
+ assertEquals("myValue", object1.getContext().get("myReplacement"));
+
+ assertEquals(objectName, object1.getName());
+ assertEquals("myValue", object1.getStringValue());
+ }
+
+ public void testInvalidIntegerAttributeValueFromContextVariable()
+ {
+ final Map<String, Object> attributes = new HashMap<>();
+
+ attributes.put(TestSingleton.NAME, "myName");
+ attributes.put(TestSingleton.TYPE, TestSingletonImpl.TEST_SINGLETON_TYPE);
+ attributes.put(TestSingleton.CONTEXT, Collections.singletonMap("contextVal", "notAnInteger"));
+ attributes.put(TestSingleton.INT_VALUE, "${contextVal}");
+
+ try
+ {
+ _model.getObjectFactory().create(TestSingleton.class, attributes);
+ fail("creation of child object should have failed due to invalid value");
+ }
+ catch (IllegalArgumentException e)
+ {
+ // PASS
+ String message = e.getMessage();
+ assertTrue("Message does not contain the attribute name", message.contains("intValue"));
+ assertTrue("Message does not contain the non-interpolated value", message.contains("contextVal"));
+ assertTrue("Message does not contain the interpolated value", message.contains("contextVal"));
+
+ }
+ }
+
+ public void testCreateEnforcesAttributeValidValues() throws Exception
+ {
+ final String objectName = getName();
+ Map<String, Object> illegalCreateAttributes = new HashMap<>();
+ illegalCreateAttributes.put(ConfiguredObject.NAME, objectName);
+ illegalCreateAttributes.put(TestSingleton.VALID_VALUE, "illegal");
+
+ try
+ {
+ _model.getObjectFactory().create(TestSingleton.class, illegalCreateAttributes);
+ fail("Exception not thrown");
+ }
+ catch (IllegalConfigurationException ice)
+ {
+ // PASS
+ }
+
+ Map<String, Object> legalCreateAttributes = new HashMap<>();
+ legalCreateAttributes.put(ConfiguredObject.NAME, objectName);
+ legalCreateAttributes.put(TestSingleton.VALID_VALUE, TestSingleton.VALID_VALUE1);
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class, legalCreateAttributes);
+ assertEquals(TestSingleton.VALID_VALUE1, object.getValidValue());
+ }
+
+ public void testChangeEnforcesAttributeValidValues() throws Exception
+ {
+ final String objectName = getName();
+ Map<String, Object> legalCreateAttributes = new HashMap<>();
+ legalCreateAttributes.put(ConfiguredObject.NAME, objectName);
+ legalCreateAttributes.put(TestSingleton.VALID_VALUE, TestSingleton.VALID_VALUE1);
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class, legalCreateAttributes);
+ assertEquals(TestSingleton.VALID_VALUE1, object.getValidValue());
+
+ object.setAttributes(Collections.singletonMap(TestSingleton.VALID_VALUE, TestSingleton.VALID_VALUE2));
+ assertEquals(TestSingleton.VALID_VALUE2, object.getValidValue());
+
+ try
+ {
+ object.setAttributes(Collections.singletonMap(TestSingleton.VALID_VALUE, "illegal"));
+ fail("Exception not thrown");
+ }
+ catch (IllegalConfigurationException iae)
+ {
+ // PASS
+ }
+
+ assertEquals(TestSingleton.VALID_VALUE2, object.getValidValue());
+
+ object.setAttributes(Collections.singletonMap(TestSingleton.VALID_VALUE,null));
+ assertNull(object.getValidValue());
+
+ }
+
+ public void testCreateEnforcesAttributeValidValuesWithSets() throws Exception
+ {
+ final String objectName = getName();
+ final Map<String, Object> name = Collections.singletonMap(ConfiguredObject.NAME, (Object)objectName);
+
+ Map<String, Object> illegalCreateAttributes = new HashMap<>(name);
+ illegalCreateAttributes.put(TestSingleton.ENUMSET_VALUES, Collections.singleton(TestEnum.TEST_ENUM3));
+
+ try
+ {
+ _model.getObjectFactory().create(TestSingleton.class, illegalCreateAttributes);
+ fail("Exception not thrown");
+ }
+ catch (IllegalConfigurationException ice)
+ {
+ // PASS
+ }
+
+ {
+ Map<String, Object> legalCreateAttributesEnums = new HashMap<>(name);
+ legalCreateAttributesEnums.put(TestSingleton.ENUMSET_VALUES,
+ Arrays.asList(TestEnum.TEST_ENUM2, TestEnum.TEST_ENUM3));
+
+ TestSingleton obj = _model.getObjectFactory().create(TestSingleton.class, legalCreateAttributesEnums);
+ assertTrue(obj.getEnumSetValues().containsAll(Arrays.asList(TestEnum.TEST_ENUM2, TestEnum.TEST_ENUM3)));
+ }
+
+ {
+ Map<String, Object> legalCreateAttributesStrings = new HashMap<>(name);
+ legalCreateAttributesStrings.put(TestSingleton.ENUMSET_VALUES,
+ Arrays.asList(TestEnum.TEST_ENUM2.name(), TestEnum.TEST_ENUM3.name()));
+
+ TestSingleton
+ obj = _model.getObjectFactory().create(TestSingleton.class, legalCreateAttributesStrings);
+ assertTrue(obj.getEnumSetValues().containsAll(Arrays.asList(TestEnum.TEST_ENUM2, TestEnum.TEST_ENUM3)));
+ }
+ }
+
+ public void testDefaultContextIsInContextKeys()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, objectName);
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class,
+ attributes);
+
+
+ assertTrue("context default not in contextKeys",
+ object.getContextKeys(true).contains(TestSingleton.TEST_CONTEXT_DEFAULT));
+ assertEquals(object.getContextValue(String.class, TestSingleton.TEST_CONTEXT_DEFAULT), "default");
+
+ setTestSystemProperty(TestSingleton.TEST_CONTEXT_DEFAULT, "notdefault");
+ assertTrue("context default not in contextKeys",
+ object.getContextKeys(true).contains(TestSingleton.TEST_CONTEXT_DEFAULT));
+ assertEquals(object.getContextValue(String.class, TestSingleton.TEST_CONTEXT_DEFAULT), "notdefault");
+ }
+
+ public void testDerivedAttributeValue()
+ {
+ final String objectName = "myName";
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, objectName);
+
+ TestSingleton object = _model.getObjectFactory().create(TestSingleton.class, attributes);
+ assertEquals(TestSingletonImpl.DERIVED_VALUE, object.getDerivedValue());
+
+ // Check that update is ignored
+ object.setAttribute(TestSingleton.DERIVED_VALUE, object.getDerivedValue(), System.currentTimeMillis());
+
+ assertEquals(TestSingletonImpl.DERIVED_VALUE, object.getDerivedValue());
+ }
+}
Copied: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestEnum.java (from r1648392, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestEnum.java?p2=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestEnum.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java&r1=1648392&r2=1648393&rev=1648393&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestEnum.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestEnum.java Mon Dec 29 17:08:20 2014
@@ -17,13 +17,9 @@
* under the License.
*/
-package org.apache.qpid.server.model.testmodel;
+package org.apache.qpid.server.model.testmodels.singleton;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
public enum TestEnum
{
TEST_ENUM1,
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org