001// Copyright 2006, 2007, 2008, 2009, 2010, 2011 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.internal.services;
016
017import org.apache.tapestry5.internal.structure.ComponentPageElement;
018import org.apache.tapestry5.internal.structure.Page;
019import org.apache.tapestry5.ioc.Location;
020import org.apache.tapestry5.ioc.Messages;
021import org.apache.tapestry5.ioc.Resource;
022import org.apache.tapestry5.ioc.internal.util.InternalUtils;
023import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
024import org.apache.tapestry5.ioc.services.ClassFabUtils;
025import org.apache.tapestry5.runtime.Component;
026import org.apache.tapestry5.runtime.RenderCommand;
027
028import java.util.Arrays;
029import java.util.Collection;
030import java.util.List;
031
032public class ServicesMessages
033{
034    private static final Messages MESSAGES = MessagesImpl.forClass(ServicesMessages.class);
035
036    public static String markupWriterNoCurrentElement()
037    {
038        return MESSAGES.get("markup-writer-no-current-element");
039    }
040
041    public static String missingTemplateResource(Resource resource)
042    {
043        return MESSAGES.format("missing-template-resource", resource);
044    }
045
046    public static String contentInsideBodyNotAllowed(Location location)
047    {
048        return MESSAGES.format("content-inside-body-not-allowed", location);
049    }
050
051    public static String renderQueueError(RenderCommand command, Throwable cause)
052    {
053        return MESSAGES.format("render-queue-error", command, cause);
054    }
055
056    public static String contextIndexOutOfRange(String methodDescription)
057    {
058        return MESSAGES.format("context-index-out-of-range", methodDescription);
059    }
060
061    public static String pageNameUnresolved(String pageClassName)
062    {
063        return MESSAGES.format("page-name-unresolved", pageClassName);
064    }
065
066    public static String exceptionInMethodParameter(String methodDescription, int index, Throwable cause)
067    {
068        return MESSAGES.format("exception-in-method-parameter", methodDescription, index + 1, cause);
069    }
070
071    public static String componentEventIsAborted(String methodDescription)
072    {
073        return MESSAGES.format("component-event-is-aborted", methodDescription);
074    }
075
076    public static String componentInstanceIsNotAPage(Component result)
077    {
078        return MESSAGES.format("component-instance-is-not-a-page", result.getComponentResources().getCompleteId());
079    }
080
081    public static String failureReadingMessages(Resource url, Throwable cause)
082    {
083        return MESSAGES.format("failure-reading-messages", url, cause);
084    }
085
086    public static String unknownAssetPrefix(String path)
087    {
088        return MESSAGES.format("unknown-asset-prefix", path);
089    }
090
091    public static String assetDoesNotExist(Resource resource)
092    {
093        return MESSAGES.format("asset-does-not-exist", resource);
094    }
095
096    public static String wrongAssetDigest(Resource resource)
097    {
098        return MESSAGES.format("wrong-asset-digest", resource.getPath());
099    }
100
101    public static String unknownValidatorType(String validatorType, List<String> knownValidatorTypes)
102    {
103        return MESSAGES.format("unknown-validator-type", validatorType, InternalUtils.join(knownValidatorTypes));
104    }
105
106    public static String validatorSpecificationParseError(int cursor, String specification)
107    {
108        return MESSAGES.format("validator-specification-parse-error", specification.charAt(cursor), cursor + 1,
109                specification);
110    }
111
112    public static String mixinsInvalidWithoutIdOrType(String elementName)
113    {
114        return MESSAGES.format("mixins-invalid-without-id-or-type", elementName);
115    }
116
117    public static String undefinedTapestryAttribute(String elementName, String attributeName,
118                                                    String allowedAttributeName)
119    {
120        return MESSAGES.format("undefined-tapestry-attribute", elementName, attributeName, allowedAttributeName);
121    }
122
123    public static String parameterElementNameRequired()
124    {
125        return MESSAGES.get("parameter-element-name-required");
126    }
127
128    public static String missingApplicationStatePersistenceStrategy(String name, Collection<String> availableNames)
129    {
130        return MESSAGES.format("missing-application-state-persistence-strategy", name, InternalUtils
131                .joinSorted(availableNames));
132    }
133
134    public static String requestException(Throwable cause)
135    {
136        return MESSAGES.format("request-exception", cause);
137    }
138
139    public static String clientStateMustBeSerializable(Object newValue)
140    {
141        return MESSAGES.format("client-state-must-be-serializable", newValue);
142    }
143
144    public static String corruptClientState()
145    {
146        return MESSAGES.get("corrupt-client-state");
147    }
148
149    public static String unclosedAttributeExpression(String expression)
150    {
151        return MESSAGES.format("unclosed-attribute-expression", expression);
152    }
153
154    public static String noDisplayForDataType(String datatype)
155    {
156        return MESSAGES.format("no-display-for-data-type", datatype);
157    }
158
159    public static String noEditForDataType(String datatype)
160    {
161        return MESSAGES.format("no-edit-for-data-type", datatype);
162    }
163
164    public static String missingValidatorConstraint(String validatorType, Class type, String perFormMessageKey,
165                                                    String generalMessageKey)
166    {
167        return MESSAGES.format("missing-validator-constraint", validatorType, type.getName(), perFormMessageKey,
168                generalMessageKey);
169    }
170
171    public static String resourcesAccessForbidden(String URI)
172    {
173        return MESSAGES.format("resource-access-forbidden", URI);
174    }
175
176    public static String noMarkupFromPageRender(Page page)
177    {
178        return MESSAGES.format("no-markup-from-page-render", page.getName());
179    }
180
181    public static String baseClassInWrongPackage(String parentClassName, String className, String suggestedPackage)
182    {
183        return MESSAGES.format("base-class-in-wrong-package", parentClassName, className, suggestedPackage);
184    }
185
186    public static String invalidId(String messageKey, String idValue)
187    {
188        return MESSAGES.format(messageKey, idValue);
189    }
190
191    public static String noTranslatorForType(Class valueType, Collection<String> typeNames)
192    {
193        return MESSAGES.format("no-translator-for-type", ClassFabUtils.toJavaClassName(valueType), InternalUtils
194                .joinSorted(typeNames));
195    }
196
197    public static String eventNotHandled(ComponentPageElement element, String eventName)
198    {
199        return MESSAGES.format("event-not-handled", eventName, element.getCompleteId());
200    }
201
202    public static String documentMissingHTMLRoot(String rootElementName)
203    {
204        return MESSAGES.format("document-missing-html-root", rootElementName);
205    }
206
207    public static String parameterElementDoesNotAllowAttributes()
208    {
209        return MESSAGES.get("parameter-element-does-not-allow-attributes");
210    }
211
212    public static String invalidPathForLibraryNamespace(String URI)
213    {
214        return MESSAGES.format("invalid-path-for-library-namespace", URI);
215    }
216
217    public static String literalConduitNotUpdateable()
218    {
219        return MESSAGES.get("literal-conduit-not-updateable");
220    }
221
222    public static String markupWriterAttributeNameOrValueOmitted(String element, Object[] namesAndValues)
223    {
224        return MESSAGES.format("markup-writer-attribute-name-or-value-omitted", element, InternalUtils.join(Arrays
225                .asList(namesAndValues)));
226    }
227}