diff --git a/li.strolch.model/src/main/java/li/strolch/model/Tags.java b/li.strolch.model/src/main/java/li/strolch/model/Tags.java
index fc55f50d6..26eda75fa 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/Tags.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/Tags.java
@@ -18,8 +18,11 @@ package li.strolch.model;
@SuppressWarnings("nls")
public class Tags {
+ public static final String RESOURCE = "Resource";
+ public static final String ORDER = "Order";
+ public static final String ACTIVITY = "Activity";
+
public static final String CDATA = "CDATA";
- public static final String OBJECT_TYPE = "ObjectType";
public static final String ID = "Id";
public static final String NAME = "Name";
public static final String TYPE = "Type";
@@ -33,13 +36,9 @@ public class Tags {
public static final String HIDDEN = "Hidden";
public static final String INDEX = "Index";
public static final String PARAMETER = "Parameter";
- public static final String PARAMETERS = "Parameters";
public static final String TIMED_STATE = "TimedState";
- public static final String TIMED_STATES = "TimedStates";
public static final String PARAMETERIZED_ELEMENT = "ParameterizedElement";
- public static final String RESOURCE = "Resource";
- public static final String ORDER = "Order";
- public static final String PARAMETER_BAGS = "ParameterBags";
+
public static final String PARAMETER_BAG = "ParameterBag";
public static final String STROLCH_MODEL = "StrolchModel";
public static final String INCLUDE_FILE = "IncludeFile";
@@ -48,13 +47,12 @@ public class Tags {
public static final String AUDIT = "Audit";
public static final String POLICIES = "Policies";
public static final String POLICY = "Policy";
- public static final String ELEMENTS = "Elements";
+
public static final String VERSION = "Version";
public static final String CREATED_AT = "CreatedAt";
public static final String CREATED_BY = "CreatedBy";
public static final String DELETED = "Deleted";
- public static final String ACTIVITY = "Activity";
public static final String TIME_ORDERING = "TimeOrdering";
public static final String ACTION = "Action";
public static final String START = "Start";
@@ -65,6 +63,58 @@ public class Tags {
public static final String RESOURCE_TYPE = "ResourceType";
public static final String STATE_ID = "StateId";
+ public static class Json {
+
+ // elements
+
+ public static final String RESOURCE = "resource";
+ public static final String ORDER = "order";
+ public static final String ACTIVITY = "activity";
+
+ public static final String OBJECT_TYPE = "objectType";
+
+ public static final String ID = "id";
+ public static final String TYPE = "type";
+ public static final String NAME = "name";
+ public static final String DATE = "date";
+ public static final String STATE = "state";
+ public static final String TIME_ORDERING = "timeOrdering";
+
+ public static final String PARAMETER_BAGS = "parameterBags";
+ public static final String PARAMETERS = "parameters";
+ public static final String INTERPRETATION = "interpretation";
+ public static final String UOM = "uom";
+ public static final String HIDDEN = "hidden";
+ public static final String INDEX = "index";
+
+ public static final String TIMED_STATES = "timedStates";
+ public static final String VALUES = "values";
+
+ public static final String ACTION = "action";
+ public static final String RESOURCE_ID = "resourceId";
+ public static final String RESOURCE_TYPE = "resourceType";
+ public static final String VALUE_CHANGES = "valueChanges";
+ public static final String STATE_ID = "stateId";
+ public static final String VALUE = "value";
+ public static final String TIME = "time";
+
+ public static final String POLICIES = "policies";
+
+ public static final String VERSION = "version";
+ public static final String CREATED_AT = "createdAt";
+ public static final String CREATED_BY = "createdBy";
+ public static final String DELETED = "deleted";
+
+ // miscellaneous
+
+ public static final String ELEMENTS = "elements";
+ public static final String NR_OF_ELEMENTS = "nrOfElements";
+ public static final String ELEMENT_MAPS = "elementMaps";
+ public static final String TYPES = "types";
+ public static final String REALMS = "realms";
+ public static final String SIZE = "size";
+ }
+
public static class Audit {
public static final String ID = Tags.ID;
diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementFromJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementFromJsonVisitor.java
index deecd519f..f1facf435 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementFromJsonVisitor.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementFromJsonVisitor.java
@@ -46,6 +46,7 @@ import li.strolch.model.timedstate.StrolchTimedState;
import li.strolch.model.timevalue.IValue;
import li.strolch.model.timevalue.impl.ValueChange;
import li.strolch.utils.dbc.DBC;
+import li.strolch.utils.helper.StringHelper;
import li.strolch.utils.iso8601.ISO8601FormatFactory;
/**
@@ -64,15 +65,15 @@ public class StrolchElementFromJsonVisitor {
order.setPolicyDefs(defs);
// attributes
- if (jsonObject.has(Tags.DATE)) {
- String date = jsonObject.get(Tags.DATE).getAsString();
+ if (jsonObject.has(Tags.Json.DATE)) {
+ String date = jsonObject.get(Tags.Json.DATE).getAsString();
order.setDate(ISO8601FormatFactory.getInstance().getDateFormat().parse(date));
} else {
- order.setDate(ISO8601FormatFactory.getInstance().getDateFormat().parse("-")); //$NON-NLS-1$
+ order.setDate(ISO8601FormatFactory.getInstance().getDateFormat().parse(StringHelper.DASH)); //$NON-NLS-1$
}
- if (jsonObject.has(Tags.STATE)) {
- order.setState(State.parse(jsonObject.get(Tags.STATE).getAsString()));
+ if (jsonObject.has(Tags.Json.STATE)) {
+ order.setState(State.parse(jsonObject.get(Tags.Json.STATE).getAsString()));
} else {
order.setState(State.CREATED);
}
@@ -89,10 +90,10 @@ public class StrolchElementFromJsonVisitor {
resource.setPolicyDefs(defs);
// time states
- if (!jsonObject.has(Tags.TIMED_STATES))
+ if (!jsonObject.has(Tags.Json.TIMED_STATES))
return;
- JsonObject timedStatesJ = jsonObject.getAsJsonObject(Tags.TIMED_STATES);
+ JsonObject timedStatesJ = jsonObject.getAsJsonObject(Tags.Json.TIMED_STATES);
Set> entrySet = timedStatesJ.entrySet();
for (Entry entry : entrySet) {
@@ -100,7 +101,7 @@ public class StrolchElementFromJsonVisitor {
JsonObject timeStateJ = entry.getValue().getAsJsonObject();
// evaluate type of TimedState
- String typeS = timeStateJ.get(Tags.TYPE).getAsString();
+ String typeS = timeStateJ.get(Tags.Json.TYPE).getAsString();
DBC.PRE.assertNotEmpty("Type must be set on TimedState for resource with id " + resource.getId(), typeS);
StrolchValueType valueType = StrolchValueType.parse(typeS);
StrolchTimedState extends IValue>> timedState = valueType.timedStateInstance();
@@ -116,29 +117,29 @@ public class StrolchElementFromJsonVisitor {
}
// further attributes
- if (timeStateJ.has(Tags.INTERPRETATION))
- timedState.setInterpretation(timeStateJ.get(Tags.INTERPRETATION).getAsString());
- if (timeStateJ.has(Tags.UOM))
- timedState.setUom(timeStateJ.get(Tags.UOM).getAsString());
- if (timeStateJ.has(Tags.INDEX))
- timedState.setIndex(timeStateJ.get(Tags.INDEX).getAsInt());
- if (timeStateJ.has(Tags.HIDDEN))
- timedState.setHidden(timeStateJ.get(Tags.HIDDEN).getAsBoolean());
+ if (timeStateJ.has(Tags.Json.INTERPRETATION))
+ timedState.setInterpretation(timeStateJ.get(Tags.Json.INTERPRETATION).getAsString());
+ if (timeStateJ.has(Tags.Json.UOM))
+ timedState.setUom(timeStateJ.get(Tags.Json.UOM).getAsString());
+ if (timeStateJ.has(Tags.Json.INDEX))
+ timedState.setIndex(timeStateJ.get(Tags.Json.INDEX).getAsInt());
+ if (timeStateJ.has(Tags.Json.HIDDEN))
+ timedState.setHidden(timeStateJ.get(Tags.Json.HIDDEN).getAsBoolean());
resource.addTimedState(timedState);
- if (!timeStateJ.has(Tags.VALUES))
+ if (!timeStateJ.has(Tags.Json.VALUES))
continue;
- JsonArray valuesJ = timeStateJ.getAsJsonArray(Tags.VALUES);
+ JsonArray valuesJ = timeStateJ.getAsJsonArray(Tags.Json.VALUES);
valuesJ.forEach(e -> {
JsonObject timeValueJ = e.getAsJsonObject();
- String timeS = timeValueJ.get(Tags.TIME).getAsString();
+ String timeS = timeValueJ.get(Tags.Json.TIME).getAsString();
long time = ISO8601FormatFactory.getInstance().parseDate(timeS).getTime();
- String valueS = timeValueJ.get(Tags.VALUE).getAsString();
+ String valueS = timeValueJ.get(Tags.Json.VALUE).getAsString();
timedState.setStateFromStringAt(time, valueS);
});
}
@@ -147,9 +148,9 @@ public class StrolchElementFromJsonVisitor {
public void fillElement(JsonObject jsonObject, Activity activity) {
fillElement(jsonObject, (GroupedParameterizedElement) activity);
- if (!jsonObject.has(Tags.TIME_ORDERING))
+ if (!jsonObject.has(Tags.Json.TIME_ORDERING))
throw new StrolchException("TimeOrdering not set on " + activity.getLocator());
- String timeOrderingS = jsonObject.get(Tags.TIME_ORDERING).getAsString();
+ String timeOrderingS = jsonObject.get(Tags.Json.TIME_ORDERING).getAsString();
TimeOrdering timeOrdering = TimeOrdering.parse(timeOrderingS);
activity.setTimeOrdering(timeOrdering);
@@ -160,23 +161,23 @@ public class StrolchElementFromJsonVisitor {
if (defs.hasPolicyDefs())
activity.setPolicyDefs(defs);
- if (!jsonObject.has(Tags.ELEMENTS))
+ if (!jsonObject.has(Tags.Json.ELEMENTS))
return;
- JsonArray elementsJsonArray = jsonObject.getAsJsonArray(Tags.ELEMENTS);
+ JsonArray elementsJsonArray = jsonObject.getAsJsonArray(Tags.Json.ELEMENTS);
elementsJsonArray.forEach(e -> {
JsonObject elementJsonObject = e.getAsJsonObject();
- String objectType = elementJsonObject.get(Tags.OBJECT_TYPE).getAsString();
+ String objectType = elementJsonObject.get(Tags.Json.OBJECT_TYPE).getAsString();
switch (objectType) {
- case Tags.ACTIVITY:
+ case Tags.Json.ACTIVITY:
Activity childActivity = new Activity();
fillElement(elementJsonObject, childActivity);
activity.addElement(childActivity);
break;
- case Tags.ACTION:
+ case Tags.Json.ACTION:
Action childAction = new Action();
fillElement(elementJsonObject, childAction);
activity.addElement(childAction);
@@ -191,9 +192,9 @@ public class StrolchElementFromJsonVisitor {
}
protected void fillElement(JsonObject jsonObject, AbstractStrolchElement strolchElement) {
- if (jsonObject.has(Tags.ID) && jsonObject.has(Tags.NAME)) {
- strolchElement.setId(jsonObject.get(Tags.ID).getAsString());
- strolchElement.setName(jsonObject.get(Tags.NAME).getAsString());
+ if (jsonObject.has(Tags.Json.ID) && jsonObject.has(Tags.Json.NAME)) {
+ strolchElement.setId(jsonObject.get(Tags.Json.ID).getAsString());
+ strolchElement.setName(jsonObject.get(Tags.Json.NAME).getAsString());
} else {
String msg = "Check the values of the jsonObject: {0} either id or name attribute is null!"; //$NON-NLS-1$
msg = MessageFormat.format(msg, jsonObject);
@@ -204,8 +205,8 @@ public class StrolchElementFromJsonVisitor {
protected void fillElement(JsonObject jsonObject, GroupedParameterizedElement groupedParameterizedElement) {
fillElement(jsonObject, (AbstractStrolchElement) groupedParameterizedElement);
- if (jsonObject.has(Tags.TYPE)) {
- groupedParameterizedElement.setType(jsonObject.get(Tags.TYPE).getAsString());
+ if (jsonObject.has(Tags.Json.TYPE)) {
+ groupedParameterizedElement.setType(jsonObject.get(Tags.Json.TYPE).getAsString());
} else {
String msg = "Check the values of the jsonObject: {0} type attribute is null!"; //$NON-NLS-1$
msg = MessageFormat.format(msg, jsonObject);
@@ -213,10 +214,10 @@ public class StrolchElementFromJsonVisitor {
}
// add all the parameter bags
- if (!jsonObject.has(Tags.PARAMETER_BAGS))
+ if (!jsonObject.has(Tags.Json.PARAMETER_BAGS))
return;
- JsonObject bagsJsonObject = jsonObject.getAsJsonObject(Tags.PARAMETER_BAGS);
+ JsonObject bagsJsonObject = jsonObject.getAsJsonObject(Tags.Json.PARAMETER_BAGS);
Set> bags = bagsJsonObject.entrySet();
for (Entry entry : bags) {
@@ -244,8 +245,8 @@ public class StrolchElementFromJsonVisitor {
protected void fillElement(JsonObject jsonObject, ParameterizedElement parameterizedElement) {
fillElement(jsonObject, (AbstractStrolchElement) parameterizedElement);
- if (jsonObject.has(Tags.TYPE)) {
- parameterizedElement.setType(jsonObject.get(Tags.TYPE).getAsString());
+ if (jsonObject.has(Tags.Json.TYPE)) {
+ parameterizedElement.setType(jsonObject.get(Tags.Json.TYPE).getAsString());
} else {
String msg = "Check the values of the jsonObject: {0} type attribute is null!"; //$NON-NLS-1$
msg = MessageFormat.format(msg, jsonObject);
@@ -253,10 +254,10 @@ public class StrolchElementFromJsonVisitor {
}
// add all the parameters
- if (!jsonObject.has(Tags.PARAMETERS))
+ if (!jsonObject.has(Tags.Json.PARAMETERS))
return;
- JsonObject parametersJsonObject = jsonObject.getAsJsonObject(Tags.PARAMETERS);
+ JsonObject parametersJsonObject = jsonObject.getAsJsonObject(Tags.Json.PARAMETERS);
Set> parameters = parametersJsonObject.entrySet();
for (Entry entry : parameters) {
String paramId = entry.getKey();
@@ -268,7 +269,7 @@ public class StrolchElementFromJsonVisitor {
}
JsonObject paramJsonObject = jsonElement.getAsJsonObject();
- String paramtype = paramJsonObject.get(Tags.TYPE).getAsString();
+ String paramtype = paramJsonObject.get(Tags.Json.TYPE).getAsString();
StrolchValueType paramValueType = StrolchValueType.parse(paramtype);
Parameter> parameter = paramValueType.parameterInstance();
@@ -286,16 +287,16 @@ public class StrolchElementFromJsonVisitor {
protected void fillElement(JsonObject jsonObject, Parameter> param) {
fillElement(jsonObject, (AbstractStrolchElement) param);
- if (jsonObject.has(Tags.INTERPRETATION))
- param.setInterpretation(jsonObject.get(Tags.INTERPRETATION).getAsString());
- if (jsonObject.has(Tags.UOM))
- param.setUom(jsonObject.get(Tags.UOM).getAsString());
- if (jsonObject.has(Tags.INDEX))
- param.setIndex(jsonObject.get(Tags.INDEX).getAsInt());
- if (jsonObject.has(Tags.HIDDEN))
- param.setHidden(jsonObject.get(Tags.HIDDEN).getAsBoolean());
+ if (jsonObject.has(Tags.Json.INTERPRETATION))
+ param.setInterpretation(jsonObject.get(Tags.Json.INTERPRETATION).getAsString());
+ if (jsonObject.has(Tags.Json.UOM))
+ param.setUom(jsonObject.get(Tags.Json.UOM).getAsString());
+ if (jsonObject.has(Tags.Json.INDEX))
+ param.setIndex(jsonObject.get(Tags.Json.INDEX).getAsInt());
+ if (jsonObject.has(Tags.Json.HIDDEN))
+ param.setHidden(jsonObject.get(Tags.Json.HIDDEN).getAsBoolean());
- String value = jsonObject.get(Tags.VALUE).getAsString();
+ String value = jsonObject.get(Tags.Json.VALUE).getAsString();
param.setValueFromString(value);
}
@@ -303,12 +304,12 @@ public class StrolchElementFromJsonVisitor {
fillElement(jsonObject, (GroupedParameterizedElement) action);
// attributes
- if (jsonObject.has(Tags.RESOURCE_ID))
- action.setResourceId(jsonObject.get(Tags.RESOURCE_ID).getAsString());
- if (jsonObject.has(Tags.RESOURCE_TYPE))
- action.setResourceType(jsonObject.get(Tags.RESOURCE_TYPE).getAsString());
- if (jsonObject.has(Tags.STATE))
- action.setState(State.parse(jsonObject.get(Tags.STATE).getAsString()));
+ if (jsonObject.has(Tags.Json.RESOURCE_ID))
+ action.setResourceId(jsonObject.get(Tags.Json.RESOURCE_ID).getAsString());
+ if (jsonObject.has(Tags.Json.RESOURCE_TYPE))
+ action.setResourceType(jsonObject.get(Tags.Json.RESOURCE_TYPE).getAsString());
+ if (jsonObject.has(Tags.Json.STATE))
+ action.setState(State.parse(jsonObject.get(Tags.Json.STATE).getAsString()));
// policies
PolicyDefs defs = parsePolicies(jsonObject);
@@ -316,18 +317,18 @@ public class StrolchElementFromJsonVisitor {
action.setPolicyDefs(defs);
// value changes
- if (!jsonObject.has(Tags.VALUE_CHANGES))
+ if (!jsonObject.has(Tags.Json.VALUE_CHANGES))
return;
- JsonArray valueChangesJ = jsonObject.getAsJsonArray(Tags.VALUE_CHANGES);
+ JsonArray valueChangesJ = jsonObject.getAsJsonArray(Tags.Json.VALUE_CHANGES);
valueChangesJ.forEach(e -> {
try {
JsonObject valueChangeJ = e.getAsJsonObject();
- String stateId = valueChangeJ.get(Tags.STATE_ID).getAsString();
- String timeS = valueChangeJ.get(Tags.TIME).getAsString();
- String valueS = valueChangeJ.get(Tags.VALUE).getAsString();
- String typeS = valueChangeJ.get(Tags.TYPE).getAsString();
+ String stateId = valueChangeJ.get(Tags.Json.STATE_ID).getAsString();
+ String timeS = valueChangeJ.get(Tags.Json.TIME).getAsString();
+ String valueS = valueChangeJ.get(Tags.Json.VALUE).getAsString();
+ String typeS = valueChangeJ.get(Tags.Json.TYPE).getAsString();
StrolchValueType type = StrolchValueType.parse(typeS);
IValue> value = type.valueInstance(valueS);
@@ -349,10 +350,10 @@ public class StrolchElementFromJsonVisitor {
PolicyDefs policyDefs = new PolicyDefs();
- if (!jsonObject.has(Tags.POLICIES))
+ if (!jsonObject.has(Tags.Json.POLICIES))
return policyDefs;
- JsonObject policiesJsonObject = jsonObject.getAsJsonObject(Tags.POLICIES);
+ JsonObject policiesJsonObject = jsonObject.getAsJsonObject(Tags.Json.POLICIES);
Set> entrySet = policiesJsonObject.entrySet();
for (Entry entry : entrySet) {
@@ -368,16 +369,16 @@ public class StrolchElementFromJsonVisitor {
protected void parseVersion(StrolchRootElement rootElement, JsonObject jsonObject) {
- if (!jsonObject.has(Tags.VERSION))
+ if (!jsonObject.has(Tags.Json.VERSION))
return;
- JsonObject versionJ = jsonObject.getAsJsonObject(Tags.VERSION);
+ JsonObject versionJ = jsonObject.getAsJsonObject(Tags.Json.VERSION);
- int v = versionJ.get(Tags.VERSION).getAsInt();
- String createdBy = versionJ.get(Tags.CREATED_BY).getAsString();
- String createdAtS = versionJ.get(Tags.CREATED_AT).getAsString();
+ int v = versionJ.get(Tags.Json.VERSION).getAsInt();
+ String createdBy = versionJ.get(Tags.Json.CREATED_BY).getAsString();
+ String createdAtS = versionJ.get(Tags.Json.CREATED_AT).getAsString();
Date createdAt = ISO8601FormatFactory.getInstance().parseDate(createdAtS);
- boolean deleted = versionJ.get(Tags.DELETED).getAsBoolean();
+ boolean deleted = versionJ.get(Tags.Json.DELETED).getAsBoolean();
Version version = new Version(rootElement.getLocator(), v, createdBy, createdAt, deleted);
rootElement.setVersion(version);
diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java
index 7b4ae1b3c..f34dfd60e 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java
@@ -34,7 +34,7 @@ public class StrolchElementToJsonVisitor {
public JsonObject toJson(Resource element) {
JsonObject rootJ = new JsonObject();
- rootJ.addProperty(Tags.OBJECT_TYPE, Tags.RESOURCE);
+ rootJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.RESOURCE);
toJson(element, rootJ);
@@ -49,11 +49,11 @@ public class StrolchElementToJsonVisitor {
public JsonObject toJson(Order element) {
JsonObject rootJ = new JsonObject();
- rootJ.addProperty(Tags.OBJECT_TYPE, Tags.ORDER);
+ rootJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ORDER);
toJson(element, rootJ);
- rootJ.addProperty(Tags.DATE, ISO8601FormatFactory.getInstance().formatDate(element.getDate()));
- rootJ.addProperty(Tags.STATE, element.getState().getName());
+ rootJ.addProperty(Tags.Json.DATE, ISO8601FormatFactory.getInstance().formatDate(element.getDate()));
+ rootJ.addProperty(Tags.Json.STATE, element.getState().getName());
addVersion(element, rootJ);
addParameterBags(element, rootJ);
@@ -75,9 +75,9 @@ public class StrolchElementToJsonVisitor {
protected JsonObject toJson(Activity element, JsonObject rootJ) {
- rootJ.addProperty(Tags.OBJECT_TYPE, Tags.ACTIVITY);
+ rootJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ACTIVITY);
- rootJ.addProperty(Tags.TIME_ORDERING, element.getTimeOrdering().getName());
+ rootJ.addProperty(Tags.Json.TIME_ORDERING, element.getTimeOrdering().getName());
toJson((AbstractStrolchElement) element, rootJ);
@@ -88,7 +88,7 @@ public class StrolchElementToJsonVisitor {
if (iter.hasNext()) {
JsonArray elementsJ = new JsonArray();
- rootJ.add(Tags.ELEMENTS, elementsJ);
+ rootJ.add(Tags.Json.ELEMENTS, elementsJ);
while (iter.hasNext()) {
IActivityElement activityElement = iter.next().getValue();
@@ -111,15 +111,15 @@ public class StrolchElementToJsonVisitor {
protected JsonObject toJson(Action element, JsonObject rootJ) {
- rootJ.addProperty(Tags.OBJECT_TYPE, Tags.ACTION);
+ rootJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ACTION);
- rootJ.addProperty(Tags.STATE, element.getState().getName());
+ rootJ.addProperty(Tags.Json.STATE, element.getState().getName());
// attributes
toJson((AbstractStrolchElement) element, rootJ);
- rootJ.addProperty(Tags.RESOURCE_ID, element.getResourceId());
- rootJ.addProperty(Tags.RESOURCE_TYPE, element.getResourceType());
- rootJ.addProperty(Tags.STATE, element.getState().name());
+ rootJ.addProperty(Tags.Json.RESOURCE_ID, element.getResourceId());
+ rootJ.addProperty(Tags.Json.RESOURCE_TYPE, element.getResourceType());
+ rootJ.addProperty(Tags.Json.STATE, element.getState().name());
addParameterBags(element, rootJ);
addPolicies(element, rootJ);
@@ -129,17 +129,17 @@ public class StrolchElementToJsonVisitor {
if (iter.hasNext()) {
JsonArray changesJ = new JsonArray();
- rootJ.add(Tags.VALUE_CHANGES, changesJ);
+ rootJ.add(Tags.Json.VALUE_CHANGES, changesJ);
while (iter.hasNext()) {
IValueChange extends IValue>> valueChange = iter.next();
JsonObject changeJ = new JsonObject();
- changeJ.addProperty(Tags.STATE_ID, valueChange.getStateId());
- changeJ.addProperty(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(valueChange.getTime()));
- changeJ.addProperty(Tags.VALUE, valueChange.getValue().getValueAsString());
- changeJ.addProperty(Tags.TYPE, valueChange.getValue().getType());
+ changeJ.addProperty(Tags.Json.STATE_ID, valueChange.getStateId());
+ changeJ.addProperty(Tags.Json.TIME, ISO8601FormatFactory.getInstance().formatDate(valueChange.getTime()));
+ changeJ.addProperty(Tags.Json.VALUE, valueChange.getValue().getValueAsString());
+ changeJ.addProperty(Tags.Json.TYPE, valueChange.getValue().getType());
changesJ.add(changeJ);
}
@@ -155,7 +155,7 @@ public class StrolchElementToJsonVisitor {
PolicyDefs policyDefs = policyContainer.getPolicyDefs();
JsonObject policyDefsJ = new JsonObject();
- rootJ.add(Tags.POLICIES, policyDefsJ);
+ rootJ.add(Tags.Json.POLICIES, policyDefsJ);
for (String type : policyDefs.getPolicyTypes()) {
PolicyDef policyDef = policyDefs.getPolicyDef(type);
@@ -165,9 +165,9 @@ public class StrolchElementToJsonVisitor {
protected JsonObject toJson(AbstractStrolchElement element, JsonObject rootJ) {
- rootJ.addProperty(Tags.ID, element.getId());
- rootJ.addProperty(Tags.NAME, element.getName());
- rootJ.addProperty(Tags.TYPE, element.getType());
+ rootJ.addProperty(Tags.Json.ID, element.getId());
+ rootJ.addProperty(Tags.Json.NAME, element.getName());
+ rootJ.addProperty(Tags.Json.TYPE, element.getType());
return rootJ;
}
@@ -178,7 +178,7 @@ public class StrolchElementToJsonVisitor {
return;
JsonObject parameterBagsJ = new JsonObject();
- rootJ.add(Tags.PARAMETER_BAGS, parameterBagsJ);
+ rootJ.add(Tags.Json.PARAMETER_BAGS, parameterBagsJ);
for (String bagKey : element.getParameterBagKeySet()) {
ParameterBag bag = element.getParameterBag(bagKey);
@@ -192,7 +192,7 @@ public class StrolchElementToJsonVisitor {
continue;
JsonObject paramsJ = new JsonObject();
- bagJ.add(Tags.PARAMETERS, paramsJ);
+ bagJ.add(Tags.Json.PARAMETERS, paramsJ);
for (String paramKey : bag.getParameterKeySet()) {
Parameter> param = bag.getParameter(paramKey);
@@ -203,18 +203,18 @@ public class StrolchElementToJsonVisitor {
toJson((AbstractStrolchElement) param, paramJ);
if (!StrolchModelConstants.INTERPRETATION_NONE.equals(param.getInterpretation()))
- paramJ.addProperty(Tags.INTERPRETATION, param.getInterpretation());
+ paramJ.addProperty(Tags.Json.INTERPRETATION, param.getInterpretation());
if (param.isHidden())
- paramJ.addProperty(Tags.HIDDEN, param.isHidden());
+ paramJ.addProperty(Tags.Json.HIDDEN, param.isHidden());
if (!StrolchModelConstants.UOM_NONE.equals(param.getUom()))
- paramJ.addProperty(Tags.UOM, param.getUom());
+ paramJ.addProperty(Tags.Json.UOM, param.getUom());
if (param.getIndex() != 0)
- paramJ.addProperty(Tags.INDEX, param.getIndex());
+ paramJ.addProperty(Tags.Json.INDEX, param.getIndex());
- paramJ.addProperty(Tags.VALUE, param.getValueAsString());
+ paramJ.addProperty(Tags.Json.VALUE, param.getValueAsString());
}
}
}
@@ -225,7 +225,7 @@ public class StrolchElementToJsonVisitor {
return;
JsonObject timedStatesJ = new JsonObject();
- rootJ.add(Tags.TIMED_STATES, timedStatesJ);
+ rootJ.add(Tags.Json.TIMED_STATES, timedStatesJ);
for (String stateKey : element.getTimedStateKeySet()) {
StrolchTimedState> state = element.getTimedState(stateKey);
@@ -236,7 +236,7 @@ public class StrolchElementToJsonVisitor {
toJson((AbstractStrolchElement) state, stateJ);
JsonArray valuesJ = new JsonArray();
- stateJ.add(Tags.VALUES, valuesJ);
+ stateJ.add(Tags.Json.VALUES, valuesJ);
SortedSet>> values = state.getTimeEvolution().getValues();
for (ITimeValue> value : values) {
@@ -247,8 +247,8 @@ public class StrolchElementToJsonVisitor {
Long time = value.getTime();
String valueS = value.getValue().getValueAsString();
- valueJ.addProperty(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
- valueJ.addProperty(Tags.VALUE, valueS);
+ valueJ.addProperty(Tags.Json.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
+ valueJ.addProperty(Tags.Json.VALUE, valueS);
}
}
}
@@ -260,10 +260,10 @@ public class StrolchElementToJsonVisitor {
Version version = element.getVersion();
JsonObject versionJ = new JsonObject();
- versionJ.addProperty(Tags.VERSION, version.getVersion());
- versionJ.addProperty(Tags.CREATED_BY, version.getCreatedBy());
- versionJ.addProperty(Tags.CREATED_AT, ISO8601FormatFactory.getInstance().formatDate(version.getCreatedAt()));
- versionJ.addProperty(Tags.DELETED, version.isDeleted());
- rootJ.add(Tags.VERSION, versionJ);
+ versionJ.addProperty(Tags.Json.VERSION, version.getVersion());
+ versionJ.addProperty(Tags.Json.CREATED_BY, version.getCreatedBy());
+ versionJ.addProperty(Tags.Json.CREATED_AT, ISO8601FormatFactory.getInstance().formatDate(version.getCreatedAt()));
+ versionJ.addProperty(Tags.Json.DELETED, version.isDeleted());
+ rootJ.add(Tags.Json.VERSION, versionJ);
}
}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/Inspector.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/Inspector.java
index a29cb9c30..4254bbd1d 100644
--- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/Inspector.java
+++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/Inspector.java
@@ -30,7 +30,6 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
-import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.parsers.SAXParser;
@@ -38,12 +37,19 @@ import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+
+import li.strolch.agent.api.ActivityMap;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.agent.api.OrderMap;
import li.strolch.agent.api.ResourceMap;
import li.strolch.exception.StrolchException;
import li.strolch.model.Order;
import li.strolch.model.Resource;
+import li.strolch.model.Tags;
+import li.strolch.model.activity.Activity;
import li.strolch.model.json.OrderToJsonVisitor;
import li.strolch.model.json.ResourceToJsonVisitor;
import li.strolch.model.xml.OrderToXmlStringVisitor;
@@ -55,23 +61,13 @@ import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.privilege.model.Certificate;
import li.strolch.rest.RestfulStrolchComponent;
import li.strolch.rest.StrolchRestfulConstants;
-import li.strolch.rest.model.AgentOverview;
-import li.strolch.rest.model.ElementMapOverview;
-import li.strolch.rest.model.ElementMapType;
-import li.strolch.rest.model.ElementMapsOverview;
-import li.strolch.rest.model.OrderOverview;
-import li.strolch.rest.model.RealmDetail;
-import li.strolch.rest.model.RealmOverview;
-import li.strolch.rest.model.ResourceOverview;
import li.strolch.rest.model.Result;
-import li.strolch.rest.model.StrolchElementOverview;
-import li.strolch.rest.model.TypeDetail;
-import li.strolch.rest.model.TypeOverview;
import li.strolch.service.UpdateOrderService;
import li.strolch.service.UpdateOrderService.UpdateOrderArg;
import li.strolch.service.UpdateResourceService;
import li.strolch.service.UpdateResourceService.UpdateResourceArg;
import li.strolch.service.api.ServiceResult;
+import li.strolch.utils.iso8601.ISO8601FormatFactory;
/**
* @author Robert von Burg
@@ -94,36 +90,39 @@ public class Inspector {
*
*
* @return the root element, which is an overview of the configured realms
- *
- * @see AgentOverview
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAgent(@Context HttpServletRequest request) {
try {
- ComponentContainer container = RestfulStrolchComponent.getInstance().getContainer();
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
+ JsonObject agentOverview = new JsonObject();
+ JsonArray realmsArr = new JsonArray();
+ agentOverview.add(Tags.Json.REALMS, realmsArr);
+
+ ComponentContainer container = RestfulStrolchComponent.getInstance().getContainer();
Set realmNames = container.getRealmNames();
- List realmOverviews = new ArrayList<>(realmNames.size());
for (String realmName : realmNames) {
+ JsonObject realmJ = new JsonObject();
+
try (StrolchTransaction tx = openTx(cert, realmName)) {
long size = 0;
size += tx.getResourceMap().querySize(tx);
size += tx.getOrderMap().querySize(tx);
- RealmOverview realmOverview = new RealmOverview(realmName, size);
- realmOverviews.add(realmOverview);
+
+ realmJ.addProperty(Tags.Json.NAME, realmName);
+ realmJ.addProperty(Tags.Json.SIZE, size);
+
+ realmsArr.add(realmJ);
}
}
- AgentOverview agentOverview = new AgentOverview(realmOverviews);
- GenericEntity entity = new GenericEntity(agentOverview, AgentOverview.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(agentOverview.toString()).build();
+
} catch (Exception e) {
- //e.printStackTrace();
throw e;
}
}
@@ -141,36 +140,58 @@ public class Inspector {
* the realm for which the overview is to be returned
*
* @return the overview of a specific relam
- *
- * @see RealmDetail
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{realm}")
public Response getRealm(@PathParam("realm") String realm, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
- List elementMapOverviews = new ArrayList<>(2);
+ JsonObject realmDetailJ = new JsonObject();
+ JsonArray elementMapsArr = new JsonArray();
+ realmDetailJ.add(Tags.Json.ELEMENT_MAPS, elementMapsArr);
+
try (StrolchTransaction tx = openTx(cert, realm)) {
- ResourceMap resourceMap = tx.getResourceMap();
- ElementMapsOverview resourceOverview = new ElementMapsOverview(ElementMapType.RESOURCE);
- resourceOverview.setNrOfElements(resourceMap.querySize(tx));
- resourceOverview.setTypes(resourceMap.getTypes(tx));
- elementMapOverviews.add(resourceOverview);
+ {
+ ResourceMap resourceMap = tx.getResourceMap();
+ JsonObject elementMapJ = new JsonObject();
+ elementMapJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.RESOURCE);
+ elementMapJ.addProperty(Tags.Json.NR_OF_ELEMENTS, resourceMap.querySize(tx));
+ JsonArray typesJ = new JsonArray();
+ resourceMap.getTypes(tx).forEach(type -> typesJ.add(new JsonPrimitive(type)));
+ elementMapJ.add(Tags.Json.TYPES, typesJ);
- OrderMap orderMap = tx.getOrderMap();
- ElementMapsOverview orderOverview = new ElementMapsOverview(ElementMapType.ORDER);
- orderOverview.setNrOfElements(orderMap.querySize(tx));
- orderOverview.setTypes(orderMap.getTypes(tx));
- elementMapOverviews.add(orderOverview);
+ elementMapsArr.add(elementMapJ);
+ }
+
+ {
+ OrderMap orderMap = tx.getOrderMap();
+ JsonObject elementMapJ = new JsonObject();
+ elementMapJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ORDER);
+ elementMapJ.addProperty(Tags.Json.NR_OF_ELEMENTS, orderMap.querySize(tx));
+ JsonArray typesJ = new JsonArray();
+ orderMap.getTypes(tx).forEach(type -> typesJ.add(new JsonPrimitive(type)));
+ elementMapJ.add(Tags.Json.TYPES, typesJ);
+
+ elementMapsArr.add(elementMapJ);
+ }
+
+ {
+ ActivityMap activityMap = tx.getActivityMap();
+ JsonObject elementMapJ = new JsonObject();
+ elementMapJ.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ACTIVITY);
+ elementMapJ.addProperty(Tags.Json.NR_OF_ELEMENTS, activityMap.querySize(tx));
+ JsonArray typesJ = new JsonArray();
+ activityMap.getTypes(tx).forEach(type -> typesJ.add(new JsonPrimitive(type)));
+ elementMapJ.add(Tags.Json.TYPES, typesJ);
+
+ elementMapsArr.add(elementMapJ);
+ }
}
- RealmDetail modelOverview = new RealmDetail(elementMapOverviews);
- GenericEntity entity = new GenericEntity(modelOverview, RealmDetail.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(realmDetailJ.toString()).build();
}
/**
@@ -185,35 +206,38 @@ public class Inspector {
* the realm for which the resource overview is to be returned
*
* @return an overview of the {@link Resource Resources}. This is a list of all the types and the size each type has
- *
- * @see ElementMapOverview
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Resource")
+ @Path("{realm}/resources")
public Response getResourcesOverview(@PathParam("realm") String realm, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
- ElementMapOverview resourcesOverview;
+ JsonObject mapOverview = new JsonObject();
+
try (StrolchTransaction tx = openTx(cert, realm)) {
ResourceMap resourceMap = tx.getResourceMap();
- List types = new ArrayList<>(resourceMap.getTypes(tx));
- Collections.sort(types);
- List typeOverviews = new ArrayList<>(types.size());
- for (String type : types) {
- long size = resourceMap.querySize(tx, type);
- TypeOverview typeOverview = new TypeOverview(type, size);
- typeOverviews.add(typeOverview);
- }
- resourcesOverview = new ElementMapOverview(ElementMapType.RESOURCE.getName(), typeOverviews);
+ mapOverview.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.RESOURCE);
+ mapOverview.addProperty(Tags.Json.SIZE, resourceMap.querySize(tx));
+
+ JsonArray typeArrJ = new JsonArray();
+ mapOverview.add(Tags.Json.TYPES, typeArrJ);
+
+ List types = new ArrayList<>();
+ Collections.sort(types);
+ resourceMap.getTypes(tx).forEach(type -> {
+
+ JsonObject typeJ = new JsonObject();
+ typeJ.addProperty(Tags.Json.TYPE, type);
+ typeJ.addProperty(Tags.Json.SIZE, resourceMap.querySize(tx, type));
+
+ typeArrJ.add(typeJ);
+ });
}
- GenericEntity entity = new GenericEntity(resourcesOverview,
- ElementMapOverview.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(mapOverview.toString()).build();
}
/**
@@ -228,35 +252,86 @@ public class Inspector {
* the realm for which the order overview is to be returned
*
* @return an overview of the {@link Order Orders}. This is a list of all the types and the size each type has
- *
- * @see ElementMapOverview
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Order")
+ @Path("{realm}/orders")
public Response getOrdersOverview(@PathParam("realm") String realm, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
- ElementMapOverview ordersOverview;
+ JsonObject mapOverview = new JsonObject();
+
try (StrolchTransaction tx = openTx(cert, realm)) {
OrderMap orderMap = tx.getOrderMap();
- List types = new ArrayList<>(orderMap.getTypes(tx));
- Collections.sort(types);
- List typeOverviews = new ArrayList<>(types.size());
- for (String type : types) {
- long size = orderMap.querySize(tx, type);
- TypeOverview typeOverview = new TypeOverview(type, size);
- typeOverviews.add(typeOverview);
- }
- ordersOverview = new ElementMapOverview(ElementMapType.ORDER.getName(), typeOverviews);
+ mapOverview.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ORDER);
+ mapOverview.addProperty(Tags.Json.SIZE, orderMap.querySize(tx));
+
+ JsonArray typeArrJ = new JsonArray();
+ mapOverview.add(Tags.Json.TYPES, typeArrJ);
+
+ List types = new ArrayList<>();
+ Collections.sort(types);
+ orderMap.getTypes(tx).forEach(type -> {
+
+ JsonObject typeJ = new JsonObject();
+ typeJ.addProperty(Tags.Json.TYPE, type);
+ typeJ.addProperty(Tags.Json.SIZE, orderMap.querySize(tx, type));
+
+ typeArrJ.add(typeJ);
+ });
}
- GenericEntity entity = new GenericEntity(ordersOverview,
- ElementMapOverview.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(mapOverview.toString()).build();
+ }
+
+ /**
+ *
+ * Activity inspector
+ *
+ *
+ * Returns an overview of the {@link Activity Activities}. This is a list of all the types and the size each type
+ * has
+ *
+ *
+ * @param realm
+ * the realm for which the activity overview is to be returned
+ *
+ * @return an overview of the {@link Activity Activities}. This is a list of all the types and the size each type
+ * has
+ */
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("{realm}/activities")
+ public Response getActivitiesOverview(@PathParam("realm") String realm, @Context HttpServletRequest request) {
+
+ Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
+
+ JsonObject mapOverview = new JsonObject();
+
+ try (StrolchTransaction tx = openTx(cert, realm)) {
+ ActivityMap activityMap = tx.getActivityMap();
+
+ mapOverview.addProperty(Tags.Json.OBJECT_TYPE, Tags.Json.ACTIVITY);
+ mapOverview.addProperty(Tags.Json.SIZE, activityMap.querySize(tx));
+
+ JsonArray typeArrJ = new JsonArray();
+ mapOverview.add(Tags.Json.TYPES, typeArrJ);
+
+ List types = new ArrayList<>();
+ Collections.sort(types);
+ activityMap.getTypes(tx).forEach(type -> {
+
+ JsonObject typeJ = new JsonObject();
+ typeJ.addProperty(Tags.Json.TYPE, type);
+ typeJ.addProperty(Tags.Json.SIZE, activityMap.querySize(tx, type));
+
+ typeArrJ.add(typeJ);
+ });
+ }
+
+ return Response.ok().entity(mapOverview.toString()).build();
}
// 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
@@ -282,26 +357,33 @@ public class Inspector {
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Resource/{type}")
+ @Path("{realm}/resources/{type}")
public Response getResourceTypeDetails(@PathParam("realm") String realm, @PathParam("type") String type,
@Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
- TypeDetail typeDetail;
+ JsonObject typeDetailJ = new JsonObject();
+ typeDetailJ.addProperty(Tags.Json.TYPE, type);
+
+ JsonArray elementsJ = new JsonArray();
+ typeDetailJ.add(Tags.Json.ELEMENTS, elementsJ);
+
try (StrolchTransaction tx = openTx(cert, realm)) {
+
List byType = tx.getResourceMap().getElementsBy(tx, type);
- List elementOverviews = new ArrayList<>(byType.size());
for (Resource resource : byType) {
- ResourceOverview resourceOverview = new ResourceOverview(resource);
- elementOverviews.add(resourceOverview);
+
+ JsonObject elementJ = new JsonObject();
+ elementJ.addProperty(Tags.Json.ID, resource.getId());
+ elementJ.addProperty(Tags.Json.NAME, resource.getName());
+ elementJ.addProperty(Tags.Json.TYPE, resource.getType());
+
+ elementsJ.add(elementJ);
}
- typeDetail = new TypeDetail(type, elementOverviews);
}
- GenericEntity entity = new GenericEntity(typeDetail, TypeDetail.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(typeDetailJ.toString()).build();
}
/**
@@ -323,26 +405,85 @@ public class Inspector {
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Order/{type}")
+ @Path("{realm}/orders/{type}")
public Response getOrderTypeDetails(@PathParam("realm") String realm, @PathParam("type") String type,
@Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
- TypeDetail typeDetail;
+ JsonObject typeDetailJ = new JsonObject();
+ typeDetailJ.addProperty(Tags.Json.TYPE, type);
+
+ JsonArray elementsJ = new JsonArray();
+ typeDetailJ.add(Tags.Json.ELEMENTS, elementsJ);
+
try (StrolchTransaction tx = openTx(cert, realm)) {
+
List byType = tx.getOrderMap().getElementsBy(tx, type);
- List elementOverviews = new ArrayList<>(byType.size());
for (Order order : byType) {
- OrderOverview orderOverview = new OrderOverview(order);
- elementOverviews.add(orderOverview);
+
+ JsonObject elementJ = new JsonObject();
+ elementJ.addProperty(Tags.Json.ID, order.getId());
+ elementJ.addProperty(Tags.Json.NAME, order.getName());
+ elementJ.addProperty(Tags.Json.TYPE, order.getType());
+ elementJ.addProperty(Tags.Json.STATE, order.getState().getName());
+ elementJ.addProperty(Tags.Json.DATE, ISO8601FormatFactory.getInstance().formatDate(order.getDate()));
+
+ elementsJ.add(elementJ);
}
- typeDetail = new TypeDetail(type, elementOverviews);
}
- GenericEntity entity = new GenericEntity(typeDetail, TypeDetail.class) {
- //
- };
- return Response.ok().entity(entity).build();
+ return Response.ok().entity(typeDetailJ.toString()).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}/activities/{type}")
+ public Response getActivities(@PathParam("realm") String realm, @PathParam("type") String type,
+ @Context HttpServletRequest request) {
+
+ Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
+
+ JsonObject typeDetailJ = new JsonObject();
+ typeDetailJ.addProperty(Tags.Json.TYPE, type);
+
+ JsonArray elementsJ = new JsonArray();
+ typeDetailJ.add(Tags.Json.ELEMENTS, elementsJ);
+
+ try (StrolchTransaction tx = openTx(cert, realm)) {
+
+ List byType = tx.getActivityMap().getElementsBy(tx, type);
+ for (Activity activity : byType) {
+
+ JsonObject elementJ = new JsonObject();
+ elementJ.addProperty(Tags.Json.ID, activity.getId());
+ elementJ.addProperty(Tags.Json.NAME, activity.getName());
+ elementJ.addProperty(Tags.Json.TYPE, activity.getType());
+ elementJ.addProperty(Tags.Json.STATE, activity.getState().getName());
+ elementJ.addProperty(Tags.Json.TIME_ORDERING, activity.getTimeOrdering().getName());
+
+ elementsJ.add(elementJ);
+ }
+ }
+
+ return Response.ok().entity(typeDetailJ.toString()).build();
}
/**
@@ -367,9 +508,10 @@ public class Inspector {
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Resource/{type}/{id}")
+ @Path("{realm}/resources/{type}/{id}")
public Response getResourceAsJson(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Resource resource;
@@ -388,6 +530,7 @@ public class Inspector {
@Path("{realm}/Resource/{type}/{id}")
public Response getResourceAsXml(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Resource resource;
@@ -405,9 +548,10 @@ public class Inspector {
@PUT
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
- @Path("{realm}/Resource/{type}/{id}")
+ @Path("{realm}/resources/{type}/{id}")
public Response updateResourceAsXml(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, String data, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Resource resource;
@@ -446,9 +590,10 @@ public class Inspector {
@GET
@Produces(MediaType.APPLICATION_JSON)
- @Path("{realm}/Order/{type}/{id}")
+ @Path("{realm}/orders/{type}/{id}")
public Response getOrderAsJson(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Order order;
@@ -464,9 +609,10 @@ public class Inspector {
@GET
@Produces(MediaType.APPLICATION_XML)
- @Path("{realm}/Order/{type}/{id}")
+ @Path("{realm}/orders/{type}/{id}")
public Response getOrderAsXml(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Order order;
@@ -484,9 +630,10 @@ public class Inspector {
@PUT
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
- @Path("{realm}/Order/{type}/{id}")
+ @Path("{realm}/orders/{type}/{id}")
public Response updateOrderAsXml(@PathParam("realm") String realm, @PathParam("type") String type,
@PathParam("id") String id, String data, @Context HttpServletRequest request) {
+
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Order order;
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/AgentOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/AgentOverview.java
deleted file mode 100644
index fe0506c71..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/AgentOverview.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.model;
-
-import java.text.MessageFormat;
-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;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "Agent")
-public class AgentOverview {
-
- @XmlElement(name = "realms")
- private List realms;
-
- public AgentOverview() {
- // no-arg constructor for JAXB
- }
-
- public AgentOverview(List realms) {
- this.realms = realms;
- }
-
- /**
- * @return the realms
- */
- public List getRealms() {
- return this.realms;
- }
-
- /**
- * @param realms
- * the realms to set
- */
- public void setRealms(List realms) {
- this.realms = realms;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((this.realms == null) ? 0 : this.realms.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;
- AgentOverview other = (AgentOverview) obj;
- if (this.realms == null) {
- if (other.realms != null)
- return false;
- } else if (!this.realms.equals(other.realms))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- return MessageFormat.format("AgentOverview [realms={0}]", this.realms); //$NON-NLS-1$
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapOverview.java
deleted file mode 100644
index 9fb83e490..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapOverview.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * 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.model;
-
-import java.text.MessageFormat;
-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.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "ElementMap")
-public class ElementMapOverview {
-
- @XmlAttribute(name = "elementMapName")
- private String elementMapName;
- @XmlAttribute(name = "size")
- private long size;
- @XmlElement(name = "types", type = TypeOverview.class)
- private List typeOverviews;
-
- public ElementMapOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param elementMapName
- * @param typeOverviews
- */
- public ElementMapOverview(String elementMapName, List typeOverviews) {
- this.elementMapName = elementMapName;
- this.typeOverviews = typeOverviews;
- this.size = this.typeOverviews.size();
- }
-
- /**
- * @return the elementMapName
- */
- public String getElementMapName() {
- return this.elementMapName;
- }
-
- /**
- * @param elementMapName
- * the elementMapName to set
- */
- public void setElementMapName(String elementMapName) {
- this.elementMapName = elementMapName;
- }
-
- /**
- * @return the size
- */
- public long getSize() {
- return this.size;
- }
-
- /**
- * @param size
- * the size to set
- */
- public void setSize(long size) {
- this.size = size;
- }
-
- /**
- * @return the typeOverviews
- */
- public List getTypeOverviews() {
- return this.typeOverviews;
- }
-
- /**
- * @param typeOverviews
- * the typeOverviews to set
- */
- 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;
- }
-
- @Override
- public String toString() {
- return MessageFormat.format(
- "ElementMapOverview [elementMapName={0}, size={1}, typeOverviews={2}]", this.elementMapName, //$NON-NLS-1$
- this.size, this.typeOverviews);
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapType.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapType.java
deleted file mode 100644
index a4cbbf433..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.model;
-
-import li.strolch.model.Tags;
-
-/**
- * @author Robert von Burg
- */
-public enum ElementMapType {
- RESOURCE(Tags.RESOURCE), ORDER(Tags.ORDER);
- private String name;
-
- private ElementMapType(String name) {
- this.name = name;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return this.name;
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapsOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapsOverview.java
deleted file mode 100644
index 3676ecb2f..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/ElementMapsOverview.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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.model;
-
-import java.util.Set;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "ElementMaps")
-public class ElementMapsOverview {
-
- @XmlAttribute(name = "name")
- private String name;
-
- @XmlAttribute(name = "elementMapType")
- private ElementMapType elementMapType;
-
- @XmlAttribute(name = "nrOfElements")
- private long nrOfElements;
-
- @XmlElement(name = "types")
- private Set types;
-
- public ElementMapsOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param elementMapType
- */
- public ElementMapsOverview(ElementMapType elementMapType) {
- 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
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * @param name
- * the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return the elementMapType
- */
- public ElementMapType getElementMapType() {
- return this.elementMapType;
- }
-
- /**
- * @param elementMapType
- * the elementMapType to set
- */
- public void setElementMapType(ElementMapType elementMapType) {
- this.elementMapType = elementMapType;
- }
-
- /**
- * @return the types
- */
- public Set getTypes() {
- return this.types;
- }
-
- /**
- * @param types
- * the types to set
- */
- public void setTypes(Set types) {
- this.types = types;
- }
-
- /**
- * @return the nrOfElements
- */
- public long getNrOfElements() {
- return this.nrOfElements;
- }
-
- /**
- * @param nrOfElements
- * the nrOfElements to set
- */
- 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;
- }
-
- @SuppressWarnings("nls")
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("ElementMapsOverview [name=");
- sb.append(this.name);
- sb.append(", elementMapType=");
- sb.append(this.elementMapType);
- sb.append(", nrOfElements=");
- sb.append(this.nrOfElements);
- sb.append(", types=");
- sb.append(this.types);
- sb.append("]");
- return sb.toString();
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/OrderOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/OrderOverview.java
deleted file mode 100644
index 824e96efe..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/OrderOverview.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.model;
-
-import java.util.Date;
-
-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.Order;
-import li.strolch.model.State;
-import li.strolch.utils.iso8601.ISO8601FormatFactory;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "Order")
-public class OrderOverview extends StrolchElementOverview {
-
- @XmlAttribute(name = "date")
- private String date;
- @XmlAttribute(name = "state")
- private State state;
-
- public OrderOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param id
- * @param name
- * @param type
- */
- public OrderOverview(String id, String name, String type, Date date, State state) {
- super(id, name, type);
- this.state = state;
- 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
- */
- 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;
- 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/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmDetail.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmDetail.java
deleted file mode 100644
index b741d3b3e..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmDetail.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.model;
-
-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;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "Realm")
-public class RealmDetail {
-
- @XmlElement(name = "elementMaps")
- private List elementMapOverviews;
-
- public RealmDetail() {
- // no-arg constructor for JAXB
- }
-
- public RealmDetail(List elementMapOverviews) {
- this.elementMapOverviews = elementMapOverviews;
- }
-
- /**
- * @return the elementMapOverviews
- */
- public List getElementMapOverviews() {
- return this.elementMapOverviews;
- }
-
- /**
- * @param elementMapOverviews
- * the elementMapOverviews to set
- */
- 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;
- }
-
- @SuppressWarnings("nls")
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("RealmDetail [elementMapOverviews=");
- sb.append(this.elementMapOverviews);
- sb.append("]");
- return sb.toString();
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmOverview.java
deleted file mode 100644
index 916c110e1..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/RealmOverview.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.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;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "RealmOverview")
-public class RealmOverview {
-
- @XmlAttribute(name = "realmName")
- private String realmName;
- @XmlAttribute(name = "size")
- private long size;
-
- public RealmOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param realmName
- * @param size
- */
- public RealmOverview(String realmName, long size) {
- this.realmName = realmName;
- this.size = size;
- }
-
- /**
- * @return the realmName
- */
- public String getRealmName() {
- return this.realmName;
- }
-
- /**
- * @param realmName
- * the realmName to set
- */
- public void setRealmName(String realmName) {
- this.realmName = realmName;
- }
-
- /**
- * @return the size
- */
- public long getSize() {
- return this.size;
- }
-
- /**
- * @param size
- * the size to set
- */
- public void setSize(long size) {
- this.size = size;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((this.realmName == null) ? 0 : this.realmName.hashCode());
- result = prime * result + (int) (this.size ^ (this.size >>> 32));
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- RealmOverview other = (RealmOverview) obj;
- if (this.realmName == null) {
- if (other.realmName != null)
- return false;
- } else if (!this.realmName.equals(other.realmName))
- return false;
- if (this.size != other.size)
- return false;
- return true;
- }
-
- @SuppressWarnings("nls")
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("RealmOverview [realmName=");
- sb.append(this.realmName);
- sb.append(", size=");
- sb.append(this.size);
- sb.append("]");
- return sb.toString();
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/ResourceOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/ResourceOverview.java
deleted file mode 100644
index 5516188c2..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/ResourceOverview.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.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 {
-
- public ResourceOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param id
- * @param name
- * @param type
- */
- public ResourceOverview(String id, String name, String type) {
- super(id, name, type);
- }
-
- /**
- * @param resource
- */
- public ResourceOverview(Resource resource) {
- super(resource);
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/model/StrolchElementOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/StrolchElementOverview.java
deleted file mode 100644
index 864b2bbaf..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/StrolchElementOverview.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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.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({ ResourceOverview.class, OrderOverview.class })
-public abstract class StrolchElementOverview {
-
- @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 StrolchElementOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param id
- * @param name
- * @param type
- */
- public StrolchElementOverview(String id, String name, String type) {
- 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
- */
- 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;
- 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/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeDetail.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeDetail.java
deleted file mode 100644
index 52ec0bcd5..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeDetail.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.model;
-
-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.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "Types")
-public class TypeDetail {
-
- @XmlAttribute(name = "type")
- private String type;
-
- @XmlElements({ @XmlElement(name = "orders", type = OrderOverview.class),
- @XmlElement(name = "resources", type = ResourceOverview.class) })
- private List elementOverviews;
-
- public TypeDetail() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param type
- * @param elementOverviews
- */
- public TypeDetail(String type, List elementOverviews) {
- this.type = type;
- this.elementOverviews = elementOverviews;
- }
-
- /**
- * @return the type
- */
- public String getType() {
- return this.type;
- }
-
- /**
- * @param type
- * the type to set
- */
- public void setType(String type) {
- this.type = type;
- }
-
- /**
- * @return the elementOverviews
- */
- public List getElementOverviews() {
- return this.elementOverviews;
- }
-
- /**
- * @param elementOverviews
- * the elementOverviews to set
- */
- 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/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeOverview.java b/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeOverview.java
deleted file mode 100644
index 1e51bccd7..000000000
--- a/li.strolch.rest/src/main/java/li/strolch/rest/model/TypeOverview.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.model;
-
-import java.text.MessageFormat;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * @author Robert von Burg
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement(name = "Types")
-public class TypeOverview {
-
- @XmlAttribute(name = "type")
- private String type;
-
- @XmlAttribute(name = "size")
- private long size;
-
- public TypeOverview() {
- // no-arg constructor for JAXB
- }
-
- /**
- * @param type
- * @param size
- */
- public TypeOverview(String type, long size) {
- this.type = type;
- this.size = size;
- }
-
- /**
- * @return the type
- */
- public String getType() {
- return this.type;
- }
-
- /**
- * @param type
- * the type to set
- */
- public void setType(String type) {
- this.type = type;
- }
-
- /**
- * @return the size
- */
- public long getSize() {
- return this.size;
- }
-
- /**
- * @param size
- * the size to set
- */
- 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;
- }
-
- @Override
- public String toString() {
- return MessageFormat.format("TypeOverview [type={0}, size={1}]", this.type, this.size); //$NON-NLS-1$
- }
-}
diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/visitor/ToFlatJsonVisitor.java b/li.strolch.rest/src/main/java/li/strolch/rest/visitor/ToFlatJsonVisitor.java
index e9c297110..d8020a4ca 100644
--- a/li.strolch.rest/src/main/java/li/strolch/rest/visitor/ToFlatJsonVisitor.java
+++ b/li.strolch.rest/src/main/java/li/strolch/rest/visitor/ToFlatJsonVisitor.java
@@ -1,9 +1,9 @@
package li.strolch.rest.visitor;
-import static li.strolch.model.Tags.ID;
-import static li.strolch.model.Tags.NAME;
-import static li.strolch.model.Tags.OBJECT_TYPE;
-import static li.strolch.model.Tags.TYPE;
+import static li.strolch.model.Tags.Json.ID;
+import static li.strolch.model.Tags.Json.NAME;
+import static li.strolch.model.Tags.Json.OBJECT_TYPE;
+import static li.strolch.model.Tags.Json.TYPE;
import java.util.Collections;
import java.util.Set;
diff --git a/li.strolch.rest/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java b/li.strolch.rest/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java
deleted file mode 100644
index 94d474701..000000000
--- a/li.strolch.rest/src/test/java/li/strolch/rest/inspector/test/InspectorTest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * 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 static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-
-import li.strolch.rest.model.AgentOverview;
-import li.strolch.rest.model.ElementMapOverview;
-import li.strolch.rest.model.ElementMapType;
-import li.strolch.rest.model.ElementMapsOverview;
-import li.strolch.rest.model.RealmDetail;
-import li.strolch.rest.model.RealmOverview;
-import li.strolch.rest.model.TypeOverview;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * @author Robert von Burg
- */
-@SuppressWarnings("nls")
-@Ignore
-public class InspectorTest extends AbstractRestfulTest {
-
- private static final String ROOT_PATH = "strolch/inspector/";
-
- @Test
- public void shouldGetAgent() {
-
- Response response = target().path("/").request(MediaType.TEXT_HTML).get();
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
-
- // expected result
- List realms = new ArrayList<>(1);
- realms.add(new RealmOverview("defaultRealm", 6));
- AgentOverview expectedAgentOverview = new AgentOverview(realms);
-
- // query
- Response result = target().path(ROOT_PATH).request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- AgentOverview agentOverview = result.readEntity(AgentOverview.class);
-
- // 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");
- resourceTypes.add("Enumeration");
- elementMapOverviews.add(new ElementMapsOverview(ElementMapType.RESOURCE, 4, 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
- Response result = target().path(ROOT_PATH + "defaultRealm").request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- RealmDetail realmDetail = result.readEntity(RealmDetail.class);
-
- // assertions
- assertEquals(expectedRealmDetail, realmDetail);
- }
-
- @Test
- public void shouldGetResourcesOverview() {
-
- // expected result
- String elementMapName = "Resource";
- List typeOverviews = new ArrayList<>(2);
- typeOverviews.add(new TypeOverview("Enumeration", 2));
- typeOverviews.add(new TypeOverview("Template", 1));
- typeOverviews.add(new TypeOverview("TestType", 1));
- ElementMapOverview expectedElementMapOverview = new ElementMapOverview(elementMapName, typeOverviews);
-
- // query
- Response result = target().path(ROOT_PATH + "defaultRealm/resource").request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- ElementMapOverview elementMapOverview = result.readEntity(ElementMapOverview.class);
-
- // 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
- Response result = target().path(ROOT_PATH + "defaultRealm/order").request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- ElementMapOverview elementMapOverview = result.readEntity(ElementMapOverview.class);
-
- // assertions
- assertEquals(expectedElementMapOverview, elementMapOverview);
- }
-
- // TODO modify object model to include discriminator values, so that we can parse the objects
-
- @Test
- public void shouldGetResourceTypeDetails() {
-
- // query
-
- WebTarget target = target();
- Response result = target.path(ROOT_PATH + "defaultRealm/resource/Template").request(MediaType.APPLICATION_JSON)
- .get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- String entity = result.readEntity(String.class);
- String expected = "{\"type\":\"Template\",\"resources\":[{\"id\":\"TestType\",\"name\":\"TestType Template\",\"type\":\"Template\"}]}";
- assertEquals(expected, entity);
- }
-
- @Test
- public void shouldGetOrderTypeDetails() {
-
- // query
- Response result = target().path(ROOT_PATH + "defaultRealm/order/Template").request(MediaType.APPLICATION_JSON)
- .get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- String entity = result.readEntity(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
- Response result = target().path(ROOT_PATH + "defaultRealm/resource/Template/TestType")
- .request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- String entity = result.readEntity(String.class);
- assertTrue(entity.contains("name\":\"TestType Template\",\"type\":\"Template\",\"parameterBags\":"));
- }
-
- @Test
- public void shouldGetOrder() {
-
- // query
- Response result = target().path(ROOT_PATH + "defaultRealm/order/Template/TestType")
- .request(MediaType.APPLICATION_JSON).get();
- assertEquals(Status.OK.getStatusCode(), result.getStatus());
- String entity = result.readEntity(String.class);
- assertTrue(entity
- .contains("\"date\":\"2012-11-30T18:12:05.628+01:00\",\"state\":\"CREATED\",\"parameterBags\""));
- }
-}