You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2007/06/03 21:56:58 UTC

svn commit: r543973 - in /incubator/wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/markup/parser/filter/ test/java/org/apache/wicket/markup/html/basic/

Author: jdonnerstag
Date: Sun Jun  3 12:56:57 2007
New Revision: 543973

URL: http://svn.apache.org/viewvc?view=rev&rev=543973
Log:
wicket-590: RelativePathPrefixHandler and WicketMessageTagHandler conflict

problem fixed. SimplePageTest enabled.

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java?view=diff&rev=543973&r1=543972&r2=543973
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java Sun Jun  3 12:56:57 2007
@@ -58,44 +58,53 @@
 {
 	private static final long serialVersionUID = 1L;
 
+	/** Logging */
+	private static final Logger log = LoggerFactory.getLogger(RelativePathPrefixHandler.class);
+
 	/**
 	 * The id automatically assigned to tags without an id which we need to
 	 * prepend a relative path to.
 	 */
-	public final static String WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID = "-relative_path_prefix";
+	public static final String WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID = "-relative_path_prefix";
 
 	/** List of attribute names considered */
 	private static final String attributeNames[] = new String[] { "href", "src", "background" };
 
-	/** Logging */
-	private static final Logger log = LoggerFactory.getLogger(RelativePathPrefixHandler.class);
-
-	/**	Behavior that adds a prefix to src, href and background attributes to make them context-relative */
+	/**
+	 * Behavior that adds a prefix to src, href and background attributes to
+	 * make them context-relative
+	 */
 	public static final IBehavior RELATIVE_PATH_BEHAVIOR = new AbstractBehavior()
 	{
 		private static final long serialVersionUID = 1L;
 
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
+			String prefix = null;
+
 			// Modify all relevant attributes
 			for (int i = 0; i < attributeNames.length; i++)
 			{
 				String attrName = attributeNames[i];
 				String attrValue = tag.getAttributes().getString(attrName);
 
-				if ((attrValue != null) && (attrValue.startsWith("/") == false)
-						&& (attrValue.indexOf(":") < 0) && !(attrValue.startsWith("#")))
+				if ((attrValue != null) && (attrValue.startsWith("/") == false) &&
+						(attrValue.indexOf(":") < 0) && !(attrValue.startsWith("#")))
 				{
-					String prefix = RequestCycle.get().getRequest().getRelativePathPrefixToContextRoot();
-					// getRelativePathPrefix only gives us relative to the Wicket Servlet/Filter.
-					// To be relative to the actual context path, we may need an extra ../ to take off the servletPath 
+					if (prefix == null)
+					{
+						prefix = RequestCycle.get().getRequest().getRelativePathPrefixToContextRoot();
+					}
+					
+					// getRelativePathPrefix only gives us relative to the
+					// Wicket Servlet/Filter. To be relative to the actual
+					// context path, we may need an extra ../ to take off the
+					// servletPath
 					attrValue = prefix + attrValue;
 					tag.getAttributes().put(attrName, attrValue);
 				}
 			}
-
 		}
-
 	};
 
 	/**
@@ -116,59 +125,53 @@
 			return tag;
 		}
 
-		// Don't touch any wicket:id component
-		if (tag.getId() != null)
+		// Don't touch any wicket:id component and any auto-components
+		if ((tag.getId() != null) && (tag.getId().startsWith("-") == false))
 		{
 			return tag;
 		}
 
 		// Work out whether we have any attributes that require us to add a
-		// behaviour that prepends the relative path.
-		boolean addBehaviour = false;
-
+		// behavior that prepends the relative path.
 		for (int i = 0; i < attributeNames.length; i++)
 		{
 			String attrName = attributeNames[i];
 			String attrValue = tag.getAttributes().getString(attrName);
-			if ((attrValue != null) && (attrValue.startsWith("/") == false)
-					&& (attrValue.indexOf(":") < 0) && !(attrValue.startsWith("#")))
+			if ((attrValue != null) && (attrValue.startsWith("/") == false) &&
+					(attrValue.indexOf(":") < 0) && !(attrValue.startsWith("#")))
 			{
-				addBehaviour = true;
+				tag.setId(WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID);
+				tag.addBehavior(RELATIVE_PATH_BEHAVIOR);
+				tag.setModified(true);
 				break;
 			}
 		}
 
-		if (addBehaviour)
-		{
-			tag.setId(WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID);
-			tag.setModified(true);
-		}
-
-
 		return tag;
 	}
 
+	/**
+	 * 
+	 * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer, org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
+	 */
 	public boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
 	{
 		if (WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID.equals(tag.getId()))
 		{
-			Component wc = null;
+			final Component wc;
+			String id = WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID +
+					container.getPage().getAutoIndex();
 			if (tag.isOpenClose())
 			{
-				wc = new WebComponent(WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID
-						+ container.getPage().getAutoIndex());
+				wc = new WebComponent(id);
 			}
 			else
 			{
-				wc = new WebMarkupContainer(WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID
-						+ container.getPage().getAutoIndex());
+				wc = new WebMarkupContainer(id);
 			}
-			wc.add(RELATIVE_PATH_BEHAVIOR);
 			container.autoAdd(wc);
 			return true;
 		}
 		return false;
 	}
-
-
 }

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java?view=diff&rev=543973&r1=543972&r2=543973
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java Sun Jun  3 12:56:57 2007
@@ -90,6 +90,7 @@
 
 		final String wicketMessageAttribute = tag.getAttributes().getString(
 				WICKET_MESSAGE_ATTRIBUTE_NAME);
+
 		if ((wicketMessageAttribute != null) && (wicketMessageAttribute.trim().length() > 0))
 		{
 			// check if this tag is raw markup
@@ -99,20 +100,8 @@
 				// that wicket will not merge this as raw markup and instead
 				// pass it on to a resolver
 				tag.setId(WICKET_MESSAGE_CONTAINER_ID);
-
-				// There is no point attaching the attributelocalizer to this
-				// tag because it will be represented by an auto component and
-				// they do not inherit the behaviors from their component tag
-				// unlike regular components, instead the attributelocalizer
-				// will be added by the code that creates the auto component
-			}
-			else
-			{
-				// if this is a component tag we attach a behavior to it that
-				// will in turn be attached to the component that is attached to
-				// this tag
-				tag.addBehavior(ATTRIBUTE_LOCALIZER);
 			}
+			tag.addBehavior(new AttributeLocalizer());
 		}
 
 		return tag;
@@ -156,9 +145,9 @@
 					String attr = attrAndKey.substring(0, colon);
 					String key = attrAndKey.substring(colon + 1);
 
-					String value;
 					// we need to call the proper getString() method based on
 					// whether or not we have a default value
+					final String value;
 					if (tag.getAttributes().containsKey(attr))
 					{
 						value = component.getString(key, null, tag.getAttributes().getString(attr));
@@ -173,6 +162,10 @@
 		}
 	}
 
+	/**
+	 * 
+	 * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer, org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
+	 */
 	public boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
 	{
 		// localize any raw markup that has wicket:message attrs
@@ -190,7 +183,7 @@
 				wc = new WebMarkupContainer(WICKET_MESSAGE_CONTAINER_ID
 						+ container.getPage().getAutoIndex());
 			}
-			wc.add(new AttributeLocalizer());
+			
 			container.autoAdd(wc);
 			return true;
 		}

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java?view=diff&rev=543973&r1=543972&r2=543973
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java Sun Jun  3 12:56:57 2007
@@ -330,7 +330,7 @@
 	public void testRenderHomePage_7() throws Exception
 	{
 		// TODO this is for issue https://issues.apache.org/jira/browse/WICKET-590
-		// executeTest(SimplePage_7.class, "SimplePageExpectedResult_7.html");
+		executeTest(SimplePage_7.class, "SimplePageExpectedResult_7.html");
 	}
 
 	/**