Esempio n. 1
0
  public void validateBeanNames(BeanManagerImpl beanManager) {
    SetMultimap<String, Bean<?>> namedAccessibleBeans =
        Multimaps.newSetMultimap(
            new HashMap<String, Collection<Bean<?>>>(),
            new Supplier<Set<Bean<?>>>() {

              public Set<Bean<?>> get() {
                return new HashSet<Bean<?>>();
              }
            });
    for (Bean<?> bean : beanManager.getAccessibleBeans()) {
      if (bean.getName() != null) {
        namedAccessibleBeans.put(bean.getName(), bean);
      }
    }

    List<String> accessibleNamespaces = new ArrayList<String>();
    for (String namespace : beanManager.getAccessibleNamespaces()) {
      accessibleNamespaces.add(namespace);
    }

    for (String name : namedAccessibleBeans.keySet()) {
      Set<Bean<?>> resolvedBeans =
          beanManager
              .getBeanResolver()
              .resolve(
                  Beans.removeDisabledAndSpecializedBeans(
                      namedAccessibleBeans.get(name), beanManager));
      if (resolvedBeans.size() > 1) {
        throw new DeploymentException(AMBIGUOUS_EL_NAME, name, resolvedBeans);
      }
      if (accessibleNamespaces.contains(name)) {
        throw new DeploymentException(BEAN_NAME_IS_PREFIX, name);
      }
    }
  }