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