Author: midon
Date: Tue Jul 15 13:01:30 2008
New Revision: 677021

URL: http://svn.apache.org/viewvc?rev=677021&view=rev
Log:
better logging

Modified:
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
 Tue Jul 15 13:01:30 2008
@@ -45,7 +45,6 @@
 import org.apache.ode.utils.wsdl.Messages;
 import org.apache.ode.utils.wsdl.WsdlUtils;
 import org.w3c.dom.Element;
-import org.w3c.dom.Document;
 
 import javax.wsdl.Binding;
 import javax.wsdl.BindingOperation;
@@ -88,6 +87,7 @@
     protected Binding portBinding;
 
     public HttpExternalService(ProcessConf pconf, QName serviceName, String 
portName, ExecutorService executorService, Scheduler scheduler, BpelServer 
server) {
+        if(log.isDebugEnabled()) log.debug("new HTTP External service, service 
name=["+serviceName+"]; port name=["+portName+"]");
         this.portName = portName;
         this.serviceName = serviceName;
         this.executorService = executorService;
@@ -214,8 +214,10 @@
         public Void call() throws Exception {
             try {
                 // simply execute the http method
-                if (log.isDebugEnabled())
-                    log.debug("Executing http request : " + method.getName() + 
" " + method.getURI());
+                if (log.isDebugEnabled()){
+                    log.debug("Executing HTTP Request : " + method.getName() + 
" " + method.getURI());
+                    log.debug(HttpHelper.requestToString(method));
+                }
 
                 final int statusCode = client.executeMethod(method);
                 // invoke getResponseBody to force the loading of the body
@@ -223,7 +225,10 @@
                 // as a result the connection might be closed before the body 
processing (see the finally clause below).
                 byte[] responseBody = method.getResponseBody();
                 // ... and process the response
-                if (log.isDebugEnabled()) log.debug("Received response for MEX 
" + mexId);
+                if (log.isDebugEnabled()) {
+                    log.debug("Received response for MEX " + mexId);
+                    log.debug(HttpHelper.responseToString(method));
+                }
                 processResponse(statusCode);
             } catch (final IOException e) {
                 // ODE MEX needs to be invoked in a TX.
@@ -288,7 +293,7 @@
                             }
                         } catch (Exception e) {
                             String errmsg = "Exception occured while 
processing the HTTP response of a two-way request: " + e.getMessage();
-                            log.error(errmsg, e);
+                            log.error("[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] "+errmsg, e);
                             PartnerRoleMessageExchange odeMex = 
(PartnerRoleMessageExchange) server.getEngine().getMessageExchange(mexId);
                             
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg, null);
                         }
@@ -296,7 +301,7 @@
                     }
                 });
             } catch (Exception transactionException) {
-                String errmsg = "Error executing reply transaction; reply will 
be lost.";
+                String errmsg = "[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] Error executing reply 
transaction; reply will be lost.";
                 log.error(errmsg, transactionException);
             }
         }
@@ -313,7 +318,7 @@
         private void _5xx_serverError() throws IOException {
             String errmsg;
             if (log.isWarnEnabled()) {
-                errmsg = "Status-Line: " + method.getStatusLine() + " for " + 
method.getURI();
+                errmsg = "[Service: "+serviceName+", Port: "+portName+", 
Operation: "+operation.getName()+"] Status-Line: " + method.getStatusLine() + " 
for " + method.getURI();
                 log.warn(errmsg);
             }
             PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange) 
server.getEngine().getMessageExchange(mexId);
@@ -324,7 +329,7 @@
             try {
                 body = method.getResponseBodyAsString();
             } catch (IOException e) {
-                errmsg = "Unable to get the request body : " + e.getMessage();
+                errmsg = "[Service: "+serviceName+", Port: "+portName+", 
Operation: "+operation.getName()+"] Unable to get the request body : " + 
e.getMessage();
                 log.error(errmsg, e);
                 
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg, 
HttpHelper.prepareDetailsElement(method));
                 return;
@@ -343,7 +348,7 @@
 
                 if (receivedType == null) {
                     if (log.isWarnEnabled())
-                        log.warn("Received Response with a body but no 
'Content-Type' header! Will try to parse nevertheless.");
+                        log.warn("[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] Received Response with a body 
but no 'Content-Type' header! Will try to parse nevertheless.");
                 }
 
                 // try to parse body
@@ -383,7 +388,7 @@
 
                     // finally send the fault. We did it!
                     if (log.isWarnEnabled())
-                        log.warn("Fault response: faultName=" + faultName + " 
faultType=" + faultType + "\n" + DOMUtils.domToString(response.getMessage()));
+                        log.warn("[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] Fault response: faultName=" + 
faultName + " faultType=" + faultType + "\n" + 
DOMUtils.domToString(response.getMessage()));
                     odeMex.replyWithFault(faultName, response);
                 }
 
@@ -402,7 +407,7 @@
         private void _2xx_success() throws IOException {
             PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange) 
server.getEngine().getMessageExchange(mexId);
             if (log.isDebugEnabled())
-                log.debug("HTTP Status-Line: " + method.getStatusLine() + " 
for " + method.getURI());
+                log.debug("[Service: "+serviceName+", Port: "+portName+", 
Operation: "+operation.getName()+"] HTTP Status-Line: " + 
method.getStatusLine() + " for " + method.getURI());
             if (log.isDebugEnabled()) log.debug("Received response for MEX " + 
odeMex);
 
             Operation opDef = odeMex.getOperation();
@@ -430,7 +435,7 @@
             try {
                 body = method.getResponseBodyAsString();
             } catch (IOException e) {
-                String errmsg = "Unable to get the request body : " + 
e.getMessage();
+                String errmsg = "[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] Unable to get the request 
body : " + e.getMessage();
                 log.error(errmsg, e);
                 
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg, 
HttpHelper.prepareDetailsElement(method));
                 return;
@@ -468,7 +473,7 @@
                             Element bodyElement = DOMUtils.stringToDOM(body);
                             partElement = 
httpMethodConverter.createPartElement(partDef, bodyElement);
                         } catch (Exception e) {
-                            String errmsg = "Unable to parse the response 
body: " + e.getMessage();
+                            String errmsg = "[Service: "+serviceName+", Port: 
"+portName+", Operation: "+operation.getName()+"] Unable to parse the response 
body: " + e.getMessage();
                             log.error(errmsg, e);
                             
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg, 
HttpHelper.prepareDetailsElement(method));
                             return;
@@ -498,7 +503,7 @@
         }
 
         void replyWithFailure(String errmsg) {
-            log.error(errmsg);
+            log.error("[Service: "+serviceName+", Port: "+portName+", 
Operation: "+operation.getName()+"] "+errmsg);
             PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange) 
server.getEngine().getMessageExchange(mexId);
             odeMex.replyWithFailure(MessageExchange.FailureType.OTHER, errmsg, 
HttpHelper.prepareDetailsElement(method));
         }

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
 Tue Jul 15 13:01:30 2008
@@ -28,6 +28,9 @@
 import org.apache.commons.httpclient.StatusLine;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.commons.httpclient.methods.RequestEntity;
 import org.apache.commons.httpclient.params.HttpParams;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -38,6 +41,10 @@
 import org.w3c.dom.Document;
 
 import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.StringWriter;
+import java.io.PipedOutputStream;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -208,4 +215,67 @@
     public static boolean isText(String contentType) {
         return TEXT_MIME_TYPE_PATTERN.matcher(contentType).matches();
     }
+
+
+    public static String requestToString(HttpMethod m) {
+        StringBuilder sb = new StringBuilder(256);
+        try {
+            sb.append("HTTP Request Details: \n").append(m.getName()).append(" 
").append(m.getURI());
+        } catch (URIException e) {
+            // not that important
+            if (log.isDebugEnabled()) log.debug(e);
+        }
+        sb.append("\nRequest Headers:");
+        Header[] headers = m.getRequestHeaders();
+        if (headers.length == 0) sb.append(" n/a");
+        for (int i = 0; i < headers.length; i++) {
+            Header h = headers[i];
+            sb.append("\n\t").append(h.getName()).append(": 
").append(h.getValue());
+        }
+        if (m instanceof EntityEnclosingMethod) {
+            EntityEnclosingMethod eem = (EntityEnclosingMethod) m;
+            if (eem.getRequestEntity() != null) {
+                sb.append("\nRequest Entity:");
+                
sb.append("\n\tContent-Type:").append(eem.getRequestEntity().getContentType());
+                
sb.append("\n\tContent-Length:").append(eem.getRequestEntity().getContentLength());
+                if (eem.getRequestEntity() instanceof StringRequestEntity) {
+                    StringRequestEntity sre = (StringRequestEntity) 
eem.getRequestEntity();
+                    sb.append("\n\tContent-Charset:").append(sre.getCharset());
+                    sb.append("\n\tRequest 
Entity:\n").append(sre.getContent());
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+    public static String responseToString(HttpMethod m) {
+        StringBuilder sb = new StringBuilder(256);
+        try {
+            sb.append("HTTP Response Details: 
\n").append(m.getName()).append(" ").append(m.getURI());
+        } catch (URIException e) {
+            // not that important
+            if (log.isDebugEnabled()) log.debug(e);
+        }
+        sb.append("\nStatus-Line: ").append(m.getStatusLine());
+        Header[] headers = m.getResponseHeaders();
+        if (headers.length != 0) sb.append("\nResponse Headers: ");
+        for (int i = 0; i < headers.length; i++) {
+            Header h = headers[i];
+            sb.append("\n\t").append(h.getName()).append(": 
").append(h.getValue());
+        }
+        try {
+            if (StringUtils.isNotEmpty(m.getResponseBodyAsString())) {
+                sb.append("\nResponse 
Entity:\n").append(m.getResponseBodyAsString());
+            }
+        } catch (IOException e) {
+            log.error(e);
+        }
+        Header[] footers = m.getResponseFooters();
+        if (footers.length != 0) sb.append("\nResponse Footers: ");
+        for (int i = 0; i < footers.length; i++) {
+            Header h = footers[i];
+            sb.append("\n\t").append(h.getName()).append(": 
").append(h.getValue());
+        }
+        return sb.toString();
+    }
 }

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
 Tue Jul 15 13:01:30 2008
@@ -52,13 +52,10 @@
             String partName = e.getKey();
             Element node = e.getValue();
             String nodeContent = DOMUtils.isEmptyElement(node) ? "" : 
DOMUtils.getTextContent(node);
-            if (nodeContent == null) {
-                // if it is not a simple type, skip it
-                if (log.isDebugEnabled())
-                    log.debug("Part " + partName + " skipped because 
associated element is not of a simple type.");
-                continue;
+            // if it is not a simple type, skip it
+            if (nodeContent != null) {
+                l.add(new NameValuePair(e.getKey(), nodeContent));
             }
-            l.add(new NameValuePair(e.getKey(), nodeContent));
         }
         return EncodingUtil.formUrlEncode(l.toArray(new NameValuePair[0]), 
"UTF-8");
     }

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
 Tue Jul 15 13:01:30 2008
@@ -73,26 +73,24 @@
             {
                 Element value = e.getValue();
                 replacementValue = DOMUtils.isEmptyElement(value) ? "" : 
DOMUtils.getTextContent(value);
-                if (replacementValue == null) {
-                    // if it is not a simple type, skip it
-                    if(log.isDebugEnabled()) log.debug("Part "+partName+" 
skipped because associated element is not of a simple type.");
-                    continue;
-                }
             }
 
-            try {
-                replacementValue = URIUtil.encodeWithinQuery(replacementValue);
-            } catch (URIException urie) {
-                // this exception is never thrown by the code of httpclient
-                if (log.isWarnEnabled()) log.warn(urie.getMessage(), urie);
-            }
+            // if it is not a simple type, skip it
+            if (replacementValue!=null) {
+                try {
+                    replacementValue = 
URIUtil.encodeWithinQuery(replacementValue);
+                } catch (URIException urie) {
+                    // this exception is never thrown by the code of httpclient
+                    if (log.isWarnEnabled()) log.warn(urie.getMessage(), urie);
+                }
 
-            // first, search for parentheses
-            String partPattern = "\\(" + partName + "\\)";
-            if(!replace(result, partPattern, replacementValue)){
-                // if parentheses not found, try braces
-                partPattern = "\\{" + partName + "\\}";
-                replace(result, partPattern, replacementValue);
+                // first, search for parentheses
+                String partPattern = "\\(" + partName + "\\)";
+                if(!replace(result, partPattern, replacementValue)){
+                    // if parentheses not found, try braces
+                    partPattern = "\\{" + partName + "\\}";
+                    replace(result, partPattern, replacementValue);
+                }
             }
         }
 


Reply via email to