View Javadoc

1   /*
2    * $Id: ContentTypeHandler.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts2.rest.handler;
23  
24  import java.io.*;
25  
26  import com.opensymphony.xwork2.ActionInvocation;
27  
28  /***
29   * Handles transferring content to and from objects for a specific content type
30   */
31  public interface ContentTypeHandler {
32      
33      /***
34       * Populates an object using data from the input stream
35       * @param in The input stream, usually the body of the request
36       * @param target The target, usually the action class
37       */
38      void toObject(Reader in, Object target) throws IOException;
39      
40      /***
41       * Writes content to the stream
42       * 
43       * @param obj The object to write to the stream, usually the Action class
44       * @param resultCode The original result code
45       * @param stream The output stream, usually the response
46       * @return The new result code
47       * @throws IOException If unable to write to the output stream
48       */
49      String fromObject(Object obj, String resultCode, Writer stream) throws IOException;
50      
51      /***
52       * Gets the content type for this handler
53       * 
54       * @return The mime type
55       */
56      String getContentType();
57      
58      /***
59       * Gets the extension this handler supports
60       * 
61       * @return The extension
62       */
63      String getExtension();
64  }