public T getAssembler()

in src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaBaseFactory.java [67:124]


    public T getAssembler(String packageName, String name)
    {
        T assembler = null;

        log.debug("Class Fragment is {}", name);

        if (StringUtils.isNotEmpty(name))
        {
            for (String p : packages)
            {
                StringBuilder sb = new StringBuilder();

                sb.append(p).append('.').append(packageName).append('.').append(name);
                String className = sb.toString();

                log.debug("Trying {}", className);

                try
                {
                    Class<T> servClass = classCache.get(className);
                    if (servClass == null)
                    {
                        servClass = (Class<T>) Class.forName(className);
                        Class<T> _servClass = classCache.putIfAbsent(className, servClass);
                        if (_servClass != null)
                        {
                            servClass = _servClass;
                        }
                    }
                    assembler = servClass.getDeclaredConstructor().newInstance();
                    break; // for()
                }
                catch (ClassNotFoundException cnfe)
                {
                    // Do this so we loop through all the packages.
                    log.debug("{}: Not found", className);
                }
                catch (NoClassDefFoundError ncdfe)
                {
                    // Do this so we loop through all the packages.
                    log.debug("{}: No Class Definition found", className);
                }
                // With ClassCastException, InstantiationException we hit big problems
                catch (ClassCastException | InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e)
                {
                    // This means trouble!
                    // Alternatively we can throw this exception so
                    // that it will appear on the client browser
                    log.error("Could not load {}", className, e);
                    break; // for()
                }
            }
        }

        log.debug("Returning: {}", assembler);

        return assembler;
    }