001 // Copyright 2007 Waterken Inc. under the terms of the MIT X license 002 // found at http://www.opensource.org/licenses/mit-license.html 003 package org.waterken.syntax; 004 005 import java.io.InputStream; 006 import java.lang.reflect.Type; 007 008 import org.joe_e.Powerless; 009 import org.joe_e.array.ConstArray; 010 011 /** 012 * An object deserializer. 013 */ 014 public interface 015 Deserializer extends Powerless { 016 017 /** 018 * Deserializes an object. 019 * @param content serialized content, will be closed 020 * @param connect reference importer 021 * @param base base URL 022 * @param code class loader 023 * @param type expected type of the referenced object 024 * @return deserialized object 025 * @throws Exception any exception 026 */ 027 Object deserialize(InputStream content, Importer connect, String base, 028 ClassLoader code, Type type) throws Exception; 029 030 /** 031 * Deserializes an argument list. 032 * @param content serialized content, will be closed 033 * @param connect reference importer 034 * @param base base URL 035 * @param code class loader 036 * @param parameters expected type of each argument 037 * @return deserialized tuple 038 * @throws Exception any exception 039 */ 040 ConstArray<?> deserializeTuple(InputStream content, Importer connect, 041 String base, ClassLoader code, 042 Type... parameters) throws Exception; 043 }