Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 
 package org.jboss.as.weld.deployment;
 
 import java.util.Map;
 import java.util.Set;
 
 
Abstract implementation of org.jboss.weld.bootstrap.spi.Deployment.

Thread safety: This class is thread safe, and does not require a happens before action between construction and usage

Author(s):
Stuart Douglas
 
 public class WeldDeployment implements Deployment {
 
     public static final String ADDITIONAL_CLASSES_BDA_SUFFIX = ".additionalClasses";
     public static final String BOOTSTRAP_CLASSLOADER_BDA_ID = "bootstrapBDA" + ;
 
 
     private final Set<Metadata<Extension>> extensions;
 
     private final ServiceRegistry serviceRegistry;

    
The top level module
 
     private final Module module;

    
All ModuleClassLoaders in the deployment
 
     private final Set<ClassLoadersubDeploymentClassLoaders;

    
Maps class names to bean archives. The spec does not allow for the same class to be deployed in multiple bean archives
 
 
 
     public WeldDeployment(Set<BeanDeploymentArchiveImplbeanDeploymentArchivesCollection<Metadata<Extension>> extensions,
             Module moduleSet<ClassLoadersubDeploymentClassLoaders) {
         this. = new HashSet<ClassLoader>(subDeploymentClassLoaders);
         this. = new HashSet<BeanDeploymentArchiveImpl>(beanDeploymentArchives);
         this. = new HashSet<Metadata<Extension>>(extensions);
         this. = new SimpleServiceRegistry();
         this. = module;
 
         // add static services
         this..add(ProxyServices.classnew ProxyServicesImpl(module));
         this..add(ResourceLoader.classnew WeldModuleResourceLoader(module));
 
        // set up the additional bean archives accessibility rules
        // and map class names to bean deployment archives
        for (BeanDeploymentArchiveImpl bda : beanDeploymentArchives) {
            for (String className : bda.getBeanClasses()) {
                .put(classNamebda);
            }
        }
    }

    
org.jboss.as.weld.deployment.processors.WeldDeploymentProcessor assembles a basic accessibility graph based on the deployment structure. Here, we complete the graph by examining classloader visibility. This allows additional accessibility edges caused e.g. by the Class-Path declaration in the manifest file, to be recognized.

Parameters:
beanDeploymentArchives
    private void calculateAccessibilityGraph(Iterable<BeanDeploymentArchiveImplbeanDeploymentArchives) {
        for (BeanDeploymentArchiveImpl from : beanDeploymentArchives) {
            for (BeanDeploymentArchiveImpl target : beanDeploymentArchives) {
                if (from.isAccessible(target)) {
                    from.addBeanDeploymentArchive(target);
                }
            }
        }
    }

    
        return Collections.unmodifiableSet(new HashSet<BeanDeploymentArchive>());
    }

    
        return Collections.unmodifiableSet();
    }

    
    public ServiceRegistry getServices() {
        return ;
    }

    
    public synchronized BeanDeploymentArchive loadBeanDeploymentArchive(Class<?> beanClass) {
        if (.containsKey(beanClass.getName())) {
            return .get(beanClass.getName());
        }
        /*
         * We haven't found this class in a bean archive so apparently it was added by an extension and the class itself does
         * not come from a BDA. Before we create a new BDA, let's try to find an existing BDA that uses the same classloader
         * (and thus has the required accessibility to other BDAs)
         */
            return .get(beanClass.getClassLoader());
        }
        /*
         * No, there is no BDA for the class' classloader yet. Let's create one.
         */
        return createAndRegisterAdditionalBeanDeploymentArchive(beanClass);
    }
        Module module = Module.forClass(beanClass);
        String id = null;
        if (module == null) {
            id = ;
        } else {
            id = module.getIdentifier() + ;
        }
        BeanDeploymentArchiveImpl newBda = new BeanDeploymentArchiveImpl(Collections.singleton(beanClass.getName()),
                .moduleidfalse);
        newBda.addBeanClass(beanClass);
        newBda.getServices().addAll(.entrySet());
        // handle BDAs visible from the new BDA
        for (BeanDeploymentArchiveImpl bda : ) {
            if (newBda.isAccessible(bda)) {
                newBda.addBeanDeploymentArchive(bda);
            }
        }
        // handle visibility of the new BDA from other BDAs
        for (BeanDeploymentArchiveImpl bda : ) {
            if (bda.isAccessible(newBda)) {
                bda.addBeanDeploymentArchive(newBda);
            }
        }
        .put(beanClass.getName(), newBda);
        .add(newBda);
        return newBda;
    }
    public Module getModule() {
        return ;
    }
        return Collections.unmodifiableSet();
    }
    public synchronized <T extends Servicevoid addWeldService(Class<T> type, T service) {
        .add(typeservice);
            bda.getServices().add(typeservice);
        }
    }
New to GrepCode? Check out our FAQ X