[dna-commits] DNA SVN: r264 - in branches/maeste/sequencers/dna-sequencer-esbMessage/src: main/java/org/jboss/dna/sequencer/esbMessage and 1 other directories.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Wed Jun 11 04:35:21 EDT 2008


Author: maeste
Date: 2008-06-11 04:35:21 -0400 (Wed, 11 Jun 2008)
New Revision: 264

Added:
   branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencerI18n.java
   branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/resources/
   branches/maeste/sequencers/dna-sequencer-esbMessage/src/test/resources/
Modified:
   branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageMetaData.java
   branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencer.java
Log:
[DNA-78 [DNA-108],[DNA-122]]

Modified: branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageMetaData.java
===================================================================
--- branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageMetaData.java	2008-06-11 01:10:40 UTC (rev 263)
+++ branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageMetaData.java	2008-06-11 08:35:21 UTC (rev 264)
@@ -26,7 +26,9 @@
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
+import org.jboss.dna.common.monitor.ProgressMonitor;
 import org.jboss.dna.common.util.StringUtil;
+import org.jboss.dna.sequencer.images.ImageSequencerI18n;
 import org.jboss.internal.soa.esb.util.Encoding;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.message.Message;
@@ -58,10 +60,12 @@
 
     }
 
-    public static ESBMessageMetaData instance( InputStream stream ) {
+    public static ESBMessageMetaData instance( InputStream stream,
+                                               ProgressMonitor progressMonitor ) {
 
         ESBMessageMetaData me = null;
         Message message = null;
+        progressMonitor.beginTask(10, ImageSequencerI18n.sequencerTaskName);
         try {
             me = new ESBMessageMetaData();
             message = Util.deserialize((Serializable)Encoding.decodeToObject(StringUtil.read(stream)));
@@ -69,6 +73,8 @@
             e.printStackTrace();
             return null;
         }
+        progressMonitor.worked(2);
+        if (progressMonitor.isCancelled()) return null;
 
         me.messageType = message.getType();
         // Context not yet implemented in JBossESB
@@ -81,32 +87,50 @@
         me.relatesTo = message.getHeader().getCall().getRelatesTo();
         me.action = message.getHeader().getCall().getAction();
         me.messageID = message.getHeader().getCall().getMessageID();
+        progressMonitor.worked(1);
+        if (progressMonitor.isCancelled()) return null;
 
         if (message.getBody().getNames().length != 0) {
             me.bodyMap = new HashMap<String, Object>();
+            ProgressMonitor subtask = progressMonitor.createSubtask(2);
+            subtask.beginTask(message.getBody().getNames().length, ESBMessageSequencerI18n.sequencerTaskName);
+            for (String name : message.getBody().getNames()) {
+                me.bodyMap.put(name, message.getBody().get(name));
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return null;
+            }
+            subtask.done();
         }
-        for (String name : message.getBody().getNames()) {
-            me.bodyMap.put(name, message.getBody().get(name));
-        }
 
         if (message.getProperties().getNames().length != 0) {
             me.propertiesMap = new HashMap<String, Object>();
+            ProgressMonitor subtask = progressMonitor.createSubtask(2);
+            subtask.beginTask(message.getProperties().getNames().length, ESBMessageSequencerI18n.sequencerTaskName);
+            for (String name : message.getProperties().getNames()) {
+                me.propertiesMap.put(name, message.getProperties().getProperty(name));
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return null;
+            }
+            subtask.done();
         }
-        for (String name : message.getProperties().getNames()) {
-            me.propertiesMap.put(name, message.getProperties().getProperty(name));
-        }
 
         if (message.getAttachment().getNames().length != 0) {
             me.attachmentsMap = new HashMap<String, Object>();
+            ProgressMonitor subtask = progressMonitor.createSubtask(2);
+            subtask.beginTask(message.getAttachment().getNames().length, ESBMessageSequencerI18n.sequencerTaskName);
+            for (String name : message.getAttachment().getNames()) {
+                me.attachmentsMap.put(name, message.getAttachment().get(name));
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return null;
+            }
+            subtask.done();
         }
-        for (String name : message.getAttachment().getNames()) {
-            me.attachmentsMap.put(name, message.getAttachment().get(name));
-        }
 
         me.faultCause = message.getFault().getCause();
         me.faultCode = message.getFault().getCode();
         me.faultReason = message.getFault().getReason();
-
+        // do last unit of work implicit in done
+        progressMonitor.done();
         return me;
 
     }

Modified: branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencer.java
===================================================================
--- branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencer.java	2008-06-11 01:10:40 UTC (rev 263)
+++ branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencer.java	2008-06-11 08:35:21 UTC (rev 264)
@@ -22,23 +22,41 @@
 package org.jboss.dna.sequencer.esbMessage;
 
 import java.io.InputStream;
+import java.util.Map.Entry;
 import org.jboss.dna.common.monitor.ProgressMonitor;
+import org.jboss.dna.sequencer.images.ImageSequencerI18n;
+import org.jboss.dna.spi.graph.NameFactory;
+import org.jboss.dna.spi.graph.Path;
+import org.jboss.dna.spi.graph.PathFactory;
 import org.jboss.dna.spi.sequencers.SequencerOutput;
 import org.jboss.dna.spi.sequencers.StreamSequencer;
 
 /**
- * A sequencer that processes the binary content of an MP3 audio file, extracts the metadata for the file, and then writes that
- * audio metadata to the repository.
+ * A sequencer that processes the binary content of an ESB Message, extracts the metadata for the message, and then writes this
+ * metadata to the repository.
  * <p>
  * This sequencer produces data that corresponds to the following structure:
  * <ul>
- * <li><strong>mp3:metadata</strong> node of type <code>mp3:metadata</code>
+ * <li><strong>esbMessage:metadata</strong> node of type <code>esbMessage:metadata</code>
  * <ul>
- * <li><strong>mp3:title</strong> - optional string property for the name of the audio file or recording</li>
- * <li><strong>mp3:author</strong> - optional string property for the author of the recording</li>
- * <li><strong>mp3:album</strong> - optional string property for the name of the album</li>
- * <li><strong>mp3:year</strong> - optional integer property for the year the recording as created</li>
- * <li><strong>mp3:comment</strong> - optional string property specifying a comment</li>
+ * <li><strong>esbMessage:to</strong> - optional property for the destination EPR of the message</li>
+ * <li><strong>esbMessage:from</strong> - optional property for the source EPR of the message</li>
+ * <li><strong>esbMessage:replyTo</strong> - optional property for the reply destination EPR</li>
+ * <li><strong>esbMessage:relatesTo</strong> - optional property for the relatesTo URI</li>
+ * <li><strong>esbMessage:action</strong> - optional property specifying the action URI</li>
+ * <li><strong>esbMessage:messageID</strong> - optional property specifying the messageID URI</li>
+ * <li><strong>esbMessage:body</strong> - optional node specifying the message body. It contains a set of properties
+ * representing Object contained in body. Properties names reflect object names used in message body</li>
+ * <li><strong>esbMessage:properties</strong> - optional node specifying the message properties. It contains a set of properties
+ * representing Object contained in message properties. Properties names reflect object names used in message properties</li>
+ * <li><strong>esbMessage:attachments</strong> - optional node specifying the message attachments. It contains a set of
+ * properties representing Object contained in message attachments. Properties names reflect object names used in message
+ * attachments</li>
+ * <li><strong>esbMessage:faultCode</strong> - optional property specifying the message fault code. As defined in ESB message
+ * it's an URI</li>
+ * <li><strong>esbMessage:faultReason</strong> - optional property containing a String describing the fault in a human readable
+ * form</li>
+ * <li><strong>esbMessage:faultCause</strong> - optional property specifying the Throwable Cause of the fault.</li>
  * </ul>
  * </li>
  * </ul>
@@ -50,20 +68,81 @@
 
     public static final String METADATA_NODE = "esbMessage:metadata";
     public static final String ESB_MESSAGE_PRIMARY_TYPE = "jcr:primaryType";
+    public static final String ESB_MESSAGE_TO = "esbMessage:to";
+    public static final String ESB_MESSAGE_FROM = "esbMessage:from";
+    public static final String ESB_MESSAGE_REPLY_TO = "esbMessage:replyTo";
+    public static final String ESB_MESSAGE_RELATES_TO = "esbMessage:relatesTo";
+    public static final String ESB_MESSAGE_ACTION = "esbMessage:action";
+    public static final String ESB_MESSAGE_MESSAGE_ID = "esbMessage:messageID";
+    public static final String ESB_MESSAGE_MESSAGE_TYPE = "esbMessage:messageType";
+    public static final String ESB_MESSAGE_BODY = "esbMessage:metadata/esbMessage:body";
+    public static final String ESB_MESSAGE_PROPERTIES = "esbMessage:metadata/esbMessage:properties";
+    public static final String ESB_MESSAGE_ATTACHMENTS = "esbMessage:metadata/esbMessage:attachments";
+    public static final String ESB_MESSAGE_FAULT_CODE = "esbMessage:faultCode";
+    public static final String ESB_MESSAGE_FAULT_REASON = "esbMessage:faultReason";
+    public static final String ESB_MESSAGE_FAULT_CAUSE = "esbMessage:faultCause";
 
+    public static final String ESB_MESSAGE_NAMESPACE = "esbMessage";
+
     public void sequence( InputStream stream,
                           SequencerOutput output,
                           ProgressMonitor progressMonitor ) {
-        ESBMessageMetaData metadata = ESBMessageMetaData.instance(stream);
 
+        progressMonitor.beginTask(20, ImageSequencerI18n.sequencerTaskName);
+        ESBMessageMetaData metadata = ESBMessageMetaData.instance(stream, progressMonitor.createSubtask(10));
+        if (progressMonitor.isCancelled()) return;
+
         if (metadata != null) {
-            // Place the image metadata into the output map ...
-            output.setProperty(METADATA_NODE, ESB_MESSAGE_PRIMARY_TYPE, "esbMessage:metadata");
-            // output.setProperty(METADATA_NODE, MP3_TITLE, metadata.getTitle());
-            // output.setProperty(METADATA_NODE, MP3_AUTHOR, metadata.getAuthor());
-            // output.setProperty(METADATA_NODE, MP3_ALBUM, metadata.getAlbum());
-            // output.setProperty(METADATA_NODE, MP3_YEAR, metadata.getYear());
-            // output.setProperty(METADATA_NODE, MP3_COMMENT, metadata.getComment());
+            NameFactory nameFactory = output.getFactories().getNameFactory();
+            PathFactory pathFactory = output.getFactories().getPathFactory();
+            Path metadataNode = pathFactory.create(METADATA_NODE);
+
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_PRIMARY_TYPE), "esbMessage:metadata");
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_TO), metadata.getTo());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_FROM), metadata.getFrom());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_REPLY_TO), metadata.getReplyTo());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_RELATES_TO), metadata.getRelatesTo());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_ACTION), metadata.getAction());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_MESSAGE_ID), metadata.getMessageID());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_MESSAGE_TYPE), metadata.getMessageType());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_FAULT_CODE), metadata.getFaultCode());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_FAULT_REASON), metadata.getFaultReason());
+            output.setProperty(metadataNode, nameFactory.create(ESB_MESSAGE_FAULT_CAUSE), metadata.getFaultCause());
+            progressMonitor.worked(1);
+            if (progressMonitor.isCancelled()) return;
+
+            ProgressMonitor subtask = progressMonitor.createSubtask(3);
+            subtask.beginTask(metadata.getBodyMap().entrySet().size(), ESBMessageSequencerI18n.sequencerTaskName);
+            Path bodyNode = pathFactory.create(metadataNode, nameFactory.create(ESB_MESSAGE_BODY));
+            for (Entry<String, Object> entry : metadata.getBodyMap().entrySet()) {
+                output.setProperty(bodyNode, nameFactory.create(ESB_MESSAGE_NAMESPACE, entry.getKey()), entry.getValue());
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return;
+            }
+            subtask.done();
+
+            subtask = progressMonitor.createSubtask(3);
+            subtask.beginTask(metadata.getPropertiesMap().entrySet().size(), ESBMessageSequencerI18n.sequencerTaskName);
+            Path propertiesNode = pathFactory.create(metadataNode, nameFactory.create(ESB_MESSAGE_PROPERTIES));
+            for (Entry<String, Object> entry : metadata.getPropertiesMap().entrySet()) {
+                output.setProperty(propertiesNode, nameFactory.create(ESB_MESSAGE_NAMESPACE, entry.getKey()), entry.getValue());
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return;
+            }
+            subtask.done();
+
+            subtask = progressMonitor.createSubtask(3);
+            subtask.beginTask(metadata.getAttachmentsMap().entrySet().size(), ESBMessageSequencerI18n.sequencerTaskName);
+            Path attachmentsNode = pathFactory.create(metadataNode, nameFactory.create(ESB_MESSAGE_ATTACHMENTS));
+            for (Entry<String, Object> entry : metadata.getAttachmentsMap().entrySet()) {
+                output.setProperty(attachmentsNode, nameFactory.create(ESB_MESSAGE_NAMESPACE, entry.getKey()), entry.getValue());
+                subtask.worked(1);
+                if (progressMonitor.isCancelled()) return;
+            }
+            subtask.done();
+
+            progressMonitor.done();
+
         }
     }
 

Added: branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencerI18n.java
===================================================================
--- branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencerI18n.java	                        (rev 0)
+++ branches/maeste/sequencers/dna-sequencer-esbMessage/src/main/java/org/jboss/dna/sequencer/esbMessage/ESBMessageSequencerI18n.java	2008-06-11 08:35:21 UTC (rev 264)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.dna.sequencer.esbMessage;
+
+import java.util.Locale;
+import java.util.Set;
+import org.jboss.dna.common.i18n.I18n;
+
+/**
+ * @author Stefano Maestri
+ */
+public final class ESBMessageSequencerI18n {
+
+    public static I18n sequencerTaskName;
+
+    static {
+        try {
+            I18n.initialize(ESBMessageSequencerI18n.class);
+        } catch (final Exception err) {
+            System.err.println(err);
+        }
+    }
+
+    public static Set<Locale> getLocalizationProblemLocales() {
+        return I18n.getLocalizationProblemLocales(ESBMessageSequencerI18n.class);
+    }
+
+    public static Set<String> getLocalizationProblems() {
+        return I18n.getLocalizationProblems(ESBMessageSequencerI18n.class);
+    }
+
+    public static Set<String> getLocalizationProblems( Locale locale ) {
+        return I18n.getLocalizationProblems(ESBMessageSequencerI18n.class, locale);
+    }
+}




More information about the dna-commits mailing list