From 495c9250949de1a11b6c4c240e9dd9c28c2de82b Mon Sep 17 00:00:00 2001
From: Robert von Burg
Date: Wed, 22 Jan 2014 20:18:22 +0100
Subject: [PATCH] [New] Added tests for inspector with HTTP request test
---
.../li/strolch/rest/inspector/Inspector.java | 77 ++++++--
.../StrolchRestfulExceptionMapper.java | 5 +-
.../inspector/model/ElementMapOverview.java | 34 ++++
.../inspector/model/ElementMapsOverview.java | 50 ++++-
.../GroupedParameterizedElementDetail.java | 111 +++++++++++
.../rest/inspector/model/OrderDetail.java | 129 +++++++++++++
.../rest/inspector/model/OrderOverview.java | 38 ++++
.../rest/inspector/model/ParameterDetail.java | 174 ++++++++++++++++++
.../model/ParameterizedElementDetail.java | 106 +++++++++++
.../rest/inspector/model/RealmDetail.java | 27 ++-
.../rest/inspector/model/RealmOverview.java | 5 +-
.../rest/inspector/model/ResourceDetail.java | 55 ++++++
.../inspector/model/ResourceOverview.java | 12 ++
.../inspector/model/StrolchElementDetail.java | 144 +++++++++++++++
.../model/StrolchElementOverview.java | 49 ++++-
.../rest/inspector/model/TypeDetail.java | 36 +++-
.../rest/inspector/model/TypeOverview.java | 28 +++
.../inspector/test/AbstractRestfulTest.java | 27 ++-
.../rest/inspector/test/InspectorTest.java | 134 +++++++++++---
.../data/StrolchModel.xml | 2 +-
20 files changed, 1197 insertions(+), 46 deletions(-)
create mode 100644 src/main/java/li/strolch/rest/inspector/model/GroupedParameterizedElementDetail.java
create mode 100644 src/main/java/li/strolch/rest/inspector/model/OrderDetail.java
create mode 100644 src/main/java/li/strolch/rest/inspector/model/ParameterDetail.java
create mode 100644 src/main/java/li/strolch/rest/inspector/model/ParameterizedElementDetail.java
create mode 100644 src/main/java/li/strolch/rest/inspector/model/ResourceDetail.java
create mode 100644 src/main/java/li/strolch/rest/inspector/model/StrolchElementDetail.java
diff --git a/src/main/java/li/strolch/rest/inspector/Inspector.java b/src/main/java/li/strolch/rest/inspector/Inspector.java
index 91927e871..1fcaf557e 100644
--- a/src/main/java/li/strolch/rest/inspector/Inspector.java
+++ b/src/main/java/li/strolch/rest/inspector/Inspector.java
@@ -39,9 +39,11 @@ import li.strolch.rest.inspector.model.AgentOverview;
import li.strolch.rest.inspector.model.ElementMapOverview;
import li.strolch.rest.inspector.model.ElementMapType;
import li.strolch.rest.inspector.model.ElementMapsOverview;
+import li.strolch.rest.inspector.model.OrderDetail;
import li.strolch.rest.inspector.model.OrderOverview;
import li.strolch.rest.inspector.model.RealmDetail;
import li.strolch.rest.inspector.model.RealmOverview;
+import li.strolch.rest.inspector.model.ResourceDetail;
import li.strolch.rest.inspector.model.ResourceOverview;
import li.strolch.rest.inspector.model.StrolchElementOverview;
import li.strolch.rest.inspector.model.TypeDetail;
@@ -189,7 +191,7 @@ public class Inspector {
* Order inspector
*
*
- * Returns an overview of the {@link Order Orderss}. This is a list of all the types and the size each type has
+ * Returns an overview of the {@link Order Orders}. This is a list of all the types and the size each type has
*
*
* @param realm
@@ -228,6 +230,25 @@ public class Inspector {
// TODO for the get element type details, we should not simply query all objects, but rather find a solution to query only the id, name, type and date, state for the order
+ /**
+ *
+ * Resource type inspector
+ *
+ *
+ * Returns an overview of the {@link Resource Resources} with the given type. This is a list of overviews of the
+ * resources
+ *
+ *
+ * @param realm
+ * the realm for which the resource type overview is to be returned
+ * @param type
+ *
+ * @return an overview of the {@link Resource Resources} with the given type. This is a list of overviews of the
+ * resources
+ *
+ * @see TypeDetail
+ * @see StrolchElementOverview
+ */
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{realm}/resource/{type}")
@@ -240,8 +261,7 @@ public class Inspector {
List byType = tx.getResourceMap().getElementsBy(tx, type);
List elementOverviews = new ArrayList<>(byType.size());
for (Resource resource : byType) {
- ResourceOverview resourceOverview = new ResourceOverview(resource.getId(), resource.getName(),
- resource.getType());
+ ResourceOverview resourceOverview = new ResourceOverview(resource);
elementOverviews.add(resourceOverview);
}
typeDetail = new TypeDetail(type, elementOverviews);
@@ -252,6 +272,23 @@ public class Inspector {
return Response.ok().entity(entity).build();
}
+ /**
+ *
+ * Order type inspector
+ *
+ *
+ * Returns an overview of the {@link Order Orders} with the given type. This is a list of overviews of the orders
+ *
+ *
+ * @param realm
+ * the realm for which the order type overview is to be returned
+ * @param type
+ *
+ * @return an overview of the {@link Order Orders} with the given type. This is a list of overviews of the orders
+ *
+ * @see TypeDetail
+ * @see StrolchElementOverview
+ */
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{realm}/order/{type}")
@@ -264,8 +301,7 @@ public class Inspector {
List byType = tx.getOrderMap().getElementsBy(tx, type);
List elementOverviews = new ArrayList<>(byType.size());
for (Order order : byType) {
- OrderOverview orderOverview = new OrderOverview(order.getId(), order.getName(), order.getType(),
- order.getDate(), order.getState());
+ OrderOverview orderOverview = new OrderOverview(order);
elementOverviews.add(orderOverview);
}
typeDetail = new TypeDetail(type, elementOverviews);
@@ -276,6 +312,26 @@ public class Inspector {
return Response.ok().entity(entity).build();
}
+ /**
+ *
+ * Resource inspector
+ *
+ *
+ *
+ * Returns the resource with the given id
+ *
+ *
+ * @param realm
+ * the realm for which the resource is to be returned
+ * @param type
+ * the type of the resource
+ * @param id
+ * the id of the resource
+ *
+ * @return the resource with the given id
+ *
+ * @see Res
+ */
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{realm}/resource/{type}/{id}")
@@ -292,10 +348,8 @@ public class Inspector {
throw new StrolchException("No Resource exists for " + type + "/" + id);
}
- ResourceOverview resourceOverview = new ResourceOverview(resource.getId(), resource.getName(),
- resource.getType());
- GenericEntity entity = new GenericEntity(resourceOverview,
- ResourceOverview.class) {
+ ResourceDetail resourceDetail = new ResourceDetail(resource);
+ GenericEntity entity = new GenericEntity(resourceDetail, ResourceDetail.class) {
};
return Response.ok().entity(entity).build();
}
@@ -316,9 +370,8 @@ public class Inspector {
throw new StrolchException("No Order exists for " + type + "/" + id);
}
- OrderOverview orderOverview = new OrderOverview(order.getId(), order.getName(), order.getType(),
- order.getDate(), order.getState());
- GenericEntity entity = new GenericEntity(orderOverview, OrderOverview.class) {
+ OrderDetail orderDetail = new OrderDetail(order);
+ GenericEntity entity = new GenericEntity(orderDetail, OrderDetail.class) {
};
return Response.ok().entity(entity).build();
}
diff --git a/src/main/java/li/strolch/rest/inspector/StrolchRestfulExceptionMapper.java b/src/main/java/li/strolch/rest/inspector/StrolchRestfulExceptionMapper.java
index 310ffd1c9..7b2b69c87 100644
--- a/src/main/java/li/strolch/rest/inspector/StrolchRestfulExceptionMapper.java
+++ b/src/main/java/li/strolch/rest/inspector/StrolchRestfulExceptionMapper.java
@@ -4,10 +4,11 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
-import org.glassfish.grizzly.utils.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ch.eitchnet.utils.helper.StringHelper;
+
@Provider
public class StrolchRestfulExceptionMapper implements ExceptionMapper {
@@ -16,6 +17,6 @@ public class StrolchRestfulExceptionMapper implements ExceptionMapper
@Override
public Response toResponse(Exception ex) {
logger.error("Handling exception " + ex.getClass(), ex);
- return Response.status(500).entity(Exceptions.getStackTraceAsString(ex)).type("text/plain").build();
+ return Response.status(500).entity(StringHelper.formatException(ex)).type("text/plain").build();
}
}
\ No newline at end of file
diff --git a/src/main/java/li/strolch/rest/inspector/model/ElementMapOverview.java b/src/main/java/li/strolch/rest/inspector/model/ElementMapOverview.java
index 5967a3855..f295f89b0 100644
--- a/src/main/java/li/strolch/rest/inspector/model/ElementMapOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/ElementMapOverview.java
@@ -95,4 +95,38 @@ public class ElementMapOverview {
public void setTypeOverviews(List typeOverviews) {
this.typeOverviews = typeOverviews;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.elementMapName == null) ? 0 : this.elementMapName.hashCode());
+ result = prime * result + (int) (this.size ^ (this.size >>> 32));
+ result = prime * result + ((this.typeOverviews == null) ? 0 : this.typeOverviews.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ElementMapOverview other = (ElementMapOverview) obj;
+ if (this.elementMapName == null) {
+ if (other.elementMapName != null)
+ return false;
+ } else if (!this.elementMapName.equals(other.elementMapName))
+ return false;
+ if (this.size != other.size)
+ return false;
+ if (this.typeOverviews == null) {
+ if (other.typeOverviews != null)
+ return false;
+ } else if (!this.typeOverviews.equals(other.typeOverviews))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/ElementMapsOverview.java b/src/main/java/li/strolch/rest/inspector/model/ElementMapsOverview.java
index 4a5b55dcb..854ab71ec 100644
--- a/src/main/java/li/strolch/rest/inspector/model/ElementMapsOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/ElementMapsOverview.java
@@ -50,11 +50,22 @@ public class ElementMapsOverview {
* @param elementMapType
*/
public ElementMapsOverview(ElementMapType elementMapType) {
- super();
this.elementMapType = elementMapType;
this.name = elementMapType.getName();
}
+ /**
+ *
+ * @param elementMapType
+ * @param nrOfElements
+ * @param types
+ */
+ public ElementMapsOverview(ElementMapType elementMapType, long nrOfElements, Set types) {
+ this(elementMapType);
+ this.nrOfElements = nrOfElements;
+ this.types = types;
+ }
+
/**
* @return the name
*/
@@ -114,4 +125,41 @@ public class ElementMapsOverview {
public void setNrOfElements(long nrOfElements) {
this.nrOfElements = nrOfElements;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.elementMapType == null) ? 0 : this.elementMapType.hashCode());
+ result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
+ result = prime * result + (int) (this.nrOfElements ^ (this.nrOfElements >>> 32));
+ result = prime * result + ((this.types == null) ? 0 : this.types.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ElementMapsOverview other = (ElementMapsOverview) obj;
+ if (this.elementMapType != other.elementMapType)
+ return false;
+ if (this.name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!this.name.equals(other.name))
+ return false;
+ if (this.nrOfElements != other.nrOfElements)
+ return false;
+ if (this.types == null) {
+ if (other.types != null)
+ return false;
+ } else if (!this.types.equals(other.types))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/GroupedParameterizedElementDetail.java b/src/main/java/li/strolch/rest/inspector/model/GroupedParameterizedElementDetail.java
new file mode 100644
index 000000000..187ee1a83
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/GroupedParameterizedElementDetail.java
@@ -0,0 +1,111 @@
+/*
+ * 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.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+import li.strolch.model.GroupedParameterizedElement;
+import li.strolch.model.ParameterBag;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement(name = "GroupedParameterizedElement")
+@XmlSeeAlso({ ResourceDetail.class, OrderDetail.class })
+public class GroupedParameterizedElementDetail extends StrolchElementDetail {
+
+ @XmlElement(name = "parameterBags", type = ParameterizedElementDetail.class)
+ private List parameterizedElements;
+
+ public GroupedParameterizedElementDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ * @param id
+ * @param name
+ * @param type
+ * @param parameterizedElements
+ */
+ public GroupedParameterizedElementDetail(String id, String name, String type,
+ List parameterizedElements) {
+ super(id, name, type);
+ this.parameterizedElements = parameterizedElements;
+ }
+
+ /**
+ * @param strolchElement
+ */
+ public GroupedParameterizedElementDetail(GroupedParameterizedElement groupedParameterizedElement) {
+ super(groupedParameterizedElement);
+
+ Set bagKeySet = groupedParameterizedElement.getParameterBagKeySet();
+ this.parameterizedElements = new ArrayList<>(bagKeySet.size());
+ for (String bagId : bagKeySet) {
+ ParameterBag parameterBag = groupedParameterizedElement.getParameterBag(bagId);
+ this.parameterizedElements.add(new ParameterizedElementDetail(parameterBag));
+ }
+ }
+
+ /**
+ * @return the parameterizedElements
+ */
+ public List getParameterizedElements() {
+ return this.parameterizedElements;
+ }
+
+ /**
+ * @param parameterizedElements
+ * the parameterizedElements to set
+ */
+ public void setParameterizedElements(List parameterizedElements) {
+ this.parameterizedElements = parameterizedElements;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((this.parameterizedElements == null) ? 0 : this.parameterizedElements.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ GroupedParameterizedElementDetail other = (GroupedParameterizedElementDetail) obj;
+ if (this.parameterizedElements == null) {
+ if (other.parameterizedElements != null)
+ return false;
+ } else if (!this.parameterizedElements.equals(other.parameterizedElements))
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/OrderDetail.java b/src/main/java/li/strolch/rest/inspector/model/OrderDetail.java
new file mode 100644
index 000000000..998302994
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/OrderDetail.java
@@ -0,0 +1,129 @@
+/*
+ * 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.model;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import li.strolch.model.Order;
+import li.strolch.model.State;
+import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement(name = "Order")
+@XmlType(name = "")
+public class OrderDetail extends GroupedParameterizedElementDetail {
+
+ @XmlAttribute(name = "date")
+ private String date;
+ @XmlAttribute(name = "state")
+ private State state;
+
+ public OrderDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ * @param id
+ * @param name
+ * @param type
+ * @param date
+ * @param state
+ * @param parameterizedElementDetails
+ */
+ public OrderDetail(String id, String name, String type, Date date, State state,
+ List parameterizedElementDetails) {
+ super(id, name, type, parameterizedElementDetails);
+ this.state = state;
+ this.date = ISO8601FormatFactory.getInstance().formatDate(date);
+ }
+
+ /**
+ * @param order
+ */
+ public OrderDetail(Order order) {
+ super(order);
+ this.state = order.getState();
+ this.date = ISO8601FormatFactory.getInstance().formatDate(order.getDate());
+ }
+
+ /**
+ * @return the date
+ */
+ public String getDate() {
+ return this.date;
+ }
+
+ /**
+ * @param date
+ * the date to set
+ */
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ /**
+ * @return the state
+ */
+ public State getState() {
+ return this.state;
+ }
+
+ /**
+ * @param state
+ * the state to set
+ */
+ public void setState(State state) {
+ this.state = state;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((this.date == null) ? 0 : this.date.hashCode());
+ result = prime * result + ((this.state == null) ? 0 : this.state.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ OrderDetail other = (OrderDetail) obj;
+ if (this.date == null) {
+ if (other.date != null)
+ return false;
+ } else if (!this.date.equals(other.date))
+ return false;
+ if (this.state != other.state)
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/OrderOverview.java b/src/main/java/li/strolch/rest/inspector/model/OrderOverview.java
index 256a82c29..869a99bd3 100644
--- a/src/main/java/li/strolch/rest/inspector/model/OrderOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/OrderOverview.java
@@ -22,6 +22,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import li.strolch.model.Order;
import li.strolch.model.State;
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
@@ -52,6 +53,15 @@ public class OrderOverview extends StrolchElementOverview {
this.date = ISO8601FormatFactory.getInstance().formatDate(date);
}
+ /**
+ * @param order
+ */
+ public OrderOverview(Order order) {
+ super(order);
+ this.state = order.getState();
+ this.date = ISO8601FormatFactory.getInstance().formatDate(order.getDate());
+ }
+
/**
* @return the date
*/
@@ -81,4 +91,32 @@ public class OrderOverview extends StrolchElementOverview {
public void setState(State state) {
this.state = state;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((this.date == null) ? 0 : this.date.hashCode());
+ result = prime * result + ((this.state == null) ? 0 : this.state.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ OrderOverview other = (OrderOverview) obj;
+ if (this.date == null) {
+ if (other.date != null)
+ return false;
+ } else if (!this.date.equals(other.date))
+ return false;
+ if (this.state != other.state)
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/ParameterDetail.java b/src/main/java/li/strolch/rest/inspector/model/ParameterDetail.java
new file mode 100644
index 000000000..febc3e68e
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/ParameterDetail.java
@@ -0,0 +1,174 @@
+/*
+ * 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.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import li.strolch.model.parameter.Parameter;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement(name = "Parameter")
+public class ParameterDetail extends StrolchElementDetail {
+
+ @XmlAttribute(name = "hidden")
+ private boolean hidden;
+ @XmlAttribute(name = "interpretation")
+ private String interpretation;
+ @XmlAttribute(name = "uom")
+ private String uom;
+ @XmlAttribute(name = "value")
+ private String value;
+
+ public ParameterDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ *
+ * @param id
+ * @param name
+ * @param type
+ * @param hidden
+ * @param interpretation
+ * @param uom
+ * @param value
+ */
+ public ParameterDetail(String id, String name, String type, boolean hidden, String interpretation, String uom,
+ String value) {
+ super(id, name, type);
+ this.hidden = hidden;
+ this.interpretation = interpretation;
+ this.uom = uom;
+ this.value = value;
+ }
+
+ /**
+ * @param parameter
+ */
+ public ParameterDetail(Parameter> parameter) {
+ super(parameter);
+ this.hidden = parameter.isHidden();
+ this.interpretation = parameter.getInterpretation();
+ this.uom = parameter.getUom();
+ this.value = parameter.getValueAsString();
+ }
+
+ /**
+ * @return the hidden
+ */
+ public boolean isHidden() {
+ return this.hidden;
+ }
+
+ /**
+ * @param hidden
+ * the hidden to set
+ */
+ public void setHidden(boolean hidden) {
+ this.hidden = hidden;
+ }
+
+ /**
+ * @return the interpretation
+ */
+ public String getInterpretation() {
+ return this.interpretation;
+ }
+
+ /**
+ * @param interpretation
+ * the interpretation to set
+ */
+ public void setInterpretation(String interpretation) {
+ this.interpretation = interpretation;
+ }
+
+ /**
+ * @return the uom
+ */
+ public String getUom() {
+ return this.uom;
+ }
+
+ /**
+ * @param uom
+ * the uom to set
+ */
+ public void setUom(String uom) {
+ this.uom = uom;
+ }
+
+ /**
+ * @return the value
+ */
+ public String getValue() {
+ return this.value;
+ }
+
+ /**
+ * @param value
+ * the value to set
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + (this.hidden ? 1231 : 1237);
+ result = prime * result + ((this.interpretation == null) ? 0 : this.interpretation.hashCode());
+ result = prime * result + ((this.uom == null) ? 0 : this.uom.hashCode());
+ result = prime * result + ((this.value == null) ? 0 : this.value.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ParameterDetail other = (ParameterDetail) obj;
+ if (this.hidden != other.hidden)
+ return false;
+ if (this.interpretation == null) {
+ if (other.interpretation != null)
+ return false;
+ } else if (!this.interpretation.equals(other.interpretation))
+ return false;
+ if (this.uom == null) {
+ if (other.uom != null)
+ return false;
+ } else if (!this.uom.equals(other.uom))
+ return false;
+ if (this.value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!this.value.equals(other.value))
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/ParameterizedElementDetail.java b/src/main/java/li/strolch/rest/inspector/model/ParameterizedElementDetail.java
new file mode 100644
index 000000000..36af9453b
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/ParameterizedElementDetail.java
@@ -0,0 +1,106 @@
+/*
+ * 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.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import li.strolch.model.ParameterizedElement;
+import li.strolch.model.parameter.Parameter;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement(name = "ParameterBag")
+public class ParameterizedElementDetail extends StrolchElementDetail {
+
+ @XmlElement(name = "parameters", type = ParameterDetail.class)
+ private List parameters;
+
+ public ParameterizedElementDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ * @param id
+ * @param name
+ * @param type
+ * @param parameters
+ */
+ public ParameterizedElementDetail(String id, String name, String type, List parameters) {
+ super(id, name, type);
+ this.parameters = parameters;
+ }
+
+ /**
+ * @param strolchElement
+ */
+ public ParameterizedElementDetail(ParameterizedElement parameterizedElement) {
+ super(parameterizedElement);
+
+ List> parameters = parameterizedElement.getParameters();
+ this.parameters = new ArrayList<>(parameters.size());
+ for (Parameter> parameter : parameters) {
+ this.parameters.add(new ParameterDetail(parameter));
+ }
+ }
+
+ /**
+ * @return the parameters
+ */
+ public List getParameters() {
+ return this.parameters;
+ }
+
+ /**
+ * @param parameters
+ * the parameters to set
+ */
+ public void setParameters(List parameters) {
+ this.parameters = parameters;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((this.parameters == null) ? 0 : this.parameters.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ParameterizedElementDetail other = (ParameterizedElementDetail) obj;
+ if (this.parameters == null) {
+ if (other.parameters != null)
+ return false;
+ } else if (!this.parameters.equals(other.parameters))
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/RealmDetail.java b/src/main/java/li/strolch/rest/inspector/model/RealmDetail.java
index a61ac7c3e..8df977518 100644
--- a/src/main/java/li/strolch/rest/inspector/model/RealmDetail.java
+++ b/src/main/java/li/strolch/rest/inspector/model/RealmDetail.java
@@ -29,7 +29,7 @@ import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Realm")
public class RealmDetail {
- @XmlElement(name = "ElementMaps")
+ @XmlElement(name = "elementMaps")
private List elementMapOverviews;
public RealmDetail() {
@@ -54,4 +54,29 @@ public class RealmDetail {
public void setElementMapOverviews(List elementMapOverviews) {
this.elementMapOverviews = elementMapOverviews;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.elementMapOverviews == null) ? 0 : this.elementMapOverviews.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ RealmDetail other = (RealmDetail) obj;
+ if (this.elementMapOverviews == null) {
+ if (other.elementMapOverviews != null)
+ return false;
+ } else if (!this.elementMapOverviews.equals(other.elementMapOverviews))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/RealmOverview.java b/src/main/java/li/strolch/rest/inspector/model/RealmOverview.java
index a972f46f0..11744e9ef 100644
--- a/src/main/java/li/strolch/rest/inspector/model/RealmOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/RealmOverview.java
@@ -36,10 +36,13 @@ public class RealmOverview {
// no-arg constructor for JAXB
}
+ /**
+ * @param realmName
+ * @param size
+ */
public RealmOverview(String realmName, long size) {
this.realmName = realmName;
this.size = size;
-
}
/**
diff --git a/src/main/java/li/strolch/rest/inspector/model/ResourceDetail.java b/src/main/java/li/strolch/rest/inspector/model/ResourceDetail.java
new file mode 100644
index 000000000..cb80ef8f1
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/ResourceDetail.java
@@ -0,0 +1,55 @@
+/*
+ * 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.model;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import li.strolch.model.Resource;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement(name = "Resource")
+@XmlType(name = "")
+public class ResourceDetail extends GroupedParameterizedElementDetail {
+
+ public ResourceDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ * @param id
+ * @param name
+ * @param type
+ * @param parameterizedElements
+ */
+ public ResourceDetail(String id, String name, String type, List parameterizedElements) {
+ super(id, name, type, parameterizedElements);
+ }
+
+ /**
+ * @param resource
+ */
+ public ResourceDetail(Resource resource) {
+ super(resource);
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/ResourceOverview.java b/src/main/java/li/strolch/rest/inspector/model/ResourceOverview.java
index 35bab97ea..a3138a3b5 100644
--- a/src/main/java/li/strolch/rest/inspector/model/ResourceOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/ResourceOverview.java
@@ -15,11 +15,16 @@
*/
package li.strolch.rest.inspector.model;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import li.strolch.model.Resource;
+
/**
* @author Robert von Burg
*/
+@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "Resource")
public class ResourceOverview extends StrolchElementOverview {
@@ -35,4 +40,11 @@ public class ResourceOverview extends StrolchElementOverview {
public ResourceOverview(String id, String name, String type) {
super(id, name, type);
}
+
+ /**
+ * @param resource
+ */
+ public ResourceOverview(Resource resource) {
+ super(resource);
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/StrolchElementDetail.java b/src/main/java/li/strolch/rest/inspector/model/StrolchElementDetail.java
new file mode 100644
index 000000000..545e2b9d8
--- /dev/null
+++ b/src/main/java/li/strolch/rest/inspector/model/StrolchElementDetail.java
@@ -0,0 +1,144 @@
+/*
+ * 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.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+import li.strolch.model.StrolchElement;
+
+/**
+ * @author Robert von Burg
+ */
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlSeeAlso({ GroupedParameterizedElementDetail.class, ParameterizedElementDetail.class, ParameterDetail.class })
+public abstract class StrolchElementDetail {
+
+ @XmlAttribute(name = "id", required = true)
+ private String id;
+ @XmlAttribute(name = "name", required = true)
+ private String name;
+ @XmlAttribute(name = "type", required = true)
+ private String type;
+
+ public StrolchElementDetail() {
+ // no-arg constructor for JAXB
+ }
+
+ /**
+ * @param id
+ * @param name
+ * @param type
+ */
+ public StrolchElementDetail(String id, String name, String type) {
+ this.id = id;
+ this.name = name;
+ this.type = type;
+ }
+
+ /**
+ * @param strolchElement
+ */
+ public StrolchElementDetail(StrolchElement strolchElement) {
+ this.id = strolchElement.getId();
+ this.name = strolchElement.getName();
+ this.type = strolchElement.getType();
+ }
+
+ /**
+ * @return the id
+ */
+ public String getId() {
+ return this.id;
+ }
+
+ /**
+ * @param id
+ * the id to set
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * @param name
+ * the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return this.type;
+ }
+
+ /**
+ * @param type
+ * the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
+ result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
+ result = prime * result + ((this.type == null) ? 0 : this.type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StrolchElementDetail other = (StrolchElementDetail) obj;
+ if (this.id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!this.id.equals(other.id))
+ return false;
+ if (this.name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!this.name.equals(other.name))
+ return false;
+ if (this.type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!this.type.equals(other.type))
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/li/strolch/rest/inspector/model/StrolchElementOverview.java b/src/main/java/li/strolch/rest/inspector/model/StrolchElementOverview.java
index 1140ab05a..51b458041 100644
--- a/src/main/java/li/strolch/rest/inspector/model/StrolchElementOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/StrolchElementOverview.java
@@ -20,6 +20,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSeeAlso;
+import li.strolch.model.StrolchElement;
+
/**
* @author Robert von Burg
*/
@@ -44,12 +46,20 @@ public abstract class StrolchElementOverview {
* @param type
*/
public StrolchElementOverview(String id, String name, String type) {
- super();
this.id = id;
this.name = name;
this.type = type;
}
+ /**
+ * @param strolchElement
+ */
+ public StrolchElementOverview(StrolchElement strolchElement) {
+ this.id = strolchElement.getId();
+ this.name = strolchElement.getName();
+ this.type = strolchElement.getType();
+ }
+
/**
* @return the id
*/
@@ -94,4 +104,41 @@ public abstract class StrolchElementOverview {
public void setType(String type) {
this.type = type;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
+ result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
+ result = prime * result + ((this.type == null) ? 0 : this.type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StrolchElementOverview other = (StrolchElementOverview) obj;
+ if (this.id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!this.id.equals(other.id))
+ return false;
+ if (this.name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!this.name.equals(other.name))
+ return false;
+ if (this.type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!this.type.equals(other.type))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/TypeDetail.java b/src/main/java/li/strolch/rest/inspector/model/TypeDetail.java
index 6f97a2f23..446d2dcb4 100644
--- a/src/main/java/li/strolch/rest/inspector/model/TypeDetail.java
+++ b/src/main/java/li/strolch/rest/inspector/model/TypeDetail.java
@@ -34,8 +34,8 @@ public class TypeDetail {
@XmlAttribute(name = "type")
private String type;
- @XmlElements(value = { @XmlElement(name = "Orders", type = OrderOverview.class),
- @XmlElement(name = "Resources", type = ResourceOverview.class) })
+ @XmlElements({ @XmlElement(name = "orders", type = OrderOverview.class),
+ @XmlElement(name = "resources", type = ResourceOverview.class) })
private List elementOverviews;
public TypeDetail() {
@@ -47,7 +47,6 @@ public class TypeDetail {
* @param elementOverviews
*/
public TypeDetail(String type, List elementOverviews) {
- super();
this.type = type;
this.elementOverviews = elementOverviews;
}
@@ -81,4 +80,35 @@ public class TypeDetail {
public void setElementOverviews(List elementOverviews) {
this.elementOverviews = elementOverviews;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.elementOverviews == null) ? 0 : this.elementOverviews.hashCode());
+ result = prime * result + ((this.type == null) ? 0 : this.type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ TypeDetail other = (TypeDetail) obj;
+ if (this.elementOverviews == null) {
+ if (other.elementOverviews != null)
+ return false;
+ } else if (!this.elementOverviews.equals(other.elementOverviews))
+ return false;
+ if (this.type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!this.type.equals(other.type))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/li/strolch/rest/inspector/model/TypeOverview.java b/src/main/java/li/strolch/rest/inspector/model/TypeOverview.java
index 005620bf2..95604955d 100644
--- a/src/main/java/li/strolch/rest/inspector/model/TypeOverview.java
+++ b/src/main/java/li/strolch/rest/inspector/model/TypeOverview.java
@@ -75,4 +75,32 @@ public class TypeOverview {
public void setSize(long size) {
this.size = size;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (this.size ^ (this.size >>> 32));
+ result = prime * result + ((this.type == null) ? 0 : this.type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ TypeOverview other = (TypeOverview) obj;
+ if (this.size != other.size)
+ return false;
+ if (this.type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!this.type.equals(other.type))
+ return false;
+ return true;
+ }
}
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 f1e987da4..f2cbc4fee 100644
--- a/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java
+++ b/src/test/java/li/strolch/rest/inspector/test/AbstractRestfulTest.java
@@ -18,12 +18,14 @@ package li.strolch.rest.inspector.test;
import java.io.File;
import java.net.URI;
+import javax.ws.rs.core.MediaType;
+
import li.strolch.rest.inspector.AgentRef;
import li.strolch.rest.inspector.StrolchRestfulClasses;
import li.strolch.rest.inspector.StrolchRestfulExceptionMapper;
-import li.strolch.service.api.ServiceHandler;
import li.strolch.testbase.runtime.RuntimeMock;
+import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
@@ -32,6 +34,12 @@ import org.junit.BeforeClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.config.ClientConfig;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+
/**
* @author Robert von Burg
*/
@@ -73,7 +81,20 @@ public abstract class AbstractRestfulTest {
runtimeMock.destroyRuntime();
}
- public static ServiceHandler getServiceHandler() {
- return runtimeMock.getContainer().getComponent(ServiceHandler.class);
+ protected WebResource getResource() {
+ ClientConfig cc = new DefaultClientConfig();
+ cc.getClasses().add(MOXyJsonProvider.class);
+ Client client = Client.create(cc);
+ WebResource resource = client.resource(BASE_URI);
+ return resource;
}
+
+ protected ClientResponse getClientResponse(String path) {
+ WebResource resource = getResource();
+ ClientResponse response = resource.path(path).accept(MediaType.APPLICATION_JSON_TYPE).get(ClientResponse.class);
+ if (response.getStatus() != ClientResponse.Status.OK.getStatusCode())
+ throw new RuntimeException("Failed to get path " + path + " due to " + response.getEntity(String.class));
+ return response;
+ }
+
}
diff --git a/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java b/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java
index beb11bc34..d4328720d 100644
--- a/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java
+++ b/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java
@@ -16,44 +16,33 @@
package li.strolch.rest.inspector.test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
-
-import javax.ws.rs.core.MediaType;
+import java.util.Set;
import li.strolch.rest.inspector.model.AgentOverview;
+import li.strolch.rest.inspector.model.ElementMapOverview;
+import li.strolch.rest.inspector.model.ElementMapType;
+import li.strolch.rest.inspector.model.ElementMapsOverview;
+import li.strolch.rest.inspector.model.OrderDetail;
+import li.strolch.rest.inspector.model.RealmDetail;
import li.strolch.rest.inspector.model.RealmOverview;
+import li.strolch.rest.inspector.model.ResourceDetail;
+import li.strolch.rest.inspector.model.TypeOverview;
-import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;
import org.junit.Test;
-import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
/**
* @author Robert von Burg
*/
public class InspectorTest extends AbstractRestfulTest {
- protected WebResource getResource() {
- ClientConfig cc = new DefaultClientConfig();
- cc.getClasses().add(MOXyJsonProvider.class);
- Client client = Client.create(cc);
- WebResource resource = client.resource(BASE_URI);
- return resource;
- }
-
- protected ClientResponse getClientResponse(String path) {
- WebResource resource = getResource();
- ClientResponse response = resource.path(path).accept(MediaType.APPLICATION_JSON_TYPE).get(ClientResponse.class);
- return response;
- }
-
@Test
public void shouldGetAgent() {
@@ -70,4 +59,107 @@ public class InspectorTest extends AbstractRestfulTest {
// assertions
assertEquals(expectedAgentOverview, agentOverview);
}
+
+ @Test
+ public void shouldGetRealm() {
+
+ // expected result
+ List elementMapOverviews = new ArrayList<>(2);
+ Set resourceTypes = new HashSet<>();
+ resourceTypes.add("Template");
+ resourceTypes.add("TestType");
+ elementMapOverviews.add(new ElementMapsOverview(ElementMapType.RESOURCE, 2, resourceTypes));
+ Set orderTypes = new HashSet<>();
+ orderTypes.add("Template");
+ orderTypes.add("TestType");
+ elementMapOverviews.add(new ElementMapsOverview(ElementMapType.ORDER, 2, orderTypes));
+ RealmDetail expectedRealmDetail = new RealmDetail(elementMapOverviews);
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm");
+ RealmDetail realmDetail = response.getEntity(new GenericType() {
+ });
+
+ // assertions
+ assertEquals(expectedRealmDetail, realmDetail);
+ }
+
+ @Test
+ public void shouldGetResourcesOverview() {
+
+ // expected result
+ String elementMapName = "Resource";
+ List typeOverviews = new ArrayList<>(2);
+ typeOverviews.add(new TypeOverview("Template", 1));
+ typeOverviews.add(new TypeOverview("TestType", 1));
+ ElementMapOverview expectedElementMapOverview = new ElementMapOverview(elementMapName, typeOverviews);
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/resource");
+ ElementMapOverview elementMapOverview = response.getEntity(new GenericType() {
+ });
+
+ // assertions
+ assertEquals(expectedElementMapOverview, elementMapOverview);
+ }
+
+ @Test
+ public void shouldGetOrdersOverview() {
+
+ // expected result
+ String elementMapName = "Order";
+ List typeOverviews = new ArrayList<>(2);
+ typeOverviews.add(new TypeOverview("Template", 1));
+ typeOverviews.add(new TypeOverview("TestType", 1));
+ ElementMapOverview expectedElementMapOverview = new ElementMapOverview(elementMapName, typeOverviews);
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/order");
+ ElementMapOverview elementMapOverview = response.getEntity(new GenericType() {
+ });
+
+ // assertions
+ assertEquals(expectedElementMapOverview, elementMapOverview);
+ }
+
+ // TODO modify object model to include discriminator values, so that we can parse the objects
+
+ @Test
+ public void shouldGetResourceTypeDetails() {
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/resource/Template");
+ String entity = response.getEntity(String.class);
+ String expected = "{\"type\":\"Template\",\"resources\":[{\"id\":\"TestType\",\"name\":\"TestType Template\",\"type\":\"Template\"}]}";
+ assertEquals(expected, entity);
+ }
+
+ @Test
+ public void shouldGetOrderTypeDetails() {
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/order/Template");
+ String entity = response.getEntity(String.class);
+ String expected = "{\"type\":\"Template\",\"orders\":[{\"id\":\"TestType\",\"name\":\"MyTestOrder Template\",\"type\":\"Template\",\"date\":\"2012-11-30T18:12:05.628+01:00\",\"state\":\"CREATED\"}]}";
+ assertEquals(expected, entity);
+ }
+
+ @Test
+ public void shouldGetResource() {
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/resource/Template/TestType");
+ String entity = response.getEntity(String.class);
+ assertTrue(entity.contains("name\":\"TestType Template\",\"type\":\"Template\",\"parameterBags\":"));
+ }
+
+ @Test
+ public void shouldGetOrder() {
+
+ // query
+ ClientResponse response = getClientResponse("/strolch/inspector/defaultRealm/order/Template/TestType");
+ String entity = response.getEntity(String.class);
+ assertTrue(entity
+ .contains("\"date\":\"2012-11-30T18:12:05.628+01:00\",\"state\":\"CREATED\",\"parameterBags\""));
+ }
}
diff --git a/src/test/resources/withPrivilegeRuntime/data/StrolchModel.xml b/src/test/resources/withPrivilegeRuntime/data/StrolchModel.xml
index cb2396975..3cf9f2d8c 100644
--- a/src/test/resources/withPrivilegeRuntime/data/StrolchModel.xml
+++ b/src/test/resources/withPrivilegeRuntime/data/StrolchModel.xml
@@ -11,7 +11,7 @@
-
+