001// Copyright 2006, 2007 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.ioc.internal.services;
016
017import javassist.CtClass;
018import org.apache.tapestry5.ioc.Messages;
019import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
020import org.apache.tapestry5.ioc.services.ClassFabUtils;
021import org.apache.tapestry5.ioc.services.Coercion;
022import org.apache.tapestry5.ioc.services.MethodSignature;
023import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
024
025public class ServiceMessages
026{
027    private final static Messages MESSAGES = MessagesImpl.forClass(ServiceMessages.class);
028
029    private ServiceMessages()
030    {
031    }
032
033    public static String unableToAddMethod(MethodSignature signature, CtClass ctClass, Throwable cause)
034    {
035        return MESSAGES.format("unable-to-add-method", signature, ctClass.getName(), cause);
036    }
037
038    public static String unableToAddConstructor(CtClass ctClass, Throwable cause)
039    {
040        return MESSAGES.format("unable-to-add-constructor", ctClass.getName(), cause);
041    }
042
043    public static String unableToAddField(String fieldName, CtClass ctClass, Throwable cause)
044    {
045        return MESSAGES.format("unable-to-add-field", fieldName, ctClass.getName(), cause);
046    }
047
048    public static String unableToCreateClass(String className, Class superClass, Throwable cause)
049    {
050        return MESSAGES.format("unable-to-create-class", className, superClass.getName(), cause);
051    }
052
053    public static String unableToLookupClass(String className, Throwable cause)
054    {
055        return MESSAGES.format("unable-to-lookup-class", className, cause);
056    }
057
058    public static String unableToWriteClass(CtClass ctClass, Throwable cause)
059    {
060        return MESSAGES.format("unable-to-write-class", ctClass.getName(), cause);
061    }
062
063    public static String duplicateMethodInClass(MethodSignature ms, ClassFabImpl fab)
064    {
065        return MESSAGES.format("duplicate-method-in-class", ms, fab.getName());
066    }
067
068    public static String loggingInterceptor(String serviceId, Class serviceInterface)
069    {
070        return MESSAGES.format("logging-interceptor", serviceId, serviceInterface.getName());
071    }
072
073    public static String threadCleanupError(ThreadCleanupListener listener, Throwable cause)
074    {
075        return MESSAGES.format("thread-cleanup-error", listener, cause);
076    }
077
078    public static String noSuchProperty(Class clazz, String propertyName)
079    {
080        return MESSAGES.format("no-such-property", clazz.getName(), propertyName);
081    }
082
083    public static String readNotSupported(Object instance, String propertyName)
084    {
085        return MESSAGES.format("read-not-supported", instance.getClass().getName(), propertyName);
086    }
087
088    public static String writeNotSupported(Object instance, String propertyName)
089    {
090        return MESSAGES.format("write-not-supported", instance.getClass().getName(), propertyName);
091    }
092
093    public static String readFailure(String propertyName, Object instance, Throwable cause)
094    {
095        return MESSAGES.format("read-failure", propertyName, instance, cause);
096    }
097
098    public static String writeFailure(String propertyName, Object instance, Throwable cause)
099    {
100        return MESSAGES.format("write-failure", propertyName, instance, cause);
101    }
102
103    public static String propertyTypeMismatch(String propertyName, Class sourceClass, Class propertyType,
104            Class expectedType)
105    {
106        return MESSAGES.format("property-type-mismatch", propertyName, sourceClass.getName(), propertyType.getName(),
107                expectedType.getName());
108    }
109
110    public static String extraFilterMethod(MethodSignature sig, Class filterInterface, Class serviceInterface)
111    {
112        return MESSAGES.format("extra-filter-method", sig, filterInterface.getName(), serviceInterface.getName());
113    }
114
115    public static String unmatchedServiceMethod(MethodSignature sig, Class filterInterface)
116    {
117        return MESSAGES.format("unmatched-service-method", sig, filterInterface.getName());
118    }
119
120    public static String unknownObjectProvider(String prefix, String reference)
121    {
122        return MESSAGES.format("unknown-object-provider", prefix, reference);
123    }
124
125    public static String shutdownListenerError(Object listener, Throwable cause)
126    {
127        return MESSAGES.format("shutdown-listener-error", listener, cause);
128    }
129
130    public static String noCoercionFound(Class sourceType, Class targetType, String coercions)
131    {
132        return MESSAGES.format("no-coercion-found", sourceType.getName(), targetType.getName(), coercions);
133    }
134
135    public static String recursiveSymbol(String symbolName, String path)
136    {
137        return MESSAGES.format("recursive-symbol", symbolName, path);
138    }
139
140    public static String symbolUndefined(String symbolName)
141    {
142        return MESSAGES.format("symbol-undefined", symbolName);
143    }
144
145    public static String symbolUndefinedInPath(String symbolName, String path)
146    {
147        return MESSAGES.format("symbol-undefined-in-path", symbolName, path);
148    }
149
150    public static String missingSymbolCloseBrace(String input)
151    {
152        return MESSAGES.format("missing-symbol-close-brace", input);
153    }
154
155    public static String missingSymbolCloseBraceInPath(String input, String path)
156    {
157        return MESSAGES.format("missing-symbol-close-brace-in-path", input, path);
158    }
159
160    public static String failedCoercion(Object input, Class targetType, Coercion coercion, Throwable cause)
161    {
162        return MESSAGES.format("failed-coercion", String.valueOf(input), ClassFabUtils.toJavaClassName(targetType),
163                coercion, cause);
164    }
165
166    public static String registryShutdown(String serviceId)
167    {
168        return MESSAGES.format("registry-shutdown", serviceId);
169    }
170
171    public static String serviceBuildFailure(String serviceId, Throwable cause)
172    {
173        return MESSAGES.format("service-build-failure", serviceId, cause);
174    }
175
176    public static String startupFailure(Throwable cause)
177    {
178        return MESSAGES.format("startup-failure", cause);
179    }
180}