/* * Copyright (C) 2015 Red Hat, Inc. and/or its affiliates. * * 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 org.jboss.errai.ioc.client.container; import java.lang.annotation.Annotation; import java.util.Collection; /** * * @author Max Barkley <mbarkley@redhat.com> */ public class BeanManagerUtil { public static <T> IOCResolutionException ambiguousResolutionException(Class<T> type, final Collection<IOCBeanDef<T>> resolved, Annotation... qualifiers) { final StringBuilder builder = new StringBuilder(); builder.append("Multiple beans matched " + type.getName() + " with qualifiers " + qualifiersToString(qualifiers) + "\n") .append("Found:\n"); for (final IOCBeanDef<T> beanDef : resolved) { builder.append(" ") .append(beanDef.toString()) .append("\n"); } IOCResolutionException iocResolutionException = new IOCResolutionException(builder.toString()); return iocResolutionException; } public static <T> IOCResolutionException unsatisfiedResolutionException(Class<T> type, Annotation... qualifiers) { return new IOCResolutionException("No beans matched " + type.getName() + " with qualifiers " + qualifiersToString(qualifiers)); } public static String beanDeftoString(final FactoryHandle handle) { return "[type=" + handle.getActualType().getName() + ", qualifiers=" + handle.getQualifiers() + "]"; } private static String qualifiersToString(final Annotation[] qualifiers) { final StringBuilder builder = new StringBuilder().append("{ "); for (final Annotation qualifier : qualifiers) { builder.append(qualifier.annotationType().getName()) .append(", "); } builder.delete(builder.length() - ", ".length(), builder.length()); builder.append(" }"); return builder.toString(); } }