[jboss-cvs] JBossAS SVN: r93416 - in projects/metadata/web/trunk/src: test/java/org/jboss/test/metadata/web and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Sep 11 12:04:42 EDT 2009
Author: remy.maucherat at jboss.com
Date: 2009-09-11 12:04:41 -0400 (Fri, 11 Sep 2009)
New Revision: 93416
Added:
projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/FragmentMergeUnitTestCase.java
Modified:
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
Log:
- Continue with some augment code.
- Add a fragment merge test case.
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java 2009-09-11 16:03:32 UTC (rev 93415)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -44,8 +44,11 @@
private String path = null;
private String comment = null;
private boolean httpOnly = false;
+ private boolean httpOnlySet = false;
private boolean secure = false;
+ private boolean secureSet = false;
private int maxAge = -1;
+ private boolean maxAgeSet = false;
public String getName() {
return name;
@@ -88,6 +91,7 @@
public void setHttpOnly(boolean httpOnly)
{
this.httpOnly = httpOnly;
+ httpOnlySet = true;
}
public boolean getSecure()
@@ -98,6 +102,7 @@
public void setSecure(boolean secure)
{
this.secure = secure;
+ secureSet = true;
}
public int getMaxAge()
@@ -108,6 +113,111 @@
public void setMaxAge(int maxAge)
{
this.maxAge = maxAge;
+ maxAgeSet = true;
}
+ public void augment(CookieConfigMetaData webFragmentMetaData, CookieConfigMetaData webMetaData)
+ {
+ // Name
+ if (getName() == null)
+ {
+ setName(webFragmentMetaData.getName());
+ }
+ else if (webFragmentMetaData.getName() != null)
+ {
+ if (!getName().equals(webFragmentMetaData.getName())
+ && (webMetaData == null || webMetaData.getName() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on cookie name: " + getName());
+ }
+ }
+ // Domain
+ if (getDomain() == null)
+ {
+ setDomain(webFragmentMetaData.getDomain());
+ }
+ else if (webFragmentMetaData.getDomain() != null)
+ {
+ if (!getDomain().equals(webFragmentMetaData.getDomain())
+ && (webMetaData == null || webMetaData.getDomain() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on cookie domain: " + getDomain());
+ }
+ }
+ // Path
+ if (getPath() == null)
+ {
+ setPath(webFragmentMetaData.getPath());
+ }
+ else if (webFragmentMetaData.getPath() != null)
+ {
+ if (!getPath().equals(webFragmentMetaData.getPath())
+ && (webMetaData == null || webMetaData.getPath() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on cookie path: " + getPath());
+ }
+ }
+ // Comment
+ if (getComment() == null)
+ {
+ setComment(webFragmentMetaData.getComment());
+ }
+ else if (webFragmentMetaData.getComment() != null)
+ {
+ if (!getComment().equals(webFragmentMetaData.getComment())
+ && (webMetaData == null || webMetaData.getComment() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on cookie comment: " + getComment());
+ }
+ }
+ // HttpOnly
+ if (!httpOnlySet)
+ {
+ if (webFragmentMetaData.httpOnlySet)
+ {
+ setHttpOnly(webFragmentMetaData.getHttpOnly());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.httpOnlySet &&
+ (webMetaData == null || !webMetaData.httpOnlySet))
+ {
+ throw new IllegalStateException("Unresolved conflict on http only");
+ }
+ }
+ // Secure
+ if (!secureSet)
+ {
+ if (webFragmentMetaData.secureSet)
+ {
+ setSecure(webFragmentMetaData.getSecure());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.secureSet &&
+ (webMetaData == null || !webMetaData.secureSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on secure");
+ }
+ }
+ // MaxAge
+ if (!maxAgeSet)
+ {
+ if (webFragmentMetaData.maxAgeSet)
+ {
+ setMaxAge(webFragmentMetaData.getMaxAge());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.maxAgeSet &&
+ (webMetaData == null || !webMetaData.maxAgeSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on max age");
+ }
+ }
+ }
+
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java 2009-09-11 16:03:32 UTC (rev 93415)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -34,4 +34,10 @@
{
super("web app filters");
}
+
+ public void augment(FiltersMetaData webFragmentMetaData, FiltersMetaData webMetaData)
+ {
+ // TODO
+ }
+
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java 2009-09-11 16:03:32 UTC (rev 93415)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -51,8 +51,8 @@
@XmlElement(name = "session-timeout")
public void setSessionTimeout(int sessionTimeout)
{
+ this.sessionTimeout = sessionTimeout;
sessionTimeoutSet = true;
- this.sessionTimeout = sessionTimeout;
}
public CookieConfigMetaData getCookieConfig() {
@@ -85,7 +85,47 @@
*/
public void augment(SessionConfigMetaData webFragmentMetaData, SessionConfigMetaData webMetaData)
{
-
+ // Session timeout
+ if (!sessionTimeoutSet)
+ {
+ if (webFragmentMetaData.sessionTimeoutSet)
+ {
+ setSessionTimeout(webFragmentMetaData.getSessionTimeout());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.sessionTimeoutSet &&
+ (webMetaData == null || !webMetaData.sessionTimeoutSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on session timeout");
+ }
+ }
+ // Cookie config
+ if (getCookieConfig() == null)
+ {
+ setCookieConfig(webFragmentMetaData.getCookieConfig());
+ }
+ else if (webFragmentMetaData.getCookieConfig() != null)
+ {
+ getCookieConfig().augment(webFragmentMetaData.getCookieConfig(),
+ (webMetaData != null) ? webMetaData.getCookieConfig() : null);
+ }
+ // Tracking modes (multiple, so additive, no conflict)
+ if (getSessionTrackingModes() == null)
+ {
+ setSessionTrackingModes(webFragmentMetaData.getSessionTrackingModes());
+ }
+ else if (webFragmentMetaData.getSessionTrackingModes() != null)
+ {
+ for (SessionTrackingModeType sessionTrackingMode : webFragmentMetaData.getSessionTrackingModes())
+ {
+ if (!getSessionTrackingModes().contains(sessionTrackingMode))
+ {
+ getSessionTrackingModes().add(sessionTrackingMode);
+ }
+ }
+ }
}
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java 2009-09-11 16:03:32 UTC (rev 93415)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -29,7 +29,7 @@
/**
* The web-fragment spec metadata
- * @author Scott.Stark at jboss.org
+ * @author Remy Maucherat
* @version $Revision: 70996 $
*/
public class WebFragmentMetaData extends WebCommonMetaData
@@ -52,7 +52,7 @@
* specification. This is a special type of merging, where non conflicting meta data
* augment existing meta data, rather than overriding it.
* If there is a conflict when merging the fragment meta data, and the main
- * webMetaData does not resolve the conflict, an error will be thrown.
+ * webMetaData does not resolve the conflict, an error will be thrown.
*
* @param webFragmentMetaData The web meta data which will be merged into this one
* @param webMetaData The base web meta data, used for conflict error checking
@@ -95,7 +95,7 @@
}
}
if (!found)
- throw new IllegalStateException("Conflict on init parameter: " + check.getParamName());
+ throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
}
}
}
@@ -118,6 +118,16 @@
getSessionConfig().augment(webFragmentMetaData.getSessionConfig(), webMetaData.getSessionConfig());
}
+ // Filters
+ if (getFilters() == null)
+ {
+ setFilters(webFragmentMetaData.getFilters());
+ }
+ else if (webFragmentMetaData.getFilters() != null)
+ {
+ getFilters().augment(webFragmentMetaData.getFilters(), webMetaData.getFilters());
+ }
+
}
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java 2009-09-11 16:03:32 UTC (rev 93415)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -27,7 +27,7 @@
* @author Scott.Stark at jboss.org
* @version $Revision: 70996 $
*/
-public class WebMetaData extends WebCommonMetaData
+public class WebMetaData extends WebCommonMetaData
{
private static final long serialVersionUID = 1;
@@ -39,7 +39,7 @@
*/
public void merge(WebFragmentMetaData webFragmentMetaData)
{
-
+ // TODO: See JBossWebMetaData
}
}
Added: projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/FragmentMergeUnitTestCase.java
===================================================================
--- projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/FragmentMergeUnitTestCase.java (rev 0)
+++ projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/FragmentMergeUnitTestCase.java 2009-09-11 16:04:41 UTC (rev 93416)
@@ -0,0 +1,91 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.web;
+
+import junit.framework.TestCase;
+
+import org.jboss.metadata.web.spec.CookieConfigMetaData;
+import org.jboss.metadata.web.spec.SessionConfigMetaData;
+import org.jboss.metadata.web.spec.WebFragmentMetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
+
+/**
+ * Tests the correct merging of fragment meta data.
+ *
+ * @author Remy Maucherat
+ * @version $Revision: 88255 $
+ */
+public class FragmentMergeUnitTestCase extends TestCase
+{
+
+ public FragmentMergeUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testAugment() throws Exception
+ {
+ WebFragmentMetaData fragment1 = new WebFragmentMetaData();
+ SessionConfigMetaData sessionConfig1 = new SessionConfigMetaData();
+ CookieConfigMetaData cookieConfig1 = new CookieConfigMetaData();
+ cookieConfig1.setName("foo");
+ sessionConfig1.setCookieConfig(cookieConfig1);
+ fragment1.setSessionConfig(sessionConfig1);
+ WebFragmentMetaData fragment2 = new WebFragmentMetaData();
+ SessionConfigMetaData sessionConfig2 = new SessionConfigMetaData();
+ CookieConfigMetaData cookieConfig2 = new CookieConfigMetaData();
+ cookieConfig2.setName("foo2");
+ sessionConfig2.setCookieConfig(cookieConfig2);
+ fragment2.setSessionConfig(sessionConfig2);
+ WebMetaData main = new WebMetaData();
+ boolean exception = false;
+ try
+ {
+ fragment1.augment(fragment2, main);
+ }
+ catch (IllegalStateException e)
+ {
+ exception = true;
+ }
+ assertTrue(exception);
+ sessionConfig2.setSessionTimeout(20);
+ SessionConfigMetaData sessionConfig3 = new SessionConfigMetaData();
+ CookieConfigMetaData cookieConfig3 = new CookieConfigMetaData();
+ cookieConfig3.setName("foo3");
+ sessionConfig3.setCookieConfig(cookieConfig3);
+ main.setSessionConfig(sessionConfig1);
+ cookieConfig2.setDomain(".foo.com");
+ exception = false;
+ try
+ {
+ fragment1.augment(fragment2, main);
+ }
+ catch (IllegalStateException e)
+ {
+ exception = true;
+ }
+ assertFalse(exception);
+ assertEquals(".foo.com", fragment1.getSessionConfig().getCookieConfig().getDomain());
+ assertEquals(20, fragment1.getSessionConfig().getSessionTimeout());
+ }
+
+}
More information about the jboss-cvs-commits
mailing list