001// Copyright 2004, 2005 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.tapestry.services; 016 017/** 018 * Lightweight serialization used to encode values into strings that are stored in query parameters 019 * and hidden fields. 020 * 021 * @author Howard Lewis Ship 022 * @since 4.0 023 */ 024public interface DataSqueezer 025{ 026 /** 027 * Squeezes the data object into a String by locating an appropriate adaptor that can perform 028 * the conversion. data may be null. 029 */ 030 public String squeeze(Object data); 031 032 /** 033 * A convenience; invokes {@link #squeeze(Object)}for each element in the data array. If data 034 * is null, returns null. 035 */ 036 public String[] squeeze(Object[] data); 037 038 /** 039 * Unsqueezes the string. Note that in a special case, where the first character of the string 040 * is not a recognized prefix, it is assumed that the string is simply a string, and returned 041 * with no change. 042 */ 043 public Object unsqueeze(String string); 044 045 /** 046 * Convenience method for unsqueezing many strings (back into objects). 047 * <p> 048 * If strings is null, returns null. 049 */ 050 public Object[] unsqueeze(String[] strings); 051}