Author: chris.laprun(a)jboss.com
Date: 2008-06-13 19:50:28 -0400 (Fri, 13 Jun 2008)
New Revision: 11052
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/framework/TestWSRPProducerImpl.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPProducer.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java
Log:
- JBPORTAL-857: Setting strict mode relaxes language code validation. Should probably be
implemented as
an interceptor to actually replace the in-out values before they make it to the
Producer.
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/framework/TestWSRPProducerImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/framework/TestWSRPProducerImpl.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/framework/TestWSRPProducerImpl.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -280,4 +280,9 @@
{
throw new UnsupportedOperationException("setProducerConfiguration not
implemented");
}
+
+ public void usingStrictModeChangedTo(boolean strictMode)
+ {
+ throw new UnsupportedOperationException("usingStrictModeChangedTo not
implemented");
+ }
}
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -335,13 +335,13 @@
}
}
- public void testGetMarkupWithNonStandardLocales() throws Exception
+ public void testGetMarkupWithNonStandardLocalesStrictMode() throws Exception
{
undeploy(DEFAULT_MARKUP_PORTLET_WAR);
String getLocalesPortletArchive = "test-getlocales-portlet.war";
deploy(getLocalesPortletArchive);
- GetMarkup getMarkup =
createMarkupRequest(getPortletHandleFrom("Incorrect"));
+ GetMarkup getMarkup = createMarkupRequestForCurrentlyDeployedPortlet();
getMarkup.getMarkupParams().setLocales(new String[]{"en_US"});
try
@@ -361,6 +361,23 @@
}
}
+ public void testGetMarkupWithNonStandardLocalesLenientMode() throws Exception
+ {
+ undeploy(DEFAULT_MARKUP_PORTLET_WAR);
+ String getLocalesPortletArchive = "test-getlocales-portlet.war";
+ deploy(getLocalesPortletArchive);
+
+ GetMarkup getMarkup = createMarkupRequestForCurrentlyDeployedPortlet();
+ getMarkup.getMarkupParams().setLocales(new String[]{"en_US"});
+
+ // Use the lenient mode
+ producer.usingStrictModeChangedTo(false);
+
+ // markup should be properly generated
+ checkMarkupResponse(markupService.getMarkup(getMarkup), "English (United
States)");
+ undeploy(getLocalesPortletArchive);
+ }
+
public void testGetMarkupWithoutDeclaredLocale() throws Exception
{
undeploy(DEFAULT_MARKUP_PORTLET_WAR);
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -168,6 +168,9 @@
super.setUp();
this.mostUsedPortletWARFileName = getMostUsedPortletWARFileName();
deploy(mostUsedPortletWARFileName);
+
+ // reset strict mode
+ producer.usingStrictModeChangedTo(true);
}
/**
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPProducer.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPProducer.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPProducer.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -30,6 +30,7 @@
import org.jboss.portal.wsrp.core.WSRP_v1_Registration_PortType;
import org.jboss.portal.wsrp.core.WSRP_v1_ServiceDescription_PortType;
import org.jboss.portal.wsrp.producer.config.ProducerConfiguration;
+import org.jboss.portal.wsrp.producer.config.ProducerConfigurationChangeListener;
import org.jboss.portal.wsrp.producer.config.ProducerRegistrationRequirements;
/**
@@ -39,7 +40,7 @@
*/
public interface WSRPProducer
extends WSRP_v1_ServiceDescription_PortType, WSRP_v1_Markup_PortType,
WSRP_v1_Registration_PortType,
- WSRP_v1_PortletManagement_PortType
+ WSRP_v1_PortletManagement_PortType, ProducerConfigurationChangeListener
{
/** The default session expiration time in mili seconds. */
int DEFAULT_SESSION_EXPIRATION_TIME = 300000;
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -23,6 +23,7 @@
package org.jboss.portal.wsrp;
+import org.jboss.logging.Logger;
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.common.i18n.LocaleFormat;
@@ -71,6 +72,15 @@
public static final Set<Mode> DEFAULT_JSR168_MODES;
public static final Set<WindowState> DEFAULT_JSR168_WINDOWSTATES;
+ private static boolean strict = true;
+ private static Logger log = Logger.getLogger(WSRPUtils.class);
+
+ public static void setStrict(boolean strict)
+ {
+ WSRPUtils.strict = strict;
+ log.debug("Using " + (strict ? "strict" : "lenient")
+ " language code validation mode.");
+ }
+
static
{
JSR168_WSRP_WINDOW_STATES.put(WindowState.MAXIMIZED.toString(),
WSRPConstants.MAXIMIZED_WINDOW_STATE);
@@ -424,13 +434,20 @@
public static Locale getLocale(String lang) throws IllegalArgumentException
{
+ String possiblyRelaxed = lang;
+ if (!WSRPUtils.strict)
+ {
+ // treat en_US as valid by en_US => en-US
+ // todo: maybe this should be handled by an interceptor...
+ possiblyRelaxed = lang.replace('_', '-');
+ }
+
try
{
- return LocaleFormat.RFC3066_LANGUAGE_TAG.getLocale(lang);
+ return LocaleFormat.RFC3066_LANGUAGE_TAG.getLocale(possiblyRelaxed);
}
catch (ConversionException e)
{
- // Previous behavior on using ConversionException was like that
throw new IllegalArgumentException(e);
}
}
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java 2008-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -39,6 +39,7 @@
import org.jboss.portal.wsrp.WSRPConstants;
import org.jboss.portal.wsrp.WSRPExceptionFactory;
import org.jboss.portal.wsrp.WSRPProducer;
+import org.jboss.portal.wsrp.WSRPUtils;
import org.jboss.portal.wsrp.core.AccessDeniedFault;
import org.jboss.portal.wsrp.core.BlockingInteractionResponse;
import org.jboss.portal.wsrp.core.ClonePortlet;
@@ -80,7 +81,6 @@
import org.jboss.portal.wsrp.core.UnsupportedModeFault;
import org.jboss.portal.wsrp.core.UnsupportedWindowStateFault;
import org.jboss.portal.wsrp.producer.config.ProducerConfiguration;
-import org.jboss.portal.wsrp.producer.config.ProducerConfigurationChangeListener;
import org.jboss.portal.wsrp.producer.config.ProducerConfigurationService;
import org.jboss.portal.wsrp.producer.config.ProducerRegistrationRequirements;
@@ -94,7 +94,7 @@
* @version $Revision$
* @since 2.4
*/
-public class WSRPProducerImpl extends AbstractJBossService implements WSRPProducer,
ProducerConfigurationChangeListener
+public class WSRPProducerImpl extends AbstractJBossService implements WSRPProducer
{
/** logger used for logging ;) */
private static final Logger log = Logger.getLogger(WSRPProducerImpl.class);
@@ -534,5 +534,6 @@
public void usingStrictModeChangedTo(boolean strictMode)
{
RegistrationUtils.setStrict(strictMode);
+ WSRPUtils.setStrict(strictMode);
}
}
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-06-13
23:49:32 UTC (rev 11051)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/producer/config/ProducerConfiguration.java 2008-06-13
23:50:28 UTC (rev 11052)
@@ -32,6 +32,13 @@
{
ProducerRegistrationRequirements getRegistrationRequirements();
+ /**
+ * Is the associated producer using strict WSRP data validation? Strict validation
means that even minor
+ * non-compliance will cause a failure. Lenient validation relaxes the checks that are
performed to improve
+ * compatibility with some non-completely compliant consumers.
+ *
+ * @return <code>true</code> if strict validation is in effect,
<code>false</code> otherwise.
+ */
boolean isUsingStrictMode();
void setUsingStrictMode(boolean strict);
Show replies by date