From 100764af2c4cbdb10974264f6e15a27d05bd763c Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Sat, 25 Jan 2014 22:15:24 +0100 Subject: [PATCH] [Major] changed constructor of StrolchComponent Should have interface ComponentContainer in constructor --- ...tRef.java => RestfulStrolchComponent.java} | 47 +++++++------- .../li/strolch/rest/endpoint/Inspector.java | 18 +++--- .../strolch/rest/endpoint/VersionQuery.java | 5 +- .../inspector/test/AbstractRestfulTest.java | 3 - ...ulServicesTest.java => InspectorTest.java} | 33 +--------- .../rest/inspector/test/VersionQueryTest.java | 63 +++++++++++++++++++ .../config/StrolchConfiguration.xml | 7 +++ 7 files changed, 108 insertions(+), 68 deletions(-) rename src/main/java/li/strolch/rest/{AgentRef.java => RestfulStrolchComponent.java} (56%) rename src/test/java/li/strolch/rest/inspector/test/{RestfulServicesTest.java => InspectorTest.java} (82%) create mode 100644 src/test/java/li/strolch/rest/inspector/test/VersionQueryTest.java diff --git a/src/main/java/li/strolch/rest/AgentRef.java b/src/main/java/li/strolch/rest/RestfulStrolchComponent.java similarity index 56% rename from src/main/java/li/strolch/rest/AgentRef.java rename to src/main/java/li/strolch/rest/RestfulStrolchComponent.java index 060cfde68..ab7a01664 100644 --- a/src/main/java/li/strolch/rest/AgentRef.java +++ b/src/main/java/li/strolch/rest/RestfulStrolchComponent.java @@ -16,49 +16,52 @@ package li.strolch.rest; import li.strolch.agent.api.ComponentContainer; -import li.strolch.agent.api.StrolchAgent; import li.strolch.agent.api.StrolchComponent; import ch.eitchnet.utils.dbc.DBC; /** * @author Robert von Burg */ -public class AgentRef { +public class RestfulStrolchComponent extends StrolchComponent { - private static final AgentRef instance; + private static RestfulStrolchComponent instance; - static { - instance = new AgentRef(); + /** + * @param container + * @param componentName + */ + public RestfulStrolchComponent(ComponentContainer container, String componentName) { + super(container, componentName); } - public static AgentRef getInstance() { - return instance; + @Override + public void start() { + DBC.PRE.assertNull("Instance is already set! This component is a singleton resource!", instance); + instance = this; + + super.start(); } - private StrolchAgent agent; - - private AgentRef() { - // singleton - } - - public void init(StrolchAgent agent) { - DBC.PRE.assertNull("AgentRef has already been configured!", this.agent); - this.agent = agent; + @Override + public void stop() { + instance = null; + super.stop(); } /** - * @return the agent + * @return the RestfulStrolchComponent */ - public StrolchAgent getAgent() { - DBC.PRE.assertNotNull("Not yet initialized!", agent); - return this.agent; + public static RestfulStrolchComponent getInstance() { + DBC.PRE.assertNotNull("Not yet initialized!", instance); + return instance; } + @Override public ComponentContainer getContainer() { - return getAgent().getContainer(); + return super.getContainer(); } public T getComponent(Class clazz) { - return getAgent().getContainer().getComponent(clazz); + return getContainer().getComponent(clazz); } } diff --git a/src/main/java/li/strolch/rest/endpoint/Inspector.java b/src/main/java/li/strolch/rest/endpoint/Inspector.java index c915f876d..e1ec2e434 100644 --- a/src/main/java/li/strolch/rest/endpoint/Inspector.java +++ b/src/main/java/li/strolch/rest/endpoint/Inspector.java @@ -35,7 +35,7 @@ import li.strolch.exception.StrolchException; import li.strolch.model.Order; import li.strolch.model.Resource; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.rest.AgentRef; +import li.strolch.rest.RestfulStrolchComponent; import li.strolch.rest.model.AgentOverview; import li.strolch.rest.model.ElementMapOverview; import li.strolch.rest.model.ElementMapType; @@ -75,7 +75,7 @@ public class Inspector { public Response getAgent() { try { - ComponentContainer container = AgentRef.getInstance().getContainer(); + ComponentContainer container = RestfulStrolchComponent.getInstance().getContainer(); Set realmNames = container.getRealmNames(); List realmOverviews = new ArrayList<>(realmNames.size()); for (String realmName : realmNames) { @@ -122,7 +122,7 @@ public class Inspector { public Response getRealm(@PathParam("realm") String realm) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); List elementMapOverviews = new ArrayList<>(2); try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -165,7 +165,7 @@ public class Inspector { @Path("{realm}/resource") public Response getResourcesOverview(@PathParam("realm") String realm) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); ElementMapOverview resourcesOverview; try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -207,7 +207,7 @@ public class Inspector { @Path("{realm}/order") public Response getOrdersOverview(@PathParam("realm") String realm) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); ElementMapOverview ordersOverview; try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -255,7 +255,7 @@ public class Inspector { @Path("{realm}/resource/{type}") public Response getResourceTypeDetails(@PathParam("realm") String realm, @PathParam("type") String type) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); TypeDetail typeDetail; try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -295,7 +295,7 @@ public class Inspector { @Path("{realm}/order/{type}") public Response getOrderTypeDetails(@PathParam("realm") String realm, @PathParam("type") String type) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); TypeDetail typeDetail; try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -339,7 +339,7 @@ public class Inspector { public Response getResource(@PathParam("realm") String realm, @PathParam("type") String type, @PathParam("id") String id) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); Resource resource; try (StrolchTransaction tx = strolchRealm.openTx()) { @@ -361,7 +361,7 @@ public class Inspector { public Response getOrder(@PathParam("realm") String realm, @PathParam("type") String type, @PathParam("id") String id) { DBC.PRE.assertNotEmpty("Realm must be set!", realm); - StrolchRealm strolchRealm = AgentRef.getInstance().getContainer().getRealm(realm); + StrolchRealm strolchRealm = RestfulStrolchComponent.getInstance().getContainer().getRealm(realm); Order order; try (StrolchTransaction tx = strolchRealm.openTx()) { diff --git a/src/main/java/li/strolch/rest/endpoint/VersionQuery.java b/src/main/java/li/strolch/rest/endpoint/VersionQuery.java index d49b0cf4f..3d627e2e6 100644 --- a/src/main/java/li/strolch/rest/endpoint/VersionQuery.java +++ b/src/main/java/li/strolch/rest/endpoint/VersionQuery.java @@ -23,7 +23,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import li.strolch.agent.api.VersionQueryResult; -import li.strolch.rest.AgentRef; +import li.strolch.rest.RestfulStrolchComponent; /** * @author Robert von Burg @@ -34,7 +34,8 @@ public class VersionQuery { @GET @Produces(MediaType.APPLICATION_JSON) public Response getVersions() { - VersionQueryResult versionQueryResult = AgentRef.getInstance().getAgent().getVersion(); + VersionQueryResult versionQueryResult = RestfulStrolchComponent.getInstance().getContainer().getAgent() + .getVersion(); GenericEntity entity = new GenericEntity(versionQueryResult, VersionQueryResult.class) { }; diff --git a/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java b/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java index 153a6a260..47d406c7c 100644 --- a/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java +++ b/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java @@ -20,7 +20,6 @@ import java.net.URI; import javax.ws.rs.core.MediaType; -import li.strolch.rest.AgentRef; import li.strolch.rest.StrolchRestfulClasses; import li.strolch.rest.StrolchRestfulExceptionMapper; import li.strolch.testbase.runtime.RuntimeMock; @@ -62,8 +61,6 @@ public abstract class AbstractRestfulTest { runtimeMock.mockRuntime(rootPath, configSrc); runtimeMock.startContainer(rootPath); - AgentRef.getInstance().init(runtimeMock.getAgent()); - // create a resource config that scans for JAX-RS resources and providers // in com.example package final ResourceConfig rc = new ResourceConfig(); diff --git a/src/test/java/li/strolch/rest/inspector/test/RestfulServicesTest.java b/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java similarity index 82% rename from src/test/java/li/strolch/rest/inspector/test/RestfulServicesTest.java rename to src/test/java/li/strolch/rest/inspector/test/InspectorTest.java index 41ec023aa..dbcef41db 100644 --- a/src/test/java/li/strolch/rest/inspector/test/RestfulServicesTest.java +++ b/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java @@ -23,9 +23,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import li.strolch.agent.api.AgentVersion; -import li.strolch.agent.api.ComponentVersion; -import li.strolch.agent.api.VersionQueryResult; import li.strolch.rest.model.AgentOverview; import li.strolch.rest.model.ElementMapOverview; import li.strolch.rest.model.ElementMapType; @@ -42,7 +39,7 @@ import com.sun.jersey.api.client.GenericType; /** * @author Robert von Burg */ -public class RestfulServicesTest extends AbstractRestfulTest { +public class InspectorTest extends AbstractRestfulTest { @Test public void shouldGetAgent() { @@ -163,32 +160,4 @@ public class RestfulServicesTest extends AbstractRestfulTest { assertTrue(entity .contains("\"date\":\"2012-11-30T18:12:05.628+01:00\",\"state\":\"CREATED\",\"parameterBags\"")); } - - @Test - public void shouldQueryVersion() { - - // query - ClientResponse response = getClientResponse("/strolch/version"); - VersionQueryResult versionQueryResult = response.getEntity(new GenericType() { - }); - - if (versionQueryResult.hasErrors()) { - for (String error : versionQueryResult.getErrors()) { - logger.error(error); - } - } - - AgentVersion agentVersion = versionQueryResult.getAgentVersion(); - logger.info(agentVersion.toString()); - List componentVersions = versionQueryResult.getComponentVersions(); - assertEquals(4, componentVersions.size()); - for (ComponentVersion version : componentVersions) { - logger.info(version.toString()); - assertEquals("li.strolch", agentVersion.getGroupId()); - } - - assertEquals("StrolchPersistenceTest", agentVersion.getAgentName()); - assertEquals("li.strolch", agentVersion.getGroupId()); - assertEquals("li.strolch.agent", agentVersion.getArtifactId()); - } } diff --git a/src/test/java/li/strolch/rest/inspector/test/VersionQueryTest.java b/src/test/java/li/strolch/rest/inspector/test/VersionQueryTest.java new file mode 100644 index 000000000..d378d1502 --- /dev/null +++ b/src/test/java/li/strolch/rest/inspector/test/VersionQueryTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2013 Robert von Burg + * + * Licensed 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 li.strolch.rest.inspector.test; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import li.strolch.agent.api.AgentVersion; +import li.strolch.agent.api.ComponentVersion; +import li.strolch.agent.api.VersionQueryResult; + +import org.junit.Test; + +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.GenericType; + +/** + * @author Robert von Burg + */ +public class VersionQueryTest extends AbstractRestfulTest { + + @Test + public void shouldQueryVersion() { + + // query + ClientResponse response = getClientResponse("/strolch/version"); + VersionQueryResult versionQueryResult = response.getEntity(new GenericType() { + }); + + if (versionQueryResult.hasErrors()) { + for (String error : versionQueryResult.getErrors()) { + logger.error(error); + } + } + + AgentVersion agentVersion = versionQueryResult.getAgentVersion(); + logger.info(agentVersion.toString()); + List componentVersions = versionQueryResult.getComponentVersions(); + assertEquals(5, componentVersions.size()); + for (ComponentVersion version : componentVersions) { + logger.info(version.toString()); + assertEquals("li.strolch", agentVersion.getGroupId()); + } + + assertEquals("StrolchPersistenceTest", agentVersion.getAgentName()); + assertEquals("li.strolch", agentVersion.getGroupId()); + assertEquals("li.strolch.agent", agentVersion.getArtifactId()); + } +} diff --git a/src/test/resources/withPrivilegeRuntime/config/StrolchConfiguration.xml b/src/test/resources/withPrivilegeRuntime/config/StrolchConfiguration.xml index 405ae11fc..f5bebe694 100644 --- a/src/test/resources/withPrivilegeRuntime/config/StrolchConfiguration.xml +++ b/src/test/resources/withPrivilegeRuntime/config/StrolchConfiguration.xml @@ -24,4 +24,11 @@ PrivilegeConfig.xml + + RestfulHandler + li.strolch.rest.RestfulStrolchComponent + li.strolch.rest.RestfulStrolchComponent + + + \ No newline at end of file