01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.servicemix.components.util;
18:
19: import java.io.IOException;
20: import java.io.InputStream;
21: import java.io.OutputStream;
22:
23: import javax.jbi.JBIException;
24: import javax.jbi.messaging.MessageExchange;
25: import javax.jbi.messaging.MessagingException;
26: import javax.jbi.messaging.NormalizedMessage;
27:
28: /**
29: * A pluggable strategy for turning a file or URL input source into
30: * a normalized message.
31: *
32: * @version $Revision: 564374 $
33: */
34: public interface FileMarshaler {
35:
36: /**
37: * Converts the file stream to a normalized message.
38: *
39: * @param exchange the message exchange
40: * @param message the message to populate
41: * @param in the input stream
42: * @param path the name of the file, URI or URL
43: */
44: void readMessage(MessageExchange exchange,
45: NormalizedMessage message, InputStream in, String path)
46: throws IOException, JBIException;
47:
48: /**
49: * Creates a output file name for the given exchange when reading an inbound
50: * message.
51: *
52: * @param exchange the inbound message exchange
53: * @param message the inbound message
54: * @return the file name or null if a file name could not be found or calculated
55: */
56: String getOutputName(MessageExchange exchange,
57: NormalizedMessage message) throws MessagingException;
58:
59: /**
60: * Writes the inbound message to the destination stream of the given name
61: *
62: * @param exchange the inbound message exchange
63: * @param message the inbound message
64: * @param out the output stream to write to
65: * @param path
66: */
67: void writeMessage(MessageExchange exchange,
68: NormalizedMessage message, OutputStream out, String path)
69: throws IOException, JBIException;
70: }
|