Author: chris.laprun(a)jboss.com
Date: 2008-10-01 18:59:23 -0400 (Wed, 01 Oct 2008)
New Revision: 12017
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java
branches/JBoss_Portal_Branch_2_7/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_7/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/other/RegistrationPropertyDescriptionTestCase.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -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_7/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/ServiceDescriptionHandler.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -82,7 +82,7 @@
RegistrationContext registrationContext = gs.getRegistrationContext();
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());
@@ -102,7 +102,7 @@
if (registration == null && requirements.isRegistrationRequired())
{
log.debug("Unregistered consumer while registration is required. Sending
registration information.");
-
+
// do not create a ModelDescription if there is no registration properties
Map info = requirements.getRegistrationProperties();
ModelDescription description = null;
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -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$
@@ -46,4 +48,6 @@
void addChangeListener(ProducerConfigurationChangeListener listener);
void removeChangeListener(ProducerConfigurationChangeListener listener);
+
+ List<ProducerConfigurationChangeListener> getChangeListeners();
}
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerRegistrationRequirements.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -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_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -84,6 +84,11 @@
listeners.remove(listener);
}
+ public List<ProducerConfigurationChangeListener> getChangeListeners()
+ {
+ return listeners;
+ }
+
public void setRegistrationRequirements(ProducerRegistrationRequirements
requirements)
{
this.requirements = requirements;
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerConfigurationServiceImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -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>
@@ -123,7 +129,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());
}
@@ -135,7 +141,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
@@ -196,7 +247,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_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java 2008-10-01
22:41:59 UTC (rev 12016)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/impl/ProducerRegistrationRequirementsImpl.java 2008-10-01
22:59:23 UTC (rev 12017)
@@ -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)
{