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
015 package org.apache.tapestry5.internal.services;
016
017 import org.apache.tapestry5.internal.structure.ComponentPageElement;
018 import org.apache.tapestry5.internal.structure.Page;
019 import org.apache.tapestry5.ioc.Location;
020 import org.apache.tapestry5.ioc.Messages;
021 import org.apache.tapestry5.ioc.Resource;
022 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
023 import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
024 import org.apache.tapestry5.ioc.services.ClassFabUtils;
025 import org.apache.tapestry5.runtime.Component;
026 import org.apache.tapestry5.runtime.RenderCommand;
027
028 import java.util.Arrays;
029 import java.util.Collection;
030 import java.util.List;
031
032 public 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 }