1 /********************************************************************** 2 * SerializeAdapter.java 3 * created on 08.08.2004 by netseeker 4 * $Source: /cvsroot/ejoe/EJOE/src/de/netseeker/ejoe/adapter/SerializeAdapter.java,v $ 5 * $Date: 2006/11/05 16:33:38 $ 6 * $Revision: 1.15 $ 7 * 8 * ==================================================================== 9 * 10 * Copyright 2005-2006 netseeker aka Michael Manske 11 * 12 * Licensed under the Apache License, Version 2.0 (the "License"); 13 * you may not use this file except in compliance with the License. 14 * You may obtain a copy of the License at 15 * 16 * http://www.apache.org/licenses/LICENSE-2.0 17 * 18 * Unless required by applicable law or agreed to in writing, software 19 * distributed under the License is distributed on an "AS IS" BASIS, 20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 * See the License for the specific language governing permissions and 22 * limitations under the License. 23 * ==================================================================== 24 * 25 * This file is part of the ejoe framework. 26 * For more information on the author, please see 27 * <http://www.manskes.de/>. 28 * 29 *********************************************************************/ 30 31 package de.netseeker.ejoe.adapter; 32 33 import java.io.InputStream; 34 import java.io.OutputStream; 35 import java.io.Serializable; 36 37 /*** 38 * Interface defining all methods required by a (de)serialize adapter. 39 * 40 * @author netseeker aka Michael Manske 41 * @since 0.3.0 42 */ 43 public interface SerializeAdapter extends Serializable 44 { 45 /*** 46 * Deserializes an object out of an given InputStream 47 * 48 * @param in the input stream to use for deserialization 49 * @return a deserialized object instance 50 * @throws Exception 51 */ 52 public Object read( InputStream in ) throws Exception; 53 54 /*** 55 * Serializes an object into an output stream 56 * 57 * @param obj object that should get serialized 58 * @param out the outputstream into which the object should serialized 59 * @throws Exception 60 */ 61 public void write( Object obj, OutputStream out ) throws Exception; 62 63 /*** 64 * Signals a change of the ContextClassLoader of the current thread to the adapter. This method will be called when 65 * the EJOE client is started with support for remote classloading. 66 * 67 * @param classLoader 68 */ 69 public void handleClassLoaderChange( ClassLoader classLoader ); 70 71 /*** 72 * Signals if this adapter has problems with EJOE's UncloseableInputStreams and requires a really closed Stream 73 * (which EJOE prevents to ensure that an adapter can not close the underlying socket unintentionally). If the 74 * adapter requires closed streams, EJOE will append a custom EOF signature at the end of the stream and return -1 75 * in Inputstream#read when EOF is reached. 76 * 77 * @return true if the adapter requires EOF to detect the end of the stream 78 * @see <a href="http://forum.java.sun.com/thread.jspa?threadID=535062&messageID=2585304">XMLEncoder/Decoder over sockets</a> 79 */ 80 public boolean requiresCustomEOFHandling(); 81 82 /*** 83 * Indicates that the adapter uses a StreamBuffer mechanism and doesn't require a buffered input stream 84 * 85 * @return true if the adapter doesn't require a buffered inputstream, otherwise false 86 */ 87 public boolean isSelfBuffered(); 88 89 /*** 90 * @return A recognized mime type 91 * @see <a href="http://www.iana.org/assignments/media-types/">mime type list of IANA</a> 92 */ 93 public String getContentType(); 94 }