--- /dev/null
+package org.argeo.slc.process;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class SlcExecutionSpec {
+ private Long tid;
+ private Map<String, SlcExecutionSpecField> executionSpecFields = new HashMap<String, SlcExecutionSpecField>();
+
+ public Long getTid() {
+ return tid;
+ }
+
+ public void setTid(Long tid) {
+ this.tid = tid;
+ }
+
+ public Map<String, SlcExecutionSpecField> getExecutionSpecFields() {
+ return executionSpecFields;
+ }
+
+ public void setExecutionSpecFields(
+ Map<String, SlcExecutionSpecField> executionSpecFields) {
+ this.executionSpecFields = executionSpecFields;
+ }
+
+}
--- /dev/null
+package org.argeo.slc.process;
+
+public class SlcExecutionSpecField {
+ private String label;
+ private String type;
+ private String defaultValue;
+ private String listValues;
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public String getListValues() {
+ return listValues;
+ }
+
+ public void setListValues(String listValues) {
+ this.listValues = listValues;
+ }
+
+}
<field name="attributes" collection="map">\r
<bind-xml name="attribute" location="attributes">\r
<class name="org.exolab.castor.mapping.MapItem">\r
- <map-to\r
- ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+ ns-prefix="slc" />\r
<field name="key" type="string">\r
<bind-xml name="name" node="attribute" />\r
</field>\r
<bind-xml name="log-line" location="log-lines" />\r
</field>\r
</class>\r
- \r
+\r
+ <class name="org.argeo.slc.process.SlcExecutionSpec">\r
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+ ns-prefix="slc" />\r
+ <field name="executionSpecFields" collection="map">\r
+ <bind-xml name="execution-spec-field" location="execution-spec-fields">\r
+ <class name="org.exolab.castor.mapping.MapItem">\r
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+ ns-prefix="slc" />\r
+ <field name="key" type="string">\r
+ <bind-xml name="name" node="attribute" />\r
+ </field>\r
+ <field name="value" type="org.argeo.slc.process.SlcExecutionSpecField">\r
+ <bind-xml auto-naming="deriveByClass" />\r
+ </field>\r
+ </class>\r
+ </bind-xml>\r
+ </field>\r
+ </class>\r
+\r
+ <class name="org.argeo.slc.process.SlcExecutionSpecField">\r
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+ ns-prefix="slc" />\r
+ <field name="label" />\r
+ <field name="type" />\r
+ <field name="defaultValue" />\r
+ <field name="listValues" />\r
+ </class>\r
+\r
</mapping>
\ No newline at end of file
unmarshaller = getBean(Unmarshaller.class);
}
+ protected StringResult marshal(Object obj) throws Exception {
+ return marshal(obj, false);
+ }
+
protected StringResult marshalAndValidate(Object obj) throws Exception {
+ return marshal(obj, true);
+ }
+
+ protected StringResult marshal(Object obj, boolean validate)
+ throws Exception {
StringResult xml = new StringResult();
marshaller.marshal(obj, xml);
log.info("Marshalled ResultPart Request: " + xml);
- UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),
- new StringSource(xml.toString()));
+ if (validate)
+ UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),
+ new StringSource(xml.toString()));
return xml;
}
}
@SuppressWarnings("unchecked")
+ protected <T> T marshUnmarsh(Object obj, boolean validate) throws Exception {
+ StringResult xml = marshal(obj, validate);
+ return (T) unmarshal(xml);
+ }
+
protected <T> T marshUnmarsh(Object obj) throws Exception {
- StringResult xml = marshalAndValidate(obj);
- return (T)unmarshal(xml);
+ return marshUnmarsh(obj, true);
}
}
--- /dev/null
+package org.argeo.slc.castor;\r
+\r
+import org.argeo.slc.process.SlcExecutionSpec;\r
+import org.argeo.slc.process.SlcExecutionSpecField;\r
+\r
+public class SlcExecutionSpecCastorTest extends AbstractCastorTestCase {\r
+ public void testMarshalling() throws Exception {\r
+ SlcExecutionSpec spec = new SlcExecutionSpec();\r
+ \r
+ SlcExecutionSpecField field1 = new SlcExecutionSpecField();\r
+ field1.setLabel("Field1");\r
+ field1.setType("text");\r
+ field1.setDefaultValue("def");\r
+ spec.getExecutionSpecFields().put("field1", field1);\r
+ \r
+ SlcExecutionSpecField field2 = new SlcExecutionSpecField();\r
+ field2.setLabel("Field2");\r
+ field2.setType("list");\r
+ field2.setListValues("def,nodef");\r
+ field2.setDefaultValue("def");\r
+ spec.getExecutionSpecFields().put("field2", field2);\r
+ \r
+ SlcExecutionSpec specUnm = marshUnmarsh(spec,false); \r
+ \r
+ \r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.process">\r
+ <class name="SlcExecutionSpec" table="SLC_EXECUTION_SPEC">\r
+ <cache usage="read-write" />\r
+\r
+ <id name="tid" column="T_ID">
+ <generator class="native" />
+ </id>
+
+ <map name="executionSpecFields" table="SLC_EXEC_SPEC_FIELDS"
+ cascade="all" lazy="false" sort="natural">
+ <cache usage="read-write" />
+
+ <key column="PARENT_ID" />
+ <map-key column="KEY" type="string" />
+ <composite-element class="org.argeo.slc.process.SlcExecutionSpecField">
+ <property name="label" column="LABEL"/>
+ <property name="type" column="TYPE"/>
+ <property name="defaultValue" column="DEFAULT_VALUE"/>
+ </composite-element>
+ </map>
+
+ </class>
+</hibernate-mapping>
\ No newline at end of file
<cache usage="read-write" />\r
\r
<id name="uuid" column="UUID" />\r
- <property name="host" column="HOST" />\r
+ <property name="host" column="HOST" />
+<!--
+ <map name="executionSpecs" table="AGENT_EXEC_SPEC_MAP" cascade="all"
+ sort="natural">
+ <cache usage="nonstrict-read-write" />
+ <key column="PARENT_ID" />
+ <map-key column="KEY" type="string" />
+ <many-to-many class="org.argeo.slc.process.SlcExecutionSpec"
+ column="ELEMENT_ID" unique="true" />
+ </map>
+ -->\r
</class>
</hibernate-mapping>
\ No newline at end of file
<value>
org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml
</value>
+ <value>
+ org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml
+ </value>
<value>
org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
</value>