You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by lh...@apache.org on 2009/04/20 23:38:59 UTC
svn commit: r766887 - in /servicemix/utils/trunk/src:
main/java/org/apache/servicemix/components/util/
test/java/org/apache/servicemix/components/util/
Author: lhein
Date: Mon Apr 20 21:38:58 2009
New Revision: 766887
URL: http://svn.apache.org/viewvc?rev=766887&view=rev
Log:
applied patch (see SMXCOMP-55) extending the file marshaler interface and default impl.
Modified:
servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/DefaultFileMarshaler.java
servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/FileMarshaler.java
servicemix/utils/trunk/src/test/java/org/apache/servicemix/components/util/DefaultFileMarshalerTest.java
Modified: servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/DefaultFileMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/DefaultFileMarshaler.java?rev=766887&r1=766886&r2=766887&view=diff
==============================================================================
--- servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/DefaultFileMarshaler.java (original)
+++ servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/DefaultFileMarshaler.java Mon Apr 20 21:38:58 2009
@@ -47,13 +47,16 @@
public class DefaultFileMarshaler extends MarshalerSupport implements FileMarshaler {
public static final String FILE_NAME_PROPERTY = "org.apache.servicemix.file.name";
+ public static final String TEMP_FILE_NAME_PROPERTY = "org.apache.servicemix.file.name.temp";
public static final String FILE_PATH_PROPERTY = "org.apache.servicemix.file.path";
public static final String FILE_CONTENT = "org.apache.servicemix.file.content";
protected static final PropertyExpression FILE_NAME_EXPRESSION = new PropertyExpression(FILE_NAME_PROPERTY);
+ protected static final PropertyExpression TEMP_FILE_NAME_EXPRESSION = new PropertyExpression(TEMP_FILE_NAME_PROPERTY);
protected static final PropertyExpression FILE_CONTENT_EXPRESSION = new PropertyExpression(FILE_CONTENT);
private Expression fileName = FILE_NAME_EXPRESSION;
+ private Expression tempFileName = TEMP_FILE_NAME_EXPRESSION;
private Expression content = FILE_CONTENT_EXPRESSION;
private String encoding;
@@ -72,6 +75,12 @@
return asString(fileName.evaluate(exchange, message));
}
+ public String getTempOutputName(MessageExchange exchange,
+ NormalizedMessage message) throws MessagingException {
+ Object retVal = tempFileName.evaluate(exchange, message);
+ return retVal == null ? null : asString(retVal);
+ }
+
public void writeMessage(MessageExchange exchange, NormalizedMessage message,
OutputStream out, String path) throws IOException, JBIException {
try {
@@ -153,5 +162,4 @@
throw new MessagingException(e);
}
}
-
}
Modified: servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/FileMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/FileMarshaler.java?rev=766887&r1=766886&r2=766887&view=diff
==============================================================================
--- servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/FileMarshaler.java (original)
+++ servicemix/utils/trunk/src/main/java/org/apache/servicemix/components/util/FileMarshaler.java Mon Apr 20 21:38:58 2009
@@ -54,6 +54,17 @@
String getOutputName(MessageExchange exchange, NormalizedMessage message) throws MessagingException;
/**
+ * creates a temporary file name for the given exchange when reading an inbound
+ * message. This name is a (hopefully) unique name used for doing a first writing.
+ * It will be renamed to the real output name after successfully finished transmission.
+ *
+ * @param exchange the inbound message exchange
+ * @param message the inbound message
+ * @return the file name or null if a file name could not be found or calculated
+ */
+ String getTempOutputName(MessageExchange exchange, NormalizedMessage message) throws MessagingException;
+
+ /**
* Writes the inbound message to the destination stream of the given name
*
* @param exchange the inbound message exchange
Modified: servicemix/utils/trunk/src/test/java/org/apache/servicemix/components/util/DefaultFileMarshalerTest.java
URL: http://svn.apache.org/viewvc/servicemix/utils/trunk/src/test/java/org/apache/servicemix/components/util/DefaultFileMarshalerTest.java?rev=766887&r1=766886&r2=766887&view=diff
==============================================================================
--- servicemix/utils/trunk/src/test/java/org/apache/servicemix/components/util/DefaultFileMarshalerTest.java (original)
+++ servicemix/utils/trunk/src/test/java/org/apache/servicemix/components/util/DefaultFileMarshalerTest.java Mon Apr 20 21:38:58 2009
@@ -88,4 +88,28 @@
return exchange;
}
+ public void testTempFileNameFromNmsg() throws Exception {
+ String tmp = "tmp_filename.ext_123";
+ MessageExchange exchange = createMockExchange();
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ exchange.getMessage("in").setProperty(DefaultFileMarshaler.TEMP_FILE_NAME_PROPERTY, tmp);
+ String tempName = marshaler.getTempOutputName(exchange, exchange.getMessage("in"));
+ assertEquals("The temp file name was not extracted correctly", tmp, tempName);
+ }
+
+ public void testTempFileNameFromExchange() throws Exception {
+ String tmp = "tmp_filename.ext_123";
+ MessageExchange exchange = createMockExchange();
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ exchange.setProperty(DefaultFileMarshaler.TEMP_FILE_NAME_PROPERTY, tmp);
+ String tempName = marshaler.getTempOutputName(exchange, exchange.getMessage("in"));
+ assertEquals("The temp file name was not extracted correctly", tmp, tempName);
+ }
+
+ public void testTempFileNameNull() throws Exception {
+ MessageExchange exchange = createMockExchange();
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ String tempName = marshaler.getTempOutputName(exchange, exchange.getMessage("in"));
+ assertNull("The temp file name was not null", tempName);
+ }
}