Author: chris.laprun(a)jboss.com
Date: 2008-10-01 19:28:22 -0400 (Wed, 01 Oct 2008)
New Revision: 12018
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java
Log:
- JBPORTAL-2183: Properly remember the listeners when reloading a producer configuration.
Something is still not quite right with how the producer deals with configuration
changes.
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -35,6 +35,7 @@
import javax.xml.namespace.QName;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
@@ -227,5 +228,15 @@
{
//To change body of implemented methods use File | Settings | File Templates.
}
+
+ public Set<RegistrationPropertyChangeListener> getPropertyChangeListeners()
+ {
+ return null; //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public Set<RegistrationPolicyChangeListener> getPolicyChangeListeners()
+ {
+ return null; //To change body of implemented methods use File | Settings | File
Templates.
+ }
}
}
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -73,7 +73,7 @@
}
public ServiceDescription getServiceDescription(GetServiceDescription gs)
- throws InvalidRegistrationFault, OperationFailedFault, RemoteException
+ throws InvalidRegistrationFault, OperationFailedFault, RemoteException
{
WSRPExceptionFactory.throwOperationFailedFaultIfValueIsMissing(gs,
"GetServiceDescription");
@@ -81,8 +81,7 @@
boolean registrationValid = producer.isRegistrationValid(registration);
ProducerRegistrationRequirements requirements =
producer.getProducerRegistrationRequirements();
-
- PortletDescription[] offeredPortlets = null;
+ PortletDescription[] offeredPortlets;
ServiceDescription serviceDescription =
WSRPTypeFactory.createServiceDescription(requirements.isRegistrationRequired());
serviceDescription.setRequiresInitCookie(BEA_8_CONSUMER_FIX);
serviceDescription.setLocales(producer.getSupportedLocales());
@@ -162,7 +161,7 @@
catch (PortletInvokerException e)
{
throw
WSRPExceptionFactory.throwSOAPFaultException(WSRPExceptionFactory.OPERATION_FAILED,
- "Could not retrieve portlet '" + portletContext +
"'", e);
+ "Could not retrieve portlet '" + portletContext +
"'", e);
}
}
@@ -200,11 +199,11 @@
{
String mimeType = (String)mimeTypes.next();
markupTypes[i] = new MarkupType(
- mimeType,
- getModeNamesFrom(capInfo.getModes(mimeType)),
- getWindowStateNamesFrom(capInfo.getWindowStates(mimeType)),
- getLocaleNamesFrom(capInfo.getLocales(mimeType)),
- null);
+ mimeType,
+ getModeNamesFrom(capInfo.getModes(mimeType)),
+ getWindowStateNamesFrom(capInfo.getWindowStates(mimeType)),
+ getLocaleNamesFrom(capInfo.getLocales(mimeType)),
+ null);
}
//todo generate a valid and better portlet handle
@@ -229,7 +228,7 @@
// keywords
// metaInfo contains comma-separated keywords: we need to extract them into an
array
org.jboss.portal.wsrp.core.LocalizedString concatenatedKeywords =
- WSRPUtils.convertToWSRPLocalizedString(metaInfo.getMetaValue(MetaInfo.KEYWORDS),
desiredLocales);
+
WSRPUtils.convertToWSRPLocalizedString(metaInfo.getMetaValue(MetaInfo.KEYWORDS),
desiredLocales);
if (concatenatedKeywords != null)
{
String commaSeparatedKeywords = concatenatedKeywords.getValue();
@@ -238,7 +237,7 @@
String lang = concatenatedKeywords.getLang();
String[] keywordArray = commaSeparatedKeywords.split(",");
org.jboss.portal.wsrp.core.LocalizedString[] keywords =
- new org.jboss.portal.wsrp.core.LocalizedString[keywordArray.length];
+ new org.jboss.portal.wsrp.core.LocalizedString[keywordArray.length];
for (int i = 0; i < keywordArray.length; i++)
{
keywords[i] = WSRPTypeFactory.createLocalizedString(lang, null,
keywordArray[i].trim()); // fix-me: resource name
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -23,6 +23,8 @@
package org.jboss.portal.wsrp.producer.config;
+import java.util.List;
+
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
* @version $Revision$
@@ -31,4 +33,6 @@
public interface ProducerConfiguration
{
ProducerRegistrationRequirements getRegistrationRequirements();
+
+ List<ProducerConfigurationChangeListener> getChangeListeners();
}
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -30,6 +30,7 @@
import javax.xml.namespace.QName;
import java.util.Map;
+import java.util.Set;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
@@ -108,4 +109,8 @@
/** @since 2.6.3 */
void clearRegistrationPolicyChangeListeners();
+
+ Set<RegistrationPropertyChangeListener> getPropertyChangeListeners();
+
+ Set<RegistrationPolicyChangeListener> getPolicyChangeListeners();
}
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -45,6 +45,11 @@
return requirements;
}
+ public List<ProducerConfigurationChangeListener> getChangeListeners()
+ {
+ return listeners;
+ }
+
public void setRegistrationRequirements(ProducerRegistrationRequirements
requirements)
{
this.requirements = requirements;
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -27,10 +27,14 @@
import org.jboss.mx.util.ObjectNameFactory;
import org.jboss.portal.common.net.URLTools;
import org.jboss.portal.jems.as.system.AbstractJBossService;
+import org.jboss.portal.registration.RegistrationPolicyChangeListener;
+import org.jboss.portal.registration.RegistrationPropertyChangeListener;
import org.jboss.portal.wsrp.producer.config.ProducerConfiguration;
+import org.jboss.portal.wsrp.producer.config.ProducerConfigurationChangeListener;
import org.jboss.portal.wsrp.producer.config.ProducerConfigurationFactory;
import org.jboss.portal.wsrp.producer.config.ProducerConfigurationProvider;
import org.jboss.portal.wsrp.producer.config.ProducerConfigurationService;
+import org.jboss.portal.wsrp.producer.config.ProducerRegistrationRequirements;
import org.jboss.xb.binding.JBossXBException;
import org.jboss.xb.binding.ObjectModelFactory;
import org.jboss.xb.binding.ObjectModelProvider;
@@ -52,6 +56,8 @@
import java.io.Writer;
import java.net.URL;
import java.util.Enumeration;
+import java.util.List;
+import java.util.Set;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
@@ -122,7 +128,7 @@
if (config.exists())
{
log.debug("Configuration saved at " + config.getCanonicalPath()
- + " is not loading properly. Falling back to default
configuration.");
+ + " is not loading properly. Falling back to default
configuration.");
config.delete(); // delete improper config so that we retrieve the default
configuration
loadConfigurationAt(getConfigLocationURL());
}
@@ -134,7 +140,52 @@
log.debug("About to parse producer configuration " + configURL);
Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
ObjectModelFactory factory = new ProducerConfigurationFactory();
+
+ // save listeners if we already have a configuration
+ List<ProducerConfigurationChangeListener> listeners = null;
+ Set<RegistrationPolicyChangeListener> policyListeners = null;
+ Set<RegistrationPropertyChangeListener> propertyListeners = null;
+ ProducerRegistrationRequirements registrationRequirements;
+ if (configuration != null)
+ {
+ listeners = configuration.getChangeListeners();
+ registrationRequirements = configuration.getRegistrationRequirements();
+ if (registrationRequirements != null)
+ {
+ policyListeners = registrationRequirements.getPolicyChangeListeners();
+ propertyListeners = registrationRequirements.getPropertyChangeListeners();
+ }
+ }
+
+ // reload
configuration =
(ProducerConfiguration)unmarshaller.unmarshal(configURL.openStream(), factory, null);
+
+ // restore listeners
+ if (listeners != null)
+ {
+ for (ProducerConfigurationChangeListener listener : listeners)
+ {
+ configuration.addChangeListener(listener);
+ }
+ }
+ registrationRequirements = configuration.getRegistrationRequirements();
+ if (registrationRequirements != null)
+ {
+ if (propertyListeners != null)
+ {
+ for (RegistrationPropertyChangeListener listener : propertyListeners)
+ {
+ registrationRequirements.addRegistrationPropertyChangeListener(listener);
+ }
+ }
+ if (policyListeners != null)
+ {
+ for (RegistrationPolicyChangeListener listener : policyListeners)
+ {
+ registrationRequirements.addRegistrationPolicyChangeListener(listener);
+ }
+ }
+ }
}
private URL getConfigLocationURL() throws Exception
@@ -195,7 +246,7 @@
// add schema location by declaring xsi namespace and adding xsi:schemaLocation
attribute
marshaller.declareNamespace("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
marshaller.addAttribute("xsi", "schemaLocation",
"string",
- "urn:jboss:portal:wsrp:producer:v2_6
http://www.jboss.org/portal/xsd/jboss-wsrp-producer_2_6.xsd");
+ "urn:jboss:portal:wsrp:producer:v2_6
http://www.jboss.org/portal/xsd/jboss-wsrp-producer_2_6.xsd");
// create an instance of Object Model Provider
ObjectModelProvider provider = new ProducerConfigurationProvider();
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java 2008-10-01
23:28:22 UTC (rev 12018)
@@ -56,7 +56,7 @@
private RegistrationPolicy policy;
private String policyClassName;
private String validatorClassName;
- /** property name (QName) -> PropertyDescription */
+
private Map<QName, RegistrationPropertyDescription> registrationProperties;
private Set<RegistrationPropertyChangeListener> propertyChangeListeners = new
HashSet<RegistrationPropertyChangeListener>(3);
@@ -204,6 +204,11 @@
propertyChangeListeners.remove(listener);
}
+ public Set<RegistrationPropertyChangeListener> getPropertyChangeListeners()
+ {
+ return propertyChangeListeners;
+ }
+
/*
* == RegistrationPolicyChangeListeners handling
*/
@@ -233,6 +238,10 @@
}
}
+ public Set<RegistrationPolicyChangeListener> getPolicyChangeListeners()
+ {
+ return policyChangeListeners;
+ }
public void setPolicy(RegistrationPolicy policy)
{