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 015package org.apache.tapestry5.services; 016 017import 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 */ 026public 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}