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