📄 errormessages.java
字号:
/** * Copyright (C) 2006 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.inject;import com.google.inject.util.StackTraceElements;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Member;import java.lang.reflect.Method;import java.util.Arrays;import java.util.Collection;import java.util.List;/** * Error message templates. * * @author crazybob@google.com (Bob Lee) */class ErrorMessages { private static final String MISSING_BINDING = "Binding to %s not found. No bindings to that" + " type were found."; private static final String MISSING_BINDING_BUT_OTHERS_EXIST = "Binding to %s not found. Annotations on other" + " bindings to that type include: %s"; static void handleMissingBinding(ErrorHandler errorHandler, Member member, Key<?> key, List<String> otherNames) { if (otherNames.isEmpty()) { errorHandler.handle(StackTraceElements.forMember(member), MISSING_BINDING, key); } else { errorHandler.handle(StackTraceElements.forMember(member), MISSING_BINDING_BUT_OTHERS_EXIST, key, otherNames); } } static final String SUBTYPE_NOT_PROVIDED = "%s doesn't provide instances of %s."; static final String NOT_A_SUBTYPE = "%s doesn't extend %s."; static final String RECURSIVE_IMPLEMENTATION_TYPE = "@DefaultImplementation" + " points to the same class it annotates."; static final String RECURSIVE_PROVIDER_TYPE = "@DefaultProvider" + " points to the same class it annotates."; static final String ERROR_INJECTING_MEMBERS = "An error occurred" + " while injecting members of %s. Error message: %s"; static final String ERROR_INJECTING_MEMBERS_SEE_LOG = "An error of type %s" + " occurred while injecting members of %s. See log for details. Error" + " message: %s"; static final String EXCEPTION_REPORTED_BY_MODULE = "An exception was" + " caught and reported. Message: %s"; static final String EXCEPTION_REPORTED_BY_MODULE_SEE_LOG = "An exception" + " was caught and reported. See log for details. Message: %s"; static final String MISSING_BINDING_ANNOTATION = "Please annotate with" + " @BindingAnnotation. Bound at %s."; static final String MISSING_RUNTIME_RETENTION = "Please annotate with" + " @Retention(RUNTIME). Bound at %s."; static final String MISSING_SCOPE_ANNOTATION = "Please annotate with" + " @ScopeAnnotation."; static final String OPTIONAL_CONSTRUCTOR = "@Inject(optional=true) is" + " not allowed on constructors."; static final String CONSTANT_CONVERSION_ERROR = "Error converting String" + " constant bound at %s to %s: %s"; static final String CANNOT_BIND_TO_GUICE_TYPE = "Binding to core guice" + " framework type is not allowed: %s."; static final String SCOPE_NOT_FOUND = "No scope is bound to %s."; static final String SINGLE_INSTANCE_AND_SCOPE = "Setting the scope is not" + " permitted when binding to a single instance."; static final String CONSTRUCTOR_RULES = "Classes must have either one (and" + " only one) constructor annotated with @Inject or a zero-argument" + " constructor."; static final String MISSING_CONSTRUCTOR = "Could not find a suitable" + " constructor in %s. " + CONSTRUCTOR_RULES; static final String TOO_MANY_CONSTRUCTORS = "Found more than one constructor" + " annotated with @Inject. " + CONSTRUCTOR_RULES; static final String DUPLICATE_SCOPES = "Scope %s is already bound to %s." + " Cannot bind %s."; static final String MISSING_CONSTANT_VALUE = "Missing constant value. Please" + " call to(...)."; static final String CANNOT_INJECT_ABSTRACT_TYPE = "Injecting into abstract types is not supported. Please use a concrete" + " type instead of %s."; static final String ANNOTATION_ALREADY_SPECIFIED = "More than one annotation is specified for this binding."; static final String IMPLEMENTATION_ALREADY_SET = "Implementation is set more" + " than once."; static final String SCOPE_ALREADY_SET = "Scope is set more than once."; static final String DUPLICATE_ANNOTATIONS = "Found more than one annotation" + " annotated with @BindingAnnotation: %s and %s"; static final String DUPLICATE_SCOPE_ANNOTATIONS = "More than one scope" + " annotation was found: %s and %s"; static final String CONSTANT_VALUE_ALREADY_SET = "Constant value is set more" + " than once."; static final String RECURSIVE_BINDING = "Binding points to itself."; static final String BINDING_ALREADY_SET = "A binding to %s was already" + " configured at %s."; static final String PRELOAD_NOT_ALLOWED = "Preloading is only supported for" + " singleton-scoped bindings."; static final String EXCEPTION_WHILE_CREATING = "Error while locating" + " instance%n bound to %s%n for member at %s"; static final String NULL_PROVIDED = "Null value returned by custom provider" + " bound at %s"; static String getRootMessage(Throwable t) { Throwable cause = t.getCause(); return cause == null ? t.toString() : getRootMessage(cause); } static Object convert(Object o) { for (Converter<?> converter : converters) { if (converter.appliesTo(o)) { return converter.convert(o); } } return o; } @SuppressWarnings("unchecked") static final Collection<Converter<?>> converters = Arrays.asList( new Converter<Method>(Method.class) { public String toString(Method m) { return "method " + m.getDeclaringClass().getName() + "." + m.getName() + "()"; } }, new Converter<Constructor>(Constructor.class) { public String toString(Constructor c) { return "constructor " + c.getDeclaringClass().getName() + "()"; } }, new Converter<Field>(Field.class) { public String toString(Field f) { return "field " + f.getDeclaringClass().getName() + "." + f.getName(); } }, new Converter<Class>(Class.class) { public String toString(Class c) { return c.getName(); } }, new Converter<Key>(Key.class) { public String toString(Key k) { return k.hasAnnotationType() ? k.getTypeLiteral() + " annotated with " + k.getAnnotationName() : k.getTypeLiteral().toString(); } } ); static abstract class Converter<T> { final Class<T> type; Converter(Class<T> type) { this.type = type; } boolean appliesTo(Object o) { return type.isAssignableFrom(o.getClass()); } String convert(Object o) { return toString(type.cast(o)); } abstract String toString(T t); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -