FileDocCategorySizeDatePackage
RuntimeDescriptorFactory.javaAPI DocGlassfish v2 API9313Fri May 04 22:31:42 BST 2007com.sun.enterprise.deployment.node.runtime

RuntimeDescriptorFactory

public class RuntimeDescriptorFactory extends Object
This class is responsible for instanciating runtime Descriptor classes
author
Jerome Dochez
version

Fields Summary
static Map
descriptorClasses
Constructors Summary
protected RuntimeDescriptorFactory()
This is a factory object no need for DescriptorFactory instance

    
Methods Summary
public static java.lang.ObjectgetDescriptor(java.lang.String xmlPath)

return
a new instance of a registered descriptor class for the supplied XPath

        
        
        try {
            Class c = getDescriptorClass(xmlPath);
	    if (c!=null) {
                return c.newInstance();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
        return null;
    
public static java.lang.ClassgetDescriptorClass(java.lang.String xmlPath)

return
the descriptor tag for a particular XPath

        String s = xmlPath;        
        do {
            if (DOLUtils.getDefaultLogger().isLoggable(Level.FINER)) {            
                DOLUtils.getDefaultLogger().finer("looking for " + xmlPath + " in " + descriptorClasses);
            }
            if (descriptorClasses.containsKey(xmlPath)) {
                return (Class) descriptorClasses.get(xmlPath);            
            }
            if (xmlPath.indexOf('/")!=-1) {
                xmlPath = xmlPath.substring(xmlPath.indexOf('/")+1);
            } else {
                xmlPath=null;
            }            
        } while (xmlPath!=null);

	if(DOLUtils.getDefaultLogger().isLoggable(Level.FINE)) {
            DOLUtils.getDefaultLogger().fine("No descriptor registered for " + s);
	}
        return null;
    
private static voidinitMapping()

        descriptorClasses = new HashMap();    
	
	// WEB
        register(new XMLElement(RuntimeTagNames.PROPERTY), WebProperty.class);
	register(new XMLElement(RuntimeTagNames.COOKIE_PROPERTIES), CookieProperties.class);
	register(new XMLElement(RuntimeTagNames.LOCALE_CHARSET_MAP), LocaleCharsetMap.class);
	register(new XMLElement(RuntimeTagNames.LOCALE_CHARSET_INFO), LocaleCharsetInfo.class);
	register(new XMLElement(RuntimeTagNames.MANAGER_PROPERTIES), ManagerProperties.class);
	register(new XMLElement(RuntimeTagNames.SERVLET), Servlet.class);
	register(new XMLElement(RuntimeTagNames.SESSION_CONFIG), SessionConfig.class);	
	register(new XMLElement(RuntimeTagNames.SESSION_MANAGER), SessionManager.class);
	register(new XMLElement(RuntimeTagNames.JSP_CONFIG), JspConfig.class);
	register(new XMLElement(RuntimeTagNames.CACHE_MAPPING), CacheMapping.class);
	register(new XMLElement(RuntimeTagNames.CACHE_HELPER), CacheHelper.class);
	register(new XMLElement(RuntimeTagNames.CACHE), Cache.class);
	register(new XMLElement(RuntimeTagNames.CLASS_LOADER), ClassLoader.class);
	register(new XMLElement(RuntimeTagNames.STORE_PROPERTIES), StoreProperties.class);	
	register(new XMLElement(RuntimeTagNames.SESSION_PROPERTIES), SessionProperties.class);
	register(new XMLElement(RuntimeTagNames.DEFAULT_HELPER), DefaultHelper.class);
	register(new XMLElement(RuntimeTagNames.EJB_REF), EjbRef.class);
        register(new XMLElement(RuntimeTagNames.RESOURCE_REF), ResourceRef.class);
        register(new XMLElement(RuntimeTagNames.RESOURCE_ENV_REF), ResourceEnvRef.class);        
        register(new XMLElement(RuntimeTagNames.DEFAULT_RESOURCE_PRINCIPAL), DefaultResourcePrincipal.class);
        register(new XMLElement(RuntimeTagNames.CONSTRAINT_FIELD), ConstraintField.class);
        
        // EJB
        register(new XMLElement(RuntimeTagNames.PM_DESCRIPTOR), IASPersistenceManagerDescriptor.class);
        register(new XMLElement(RuntimeTagNames.PM_INUSE), PersistenceManagerInUse.class);
        
	// connector related
	register(new XMLElement(RuntimeTagNames.PRINCIPAL), Principal.class);
	register(new XMLElement(RuntimeTagNames.BACKEND_PRINCIPAL), Principal.class);
	register(new XMLElement(RuntimeTagNames.MAP_ELEMENT), MapElement.class);
	register(new XMLElement(RuntimeTagNames.ROLE_MAP), RoleMap.class);
	register(new XMLElement(RuntimeTagNames.RESOURCE_ADAPTER), ResourceAdapter.class);	

        //common
        register(new XMLElement(RuntimeTagNames.PRINCIPAL_NAME), PrincipalNameDescriptor.class);
        register(new XMLElement(RuntimeTagNames.SECURITY_ROLE_MAPPING), SecurityRoleMapping.class);
     
public static voidregister(com.sun.enterprise.deployment.node.XMLElement xmlPath, java.lang.Class clazz)
register a new descriptor class handling a particular XPATH in the DTD.

param
xmlPath absolute or relative XPath
param
clazz the descriptor class to use

        if (DOLUtils.getDefaultLogger().isLoggable(Level.FINE)) {        
            DOLUtils.getDefaultLogger().fine("Register " + clazz + " to handle " + xmlPath.getQName());
        }
	descriptorClasses.put(xmlPath.getQName(), clazz);