blob: 1379596e970dede02254fd801502eefced364932 [file] [log] [blame]
/*
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.web.bindery.requestfactory.apt;
import com.google.web.bindery.requestfactory.shared.JsonRpcProxy;
import com.google.web.bindery.requestfactory.shared.JsonRpcService;
import com.google.web.bindery.requestfactory.shared.ProxyFor;
import com.google.web.bindery.requestfactory.shared.ProxyForName;
import com.google.web.bindery.requestfactory.shared.Service;
import com.google.web.bindery.requestfactory.shared.ServiceName;
/**
* Contains string-formatting methods to produce error messages. This class
* exists to avoid the need to duplicate error messages in test code. All method
* parameters in this class accept {@code Object} so that the production code
* can pass {@code javax.lang.model} types and the test code can pass Strings.
*/
class Messages {
/*
* Note to maintainers: When new messages are added to this class, the
* RfValidatorTest.testErrorsAndWarnings() method should be updated to test
* the new message.
*/
public static String contextMissingDomainType(Object domainTypeName) {
return String.format("Cannot fully validate context since domain type %s is not available.\n"
+ "You must run the ValidationTool as part of your server build process.", domainTypeName);
}
public static String contextMustBeAnnotated(Object requestContextName) {
return String.format("The type %s must be annotated with %s, %s, or %s", requestContextName,
Service.class.getSimpleName(), ServiceName.class.getSimpleName(), JsonRpcService.class
.getSimpleName());
}
public static String contextRequiredReturnTypes(Object requestName, Object instanceRequestName) {
return String.format("The return type must be a %s or %s", requestName, instanceRequestName);
}
public static String deobfuscatorMissingContext(Object contextName) {
return String.format("Could not load domain mapping for context %s.\n"
+ "Check that both the shared interfaces and server domain types are on the classpath.",
contextName);
}
public static String deobfuscatorMissingProxy(Object proxyName) {
return String.format("Could not load domain mapping for proxy %s.\n"
+ "Check that both the shared interfaces and server domain types are on the classpath.",
proxyName);
}
public static String domainFindNotStatic(Object domainTypeName) {
return String.format("The domain object's find%s() method is not static", domainTypeName);
}
public static String domainGetIdStatic() {
return "The domain type's getId() method must not be static";
}
public static String domainGetVersionStatic() {
return "The domain type's getVersion() method must not be static";
}
public static String domainMethodWrongModifier(boolean expectStatic, Object domainMethodName) {
return String.format("Found %s domain method %s when %s method required", expectStatic
? "instance" : "static", domainMethodName, expectStatic ? "static" : "instance");
}
public static String domainMissingFind(Object domainType, Object simpleName,
Object getIdReturnType, Object checkedTypeName) {
return String.format("The domain type %s has no %s find%s(%s) method. "
+ "Attempting to send a %s to the server will result in a server error.", domainType,
simpleName, simpleName, getIdReturnType, checkedTypeName);
}
public static String domainMissingMethod(Object description) {
return String.format("Could not find domain method similar to %s", description);
}
public static String domainNoDefaultConstructor(Object domainName, Object proxyName,
Object requestContextName) {
return String.format("The domain type %s has no default constructor."
+ " Calling %s.create(%s.class) will cause a server error.", domainName,
requestContextName, proxyName);
}
public static String domainNoGetId(Object domainType) {
return String.format("Domain type %s does not have a getId() method", domainType);
}
public static String domainNoGetVersion(Object domainType) {
return String.format("Domain type %s does not have a getVersion() method", domainType);
}
public static String factoryMustBeAssignable(Object assignableTo) {
return String.format("The return type of this method must return a %s", assignableTo);
}
public static String factoryMustReturnInterface(Object returnType) {
return String.format("The return type %s must be an interface", returnType);
}
public static String factoryNoMethodParameters() {
return "This method must have no parameters";
}
public static String methodNoDomainPeer(Object proxyTypeName, boolean isParameter) {
return String.format("Cannot validate this method because the domain mapping for "
+ " %s type (%s) could not be resolved to a domain type", isParameter ? "a parameter of"
: "the return", proxyTypeName);
}
public static String noSuchType(String binaryTypeName) {
return String.format("Could not find root type %s", binaryTypeName);
}
public static String proxyMissingDomainType(Object missingDomainName) {
return String.format("Cannot fully validate proxy since type %s is not available",
missingDomainName);
}
public static String proxyMustBeAnnotated(Object typeName) {
return String.format("The proxy type %s must be annotated with %s, %s, or %s", typeName,
ProxyFor.class.getSimpleName(), ProxyForName.class.getSimpleName(), JsonRpcProxy.class
.getSimpleName());
}
public static String proxyOnlyGettersSetters() {
return "Only getters and setters allowed";
}
public static String rawType() {
return "A raw type may not be used here";
}
public static String redundantAnnotation(Object annotationName) {
return String.format("Redundant annotation: %s", annotationName);
}
public static String untransportableType(Object returnType) {
return String.format("The type %s cannot be used here", returnType);
}
public static String warnSuffix() {
return "\n\nAdd @SuppressWarnings(\"requestfactory\") to dismiss.";
}
private Messages() {
}
}