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);
+ }
+}