001 // Copyright 2009 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry5.services; 016 017 import java.io.ObjectOutputStream; 018 019 020 /** 021 * Allows binary object data to be encoded into a string. 022 * 023 * @see ClientDataEncoder#createSink() 024 * @since 5.1.0.1 025 */ 026 public interface ClientDataSink 027 { 028 /** 029 * Provides the output stream to which data can be written. 030 * 031 * @return the stream 032 */ 033 ObjectOutputStream getObjectOutputStream(); 034 035 /** 036 * Encoded the data written to the stream as a string that can be provided to the client. Implicitly closes the 037 * stream (if it has not already been closed). 038 * 039 * @return the encoded data as a string 040 * @see org.apache.tapestry5.services.ClientDataEncoder#decodeClientData(String) 041 */ 042 String getClientData(); 043 044 /** 045 * Returns the client data encoded (for inclusion in a URL) via {@link org.apache.tapestry5.services.URLEncoder}. 046 * 047 * @since 5.1.0.4 048 */ 049 String getEncodedClientData(); 050 }