admin@glassfish.java.net

Applications vs SystemApplications

From: Lloyd Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Fri, 19 Sep 2008 11:19:05 -0700

I notice we have a DuckTyped getModules() for Applications, but not
SystemApplications.

Anyone know if we intend these two to have the same facilities?

Lloyd
---------------

@Configured
public interface SystemApplications extends ConfigBeanProxy,
Injectable {

     /**
      * Gets the value of the
lifecycleModuleOrJ2EeApplicationOrEjbModuleOrWebModuleOrConnectorModuleOrAppclientModuleOrMbeanOrExtensionModuleorApplication
  property.
      * Objects of the following type(s) are allowed in the list
      * {_at_link LifecycleModule }
      * {_at_link J2EeApplication }
      * {_at_link EjbModule }
      * {_at_link WebModule }
      * {_at_link ConnectorModule }
      * {_at_link AppclientModule }
      * {_at_link Mbean }
      * {_at_link ExtensionModule }
      * {_at_link Application }
      */
     @Element("*")
     public List<Module> getModules();

}

--------------

@Configured
public interface Applications extends ConfigBeanProxy, Injectable {

     /**
      * Gets the value of the
lifecycleModuleOrJ2EeApplicationOrEjbModuleOrWebModuleOrConnectorModuleOrAppclientModuleOrMbeanOrExtensionModuleorApplication
  property.
      * Objects of the following type(s) are allowed in the list
      * {_at_link LifecycleModule }
      * {_at_link J2eeApplication }
      * {_at_link EjbModule }
      * {_at_link WebModule }
      * {_at_link ConnectorModule }
      * {_at_link AppclientModule }
      * {_at_link Mbean }
      * {_at_link ExtensionModule }
      * {_at_link Application }
      */
     @Element("*")
     public List<Module> getModules();

     /**
      * Gets a subset of {_at_link #getModules()} that has the given type.
      */
     @DuckTyped
     <T> List<T> getModules(Class<T> type);

     @DuckTyped
     <T> T getModule(Class<T> type, String moduleID);

     public class Duck {
         public static <T> List<T> getModules(Applications apps,
Class<T> type) {
             List<T> modules = new ArrayList<T>();
             for (Object module : apps.getModules()) {
                 if (type.isInstance(module)) {
                     modules.add(type.cast(module));
                 }
             }
             return modules;
         }

         public static <T> T getModule(Applications apps, Class<T>
type, String moduleID) {
             if (moduleID == null) {
                 return null;
             }

             for (Module module : apps.getModules())
                 if (type.isInstance(module) &&
module.getName().equals(moduleID))
                     return type.cast(module);

             return null;

         }
     }
}



..............................................
Lloyd Chambers
lloyd.chambers_at_sun.com
GlassFish team, LSARC member