Author: veithen
Date: Sat Sep  6 12:49:21 2008
New Revision: 692715

URL: http://svn.apache.org/viewvc?rev=692715&view=rev
Log:
Transport tests: use AspectJ to log messages

Added:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/LogAspect.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/LogAspect.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/LogAspect.java
    synapse/trunk/java/modules/transports/src/test/resources/META-INF/aop.xml
Modified:
    synapse/trunk/java/modules/transports/pom.xml
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java

Modified: synapse/trunk/java/modules/transports/pom.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/pom.xml?rev=692715&r1=692714&r2=692715&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/pom.xml (original)
+++ synapse/trunk/java/modules/transports/pom.xml Sat Sep  6 12:49:21 2008
@@ -53,6 +53,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>2.3</version>
                 <configuration>
+                    
<argLine>-javaagent:target/lib/aspectjweaver-${aspectj.version}.jar -Xms64m 
-Xmx128m</argLine>
                     <systemProperties>
                         <property>
                             <name>log4j.configuration</name>
@@ -90,6 +91,12 @@
                                     <overWrite>true</overWrite>
                                     
<outputDirectory>target/test_rep/modules</outputDirectory>
                                 </artifactItem>
+                                <artifactItem>
+                                    <groupId>org.aspectj</groupId>
+                                    <artifactId>aspectjweaver</artifactId>
+                                    <version>${aspectj.version}</version>
+                                    
<outputDirectory>target/lib</outputDirectory>
+                                </artifactItem>
                             </artifactItems>
                         </configuration>
                     </execution>
@@ -154,6 +161,13 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjrt</artifactId>
+            <version>${aspectj.version}</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
             <groupId>org.mockejb</groupId>
             <artifactId>mockejb</artifactId>
             <version>0.6-beta2</version>
@@ -205,7 +219,7 @@
     </dependencies>
 
     <properties>
-
+        <aspectj.version>1.6.1</aspectj.version>
     </properties>
 
 </project>

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/LogAspect.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/LogAspect.java?rev=692715&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/LogAspect.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/LogAspect.java
 Sat Sep  6 12:49:21 2008
@@ -0,0 +1,73 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.synapse.transport.jms;
+
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+
+import javax.jms.BytesMessage;
+import javax.jms.Message;
+import javax.jms.TextMessage;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.transport.testkit.util.LogManager;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+
[EMAIL PROTECTED]
+public class LogAspect {
+    private static final Log log = LogFactory.getLog(LogAspect.class);
+    
+    @Before("call(void javax.jms.MessageProducer.send(javax.jms.Message)) && 
args(message)")
+    public void beforeSend(Message message) {
+        try {
+            OutputStream out = LogManager.INSTANCE.createLog("jms");
+            try {
+                PrintWriter pw = new PrintWriter(new OutputStreamWriter(out), 
false);
+                pw.println("JMS message ID: " + message.getJMSMessageID());
+                pw.println("JMS correlation ID: " + 
message.getJMSCorrelationID());
+                pw.println("JMS reply to: " + message.getJMSReplyTo());
+                for (Enumeration<?> e = message.getPropertyNames(); 
e.hasMoreElements(); ) {
+                    String name = (String)e.nextElement();
+                    pw.print(name);
+                    pw.print(": ");
+                    pw.println(message.getStringProperty(name));
+                }
+                pw.println();
+                pw.flush();
+                if (message instanceof BytesMessage) {
+                    BytesMessage bytesMessage = (BytesMessage)message;
+                    bytesMessage.reset();
+                    IOUtils.copy(new BytesMessageInputStream(bytesMessage), 
out);
+                } else if (message instanceof TextMessage) {
+                    pw.print(((TextMessage)message).getText());
+                }
+            } finally {
+                out.close();
+            }
+        } catch (Throwable ex) {
+            log.error("Failed to dump JMS message", ex);
+        }
+    }
+}

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/LogAspect.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/LogAspect.java?rev=692715&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/LogAspect.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/LogAspect.java
 Sat Sep  6 12:49:21 2008
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.synapse.transport.mail;
+
+import java.io.OutputStream;
+
+import javax.mail.Message;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.transport.testkit.util.LogManager;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+
[EMAIL PROTECTED]
+public class LogAspect {
+    private static final Log log = LogFactory.getLog(LogAspect.class);
+    
+    @Before("call(void javax.mail.Transport.send(javax.mail.Message)) && 
args(message)")
+    public void beforeSend(Message message) {
+        try {
+            OutputStream out = LogManager.INSTANCE.createLog("javamail");
+            try {
+                message.writeTo(out);
+            } finally {
+                out.close();
+            }
+        } catch (Throwable ex) {
+            log.error("Failed to dump mail message", ex);
+        }
+    }
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java?rev=692715&r1=692714&r2=692715&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
 Sat Sep  6 12:49:21 2008
@@ -19,7 +19,6 @@
 
 package org.apache.synapse.transport.mail;
 
-import java.io.OutputStream;
 import java.util.Date;
 import java.util.Properties;
 
@@ -37,12 +36,10 @@
 import org.apache.synapse.transport.testkit.client.TestClient;
 import org.apache.synapse.transport.testkit.name.Name;
 import org.apache.synapse.transport.testkit.name.Named;
-import org.apache.synapse.transport.testkit.util.LogManager;
 
 @Name("javamail")
 public abstract class MailClient implements TestClient {
     private final MessageLayout layout;
-    private LogManager logManager;
     private MailChannel channel;
     private Session session;
     
@@ -56,8 +53,7 @@
     }
 
     @SuppressWarnings("unused")
-    private void setUp(LogManager logManager, MailTestEnvironment env, 
MailChannel channel) throws Exception {
-        this.logManager = logManager;
+    private void setUp(MailTestEnvironment env, MailChannel channel) throws 
Exception {
         Properties props = new Properties();
         props.putAll(env.getOutProperties());
         session = Session.getInstance(props);
@@ -66,7 +62,6 @@
     
     @SuppressWarnings("unused")
     private void tearDown() {
-        logManager = null;
         channel = null;
         session = null;
     }
@@ -85,12 +80,6 @@
         msg.setHeader(MailConstants.MAIL_HEADER_X_MESSAGE_ID, msgId);
         DataHandler dh = new DataHandler(new ByteArrayDataSource(message, 
contentType.toString()));
         layout.setupMessage(msg, dh);
-        OutputStream out = logManager.createLog("javamail");
-        try {
-            msg.writeTo(out);
-        } finally {
-            out.close();
-        }
         Transport.send(msg);
         return msgId;
     }

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/LogAspect.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/LogAspect.java?rev=692715&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/LogAspect.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/LogAspect.java
 Sat Sep  6 12:49:21 2008
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.synapse.transport.testkit.client.axis2;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.activation.DataSource;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.output.TeeOutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.transport.testkit.util.LogManager;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+
[EMAIL PROTECTED]
+public class LogAspect {
+    private static final Log log = LogFactory.getLog(LogAspect.class);
+    
+    @Around("call(void org.apache.axis2.transport.MessageFormatter.writeTo(" +
+               "       org.apache.axis2.context.MessageContext, 
org.apache.axiom.om.OMOutputFormat," +
+               "       java.io.OutputStream, boolean))" +
+               " && args(msgContext, format, out, preserve)")
+    public void aroundWriteTo(ProceedingJoinPoint proceedingJoinPoint,
+            MessageContext msgContext, OMOutputFormat format, OutputStream 
out, boolean preserve)
+            throws Throwable {
+        OutputStream log = LogManager.INSTANCE.createLog("formatter");
+        try {
+            OutputStream tee = new TeeOutputStream(out, log);
+            proceedingJoinPoint.proceed(new Object[] { msgContext, format, 
tee, preserve });
+        } finally {
+            log.close();
+        }
+    }
+    
+    @AfterReturning(
+        pointcut="call(javax.activation.DataSource 
org.apache.synapse.format.MessageFormatterEx.getDataSource(..))",
+        returning="dataSource")
+    public void afterGetDataSource(DataSource dataSource) {
+        try {
+            OutputStream out = LogManager.INSTANCE.createLog("formatter");
+            try {
+                InputStream in = dataSource.getInputStream();
+                try {
+                    IOUtils.copy(in, out);
+                } finally {
+                    in.close();
+                }
+            } finally {
+                out.close();
+            }
+        } catch (Throwable ex) {
+            log.error("Unable to dump message", ex);
+        }
+    }
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java?rev=692715&r1=692714&r2=692715&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
 Sat Sep  6 12:49:21 2008
@@ -58,7 +58,7 @@
         }
     }
     
-    public OutputStream createLog(String name) throws IOException {
+    public synchronized OutputStream createLog(String name) throws IOException 
{
         testCaseDir.mkdirs();
         return new FileOutputStream(new File(testCaseDir, 
StringUtils.leftPad(String.valueOf(sequence++), 2, '0') + "-" + name + ".log"));
     }

Added: synapse/trunk/java/modules/transports/src/test/resources/META-INF/aop.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/resources/META-INF/aop.xml?rev=692715&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/resources/META-INF/aop.xml 
(added)
+++ synapse/trunk/java/modules/transports/src/test/resources/META-INF/aop.xml 
Sat Sep  6 12:49:21 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  Licensed to the Apache Software Foundation (ASF) under one
+  ~  or more contributor license agreements.  See the NOTICE file
+  ~  distributed with this work for additional information
+  ~  regarding copyright ownership.  The ASF licenses this file
+  ~  to you 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.
+  -->
+<aspectj>
+    <aspects>
+        <aspect name="org.apache.synapse.transport.jms.LogAspect"/>
+        <aspect name="org.apache.synapse.transport.mail.LogAspect"/>
+        <aspect 
name="org.apache.synapse.transport.testkit.client.axis2.LogAspect"/>
+    </aspects>
+    <weaver options="-showWeaveInfo">
+        <include within="org.apache.synapse.transport..*"/>
+    </weaver>
+</aspectj>
\ No newline at end of file


Reply via email to