private synchronized Properties loadSkin()

in proposals/seade/UIService/org/apache/turbine/services/ui/TurbineUIService.java [245:296]


    private synchronized Properties loadSkin(String skinName)
    {
        Properties defaultSkinProperties = null;
        
        if (!StringUtils.equals(skinName, SKIN_PROPERTY_DEFAULT))
        {
            defaultSkinProperties = getSkinProperties(SKIN_PROPERTY_DEFAULT);
        }

        // The following line is okay even for default.
        Properties skinProperties = new Properties(defaultSkinProperties);
        
        try
        {
            log.debug("Loading selected skin from: " + skinsDirectory + "/" 
                    + skinName + "/" + SKIN_PROPS_FILE);
            FileInputStream is = new FileInputStream(
                    skinsDirectory + "/" + skinName + "/" + SKIN_PROPS_FILE);

            skinProperties.load(is);
        }
        catch (Exception e)
        {
            log.error("Cannot load skin: " + skinName, e);
            if (!StringUtils.equals(skinName, getWebappSkinName()) 
                    && !StringUtils.equals(skinName, SKIN_PROPERTY_DEFAULT))
            {
                log.error("Attempting to return the skin configured for " 
                        + "webapp instead of " + skinName);
                return getSkinProperties(getWebappSkinName());
            }
            else if (!StringUtils.equals(skinName, SKIN_PROPERTY_DEFAULT))
            {
                log.error("Return the default skin instead of " 
                        + skinName);
                return skinProperties; // Already contains the default skin.
            }
            else
            {
                log.error("No skins available - returning an empty Properties");
                return new Properties();
            }
        }
        
        // Replace in skins HashMap
        synchronized (skins)
        {
            skins.put(skinName, skinProperties);
        }
        
        return skinProperties;
    }