From e289cc763e013843c52e0fa68fec024b7bd054d3 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 21 Apr 2008 16:58:54 +0000 Subject: [PATCH] Merge web service sandbox git-svn-id: https://svn.argeo.org/slc/trunk@1012 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- org.argeo.slc.core/.classpath | 1 + org.argeo.slc.core/.project | 13 ++ .../org.eclipse.wst.common.component | 9 ++ ....eclipse.wst.common.project.facet.core.xml | 7 ++ .../org.eclipse.wst.validation.prefs | 6 + org.argeo.slc.core/pom.xml | 32 ++++- .../argeo/slc/core/process/SlcExecution.java | 65 ++++++++++ .../slc/core/process/SlcExecutionStep.java | 57 +++++++++ .../slc/msg/process/SlcExecutionRequest.java | 16 +++ .../msg/process/SlcExecutionStepsRequest.java | 31 +++++ .../org/argeo/slc/castor/process/mapping.xml | 38 ++++++ .../core/process/SlcExecutionCastorTest.java | 116 ++++++++++++++++++ .../SlcExecutionWsIntegrationTest.java | 26 ++++ .../slc/core/process/applicationContext.xml | 24 ++++ 14 files changed, 439 insertions(+), 2 deletions(-) create mode 100644 org.argeo.slc.core/.settings/org.eclipse.wst.common.component create mode 100644 org.argeo.slc.core/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 org.argeo.slc.core/.settings/org.eclipse.wst.validation.prefs create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionRequest.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStepsRequest.java create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml create mode 100644 org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java create mode 100644 org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java create mode 100644 org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/applicationContext.xml diff --git a/org.argeo.slc.core/.classpath b/org.argeo.slc.core/.classpath index cd4156453..fe44ac962 100644 --- a/org.argeo.slc.core/.classpath +++ b/org.argeo.slc.core/.classpath @@ -7,5 +7,6 @@ + diff --git a/org.argeo.slc.core/.project b/org.argeo.slc.core/.project index 15b8bfab0..469224f87 100644 --- a/org.argeo.slc.core/.project +++ b/org.argeo.slc.core/.project @@ -5,6 +5,11 @@ + + org.eclipse.wst.common.project.facet.core.builder + + + org.maven.ide.eclipse.maven2Builder @@ -15,9 +20,17 @@ + + org.eclipse.wst.validation.validationbuilder + + + org.eclipse.jdt.core.javanature org.maven.ide.eclipse.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jem.workbench.JavaEMFNature diff --git a/org.argeo.slc.core/.settings/org.eclipse.wst.common.component b/org.argeo.slc.core/.settings/org.eclipse.wst.common.component new file mode 100644 index 000000000..ecc11d82b --- /dev/null +++ b/org.argeo.slc.core/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/org.argeo.slc.core/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.argeo.slc.core/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 000000000..55c9972e3 --- /dev/null +++ b/org.argeo.slc.core/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.slc.core/.settings/org.eclipse.wst.validation.prefs b/org.argeo.slc.core/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 000000000..ab6929475 --- /dev/null +++ b/org.argeo.slc.core/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,6 @@ +#Mon Apr 21 18:01:59 CEST 2008 +DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator; +USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator; +USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator; +USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.1.102.v200709122200 +eclipse.preferences.version=1 diff --git a/org.argeo.slc.core/pom.xml b/org.argeo.slc.core/pom.xml index 5535e4cef..ec7e4afae 100644 --- a/org.argeo.slc.core/pom.xml +++ b/org.argeo.slc.core/pom.xml @@ -67,7 +67,8 @@ org.hibernate hibernate - + + org.springframework spring-context @@ -79,7 +80,34 @@ org.springframework spring-jdbc - + + + org.springframework.ws + spring-ws-core + + + org.springframework.ws + spring-oxm + + + + org.codehaus.castor + castor + + + xerces + xercesImpl + + + + javax.xml.soap + saaj-api + + + com.sun.xml.messaging.saaj + saaj-impl + + org.apache.ant ant diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java new file mode 100644 index 000000000..1450cda9e --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java @@ -0,0 +1,65 @@ +package org.argeo.slc.core.process; + +import java.util.List; +import java.util.Vector; + +public class SlcExecution { + private String uuid; + private String host; + private String path; + private String type; + private String status; + + private List steps = new Vector(); + + + + public List getSteps() { + return steps; + } + + public void setSteps(List steps) { + this.steps = steps; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java new file mode 100644 index 000000000..0237e47b1 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java @@ -0,0 +1,57 @@ +package org.argeo.slc.core.process; + +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.Date; +import java.util.List; +import java.util.Vector; + +import org.apache.commons.io.IOUtils; + +public class SlcExecutionStep { + private String type; + private Date begin; + private List logLines = new Vector(); + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Date getBegin() { + return begin; + } + + public void setBegin(Date begin) { + this.begin = begin; + } + + public List getLogLines() { + return logLines; + } + + public void setLogLines(List logLines) { + this.logLines = logLines; + } + + public String logAsString() { + StringWriter writer = new StringWriter(); + String log = writer.toString(); + IOUtils.closeQuietly(writer); + return log; + } + + public void addLog(String log) { + try { + List lines = IOUtils.readLines(new StringReader(log)); + logLines.addAll(lines); + } catch (IOException e) { + throw new RuntimeException("Cannot add log", e); + } + } + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionRequest.java new file mode 100644 index 000000000..84d582681 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionRequest.java @@ -0,0 +1,16 @@ +package org.argeo.slc.msg.process; + +import org.argeo.slc.core.process.SlcExecution; + +public class SlcExecutionRequest { + private SlcExecution slcExecution; + + public SlcExecution getSlcExecution() { + return slcExecution; + } + + public void setSlcExecution(SlcExecution slcExecution) { + this.slcExecution = slcExecution; + } + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStepsRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStepsRequest.java new file mode 100644 index 000000000..237f05f87 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStepsRequest.java @@ -0,0 +1,31 @@ +package org.argeo.slc.msg.process; + +import java.util.List; +import java.util.Vector; + +import org.argeo.slc.core.process.SlcExecutionStep; + +public class SlcExecutionStepsRequest { + private String slcExecutionUuid; + private List steps = new Vector(); + + public String getSlcExecutionUuid() { + return slcExecutionUuid; + } + + public void setSlcExecutionUuid(String slcExecutionUuid) { + this.slcExecutionUuid = slcExecutionUuid; + } + + public List getSteps() { + return steps; + } + + public void setSteps(List step) { + this.steps = step; + } + + public void addStep(SlcExecutionStep step) { + steps.add(step); + } +} diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml new file mode 100644 index 000000000..0bfae5989 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml @@ -0,0 +1,38 @@ + + + + + + Process objects XML mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java new file mode 100644 index 000000000..6405ca7bb --- /dev/null +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java @@ -0,0 +1,116 @@ +package org.argeo.slc.core.process; + +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.UUID; + +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.msg.process.SlcExecutionRequest; +import org.argeo.slc.msg.process.SlcExecutionStepsRequest; +import org.argeo.slc.unit.AbstractSpringTestCase; +import org.springframework.oxm.Marshaller; +import org.springframework.oxm.Unmarshaller; + +public class SlcExecutionCastorTest extends AbstractSpringTestCase { + private Log log = LogFactory.getLog(getClass()); + + public void testMarshalling() throws Exception { + Marshaller marshaller = getBean("marshaller"); + Unmarshaller unmarshaller = getBean("marshaller"); + + SlcExecution slcExec = createSimpleSlcExecution(); + + SlcExecutionRequest msgSave = new SlcExecutionRequest(); + msgSave.setSlcExecution(slcExec); + + String msgSaveXml = marshallAndLog(marshaller, msgSave); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + SlcExecutionStep step0 = new SlcExecutionStep(); + step0.setBegin(sdf.parse("2008-04-17 18:21")); + step0.setType("LOG"); + step0.addLog("A log message\nand another line"); + + SlcExecutionStep step1 = new SlcExecutionStep(); + step1.setBegin(sdf.parse("2008-04-17 18:25")); + step1.setType("LOG"); + step1.addLog("A nother log message"); + + SlcExecutionStepsRequest msgNotif = new SlcExecutionStepsRequest(); + msgNotif.addStep(step0); + msgNotif.addStep(step1); + msgNotif.setSlcExecutionUuid(slcExec.getUuid()); + + String msgNotifXml = marshallAndLog(marshaller, msgNotif); + + SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml); + assertNotNull(msgSaveUnm); + assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution()); + + SlcExecutionStepsRequest msgNotifUnm = unmarshall(unmarshaller, + msgNotifXml); + assertNotNull(msgNotifUnm); + assertEquals(slcExec.getUuid(), msgNotifUnm.getSlcExecutionUuid()); + assertEquals(2, msgNotifUnm.getSteps().size()); + assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0)); + assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1)); + + SlcExecution slcExecUnm = msgSaveUnm.getSlcExecution(); + slcExecUnm.getSteps().addAll(msgNotifUnm.getSteps()); + + SlcExecutionRequest msgUpdate = new SlcExecutionRequest(); + msgUpdate.setSlcExecution(slcExecUnm); + String msgUpdateXml = marshallAndLog(marshaller, msgUpdate); + } + + private String marshallAndLog(Marshaller marshaller, Object obj) + throws IOException { + StringWriter writer = new StringWriter(); + marshaller.marshal(obj, new StreamResult(writer)); + String xml = writer.toString(); + log.info(xml); + IOUtils.closeQuietly(writer); + return xml; + } + + private T unmarshall(Unmarshaller unmarshaller, String xml) + throws IOException { + StringReader reader = new StringReader(xml); + Object obj = unmarshaller.unmarshal(new StreamSource(reader)); + IOUtils.closeQuietly(reader); + return (T) obj; + } + + private void assertSlcExecution(SlcExecution expected, SlcExecution reached) { + assertNotNull(reached); + assertEquals(expected.getHost(), reached.getHost()); + assertEquals(expected.getPath(), reached.getPath()); + assertEquals(expected.getType(), reached.getType()); + assertEquals(expected.getStatus(), reached.getStatus()); + } + + private void assertSlcExecutionStep(SlcExecutionStep expected, + SlcExecutionStep reached) { + assertNotNull(reached); + assertEquals(expected.getType(), reached.getType()); + assertEquals(expected.logAsString(), reached.logAsString()); + assertEquals(expected.getBegin(), reached.getBegin()); + } + + public static SlcExecution createSimpleSlcExecution() { + SlcExecution slcExec = new SlcExecution(); + slcExec.setUuid(UUID.randomUUID().toString()); + slcExec.setHost("localhost"); + slcExec.setPath("/test"); + slcExec.setType("slcAnt"); + slcExec.setStatus("STARTED"); + return slcExec; + } +} diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java new file mode 100644 index 000000000..275c7aabf --- /dev/null +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java @@ -0,0 +1,26 @@ +package org.argeo.slc.core.process; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.msg.process.SlcExecutionRequest; +import org.argeo.slc.unit.AbstractSpringTestCase; +import org.springframework.ws.client.core.WebServiceTemplate; + +public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase { + private Log log = LogFactory.getLog(getClass()); + + public void testSendSlcExecutionrequest() { + WebServiceTemplate template = getBean("webServiceTemplate"); + SlcExecution slcExec = SlcExecutionCastorTest + .createSimpleSlcExecution(); + + SlcExecutionRequest req = new SlcExecutionRequest(); + req.setSlcExecution(slcExec); + + log.info("Send SlcExecutionRequest for SlcExecution " + + slcExec.getUuid()); + + Object resp = template.marshalSendAndReceive(req); + log.info("Resp: " + resp); + } +} diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/applicationContext.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/applicationContext.xml new file mode 100644 index 000000000..c295d4510 --- /dev/null +++ b/org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/applicationContext.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.39.2