FileDocCategorySizeDatePackage
Descriptor.javaAPI DocGlassfish v2 API21154Fri May 04 22:31:20 BST 2007com.sun.enterprise.deployment

Descriptor

public class Descriptor extends DynamicAttributesDescriptor implements Serializable
Descriptor is the root class for all objects representing deployment information in J2EE. Descriptors notifiy listeners of state changes, and have a name, description, and icons.
author
Danny Coward

Fields Summary
public static final String
DESCRIPTOR_CHANGED
Notification String for a general descriptor change.
public static final String
NAME_CHANGED
public static final String
DESCRIPTION_CHANGED
public static final String
LARGE_ICON_CHANGED
public static final String
SMALL_ICON_CHANGED
private static boolean
boundsChecking
static flag to indicate descriptors should bounds check.
protected Vector
listeners
My Vector of NotificationListener objects.
private Map
displayNames
My display name indexed by language
private Map
descriptions
My descriptions indexed by language
private Map
largeIcons
icons map indexed by language
private Map
smallIcons
public String
docType
Constructors Summary
public Descriptor()
The default constructor. Constructs a descriptor with name, description and icons as empty Strings.

    
        
                       
      
	this.listeners = new Vector();
    
protected Descriptor(Descriptor other)
The copy constructor.

        if (other.displayNames!=null)
	this.displayNames = new HashMap(other.displayNames);
        if (other.descriptions!=null) 
            this.descriptions = new HashMap(other.descriptions);
        if (other.largeIcons!=null)
            this.largeIcons = new HashMap(other.largeIcons);
        if (other.smallIcons!=null)
            this.smallIcons = new HashMap(other.smallIcons);
    
public Descriptor(String name, String description)
Constructs a descriptor with given name, description.

param
name the name of the descriptor.
param
description the name of the descriptor.

	this();
	setLocalizedDisplayName(null, name);
	setLocalizedDescription(null, description);
    
Methods Summary
public voidaddDeploymentExtension(DeploymentExtensionDescriptor de)
Add a new deployment-extension for this descriptor

param
deployment-extension descriptor to add

        Vector extensions = (Vector) getExtraAttribute("deployment-extension");
        if (extensions==null) {
            extensions = new Vector();
            addExtraAttribute("deployment-extension", extensions);
        }
        extensions.add(de);
    
public voidaddNotificationListener(com.sun.enterprise.util.NotificationListener nl)
Register the given notification listener for change events.

param
nl the notification listener to register

	if ((nl != null) && !listeners.contains(nl)) { // avoid duplicate listeners
	    listeners.addElement(nl);
	}
    
public voidaddPrefixMapping(java.lang.String mapping, java.lang.String uri)
add a prefix mapping

        Map prefixMapping = getPrefixMapping();
        if (prefixMapping==null) {
            prefixMapping = new java.util.HashMap();                        
            addExtraAttribute("prefix-mapping", prefixMapping);
        }
        prefixMapping.put(mapping, uri);
    
public voidchanged(java.lang.String attribute)
Notify all my listeners that I have changed..

	// fine-grain attribute currently ignored
	// eventually, 'changed(String)' should replace 'changed()' everywhere.
	this.changed();
    
public voidchanged()
Notify all my listeners that I have changed..

	String attribute = "";
	NotificationEvent ne = new NotificationEvent(this, DESCRIPTOR_CHANGED, this, attribute);
	
	List listenersClone = this.getNotificationListeners();
	for (Iterator e = listenersClone.iterator(); e.hasNext();) {
	    NotificationListener nl = (NotificationListener)e.next();
	    nl.notification(ne);   
	}
    
public static java.lang.StringcreateUniqueFilenameAmongst(java.lang.String trialName, java.util.Vector otherNames)
Returns String based on the trial name that is guaramteed to be different from any of the strings in the vector of String names.

param
trialName the suggested name
param
otherNames The Vector of String objects none of which will be the same as the return
return
the unique String


	/* extract file.ext */
	int p = trialName.lastIndexOf(".");
	if (p < 0) {
	    return uniquifyString(trialName, otherNames, 0);
	}
	String ext  = trialName.substring(p);
	String file = trialName.substring(0, p);

	/* get list of filenames less extension */
	Vector nameList = new Vector();
	for (Enumeration e = otherNames.elements(); e.hasMoreElements();) {
	    String name = e.nextElement().toString();
	    if (name.endsWith(ext)) {
	  	nameList.add(name.substring(0, name.length() - ext.length()));
	    }
	}
	String unique = uniquifyString(file, nameList, 0);
	return unique + ext;

    
public static java.lang.StringcreateUniqueNameAmongst(java.lang.String trialName, java.util.Vector otherNames)
Returns String based on the trial name that is guaramteed to be different from any of the strings in the vector of String names.

param
trialName the suggested name
param
otherNames The Vector of String objects none of which will be the same as the return
return
the unique String

	return uniquifyString(trialName, otherNames, 0);
    
public static java.lang.StringcreateUniqueNameAmongstNamedDescriptors(java.lang.String trialName, java.util.Set descriptors)
Returns String based on the trial name that is guaramteed to be different from any of the strings returnsed by the getName() call in any of the Descriptor objects in the Set supplied.

param
trialName the suggested name
param
descriptors The Set of Descriptor objects to whose name attribute will not be the same as the return
return
the unique String

	Vector v = new Vector();
	for (Iterator itr = descriptors.iterator(); itr.hasNext();) {
	    Descriptor next = (Descriptor) itr.next();
	    v.addElement(next.getName());
	}
	return createUniqueNameAmongst(trialName, v);
    
private voiddisplayLocalizedMap(java.lang.StringBuffer sb, java.util.Map localizedMap)
helper method to display a localized map

        for (Iterator itr = localizedMap.keySet().iterator();itr.hasNext();) {
            String lang = (String) itr.next();
            sb.append("\n   lang[" + lang + "]  = " + localizedMap.get(lang));
        }
    
public voidfillDocType(java.io.InputStream in)

        try{
            BufferedReader inr = new BufferedReader(new InputStreamReader(in));
            String s = inr.readLine();
            while (s != null) {
                if (s.indexOf("DOCTYPE") > -1) {
                    docType = s;
                    in.close();
                    return;
                }   
                s = inr.readLine();
            }   
        }catch(Exception e){
        }
    
private java.lang.StringgetDefaultLanguage()

return
the default locale language

        return Locale.getDefault().getLanguage();
    
public java.util.IteratorgetDeploymentExtensions()

return
an iterator on the deployment-extension

        Vector extensions = (Vector) getExtraAttribute("deployment-extension");
        if (extensions!=null) {
            return extensions.iterator();
        } 
        return null;
    
public java.lang.StringgetDescription()
The description text of this descriptor as a String.

return
the description text of this descriptor

	return getLocalizedDescription(null);
    
public java.lang.StringgetDisplayName()

return
the display name

        return getName();
    
public java.lang.StringgetDocType()

    
      
        return docType;
    
public java.lang.StringgetLargeIconUri()
The large icon name of this descriptor as a String.

return
the large icon name of this descriptor

        return getLocalizedLargeIconUri(null);
    
public java.lang.StringgetLocalizedDescription(java.lang.String lang)

return
the localized description
param
the local language

        
        if (descriptions==null)
            return "";       
        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        String description = (String) descriptions.get(lang);
        if (description==null) {
            return "";
        }
        return description;
    
public java.util.MapgetLocalizedDescriptions()

return
a Map of localized description, where lang is the key

        return descriptions;
    
public java.lang.StringgetLocalizedDisplayName(java.lang.String language)

return
the localized display name for the passed language
param
the language

        
        if (displayNames==null) {
            return "";
        }
        
        String originalLanguage = language;        
        if (language==null) {
            language=Locale.getDefault().getLanguage();
        }
        
        String localizedName = (String) displayNames.get(language);
        if (localizedName!=null) {
            return localizedName;
        }

        // so far, no luck, it is possible that this
        // environment property was transfered through jndi 
        // between machines with different locales, if I have
        // at least one value, and no language was specified,
        // let's return it.
        if (originalLanguage==null && displayNames.size()>0) {
            return (String) displayNames.values().iterator().next();
        }
        // all other cases return empty strings
        return "";
    
public java.util.MapgetLocalizedDisplayNames()

return
the localized display name indexed by language

        return displayNames;
    
public java.lang.StringgetLocalizedLargeIconUri(java.lang.String lang)

return
the large icon uri for a language
param
the language or null for the current locale

        if (largeIcons==null) {
            return null;
        }
        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        return (String) largeIcons.get(lang);
    
public java.util.MapgetLocalizedLargeIconUris()

return
a map of localized large icons uris indexed by language

        return largeIcons;
    
public java.lang.StringgetLocalizedSmallIconUri(java.lang.String lang)

return
the small icon uri for the passed language

        if (smallIcons==null) {
            return null;
        }
        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        return (String) smallIcons.get(lang);
    
public java.util.MapgetLocalizedSmallIconUris()

return
the map of small icons indexed by language

        return smallIcons;
    
public java.lang.StringgetName()
The name of this descriptor as a String.

return
the name of this descriptor

	return getLocalizedDisplayName(null);
    
public java.util.ListgetNotificationListeners()
return current notification listeners

	Vector listenersClone = null;
	synchronized (listeners) {
	    listenersClone = (Vector)this.listeners.clone();
	}
	return listenersClone;
    
public java.util.MapgetPrefixMapping()

return
the map of prefix to namepace uri

        return (Map) getExtraAttribute("prefix-mapping");
    
public java.lang.StringgetSmallIconUri()
The small icon name of this descriptor as a String.

return
the small icon name of this descriptor

        return getLocalizedSmallIconUri(null);
    
public static booleanisBoundsChecking()
Answers whether the object model is bounds checking.

return
true for boudsn checking, false else.

	return boundsChecking;
    
public voidprint(java.lang.StringBuffer toStringBuffer)
A String representation of this object.

        StringBuffer sb = toStringBuffer;
        
        if (displayNames!=null) {
            sb.append("Display Names:");
            displayLocalizedMap(sb, displayNames);
        }
        if (descriptions!=null) {
            sb.append("\n Descriptions");
            displayLocalizedMap(sb, descriptions);
        }
        if (smallIcons!=null) {
            sb.append("\n SmallIcons");
            displayLocalizedMap(sb, smallIcons);
        }
        if (largeIcons!=null) {
            sb.append("\n LargeIcons");
            displayLocalizedMap(sb, largeIcons);
        }
        Map prefix = getPrefixMapping();
        if (prefix!=null) 
            sb.append("\n Prefix Mapping = ").append(prefix);        
        Iterator itr = getDeploymentExtensions();
        if (itr!=null && itr.hasNext()) {
            do {
                sb.append("\n Deployment Extension : ");
                ((Descriptor)(itr.next())).print(sb);
            } while (itr.hasNext());
        }
	sb.append("\n");
        super.print(sb);
    
private static java.lang.StringrecursiveStripIntegerEndingFrom(java.lang.String s)
Returns the largest substring of the given string that does not have an integer at the end.

	if (s.length() > 1) {
	    String shorterByOne = s.substring(0, s.length() - 1);
	    
	    String lastBit = s.substring(s.length() - 1, s.length());
	    try {
		Integer.parseInt(lastBit);
		return recursiveStripIntegerEndingFrom(shorterByOne);
	    } catch (NumberFormatException nfe) {
		return s;
	    }
	
	}
	return s;
    
public voidremoveNotificationListener(com.sun.enterprise.util.NotificationListener nl)
Deregister the given notification listener for change events.

param
nl the notification listener to deregister

	listeners.removeElement(nl);
    
public static voidsetBoundsChecking(boolean b)
Sets a global flag to enable or disable boudsn checking of deployment information

param
b true for bounds checking on, false else.

	boundsChecking = b;
    
public voidsetDescription(java.lang.String description)
Sets the description text of this descriptor.

param
description the new description text of the descriptor.

        setLocalizedDescription(null, description);
    
public voidsetDisplayName(java.lang.String name)
sets the display name for this bundle

        setName(name);
    
public voidsetLargeIconUri(java.lang.String largeIconUri)
Sets the large icon name of this descriptor as a String.

param
largeIconUri the large icon name of this descriptor

        setLocalizedLargeIconUri(null, largeIconUri);
    
public voidsetLocalizedDescription(java.lang.String lang, java.lang.String description)
Add a localized description for this descriptor

param
the local identifier (null if using default locale)
param
the localized string

        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        if (descriptions==null) {
            descriptions = new HashMap();
        }
        descriptions.put(lang, description);
        changed(DESCRIPTION_CHANGED);
    
public voidsetLocalizedDisplayName(java.lang.String lang, java.lang.String displayName)
Add a localized display name for this descriptor

param
the local identifier (null if using default locale)
param
the localized string

        
        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        if (displayNames==null) {
            displayNames = new HashMap();
        }
        displayNames.put(lang, displayName);
        changed(NAME_CHANGED);
    
public voidsetLocalizedLargeIconUri(java.lang.String lang, java.lang.String uri)
Sets the large icon uri for a particular language

param
the language identifier
param
the large icon uri

        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        if (largeIcons==null) {
            largeIcons = new HashMap();
        }
        largeIcons.put(lang, uri);
        changed(LARGE_ICON_CHANGED);
    
public voidsetLocalizedSmallIconUri(java.lang.String lang, java.lang.String uri)
set the localized small icon uri for the passed language

param
the language
param
the uri for the small icon

        if (lang==null) {
            lang = Locale.getDefault().getLanguage();
        }
        if (smallIcons==null) {
            smallIcons = new HashMap();
        }
        smallIcons.put(lang, uri);
        changed(LARGE_ICON_CHANGED);
    
public voidsetName(java.lang.String name)
Sets the name of this descriptor.

param
name the new name of the descriptor.

	setLocalizedDisplayName(null, name);
    
public voidsetSmallIconUri(java.lang.String smallIconUri)
Sets the small icon name of this descriptor as a String.

param
smallIconUri the small icon name of this descriptor

        setLocalizedSmallIconUri(null, smallIconUri);
    
private static java.lang.StringstripIntegerEndingFrom(java.lang.String s)
Returns the largest substring of the given string that does not have an integer at the end.

	return recursiveStripIntegerEndingFrom(s);
    
private static java.lang.StringuniquifyString(java.lang.String trialName, java.util.Vector v, int index)
Returns String based on the trial name that is guaramteed to be different from any of the strings in the vector of String names.

	for(Enumeration e = v.elements(); e.hasMoreElements();) {
	    String next = (String) e.nextElement();
	    if (next.equals(trialName)) {
		index++;
		return uniquifyString(stripIntegerEndingFrom(trialName) + index, v, index); 
	    }
	}
	return trialName;
    
public voidvisit(com.sun.enterprise.deployment.util.DescriptorVisitor aVisitor)
Visitor API implementation, all descriptors must be visitable

param
the visitor implementation

        aVisitor.accept(this);