Index: components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/PortletDefinitionBean.java
===================================================================
--- components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/PortletDefinitionBean.java	(revision 917475)
+++ components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/PortletDefinitionBean.java	(working copy)
@@ -16,6 +16,7 @@
  */
 package org.apache.jetspeed.services.beans;
 
+import java.io.File;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -41,215 +42,244 @@
 @XmlRootElement(name="definition")
 public class PortletDefinitionBean implements Serializable
 {
-    private static final long serialVersionUID = 1L;
-    
-    private String applicationName;
-    private String portletName;
-    private String uniqueName;
-    private String portletIcon;
-    private PortletInfoBean portletInfoBean;
-    private Collection<DisplayNameBean> displayNameBeans;
-    private Collection<DescriptionBean> descriptionBeans;
-    private Collection<SupportsBean> supportsBeans;
-    private Collection<LanguageBean> languageBeans;
-    private GenericMetadataBean metadataBean;
-    private Collection<ContainerRuntimeOptionBean> containerRuntimeOptionBeans;
-    private Collection<InitParamBean> initParamBeans;
-    
-    public PortletDefinitionBean()
-    {
-        
-    }
-    
-    public PortletDefinitionBean(final PortletDefinition portletDefinition)
-    {
-        applicationName = portletDefinition.getApplication().getName();
-        portletName = portletDefinition.getPortletName();
-        uniqueName = portletDefinition.getUniqueName();
-        portletInfoBean = new PortletInfoBean(portletDefinition.getPortletInfo());
-        
-        ArrayList<DisplayNameBean> displayNameBeanList = new ArrayList<DisplayNameBean>();
-        for (DisplayName displayName : portletDefinition.getDisplayNames())
-        {
-            displayNameBeanList.add(new DisplayNameBean(displayName));
-        }
-        displayNameBeans = displayNameBeanList;
-        
-        ArrayList<DescriptionBean> descriptionBeanList = new ArrayList<DescriptionBean>();
-        for (Description description : portletDefinition.getDescriptions())
-        {
-            descriptionBeanList.add(new DescriptionBean(description));
-        }
-        descriptionBeans = descriptionBeanList;
-        
-        ArrayList<SupportsBean> supportsBeanList = new ArrayList<SupportsBean>();
-        for (Supports supports : portletDefinition.getSupports())
-        {
-            supportsBeanList.add(new SupportsBean(supports));
-        }
-        supportsBeans = supportsBeanList;
-        
-        ArrayList<LanguageBean> languageBeanList = new ArrayList<LanguageBean>();
-        for (Language language : portletDefinition.getLanguages())
-        {
-            languageBeanList.add(new LanguageBean(language));
-        }
-        languageBeans = languageBeanList;
-        
-        metadataBean = new GenericMetadataBean(portletDefinition.getMetadata());
-        
-        ArrayList<ContainerRuntimeOptionBean> containerRuntimeOptionBeanList = new ArrayList<ContainerRuntimeOptionBean>();
-        for (ContainerRuntimeOption containerRuntimeOption : portletDefinition.getContainerRuntimeOptions())
-        {
-            containerRuntimeOptionBeanList.add(new ContainerRuntimeOptionBean(containerRuntimeOption));
-        }
-        containerRuntimeOptionBeans = containerRuntimeOptionBeanList;
-        
-        ArrayList<InitParamBean> initParamBeanList = new ArrayList<InitParamBean>();
-        for (InitParam initParam : portletDefinition.getInitParams())
-        {
-            initParamBeanList.add(new InitParamBean(initParam));
-            
-            if ("portlet-icon".equals(initParam.getParamName()))
-            {
-                portletIcon = initParam.getParamValue();
-            }
-        }
-        initParamBeans = initParamBeanList;
-    }
+	private static final long serialVersionUID = 1L;
+
+	private String applicationName;
+	private String applicationContextPath;
+
+	private String portletName;
+	private String uniqueName;
+	private String portletIcon;
+	private String portletIconPath;
+	private PortletInfoBean portletInfoBean;
+	private Collection<DisplayNameBean> displayNameBeans;
+	private Collection<DescriptionBean> descriptionBeans;
+	private Collection<SupportsBean> supportsBeans;
+	private Collection<LanguageBean> languageBeans;
+	private GenericMetadataBean metadataBean;
+	private Collection<ContainerRuntimeOptionBean> containerRuntimeOptionBeans;
+	private Collection<InitParamBean> initParamBeans;
+
+	public PortletDefinitionBean()
+	{
+
+	}
+
+	public PortletDefinitionBean(final PortletDefinition portletDefinition)
+	{
+		applicationName = portletDefinition.getApplication().getName();
+		applicationContextPath = portletDefinition.getApplication().getContextPath();
+		portletName = portletDefinition.getPortletName();
+		uniqueName = portletDefinition.getUniqueName();
+		portletInfoBean = new PortletInfoBean(portletDefinition.getPortletInfo());
+
+		ArrayList<DisplayNameBean> displayNameBeanList = new ArrayList<DisplayNameBean>();
+		for (DisplayName displayName : portletDefinition.getDisplayNames())
+		{
+			displayNameBeanList.add(new DisplayNameBean(displayName));
+		}
+		displayNameBeans = displayNameBeanList;
+
+		ArrayList<DescriptionBean> descriptionBeanList = new ArrayList<DescriptionBean>();
+		for (Description description : portletDefinition.getDescriptions())
+		{
+			descriptionBeanList.add(new DescriptionBean(description));
+		}
+		descriptionBeans = descriptionBeanList;
+
+		ArrayList<SupportsBean> supportsBeanList = new ArrayList<SupportsBean>();
+		for (Supports supports : portletDefinition.getSupports())
+		{
+			supportsBeanList.add(new SupportsBean(supports));
+		}
+		supportsBeans = supportsBeanList;
+
+		ArrayList<LanguageBean> languageBeanList = new ArrayList<LanguageBean>();
+		for (Language language : portletDefinition.getLanguages())
+		{
+			languageBeanList.add(new LanguageBean(language));
+		}
+		languageBeans = languageBeanList;
+
+		metadataBean = new GenericMetadataBean(portletDefinition.getMetadata());
+
+		ArrayList<ContainerRuntimeOptionBean> containerRuntimeOptionBeanList = new ArrayList<ContainerRuntimeOptionBean>();
+		for (ContainerRuntimeOption containerRuntimeOption : portletDefinition.getContainerRuntimeOptions())
+		{
+			containerRuntimeOptionBeanList.add(new ContainerRuntimeOptionBean(containerRuntimeOption));
+		}
+		containerRuntimeOptionBeans = containerRuntimeOptionBeanList;
+
+		ArrayList<InitParamBean> initParamBeanList = new ArrayList<InitParamBean>();
+		for (InitParam initParam : portletDefinition.getInitParams())
+		{
+			initParamBeanList.add(new InitParamBean(initParam));
+
+			if ("portlet-icon".equals(initParam.getParamName()))
+			{
+				portletIcon = initParam.getParamValue();
+				// Check if file exist in main context (Portal) or application context
+				File iconFile=null;
+				// Portal context
+				iconFile = new File(applicationContextPath + "/images/portlets/" + portletIcon);
+				// How to check if file exists? Need application context absolute path
+//				if(iconFile.exists())
+//				{
+//					portletIconPath = iconFile.getPath();
+//				}
+//				else
+//					portletIconPath = new String();
+				portletIconPath = iconFile.getPath();
+			}
+		}
+		initParamBeans = initParamBeanList;
+	}
+
+	public String getApplicationName()
+	{
+		return applicationName;
+	}
+
+	public void setApplicationName(String applicationName)
+	{
+		this.applicationName = applicationName;
+	}
+
+	public String getPortletName()
+	{
+		return portletName;
+	}
 
-    public String getApplicationName()
-    {
-        return applicationName;
-    }
+	public void setPortletName(String portletName)
+	{
+		this.portletName = portletName;
+	}
 
-    public void setApplicationName(String applicationName)
-    {
-        this.applicationName = applicationName;
-    }
+	public String getPortletIcon()
+	{
+		return portletIcon;
+	}
 
-    public String getPortletName()
-    {
-        return portletName;
-    }
+	public void setPortletIcon(String portletIcon)
+	{
+		this.portletIcon = portletIcon;
+	}
 
-    public void setPortletName(String portletName)
-    {
-        this.portletName = portletName;
-    }
+	public String getUniqueName()
+	{
+		return uniqueName;
+	}
 
-    public String getPortletIcon()
-    {
-        return portletIcon;
-    }
+	public void setUniqueName(String uniqueName)
+	{
+		this.uniqueName = uniqueName;
+	}
 
-    public void setPortletIcon(String portletIcon)
-    {
-        this.portletIcon = portletIcon;
-    }
+	@XmlElement(name="portletInfo")
+	public PortletInfoBean getPortletInfoBean()
+	{
+		return portletInfoBean;
+	}
 
-    public String getUniqueName()
-    {
-        return uniqueName;
-    }
+	public void setPortletInfoBean(PortletInfoBean portletInfoBean)
+	{
+		this.portletInfoBean = portletInfoBean;
+	}
 
-    public void setUniqueName(String uniqueName)
-    {
-        this.uniqueName = uniqueName;
-    }
-    
-    @XmlElement(name="portletInfo")
-    public PortletInfoBean getPortletInfoBean()
-    {
-        return portletInfoBean;
-    }
+	@XmlElementWrapper(name="displayNames")
+	@XmlElements(@XmlElement(name="displayName"))
+	public Collection<DisplayNameBean> getDisplayNameBeans()
+	{
+		return displayNameBeans;
+	}
 
-    public void setPortletInfoBean(PortletInfoBean portletInfoBean)
-    {
-        this.portletInfoBean = portletInfoBean;
-    }
+	public void setDisplayNameBeans(Collection<DisplayNameBean> displayNameBeans)
+	{
+		this.displayNameBeans = displayNameBeans;
+	}
 
-    @XmlElementWrapper(name="displayNames")
-    @XmlElements(@XmlElement(name="displayName"))
-    public Collection<DisplayNameBean> getDisplayNameBeans()
-    {
-        return displayNameBeans;
-    }
+	@XmlElementWrapper(name="descriptions")
+	@XmlElements(@XmlElement(name="description"))
+	public Collection<DescriptionBean> getDescriptionBeans()
+	{
+		return descriptionBeans;
+	}
 
-    public void setDisplayNameBeans(Collection<DisplayNameBean> displayNameBeans)
-    {
-        this.displayNameBeans = displayNameBeans;
-    }
+	public void setDescriptionBeans(Collection<DescriptionBean> descriptionBeans)
+	{
+		this.descriptionBeans = descriptionBeans;
+	}
 
-    @XmlElementWrapper(name="descriptions")
-    @XmlElements(@XmlElement(name="description"))
-    public Collection<DescriptionBean> getDescriptionBeans()
-    {
-        return descriptionBeans;
-    }
+	@XmlElementWrapper(name="supports")
+	@XmlElements(@XmlElement(name="support"))
+	public Collection<SupportsBean> getSupportsBeans()
+	{
+		return supportsBeans;
+	}
 
-    public void setDescriptionBeans(Collection<DescriptionBean> descriptionBeans)
-    {
-        this.descriptionBeans = descriptionBeans;
-    }
+	public void setSupportsBeans(Collection<SupportsBean> supportsBeans)
+	{
+		this.supportsBeans = supportsBeans;
+	}
 
-    @XmlElementWrapper(name="supports")
-    @XmlElements(@XmlElement(name="support"))
-    public Collection<SupportsBean> getSupportsBeans()
-    {
-        return supportsBeans;
-    }
+	@XmlElementWrapper(name="languages")
+	@XmlElements(@XmlElement(name="language"))
+	public Collection<LanguageBean> getLanguageBeans()
+	{
+		return languageBeans;
+	}
 
-    public void setSupportsBeans(Collection<SupportsBean> supportsBeans)
-    {
-        this.supportsBeans = supportsBeans;
-    }
+	public void setLanguageBeans(Collection<LanguageBean> languageBeans)
+	{
+		this.languageBeans = languageBeans;
+	}
 
-    @XmlElementWrapper(name="languages")
-    @XmlElements(@XmlElement(name="language"))
-    public Collection<LanguageBean> getLanguageBeans()
-    {
-        return languageBeans;
-    }
+	@XmlElement(name="metadata")
+	public GenericMetadataBean getMetadataBean()
+	{
+		return metadataBean;
+	}
 
-    public void setLanguageBeans(Collection<LanguageBean> languageBeans)
-    {
-        this.languageBeans = languageBeans;
-    }
-    
-    @XmlElement(name="metadata")
-    public GenericMetadataBean getMetadataBean()
-    {
-        return metadataBean;
-    }
-    
-    public void setMetadataBean(GenericMetadataBean metadataBean)
-    {
-        this.metadataBean = metadataBean;
-    }
-    
-    @XmlElementWrapper(name="containerRuntimeOptions")
-    @XmlElements(@XmlElement(name="containerRuntimeOption"))
-    public Collection<ContainerRuntimeOptionBean> getContainerRuntimeOptionBeans()
-    {
-        return containerRuntimeOptionBeans;
-    }
+	public void setMetadataBean(GenericMetadataBean metadataBean)
+	{
+		this.metadataBean = metadataBean;
+	}
 
-    public void setContainerRuntimeOptionBeans(Collection<ContainerRuntimeOptionBean> containerRuntimeOptionBeans)
-    {
-        this.containerRuntimeOptionBeans = containerRuntimeOptionBeans;
-    }
-    
-    @XmlElementWrapper(name="initParams")
-    @XmlElements(@XmlElement(name="initParam"))
-    public Collection<InitParamBean> getInitParamBeans()
-    {
-        return initParamBeans;
-    }
+	@XmlElementWrapper(name="containerRuntimeOptions")
+	@XmlElements(@XmlElement(name="containerRuntimeOption"))
+	public Collection<ContainerRuntimeOptionBean> getContainerRuntimeOptionBeans()
+	{
+		return containerRuntimeOptionBeans;
+	}
 
-    public void setInitParamBeans(Collection<InitParamBean> initParamBeans)
-    {
-        this.initParamBeans = initParamBeans;
-    }
-    
+	public void setContainerRuntimeOptionBeans(Collection<ContainerRuntimeOptionBean> containerRuntimeOptionBeans)
+	{
+		this.containerRuntimeOptionBeans = containerRuntimeOptionBeans;
+	}
+
+	@XmlElementWrapper(name="initParams")
+	@XmlElements(@XmlElement(name="initParam"))
+	public Collection<InitParamBean> getInitParamBeans()
+	{
+		return initParamBeans;
+	}
+
+	public void setInitParamBeans(Collection<InitParamBean> initParamBeans)
+	{
+		this.initParamBeans = initParamBeans;
+	}
+	public String getApplicationContextPath() {
+		return applicationContextPath;
+	}
+
+	public void setApplicationContextPath(String applicationContextPath) {
+		this.applicationContextPath = applicationContextPath;
+	}
+	public String getPortletIconPath() {
+		return portletIconPath;
+	}
+
+	public void setPortletIconPath(String portletIconPath) {
+		this.portletIconPath = portletIconPath;
+	}
 }
