Author: alessio.soldano(a)jboss.com
Date: 2007-12-07 21:02:12 -0500 (Fri, 07 Dec 2007)
New Revision: 5241
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordWriterProcessor.java
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java
Log:
Recording system based on JAX-WS handler, first implementation
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java 2007-12-08
02:00:07 UTC (rev 5240)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Vector;
import javax.management.ObjectName;
@@ -35,6 +36,8 @@
import org.jboss.wsf.spi.invocation.InvocationHandler;
import org.jboss.wsf.spi.invocation.RequestHandler;
import org.jboss.wsf.spi.management.EndpointMetrics;
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
/**
* A general JAXWS endpoint.
@@ -56,7 +59,9 @@
private EndpointMetrics metrics;
private List<BindingCustomization> bindingCustomizsations = new
ArrayList<BindingCustomization>();
private String address;
-
+ private List<RecordProcessor> recordProcessors = new
Vector<RecordProcessor>();
+ private boolean recording = false;
+
DefaultEndpoint(String targetBean)
{
this.targetBean = targetBean;
@@ -244,4 +249,35 @@
if (state == EndpointState.STARTED)
throw new IllegalStateException("Cannot modify endpoint properties in
state: " + state);
}
+
+ public List<RecordProcessor> getRecordProcessors()
+ {
+ return recordProcessors;
+ }
+
+ public void setRecordProcessors(List<RecordProcessor> recordProcessors)
+ {
+ this.recordProcessors = new Vector<RecordProcessor>(recordProcessors);
+ }
+
+ public boolean isRecording()
+ {
+ return recording;
+ }
+
+ public void setRecording(boolean value)
+ {
+ this.recording = value;
+ }
+
+ public void processRecord(Record record)
+ {
+ if (this.isRecording())
+ {
+ for (RecordProcessor processor : recordProcessors)
+ {
+ processor.processRecord(record);
+ }
+ }
+ }
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java 2007-12-08
02:00:07 UTC (rev 5240)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -23,6 +23,11 @@
//$Id$
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jboss.wsf.framework.management.recording.RecordDumpProcessor;
+import org.jboss.wsf.framework.management.recording.RecordWriterProcessor;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.deployment.Deployment;
@@ -35,6 +40,7 @@
import org.jboss.wsf.spi.invocation.InvocationType;
import org.jboss.wsf.spi.invocation.RequestHandler;
import org.jboss.wsf.spi.invocation.RequestHandlerFactory;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData;
import org.jboss.wsf.spi.metadata.j2ee.EJBMetaData;
import org.jboss.wsf.spi.metadata.j2ee.MDBMetaData;
@@ -70,6 +76,13 @@
InvocationHandler invocationHandler = getInvocationHandler(ep);
if (invocationHandler != null)
ep.setInvocationHandler(invocationHandler);
+
+ //TODO!! still to be configured...
+ List<RecordProcessor> recordProcessorList = new
LinkedList<RecordProcessor>();
+ recordProcessorList.add(new RecordWriterProcessor());
+ recordProcessorList.add(new RecordDumpProcessor());
+ ep.setRecordProcessors(recordProcessorList);
+
}
}
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,213 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+*/
+package org.jboss.wsf.framework.invocation;
+
+
+import java.net.URL;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+import org.jboss.logging.Logger;
+import org.jboss.wsf.common.DOMWriter;
+import org.jboss.wsf.framework.management.recording.RecordFactory;
+import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.invocation.EndpointAssociation;
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordGroupAssociation;
+import org.jboss.wsf.spi.management.recording.Record.MessageType;
+import org.jboss.wsf.test.GenericSOAPHandler;
+
+/**
+ *
+ */
+public class RecordingServerHandler extends GenericSOAPHandler
+{
+ // provide logging
+ private static Logger log = Logger.getLogger(RecordingServerHandler.class);
+
+ protected boolean handleInbound(MessageContext ctx)
+ {
+ log.info("*** INBOUND ***");
+ Endpoint endpoint = EndpointAssociation.getEndpoint();
+ if (endpoint.isRecording())
+ {
+ Long groupID = RecordFactory.newGroupID();
+ RecordGroupAssociation.pushGroupID(groupID);//check, perhaps we should try
peeking before pushing...
+ Record record = RecordFactory.newRecord(groupID);
+ record.setDate(new Date());
+ HttpServletRequest httpServletRequest =
(HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST);
+ if (httpServletRequest != null)
+ {
+ try
+ {
+ record.setDestinationHost(new
URL(httpServletRequest.getRequestURL().toString()).getHost());
+ record.setSourceHost(httpServletRequest.getRemoteHost());
+ }
+ catch (Exception e)
+ {
+ log.warn("Unable to read from the http servlet request! " +
e.getMessage());
+ }
+ }
+
record.setHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_REQUEST_HEADERS)));
+ record.setMessageType(MessageType.INBOUND);
+ record.setOperation((String)ctx.get(MessageContext.WSDL_OPERATION));
+ SOAPMessageContext soapCtx = (SOAPMessageContext)ctx;
+ try
+ {
+ SOAPEnvelope soapEnv = soapCtx.getMessage().getSOAPPart().getEnvelope();
+ if (soapEnv != null)
+ {
+ record.setEnvelope(DOMWriter.printNode(soapEnv, true));
+ }
+ }
+ catch (SOAPException ex)
+ {
+ log.error("Cannot trace SOAPMessage", ex);
+ }
+ endpoint.processRecord(record);
+
+// log.info("WSDL_OPERATION:
"+ctx.get(MessageContext.WSDL_OPERATION));
+// log.info("WSDL_PORT: "+ctx.get(MessageContext.WSDL_PORT));
+// log.info("WSDL_SERVICE: "+ctx.get(MessageContext.WSDL_SERVICE));
+// log.info("PATH_INFO: "+ctx.get(MessageContext.PATH_INFO));
+// log.info("QUERY_STRING: "+ctx.get(MessageContext.QUERY_STRING));
+// log.info("HTTP_REQUEST_METHOD:
"+ctx.get(MessageContext.HTTP_REQUEST_METHOD));
+// log.info("HTTP_RESPONSE_CODE:
"+ctx.get(MessageContext.HTTP_RESPONSE_CODE));
+// log.info("HTTP_REQUEST_HEADERS:
"+this.printHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_REQUEST_HEADERS))));
+// log.info("HTTP_RESPONSE_HEADERS:
"+this.printHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_RESPONSE_HEADERS))));
+// log.info("WSDL_INTERFACE:
"+ctx.get(MessageContext.WSDL_INTERFACE));
+// log.info("SERVLET_REQUEST:
"+(HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST));
+// if ((HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST)!=null)
+// {
+// try {
+// log.info("DESTINATION HOST: "+new
URL(((HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST)).getRequestURL().toString()).getHost());
+// } catch (Exception e) {e.printStackTrace();}
+// log.info("SOURCE HOST:
"+((HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST)).getRemoteHost());
+// }
+//
+//
+// try
+// {
+// SOAPEnvelope soapEnv = soapCtx.getMessage().getSOAPPart().getEnvelope();
+// if (soapEnv != null)
+// {
+// String envStr = DOMWriter.printNode(soapEnv, true);
+// log.info("ENVELOPE: "+envStr);
+// }
+// }
+// catch (SOAPException ex)
+// {
+// log.error("Cannot trace SOAPMessage", ex);
+// }
+ }
+ return true;
+ }
+
+ private String printHeaders(Map<String,List<String>> headers)
+ {
+ StringBuffer sb = new StringBuffer();
+ if (headers!=null)
+ {
+ for (String key : headers.keySet())
+ {
+ sb.append(key);
+ sb.append(": ");
+ for (String h : headers.get(key))
+ {
+ sb.append(h);
+ sb.append("; ");
+ }
+ sb.append("\n");
+ }
+ }
+ return sb.toString();
+ }
+
+ protected boolean handleOutbound(MessageContext ctx)
+ {
+ Endpoint endpoint = EndpointAssociation.getEndpoint();
+ log.info("*** OUTBOUND ***");
+ if (endpoint.isRecording())
+ {
+ Long groupID = RecordGroupAssociation.popGroupID();//check, perhaps we should
try peeking before popping...
+ Record record = RecordFactory.newRecord(groupID);
+ record.setDate(new Date());
+
record.setHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_RESPONSE_HEADERS)));
+ record.setMessageType(MessageType.OUTBOUND);
+ record.setOperation((String)ctx.get(MessageContext.WSDL_OPERATION));
+ SOAPMessageContext soapCtx = (SOAPMessageContext)ctx;
+ try
+ {
+ SOAPEnvelope soapEnv = soapCtx.getMessage().getSOAPPart().getEnvelope();
+ if (soapEnv != null)
+ {
+ record.setEnvelope(DOMWriter.printNode(soapEnv, true));
+ }
+ }
+ catch (SOAPException ex)
+ {
+ log.error("Cannot trace SOAPMessage", ex);
+ }
+ endpoint.processRecord(record);
+
+
+// log.info("WSDL_OPERATION:
"+ctx.get(MessageContext.WSDL_OPERATION));
+// log.info("WSDL_PORT: "+ctx.get(MessageContext.WSDL_PORT));
+// log.info("WSDL_SERVICE: "+ctx.get(MessageContext.WSDL_SERVICE));
+// log.info("PATH_INFO: "+ctx.get(MessageContext.PATH_INFO));
+// log.info("QUERY_STRING: "+ctx.get(MessageContext.QUERY_STRING));
+// log.info("HTTP_REQUEST_METHOD:
"+ctx.get(MessageContext.HTTP_REQUEST_METHOD));
+// log.info("HTTP_RESPONSE_CODE:
"+ctx.get(MessageContext.HTTP_RESPONSE_CODE));
+// log.info("HTTP_REQUEST_HEADERS:
"+this.printHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_REQUEST_HEADERS))));
+// log.info("HTTP_RESPONSE_HEADERS:
"+this.printHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_RESPONSE_HEADERS))));
+//
+// try
+// {
+// SOAPEnvelope soapEnv = soapCtx.getMessage().getSOAPPart().getEnvelope();
+// if (soapEnv != null)
+// {
+// String envStr = DOMWriter.printNode(soapEnv, true);
+// log.info("ENVELOPE: "+envStr);
+// }
+// }
+// catch (SOAPException ex)
+// {
+// log.error("Cannot trace SOAPMessage", ex);
+// }
+ }
+ return true;
+ }
+
+ public boolean handleFault(MessageContext arg0)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java 2007-12-08
02:00:07 UTC (rev 5240)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -27,6 +27,8 @@
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.management.EndpointMetrics;
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
/**
* The endpoint MBean representation
@@ -106,4 +108,25 @@
{
endpoint.getLifecycleHandler().stop(endpoint);
}
+
+ public boolean isRecording()
+ {
+ return endpoint.isRecording();
+ }
+
+ public void setRecording(boolean value)
+ {
+ endpoint.setRecording(value);
+ }
+
+ public void processRecord(Record record)
+ {
+ if (this.isRecording())
+ {
+ for (RecordProcessor processor : endpoint.getRecordProcessors())
+ {
+ processor.processRecord(record);
+ }
+ }
+ }
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java 2007-12-08
02:00:07 UTC (rev 5240)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -23,6 +23,8 @@
import java.util.Date;
+import org.jboss.wsf.spi.management.recording.Record;
+
/**
* MBean interface.
* @since 15-April-2004
@@ -50,4 +52,10 @@
long getFaultCount();
long getResponseCount();
+
+ boolean isRecording();
+
+ void setRecording(boolean value);
+
+ void processRecord(Record record);
}
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,126 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+import java.util.Vector;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
+
+/**
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 8-Dec-2007
+ */
+public abstract class AbstractRecordProcessor implements RecordProcessor
+{
+
+ protected List<RecordFilter> filters = new Vector<RecordFilter>();
+ protected boolean processDestinationHost;
+ protected boolean processSourceHost;
+ protected boolean processHeaders;
+ protected boolean processMessage;
+ protected boolean processMessageType;
+ protected boolean processOperation;
+
+ public abstract void processRecord(Record record);
+
+ public void addFilter(RecordFilter filter)
+ {
+ filters.add(filter);
+ }
+
+ public List<RecordFilter> getFilters()
+ {
+ return filters;
+ }
+
+ public void setFilters(List<RecordFilter> filters)
+ {
+ this.filters = new Vector<RecordFilter>(filters);
+ }
+
+ public boolean isProcessDestinationHost()
+ {
+ return processDestinationHost;
+ }
+
+ public void setProcessDestinationHost(boolean processDestinationHost)
+ {
+ this.processDestinationHost = processDestinationHost;
+ }
+
+ public boolean isProcessSourceHost()
+ {
+ return processSourceHost;
+ }
+
+ public void setProcessSourceHost(boolean processSourceHost)
+ {
+ this.processSourceHost = processSourceHost;
+ }
+
+ public boolean isProcessHeaders()
+ {
+ return processHeaders;
+ }
+
+ public void setProcessHeaders(boolean processHeaders)
+ {
+ this.processHeaders = processHeaders;
+ }
+
+ public boolean isProcessMessage()
+ {
+ return processMessage;
+ }
+
+ public void setProcessMessage(boolean processMessage)
+ {
+ this.processMessage = processMessage;
+ }
+
+ public boolean isProcessMessageType()
+ {
+ return processMessageType;
+ }
+
+ public void setProcessMessageType(boolean processMessageType)
+ {
+ this.processMessageType = processMessageType;
+ }
+
+ public boolean isProcessOperation()
+ {
+ return processOperation;
+ }
+
+ public void setProcessOperation(boolean processOperation)
+ {
+ this.processOperation = processOperation;
+ }
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.wsf.framework.management.recording;
+
+//$Id$
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.logging.Logger;
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.Record.MessageType;
+
+/**
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 8-Dec-2007
+ */
+public class RecordDumpProcessor extends AbstractRecordProcessor
+{
+ private Logger log = Logger.getLogger(this.getClass()); //fare qualcosa di meglio,
magari loggare con un nome di classe specifico e un pre-log col recordID
+
+ @Override
+ public void processRecord(Record record)
+ {
+ StringBuffer sb = new StringBuffer();
+ if (record.getMessageType() == MessageType.INBOUND)
+ {
+ sb.append("INBOUND MESSAGE from ");
+ sb.append(record.getSourceHost());
+ }
+ else if (record.getMessageType() == MessageType.OUTBOUND)
+ {
+ sb.append("OUTBOUND MESSAGE to ");
+ sb.append(record.getDestinationHost());
+ }
+ else
+ {
+ log.warn("Unknown message type: " + record.getMessageType());
+ }
+ sb.append(": \n");
+ Map<String, List<String>> headers = record.getHeaders();
+ if (headers != null)
+ {
+ for (String key : headers.keySet())
+ {
+ sb.append(key);
+ sb.append(": ");
+ for (String h : headers.get(key))
+ {
+ sb.append(h);
+ sb.append("; ");
+ }
+ sb.append("\n");
+ }
+ }
+ if (record.getPayload() != null)
+ {
+ try
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+ out.write(record.getPayload());
+ out.close();
+ sb.append(out.toString()); //improve this...
+ sb.append("\n");
+ }
+ catch (IOException e)
+ {
+ log.warn("Error while writing the payload!");
+ }
+ }
+ log.debug(sb.toString());
+ log.debug(record.getEnvelope());
+ }
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.wsf.framework.management.recording;
+
+//$Id$
+
+import org.jboss.wsf.spi.management.recording.Record;
+
+/**
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 8-Dec-2007
+ */
+public class RecordFactory
+{
+ public static Long newGroupID()
+ {
+ //TODO-ALE!! fare meglio... concorrenza
+ return new Long(System.currentTimeMillis());
+ }
+
+ public static Record newRecord(Long groupID)
+ {
+ Record record = new RecordImpl();
+ record.setGroupID(groupID);
+ return record;
+ }
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.wsf.spi.management.recording.Record;
+
+/**
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 8-Dec-2007
+ */
+public class RecordImpl implements Record
+{
+ private String sourceHost;
+ private String destinationHost;
+ private Map<String, List<String>> headers = new HashMap<String,
List<String>>();
+ private byte[] payload;
+ private MessageType messageType;
+ private String operation;
+ private Long groupID;
+ private Date date;
+ private String envelope;
+
+
+ public void addHeaders(String key, List<String> value)
+ {
+ headers.put(key, value);
+ }
+
+ public Map<String, List<String>> getHeaders()
+ {
+ return headers;
+ }
+
+ public MessageType getMessageType()
+ {
+ return messageType;
+ }
+
+ public byte[] getPayload()
+ {
+ return payload;
+ }
+
+ public void setMessageType(MessageType messageType)
+ {
+ this.messageType = messageType;
+ }
+
+ public void setPayload(byte[] payload)
+ {
+ this.payload = payload;
+ }
+
+ public String getSourceHost()
+ {
+ return sourceHost;
+ }
+
+ public void setSourceHost(String sourceHost)
+ {
+ this.sourceHost = sourceHost;
+ }
+
+ public String getDestinationHost()
+ {
+ return destinationHost;
+ }
+
+ public void setDestinationHost(String destinationHost)
+ {
+ this.destinationHost = destinationHost;
+ }
+
+ public void setHeaders(Map<String, List<String>> headers)
+ {
+ this.headers = headers;
+ }
+
+ public Long getGroupID()
+ {
+ return groupID;
+ }
+
+ public String getOperation()
+ {
+ return operation;
+ }
+
+ public void setGroupID(Long groupID)
+ {
+ this.groupID = groupID;
+ }
+
+ public void setOperation(String operation)
+ {
+ this.operation = operation;
+ }
+
+ public Date getDate()
+ {
+ return date;
+ }
+
+ public void setDate(Date date)
+ {
+ this.date = date;
+ }
+
+ public void setEnvelope(String envelope)
+ {
+ this.envelope = envelope;
+ }
+
+ public String getEnvelope()
+ {
+ return envelope;
+ }
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordWriterProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordWriterProcessor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordWriterProcessor.java 2007-12-08
02:02:12 UTC (rev 5241)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.wsf.framework.management.recording;
+
+//$Id$
+
+import org.jboss.logging.Logger;
+import org.jboss.wsf.spi.management.recording.Record;
+
+/**
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 8-Dec-2007
+ */
+public class RecordWriterProcessor extends AbstractRecordProcessor
+{
+ private Logger log = Logger.getLogger(this.getClass());
+
+ @Override
+ public void processRecord(Record arg0)
+ {
+ log.info("processerei il messaggio...");
+ }
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordWriterProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF