001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012package org.apache.tapestry5.http.internal; 013 014import javax.servlet.http.HttpServletRequest; 015 016import org.apache.tapestry5.commons.internal.util.TapestryException; 017import org.apache.tapestry5.commons.services.TypeCoercer; 018import org.apache.tapestry5.commons.util.CoercionNotFoundException; 019import org.apache.tapestry5.http.services.HttpRequestBodyConverter; 020 021final public class TypeCoercerHttpRequestBodyConverter implements HttpRequestBodyConverter 022{ 023 024 final private TypeCoercer typeCoercer; 025 026 public TypeCoercerHttpRequestBodyConverter(TypeCoercer typeCoercer) 027 { 028 super(); 029 this.typeCoercer = typeCoercer; 030 } 031 032 @Override 033 public <T> T convert(HttpServletRequest request, Class<T> type) 034 { 035 T value; 036 try 037 { 038 value = typeCoercer.coerce(request, type); 039 } catch (CoercionNotFoundException e) 040 { 041 throw new TapestryException( 042 String.format("Couldn't find a coercion from InputStream to %s " 043 + " since no %s converted it", type.getName(), HttpRequestBodyConverter.class.getSimpleName()) 044 , e); 045 } 046 return value; 047 } 048 049}