From 9a632773e4056ca83dc21fcd4c7e13f740f6c29c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 5 May 2008 16:45:42 +0000 Subject: [PATCH] Various enhancements git-svn-id: https://svn.argeo.org/slc/trunk@1131 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/ant/AntRegistryUtil.java | 1 + .../WebServiceSlcExecutionNotifier.java | 31 +++++++++++++++++++ .../WebServiceTreeTestResultNotifier.java | 23 +++++++++++++- .../argeo/slc/ws/client/WebServiceUtils.java | 16 +++++++++- .../slc/castor/spring/applicationContext.xml | 15 ++++++++- .../ws/TreeTestResultWsIntegrationTest.java | 2 ++ .../resources/org/argeo/slc/ws/result.xml | 13 +------- 7 files changed, 86 insertions(+), 15 deletions(-) diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java index f9928708a..6e6655d91 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java @@ -113,6 +113,7 @@ public class AntRegistryUtil { p.executeTarget(target != null ? target : p.getDefaultTarget()); } catch (Throwable e) { exception = e; + log.error("Exception when running Ant: ",e); } finally { p.fireBuildFinished(exception); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java index 4befbe6a2..969234487 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java @@ -2,6 +2,7 @@ package org.argeo.slc.core.process; import java.util.List; +import org.springframework.ws.client.WebServiceIOException; import org.springframework.ws.client.core.WebServiceTemplate; import org.springframework.ws.soap.client.SoapFaultClientException; @@ -18,7 +19,12 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { private Log log = LogFactory.getLog(getClass()); + private Boolean cannotConnect = false; + public void newExecution(SlcExecution slcExecution) { + if (cannotConnect) + return; + SlcExecutionRequest req = new SlcExecutionRequest(); req.setSlcExecution(slcExecution); try { @@ -28,10 +34,15 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { + slcExecution.getUuid()); } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + } catch (WebServiceIOException e) { + manageIoException(e); } } public void updateExecution(SlcExecution slcExecution) { + if (cannotConnect) + return; + SlcExecutionRequest req = new SlcExecutionRequest(); req.setSlcExecution(slcExecution); try { @@ -41,11 +52,16 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { + slcExecution.getUuid()); } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + } catch (WebServiceIOException e) { + manageIoException(e); } } public void updateStatus(SlcExecution slcExecution, String oldStatus, String newStatus) { + if (cannotConnect) + return; + SlcExecutionStatusRequest req = new SlcExecutionStatusRequest( slcExecution.getUuid(), newStatus); try { @@ -55,11 +71,16 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { + slcExecution.getUuid()); } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + } catch (WebServiceIOException e) { + manageIoException(e); } } public void addSteps(SlcExecution slcExecution, List additionalSteps) { + if (cannotConnect) + return; + SlcExecutionStepsRequest req = new SlcExecutionStepsRequest(); req.setSlcExecutionUuid(slcExecution.getUuid()); req.setSteps(additionalSteps); @@ -76,6 +97,8 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { + slcExecution.getUuid()); } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + } catch (WebServiceIOException e) { + manageIoException(e); } } @@ -83,4 +106,12 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { this.template = template; } + protected void manageIoException(WebServiceIOException e) { + if (!cannotConnect) { + log.error("Cannot connect to " + template.getDefaultUri() + + ". Won't try again.", e); + cannotConnect = true; + } + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java index 7ca2f7da0..6cfd4da61 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java @@ -1,5 +1,6 @@ package org.argeo.slc.core.test.tree; +import org.springframework.ws.client.WebServiceIOException; import org.springframework.ws.client.core.WebServiceTemplate; import org.springframework.ws.soap.client.SoapFaultClientException; @@ -20,11 +21,16 @@ public class WebServiceTreeTestResultNotifier implements private Log log = LogFactory.getLog(getClass()); + private Boolean cannotConnect = false; + public void resultPartAdded(TreeTestResult testResult, TestResultPart testResultPart) { if (onlyOnClose) return; + if (cannotConnect) + return; + try { if (testResult.getResultParts().size() == 1 && testResult.getResultParts().values().iterator().next() @@ -48,10 +54,16 @@ public class WebServiceTreeTestResultNotifier implements } } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + + } catch (WebServiceIOException e) { + manageIoException(e); } } public void close(TreeTestResult testResult) { + if (cannotConnect) + return; + try { if (onlyOnClose) { CreateTreeTestResultRequest req = new CreateTreeTestResultRequest( @@ -75,8 +87,9 @@ public class WebServiceTreeTestResultNotifier implements } } catch (SoapFaultClientException e) { WebServiceUtils.manageSoapException(e); + } catch (WebServiceIOException e) { + manageIoException(e); } - } public void setTemplate(WebServiceTemplate template) { @@ -86,4 +99,12 @@ public class WebServiceTreeTestResultNotifier implements public void setOnlyOnClose(Boolean onlyOnClose) { this.onlyOnClose = onlyOnClose; } + + protected void manageIoException(WebServiceIOException e) { + if (!cannotConnect) { + log.error("Cannot connect to " + template.getDefaultUri() + + ". Won't try again.", e); + cannotConnect = true; + } + } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java index 9bcd6e3f6..d37a27efe 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java @@ -18,8 +18,22 @@ import org.apache.commons.logging.LogFactory; public abstract class WebServiceUtils { private final static Log log = LogFactory.getLog(WebServiceUtils.class); - public static Object marshalSendAndReceive(WebServiceTemplate template, + public static Object marshalSendAndReceiveSafe(WebServiceTemplate template, Object req) { + try { + Object resp = marshalSendAndReceive(template, req); + return resp; + } catch (Exception e) { + log.error("Cannot send web servicerequest: "+e.getMessage()); + if(log.isDebugEnabled()){ + log.debug("Webservice exception details: ",e); + } + return null; + } + } + + public static Object marshalSendAndReceive( + WebServiceTemplate template, Object req) { if (log.isTraceEnabled()) { try { StringResult result = new StringResult(); diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml index 3d0c03bad..068d773fb 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml @@ -21,7 +21,20 @@ - + + + + + + + + + diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java index 55819e65f..6e6ffa176 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java @@ -21,6 +21,7 @@ public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase { WebServiceTemplate template = getBean(WebServiceTemplate.class); CreateTreeTestResultRequest req = new CreateTreeTestResultRequest( createCompleteTreeTestResult()); + req.getTreeTestResult().close();// in order to avoid unclosed in test db log.info("Send CreateTreeTestResultRequest for result " + req.getTreeTestResult().getUuid()); @@ -32,6 +33,7 @@ public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase { public void testResultPartRequest() { WebServiceTemplate template = getBean(WebServiceTemplate.class); TreeTestResult ttr = createCompleteTreeTestResult(); + ttr.close();// in order to avoid unclosed in test db CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest( ttr); log.info("Send CreateTreeTestResultRequest for result " diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml index f2d660cac..ce5442d5e 100644 --- a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml +++ b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml @@ -12,20 +12,9 @@ - + - - - - - - \ No newline at end of file -- 2.39.5