You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/10/20 12:33:38 UTC

svn commit: r706208 - in /labs/magma/trunk/foundation-website/src: main/java/org/apache/magma/website/ main/java/org/apache/magma/website/producers/ main/java/org/apache/magma/website/templating/ main/java/org/apache/magma/website/utils/ main/resources...

Author: simoneg
Date: Mon Oct 20 03:33:37 2008
New Revision: 706208

URL: http://svn.apache.org/viewvc?rev=706208&view=rev
Log:
Refactoring of the head methods, now there is an utility class Head to ease the pain and avoid duplicates
Basic support for file uploads
Refactoring of mock assertions to avoid having to rewrite everything everytime

Added:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/CommonResourcesHandler.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/StreamProducer.java
    labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/falseAbsolute.css
    labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/onload.js
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java
    labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/resource.txt
      - copied unchanged from r700712, labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/teststuff/resource.txt
Removed:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ComposedHtmlProducer.java
    labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/teststuff/
Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HtmlProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ResourceProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/RootWebHandler.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebHandler.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/CompoundHtmlProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/MockProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableHtmlProducerBase.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducerBase.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/StringHtmlProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/XmlProducer.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/Template.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/URLRewritingStream.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/templating/TemplatingTest.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/FakeHtmlProducer.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTests.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java

Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/CommonResourcesHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/CommonResourcesHandler.java?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/CommonResourcesHandler.java (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/CommonResourcesHandler.java Mon Oct 20 03:33:37 2008
@@ -0,0 +1,5 @@
+package org.apache.magma.website;
+
+public class CommonResourcesHandler extends WebHandler {
+
+}

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java Mon Oct 20 03:33:37 2008
@@ -94,7 +94,10 @@
 			mybaseurl += "/" + req.getServletPath();
 		}
 		
-		Template t = getDefaultTemplate();
+		Template t = producer.getTemplate();
+		if (t == null) {
+			t = getDefaultTemplate();
+		}
 		t.setCurrent(producer);
 		
 		HttpSession session = req.getSession();

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj Mon Oct 20 03:33:37 2008
@@ -16,11 +16,22 @@
  */
 package org.apache.magma.website;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.apache.magma.basics.MagmaException;
 import org.apache.magma.beans.MagmaBeanSupport;
 import org.apache.magma.conversion.Converter;
 import org.apache.magma.conversion.Converters;
 import org.apache.magma.website.utils.Binder;
+import org.apache.magma.website.producers.ParametrizeHtmlProducer;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -30,18 +41,45 @@
 
 public aspect HandlerSetup percflow(inRequest()) {
 
+	declare precedence: HandlerSetup, ParametrizeHtmlProducer;
+	
 	declare parents : (WebHandler) implements MagmaBeanSupport;
 
 	public pointcut inRequest() : execution(public void Dispatch+.doGet(..)) || execution(public void Dispatch+.doPost(..)); 
 	
 	private HttpServletRequest request = null;
 	private HttpServletResponse response = null;
-	
+	private Map<String, FileItem[]> uploads = null;
 	
 	before(HttpServletRequest req, HttpServletResponse resp) : 
 		inRequest() &&
 		args(req, resp) {
 		this.request = req;
+		if (ServletFileUpload.isMultipartContent(request)) {
+			FileItemFactory factory = new DiskFileItemFactory();
+			ServletFileUpload upload = new ServletFileUpload(factory);
+			List<FileItem> uploaditems;
+			try {
+				uploaditems = upload.parseRequest(request);
+			} catch (FileUploadException e) {
+				throw new MagmaException(e, "Error while parsing uploaded files");
+			}
+			for (FileItem fileItem : uploaditems) {
+				if (uploads == null) uploads = new HashMap<String, FileItem[]>();
+				if (!fileItem.isFormField() || fileItem.getString().length() > 0) {
+					FileItem[] arr = uploads.get(fileItem.getFieldName());
+					if (arr == null) {
+						arr = new FileItem[] { fileItem };
+						uploads.put(fileItem.getFieldName(), arr);
+					} else {
+						FileItem[] narr = new FileItem[arr.length + 1];
+						System.arraycopy(arr, 0, narr, 0, arr.length);
+						narr[arr.length] = fileItem;
+						uploads.put(fileItem.getFieldName(), narr);
+					}
+				}
+			}
+		}		
 		this.response = resp;
 	}
 	
@@ -56,7 +94,7 @@
 		if (!h.inited) { 
 			String unique = Integer.toString(h.getRelativePath().hashCode());
 			try {
-				Binder.bind(h, request, unique);
+				Binder.bind(h, request, unique, uploads);
 				h.inited = true;
 			} catch (Throwable e) {
 				throw new MagmaException(e, "Error while setting up {0}", h.getClass());
@@ -106,5 +144,6 @@
 		}
 		return retObj;
 	}
+
 		
 }

Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java Mon Oct 20 03:33:37 2008
@@ -0,0 +1,98 @@
+package org.apache.magma.website;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.utils.URLRewritingStream;
+
+public class Head {
+
+	private OutputStream stream = null;
+	private OutputStreamWriter writer = null;
+	
+	public Set<String> components = new HashSet<String>();
+	
+	public Head(OutputStream stream) {
+		this.stream = stream;
+		try {
+			this.writer = new OutputStreamWriter(stream, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			// Should never happen
+			throw new MagmaException(e,"Something really wrong if we cannot find UTF-8");
+		}
+	}
+
+	public void addExternalScript(String name) {
+		addExternalScript(name, "text/javascript");
+	}
+	
+	public void addExternalScript(String name, String mimeType) {
+		if (!containsComponent(name)) {
+			rawWrite("<script src=\"",name,"\" type=\"",mimeType,"\"></script>");
+			added(name);
+		}
+	}
+
+	public void addRawScript(String name, String content) {
+		addRawScript(name, content, "text/javascript");
+	}
+	
+	public void addRawScript(String name, String content, String mimeType) {
+		if (!containsComponent(name)) {
+			rawWrite("<script type=\"", mimeType, "\">", content,"</script>");
+			added(name);
+		}		
+	}
+	
+	public void addCss(String name) {
+		if (!containsComponent(name)) {
+			rawWrite("<link href=\"", name, "\" type=\"text/css\" rel=\"stylesheet\"/>");
+			added(name);
+		}				
+	}
+
+	public boolean containsComponent(String name) {
+		return components.contains(name);
+	}
+
+	protected void added(String name) {
+		this.components.add(name);
+	}
+	
+	protected void rawWrite(String... pieces) {
+		try {
+			for (String piece : pieces) {
+				writer.append(piece);
+			}
+			// Need early flush, so that URL rewriting can take place in correct context
+			writer.flush();
+		} catch (IOException e) {
+			throw new MagmaException(e, "Error writing to head");
+		}
+	}
+	
+
+	public void finished() {
+		try {
+			writer.flush();
+		} catch (IOException e) {
+			throw new MagmaException(e, "Error writing to head");
+		}
+	}
+
+	public OutputStream getStream() {
+		return stream;
+	}
+
+	public void addString(String head) {
+		if (!containsComponent(head)) {
+			rawWrite(head);
+			added(head);
+		}
+	}
+}

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HtmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HtmlProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HtmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HtmlProducer.java Mon Oct 20 03:33:37 2008
@@ -30,7 +30,7 @@
 		return "text/html";
 	}
 	
-	public abstract void head(OutputStream stream);
+	public abstract void head(Head head);
 	
 	public void setTemplate(Template t) {
 		this.template = t;

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ResourceProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ResourceProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ResourceProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/ResourceProducer.java Mon Oct 20 03:33:37 2008
@@ -16,78 +16,25 @@
  */
 package org.apache.magma.website;
 
-import org.apache.magma.basics.MagmaException;
-import org.apache.magma.settings.Settings;
-
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
 
-public class ResourceProducer extends Producer {
+import org.apache.magma.basics.MagmaException;
 
-	private static Map<String, String> mimes = new HashMap<String, String>();
-	
-	static {
-		mimes.put("gif", "image/gif");
-		mimes.put("jpg", "image/jpeg");
-		mimes.put("jpeg", "image/jpeg");
-		mimes.put("jpe", "image/jpeg");
-		mimes.put("js", "application/javascript");
-		mimes.put("htm", "text/html");
-		mimes.put("html", "text/html");
-		mimes.put("txt", "text/plain");
-		mimes.put("html", "text/html");
-		mimes.put("css", "text/css");
-	}
-	
-	private String fileName;
+public class ResourceProducer extends StreamProducer {
 
 	public ResourceProducer(String fileName) {
 		this.fileName = fileName;
 	}
 	
-	@Override
-	public String getMimeType() {
-		int pp = fileName.lastIndexOf('.');
-		if (pp == -1) return "application/octet-stream";
-		String ext = fileName.substring(pp + 1);
-		ext = getMimeForExtension(ext.toLowerCase());
-		if (ext == null) return "application/octet-stream";
-		return ext;
-	}
-	
-	protected String getMimeForExtension(String ext) {
-		String mime = mimes.get(ext);
-		if (mime == null) {
-			mime = Settings.get("mimetype." + ext);
-		}
-		return mime;
-	}
-	
 	public boolean exists() {
 		return getCreatingHandler().getClass().getResource(fileName) != null; 
 	}
 
 	@Override
-	public void produce(OutputStream stream) {
-		InputStream inputStream = getCreatingHandler().getClass().getResourceAsStream(fileName);
-		if (inputStream == null) throw new MagmaException("Resource {0}/{1} not found", getCreatingHandler().getClass().getPackage().getName(), fileName);
-		byte[] buff = new byte[1024];
-		int len = 0;
-		try {
-			while ((len = inputStream.read(buff)) != -1) {
-				stream.write(buff, 0, len);
-			}
-		} catch (IOException e) {
-			throw new MagmaException(e, "Error copying resource to output stream");
-		} finally {
-			try {
-				inputStream.close();
-			} catch (IOException e) {
-			}
-		}
+	public void produce(OutputStream out) {
+		stream = getCreatingHandler().getClass().getResourceAsStream(fileName);
+		if (stream == null) throw new MagmaException("Resource {0}/{1} not found", getCreatingHandler().getClass().getPackage().getName(), fileName);
+		super.produce(out);
 	}
 
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/RootWebHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/RootWebHandler.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/RootWebHandler.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/RootWebHandler.java Mon Oct 20 03:33:37 2008
@@ -31,4 +31,8 @@
 		return new RootWebHandler();
 	}
 	
+	public CommonResourcesHandler handleCommon() {
+		return new CommonResourcesHandler();
+	}
+	
 }

Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/StreamProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/StreamProducer.java?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/StreamProducer.java (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/StreamProducer.java Mon Oct 20 03:33:37 2008
@@ -0,0 +1,86 @@
+package org.apache.magma.website;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.settings.Settings;
+
+public class StreamProducer extends Producer {
+
+	private static Map<String, String> mimes = new HashMap<String, String>();
+	
+	static {
+		mimes.put("gif", "image/gif");
+		mimes.put("jpg", "image/jpeg");
+		mimes.put("jpeg", "image/jpeg");
+		mimes.put("jpe", "image/jpeg");
+		mimes.put("js", "application/javascript");
+		mimes.put("htm", "text/html");
+		mimes.put("html", "text/html");
+		mimes.put("txt", "text/plain");
+		mimes.put("html", "text/html");
+		mimes.put("css", "text/css");
+	}
+	
+	protected InputStream stream = null;
+	protected String mimeType = null;
+	protected String fileName = null;
+
+	public StreamProducer(InputStream stream) {
+		this.stream = stream;
+	}
+	public StreamProducer(String name, InputStream stream) {
+		this.stream = stream;
+		this.fileName = name;
+	}
+	protected StreamProducer() {}
+	
+	@Override
+	public String getMimeType() {
+		if (mimeType != null) return mimeType;
+		if (fileName != null) {
+			int pp = fileName.lastIndexOf('.');
+			if (pp == -1) return "application/octet-stream";
+			String ext = fileName.substring(pp + 1);
+			ext = getMimeForExtension(ext.toLowerCase());
+			if (ext == null) return "application/octet-stream";
+			return ext;
+		}
+		return null;
+	}
+	
+	protected String getMimeForExtension(String ext) {
+		String mime = mimes.get(ext);
+		if (mime == null) {
+			mime = Settings.get("mimetype." + ext);
+		}
+		return mime;
+	}
+	
+	@Override
+	public void produce(OutputStream out) {
+		if (stream == null) throw new MagmaException("Cannot produce from a null stream");
+		byte[] buff = new byte[16384];
+		int len = 0;
+		try {
+			while ((len = stream.read(buff)) != -1) {
+				out.write(buff, 0, len);
+			}
+		} catch (IOException e) {
+			throw new MagmaException(e, "Error copying resource to output stream");
+		} finally {
+			try {
+				stream.close();
+			} catch (IOException e) {
+			}
+		}
+	}
+	public void setMimeType(String mimeType) {
+		this.mimeType = mimeType;
+	}
+	
+}

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebHandler.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebHandler.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebHandler.java Mon Oct 20 03:33:37 2008
@@ -74,7 +74,15 @@
 	}
 	
 	public Template getTemplate() {
-		return this.template;
+		if (this.template != null) {
+			return this.template;
+		} else {
+			if (this.getCreatingHandler() != null) {
+				return this.getCreatingHandler().getTemplate();
+			} else {
+				return null;
+			}
+		}
 	}
 	
 	
@@ -102,7 +110,9 @@
 		
 		try {
 			Object ret = rightMethod.invoke(this, params);
-			if (ret instanceof Producer) {
+			if (ret == null) {
+				return null;
+			} else if (ret instanceof Producer) {
 				return (Producer) ret;
 			} else if (ret instanceof WebHandler) {
 				String[] subinfo = prepareSubinfo(info);

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/CompoundHtmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/CompoundHtmlProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/CompoundHtmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/CompoundHtmlProducer.java Mon Oct 20 03:33:37 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.magma.website.producers;
 
+import org.apache.magma.website.Head;
 import org.apache.magma.website.HtmlProducer;
 import org.apache.magma.website.utils.URLRewritingStream;
 
@@ -42,8 +43,9 @@
 	}
 
 	@Override
-	public void head(OutputStream stream) {
+	public void head(Head head) {
 		String prebase = null;
+		OutputStream stream = head.getStream();
 		if (stream instanceof URLRewritingStream) {
 			prebase = ((URLRewritingStream)stream).getBaseurl();
 		}
@@ -51,7 +53,7 @@
 			if (stream instanceof URLRewritingStream) {
 				((URLRewritingStream)stream).setBaseUrl(producer.getBasePath());
 			}
-			producer.head(stream);
+			producer.head(head);
 		}
 		if (prebase != null) {
 			((URLRewritingStream)stream).setBaseUrl(prebase);

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/MockProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/MockProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/MockProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/MockProducer.java Mon Oct 20 03:33:37 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.magma.website.producers;
 
+import org.apache.magma.website.Head;
 import org.apache.magma.website.HtmlProducer;
 
 import java.io.OutputStream;
@@ -32,7 +33,7 @@
 	}
 
 	@Override
-	public void head(OutputStream stream) {
+	public void head(Head head) {
 	}
 
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableHtmlProducerBase.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableHtmlProducerBase.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableHtmlProducerBase.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableHtmlProducerBase.java Mon Oct 20 03:33:37 2008
@@ -44,5 +44,10 @@
 	public void setTemplateName(String name) {
 		parameters.setTemplateName(name);
 	}
+	
+	public ProducerParameters getParameters() {
+		return parameters;
+	}
+	
 
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducer.java Mon Oct 20 03:33:37 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.magma.website.producers;
 
+import java.util.Map;
+
 import org.apache.magma.website.WebHandler;
 
 
@@ -29,4 +31,6 @@
 	
 	public void parametrizeByHandler();
 	
+	public ProducerParameters getParameters();
+	
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducerBase.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducerBase.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducerBase.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/ParametrizableProducerBase.java Mon Oct 20 03:33:37 2008
@@ -40,5 +40,9 @@
 	public void setTemplateName(String name) {
 		parameters.setTemplateName(name);
 	}
+	
+	public ProducerParameters getParameters() {
+		return parameters;
+	}
 
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/StringHtmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/StringHtmlProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/StringHtmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/StringHtmlProducer.java Mon Oct 20 03:33:37 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.magma.website.producers;
 
+import org.apache.magma.website.Head;
 import org.apache.magma.website.HtmlProducer;
 
 import java.io.OutputStream;
@@ -40,8 +41,8 @@
 	
 	
 	@Override
-	public void head(OutputStream stream) {
-		if (heads != null) stream.write(heads.getBytes("UTF-8"));
+	public void head(Head head) {
+		if (heads != null) head.addString(heads);
 	}
 
 	@Override

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/XmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/XmlProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/XmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/XmlProducer.java Mon Oct 20 03:33:37 2008
@@ -17,6 +17,7 @@
 package org.apache.magma.website.producers;
 
 import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.Head;
 import org.apache.magma.website.Producer;
 
 import java.io.IOException;
@@ -56,7 +57,7 @@
 		}
 	}
 
-	public void head(OutputStream stream) {
+	public void head(Head head) {
 	}
 
 }

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/Template.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/Template.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/Template.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/Template.java Mon Oct 20 03:33:37 2008
@@ -17,6 +17,7 @@
 package org.apache.magma.website.templating;
 
 import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.Head;
 import org.apache.magma.website.HtmlProducer;
 import org.apache.magma.website.RootWebHandler;
 import org.apache.magma.website.WebHandler;
@@ -48,14 +49,14 @@
 	}
 	
 	protected void ifNeeded(Class<? extends WebHandler> clazz) {
-		if (current.isFrom(clazz)) {
+		if (current != null && current.isFrom(clazz)) {
 			addInZone(current);
 			current = null;
 		}
 	}
 	
 	protected void byDefault(Class<? extends WebHandler> clazz, HtmlProducer def) {
-		if (current.isFrom(clazz)) {
+		if (current != null && current.isFrom(clazz)) {
 			addInZone(current);
 			current = null;
 		} else {
@@ -118,22 +119,25 @@
 		
 		try {
 			URLRewritingStream rewrite = new URLRewritingStream(stream, baseurl);
+			rewrite.setTemplatePrefix("template/" + getClass().getPackage().getName() + "/");
 			OutputStreamWriter osw = new OutputStreamWriter(rewrite, Charset.forName("UTF-8"));
 			for (int i = 0; i < td.zones.size(); i++) {
-				rewrite.setBaseUrl("template/" + getClass().getPackage().getName() + "/");
+				rewrite.setBaseUrl(rewrite.getTemplatePrefix());
 				osw.write(td.raws.get(i));
 				osw.flush();
 				String zone = td.zones.get(i);
 				if (zone == null) {
+					Head head = new Head(rewrite);
 					for (List<HtmlProducer> producers : zones.values()) {
 						for (HtmlProducer producer : producers) {
 							if (producer != null) {
 								rewrite.setBaseUrl(producer.getBasePath());
-								producer.head(rewrite);
+								producer.head(head);
 								rewrite.flush();
 							}
 						}
 					}
+					head.finished();
 				} else {
 					List<HtmlProducer> producers = zones.get(zone);
 					if (producers != null) {
@@ -151,7 +155,7 @@
 					}
 				}
 			}
-			rewrite.setBaseUrl("template/" + getClass().getPackage().getName() + "/");
+			rewrite.setBaseUrl(rewrite.getTemplatePrefix());
 			osw.write(td.raws.get(td.zones.size()));
 			osw.flush();
 			rewrite.flush();
@@ -178,9 +182,6 @@
 	}
 
 
-	public void head(OutputStream stream) {
-	}
-
 	public void setPrevious(PreviousGiver previousMain) {
 		this.previous = previousMain;
 	}

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java Mon Oct 20 03:33:37 2008
@@ -17,8 +17,11 @@
 package org.apache.magma.website.utils;
 
 import java.beans.Introspector;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -27,6 +30,12 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.magma.basics.MagmaException;
 import org.apache.magma.beans.BeanData;
 import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.MagmaBeanSupport;
@@ -38,11 +47,11 @@
 
 public class Binder {
 
-	public static void bind(MagmaBeanSupport h, HttpServletRequest request, String unique) {
+	public static void bind(MagmaBeanSupport h, HttpServletRequest request, String unique, Map<String, FileItem[]> uploads) {
 		BeanHandler handler = h.handler();
 		BeanData data = h.beanData();
 		Cookie[] cookies = null;
-		
+
 		Set<String> propertyNames = data.getPropertyNames();
 		for (String name : propertyNames) {
 			PropertyInfo property = data.getProperty(name);
@@ -78,16 +87,46 @@
 				}				
 			} else if (name.startsWith("param")) {
 				name = fromJavaName(name, 5, unique);
-				String val = request.getParameter(name);
-				handler.setStringValue(property.getName(), val);
+				if (uploads != null) {
+					FileItem[] item = uploads.get(name);
+					if (item != null) {
+						if (item[0].isFormField()) {
+							try {
+								handler.setStringValue(property.getName(), item[0].getString("UTF-8"));
+							} catch (UnsupportedEncodingException e) {}
+						} else {
+							handler.setValue(property.getName(), item[0]);
+						}
+					}
+				} else {
+					String val = request.getParameter(name);
+					if (val != null && val.length() > 0) handler.setStringValue(property.getName(), val);
+				}
 			} else if (name.startsWith("request")) {
 				name = fromJavaName(name, 7, unique);
 				Object attribute = request.getAttribute(name);
 				handler.setValue(property.getName(), attribute);
 			} else if (name.startsWith("all")) {
 				if (name.equals("allParams")) {
-					Object attr = request.getParameterMap();
-					handler.setValue(name, attr);
+					if (uploads == null) {
+						Object attr = request.getParameterMap();
+						handler.setValue(name, attr);
+					} else {
+						Map<String, String[]> params = new HashMap<String, String[]>();
+						for (Map.Entry<String, FileItem[]> entry : uploads.entrySet()) {
+							FileItem[] items = entry.getValue();
+							if (items[0].isFormField()) {
+								String[] vals = new String[items.length];
+								for (int i = 0; i < vals.length; i++) {
+									try {
+										vals[i] = items[i].getString("UTF-8");
+									} catch (UnsupportedEncodingException e) {}
+								}
+								params.put(entry.getKey(), vals);
+							}
+						}
+						handler.setValue(name, params);
+					}
 				}
 			}
 		}

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/URLRewritingStream.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/URLRewritingStream.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/URLRewritingStream.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/URLRewritingStream.java Mon Oct 20 03:33:37 2008
@@ -30,11 +30,12 @@
 	protected boolean inside = false;
 	protected boolean buffering = false;
 	protected int matched = -1;
-	protected int[] intbuff = new int[10];
+	protected int[] intbuff = new int[30];
 	protected int intbuffpos = 0;
 	protected String commonPrefix;
 	protected String baseurl;
 	private boolean injecting = false;
+	protected String templatePrefix;
 	
 	public URLRewritingStream(OutputStream out, String commonPrefix) {
 		super(out);
@@ -100,23 +101,27 @@
 	private final void inject() throws IOException {
 		injecting  = true;
 		try {
+			int stpos = 0; 
 			boolean chop = intbuff[0] == '\'' || intbuff[0] == '"';
 			if (chop) {
 				super.write(intbuff[0]);
+				stpos++;
 			}
 			String accontent = new String(intbuff, chop ? 1 : 0, intbuffpos);
-			if (!accontent.startsWith("/") && !accontent.startsWith("http:/")) {
-				byte[] bytes = null;
-				if (this.commonPrefix != null) {
-					bytes = this.commonPrefix.getBytes();
-					super.write(bytes);
-				}
-				if (this.baseurl != null) {
-					bytes = this.baseurl.getBytes();
-					super.write(bytes);
+			if (!accontent.startsWith("/") && !accontent.startsWith("http:/") && !accontent.startsWith("#")) {
+				if (accontent.startsWith("magma:")) {
+					send(this.commonPrefix);
+					stpos+=7;
+					if (accontent.startsWith("magma:template")) {
+						stpos += 8;
+						send(this.templatePrefix);
+					}
+				} else {
+					send(this.commonPrefix);
+					send(this.baseurl);
 				}
 			}
-			for (int i = chop ? 1 : 0 ; i < intbuffpos ; i++) {
+			for (int i = stpos ; i < intbuffpos ; i++) {
 			    super.write(intbuff[i]);
 			}
 			intbuffpos = 0;
@@ -125,6 +130,12 @@
 		}
 	}
 
+	private void send(String segment) throws IOException {
+		if (segment != null) {
+			super.write(segment.getBytes());
+		}
+	}
+
 	/**
 	 * Checks if the given byte is part of the keys at the right position. In that case,
 	 * b is added to the buffer. If the total length of one key is reached, the buffer is checked
@@ -170,4 +181,12 @@
 		this.commonPrefix = commonPrefix;
 	}
 
+	public String getTemplatePrefix() {
+		return templatePrefix;
+	}
+
+	public void setTemplatePrefix(String templatePrefix) {
+		this.templatePrefix = templatePrefix;
+	}
+
 }

Added: labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/falseAbsolute.css
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/falseAbsolute.css?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/falseAbsolute.css (added)
+++ labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/falseAbsolute.css Mon Oct 20 03:33:37 2008
@@ -0,0 +1,11 @@
+.fa-line {
+	display:block;
+	float:left;
+	position:relative;
+	width:100%;
+}
+.fa-item {
+	float:left;
+	left:100%;
+	position:relative;
+}
\ No newline at end of file

Added: labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/onload.js
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/onload.js?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/onload.js (added)
+++ labs/magma/trunk/foundation-website/src/main/resources/org/apache/magma/website/onload.js Mon Oct 20 03:33:37 2008
@@ -0,0 +1,11 @@
+function addOnload(func) {
+    var preon = window.onload;
+    if (!preon) {
+    	window.onload = func;
+    } else {
+    	window.onload = function() { 
+    		window.setTimeout(preon,1);
+    		window.setTimeout(func,1);
+    	}
+    }
+}
\ No newline at end of file

Added: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java?rev=706208&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java (added)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java Mon Oct 20 03:33:37 2008
@@ -0,0 +1,93 @@
+/**
+ * 
+ */
+package org.apache.magma.website;
+
+import java.io.IOException;
+import java.util.Locale;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.magma.website.teststuff.Person;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+
+public class DefaultExpectations extends Expectations {
+
+	public Mockery mock = new Mockery();		
+	
+	public HttpServletRequest req = mock.mock(HttpServletRequest.class);
+	public HttpServletResponse resp = mock.mock(HttpServletResponse.class);
+	public HttpSession session = mock.mock(HttpSession.class);
+	public Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
+	public Cookie[] cookies = new Cookie[] { loggedinCookie };
+	public Person person = Person.getPerson("Simone");
+	public MockServletOutputStream out = new MockServletOutputStream();
+	
+	private String path = null;
+	public Dispatch disp = null;
+
+	public DefaultExpectations() {
+		
+	}
+	
+	public void setupDefaults(String path) throws IOException {
+		this.path = path;
+		allowing(req).getMethod(); will(returnValue("GET"));
+		allowing(req).getLocale(); will(returnValue(Locale.ITALY));
+		one(req).getPathInfo(); will(returnValue(path));
+		atMost(1).of(req).getContextPath(); will(returnValue(""));
+		atMost(1).of(req).getServletPath(); will(returnValue(""));
+		allowing(req).getSession(); will(returnValue(session));
+		allowing(req).getCookies(); will(returnValue(cookies));
+		allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
+		one(req).setAttribute("__magma_url",path);
+		allowing(req).getAttribute("__magma_url"); will(returnValue(path));
+		atMost(1).of(session).getAttribute("__magma_lastmain"); will(returnValue(null));			
+		atMost(1).of(session).setAttribute("__magma_lastmain",path);
+		allowing(session).getAttribute("name"); will(returnValue("test name"));
+		allowing(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
+		allowing(req).getParameter("page"); will(returnValue("1"));
+		allowing(req).getAttribute("user"); will(returnValue(person));
+		atMost(1).of(session).setAttribute("name", "test name");
+		atMost(1).of(resp).setHeader("User-Agent", "Mozilla");
+		atMost(1).of(resp).addCookie(with(any(Cookie.class)));
+		atMost(1).of(req).setAttribute("user", person);
+		atMost(1).of(resp).setContentType("text/html; charset=utf-8");
+		allowing(resp).getOutputStream(); will(returnValue(out));
+	}
+	
+	
+	public void setupMinimal(String path) throws IOException {
+		allowing(req).getMethod(); will(returnValue("GET"));
+		allowing(req).getLocale(); will(returnValue(Locale.ITALY));
+		one(req).getPathInfo(); will(returnValue(path));
+		one(req).getContextPath(); will(returnValue(""));
+		one(req).getServletPath(); will(returnValue(""));			
+		allowing(req).getSession(); will(returnValue(session));
+		allowing(req).getAttribute("__magma_url"); will(returnValue(path));
+		one(req).setAttribute("__magma_url",path);
+		atMost(1).of(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+		allowing(session).setAttribute("__magma_lastmain", path);
+		one(resp).setContentType("text/html; charset=utf-8");			
+		allowing(resp).getOutputStream(); will(returnValue(out));
+	}
+	
+	
+	public Dispatch start() throws Exception {
+		mock.checking(this);
+		if (this.disp == null) {
+			disp = new Dispatch();
+		}
+		disp.doGet(req, resp);
+		assertAllOk();
+		return disp;
+	}
+
+	public void assertAllOk() {
+		mock.assertIsSatisfied();			
+	}
+}
\ No newline at end of file

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java Mon Oct 20 03:33:37 2008
@@ -17,7 +17,6 @@
 package org.apache.magma.website;
 
 import java.io.ByteArrayOutputStream;
-import java.util.Locale;
 import java.util.Map;
 
 import org.apache.magma.website.producers.ProducerParameters;
@@ -25,59 +24,23 @@
 import org.apache.magma.website.teststuff.FakeHtmlProducer;
 import org.apache.magma.website.teststuff.SimpleWebHandler;
 
+import javax.servlet.ServletException;
 import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
 
-import org.jmock.Expectations;
-import org.jmock.Mockery;
 import org.junit.Test;
+
+import sun.reflect.generics.tree.BottomSignature;
 import static org.junit.Assert.*;
 import static org.hamcrest.Matchers.*;
 
 public class WebHandlerCycleTest {
-
+	
 	@Test
 	public void findAndbind() throws Exception {
-		Mockery mock = new Mockery();
 		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/report"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/report");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/report"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));			
-			one(session).setAttribute("__magma_lastmain","/test/report");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
-			one(session).setAttribute("name", "test name");
-			one(resp).setHeader("User-Agent", "Mozilla");
-			one(resp).addCookie(with(any(Cookie.class)));
-			one(req).setAttribute("user", person);
-			one(resp).setContentType("text/html; charset=utf-8");
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();
+		DefaultExpectations def = new DefaultExpectations();
+		def.setupDefaults("/test/report");
+		Dispatch disp = def.start();
 		
 		FakeHtmlProducer prod = FakeHtmlProducer.getInstance();
 		assertNotNull(prod);
@@ -94,7 +57,7 @@
 		assertEquals("Mozilla", params[1]);
 		assertEquals(1, ((Integer)params[2]).intValue());
 		assertEquals("yesterday", params[3]);
-		assertSame(person, params[4]);
+		assertSame(def.person, params[4]);
 		
 		ProducerParameters parameters = prod.getHPParameters();
 		Map<String, Object> parmap = parameters.getParameters();
@@ -114,44 +77,13 @@
 	 */
 	@Test
 	public void findAndbindOnlyOnce() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/resend"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/resend");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/resend"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));			
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("__magma_lastmain","/test/report");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
 			one(session).setAttribute("name", "resend");
-			one(resp).setHeader("User-Agent", "Mozilla");
-			one(resp).addCookie(with(any(Cookie.class)));
-			one(req).setAttribute("user", person);
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();
+			
+		}};
+		def.setupDefaults("/test/resend");
+		Dispatch disp = def.start();
 		
 		FakeHtmlProducer prod = FakeHtmlProducer.getInstance();
 		assertNotNull(prod);
@@ -168,7 +100,7 @@
 		assertEquals("Mozilla", params[1]);
 		assertEquals(1, ((Integer)params[2]).intValue());
 		assertEquals("yesterday", params[3]);
-		assertSame(person, params[4]);
+		assertSame(def.person, params[4]);
 		
 		ProducerParameters parameters = prod.getHPParameters();
 		Map<String, Object> parmap = parameters.getParameters();
@@ -185,45 +117,16 @@
 	 */
 	@Test
 	public void findAndbindOnlyOnceEvenOnNonDoMethods() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/resend2"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/resend2");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/resend2"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));			
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("__magma_lastmain","/test/report");
-			allowing(session).getAttribute("name"); will(returnValue("test name"));
-			allowing(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			allowing(req).getParameter("page"); will(returnValue("1"));
-			allowing(req).getAttribute("user"); will(returnValue(person));
-			one(session).setAttribute("name", "test name");
 			one(session).setAttribute("name", "resend2");
+			one(session).setAttribute("name", "test name");
 			allowing(resp).setHeader("User-Agent", "Mozilla");
 			allowing(resp).addCookie(with(any(Cookie.class)));
-			allowing(req).setAttribute("user", person);
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();
+			allowing(req).setAttribute("user", person);			
+		}};
+		def.setupDefaults("/test/resend2");
+		Dispatch disp = def.start();
 		
 		FakeHtmlProducer prod = FakeHtmlProducer.getInstance();
 		assertNotNull(prod);
@@ -240,7 +143,7 @@
 		assertEquals("Mozilla", params[1]);
 		assertEquals(1, ((Integer)params[2]).intValue());
 		assertEquals("yesterday", params[3]);
-		assertSame(person, params[4]);
+		assertSame(def.person, params[4]);
 		
 		ProducerParameters parameters = prod.getHPParameters();
 		Map<String, Object> parmap = parameters.getParameters();
@@ -253,101 +156,36 @@
 	
 	@Test
 	public void findAndChange() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/change"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/change");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/change"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
-			one(session).setAttribute("__magma_lastmain","/test/change");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("name", "another name");
 			one(resp).setHeader("User-Agent", "M$IE");
-			one(resp).addCookie(with(any(Cookie.class)));
 			one(req).setAttribute("user", Person.getPerson("Massimo"));
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+		}};
+		def.setupDefaults("/test/change");
+		def.start();
 	}
 	
 	@Test
 	public void findAndRemove() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/remove"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/remove");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/remove"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
-			one(session).setAttribute("__magma_lastmain","/test/remove");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).removeAttribute("name");
 			never(resp).setHeader(with(equal("User-Agent")), with(any(String.class)));
-			one(resp).addCookie(with(any(Cookie.class)));
 			one(req).setAttribute("cookieInvalidloggedIn", true);			
 			one(req).removeAttribute("user");
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+		}};
+		def.setupDefaults("/test/remove");
+		def.start();
 	}
 	
 	@Test
 	public void parametrizedSimple() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
+		DefaultExpectations def = new DefaultExpectations() {{
+			one(session).setAttribute("__magma_lastmain","/test/named-ciao");
+			one(session).setAttribute("name", "ciao");			
+		}};
+		def.setupDefaults("/test/named/ciao");
+		Dispatch disp = def.start();
+		/*
 		mock.checking(new Expectations() {{
 			one(req).getLocale(); will(returnValue(Locale.ITALY));
 			one(req).getPathInfo(); will(returnValue("/test/named/ciao"));
@@ -371,26 +209,18 @@
 			one(resp).setContentType("text/html; charset=utf-8");			
 			allowing(resp).getOutputStream(); will(returnValue(out));
 		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();
-		
+		*/
 	}
 	
 	@Test
 	public void parametrizedObject() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
+		DefaultExpectations def = new DefaultExpectations() {{
+			one(session).setAttribute("__magma_lastmain","/test/userEntered-Arianna");
+			one(req).setAttribute("user", Person.getPerson("Arianna"));
+		}};
+		def.setupDefaults("/test/userEntered/Arianna");
+		Dispatch disp = def.start();
+		/*
 		mock.checking(new Expectations() {{
 			one(req).getLocale(); will(returnValue(Locale.ITALY));
 			one(req).getPathInfo(); will(returnValue("/test/userEntered/Arianna"));
@@ -414,55 +244,16 @@
 			one(resp).setContentType("text/html; charset=utf-8");			
 			allowing(resp).getOutputStream(); will(returnValue(out));
 		}});
-		
-		Dispatch disp = new Dispatch();
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
-		
+		*/
 	}
 	
 	@Test
 	public void parametrizedPrimitive() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/goToPage/5"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));	
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/goToPage/5");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/goToPage/5"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("__magma_lastmain","/test/goToPage-5");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
-			one(session).setAttribute("name", "test name");
-			one(resp).setHeader("User-Agent", "Mozilla");
-			one(resp).addCookie(with(any(Cookie.class)));
-			one(req).setAttribute("user", person);
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
-		
+		}};
+		def.setupDefaults("/test/goToPage/5");
+		Dispatch disp = def.start();
 		Object[] params = FakeHtmlProducer.getInstance().getParams();
 		assertNotNull(params);
 		assertEquals(5, ((Integer)params[0]).intValue());
@@ -470,98 +261,33 @@
 	
 	@Test
 	public void parametrizedObjectMissing() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/userEntered"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/userEntered");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/userEntered"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("__magma_lastmain","/test/userEntered-");
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
-			one(session).setAttribute("name", "test name");
-			one(resp).setHeader("User-Agent", "Mozilla");
-			one(resp).addCookie(with(any(Cookie.class)));
 			one(req).removeAttribute("user");
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+		}};
+		def.setupDefaults("/test/userEntered");
+		Dispatch disp = def.start();
 	}
 	
 	@Test
 	public void fetchingResource() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/test/resource.txt"));
-			allowing(req).getSession(); will(returnValue(session));
-			allowing(req).getCookies(); will(returnValue(cookies));
-			allowing(req).getAttribute("cookieInvalidloggedIn"); will(returnValue(null));
-			one(req).setAttribute("__magma_url","/test/resource.txt");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/resource.txt"));
-			one(session).getAttribute("name"); will(returnValue("test name"));
-			one(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
-			one(req).getParameter("page"); will(returnValue("1"));
-			one(req).getAttribute("user"); will(returnValue(person));
-			one(session).setAttribute("name", "test name");
-			one(resp).setHeader("User-Agent", "Mozilla");
-			one(resp).addCookie(with(any(Cookie.class)));
-			one(req).setAttribute("user", person);
-			one(resp).setContentType("text/plain; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
+		DefaultExpectations def = new DefaultExpectations() {{
+			one(resp).setContentType(with(allOf(containsString("text/plain"), containsString("charset=utf-8"))));			
+		}};
+		def.setupDefaults("/test/resource.txt");
+		Dispatch disp = def.start();
 		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
-
-		assertEquals("This is a sample resource", out.toString());
+		assertEquals("This is a sample resource", def.out.toString());
 	}
 	
 	@Test
 	public void unrepeatable() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
+		DefaultExpectations def = new DefaultExpectations() {{
+			never(session).setAttribute("__magma_lastmain", any(String.class));									
+		}};
+		def.setupDefaults("/test/neverRepeat");
+		Dispatch disp = def.start();
+		/*
 		mock.checking(new Expectations() {{
 			one(req).getLocale(); will(returnValue(Locale.ITALY));
 			one(req).getPathInfo(); will(returnValue("/test/neverRepeat"));
@@ -584,25 +310,18 @@
 			one(resp).setContentType("text/html; charset=utf-8");			
 			allowing(resp).getOutputStream(); will(returnValue(out));
 		}});
-		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+		*/
 	}
 	
 	@Test
 	public void unrepeatableCall() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
-		final Cookie[] cookies = new Cookie[] { loggedinCookie };
-		final Person person = Person.getPerson("Simone");
-		final MockServletOutputStream out = new MockServletOutputStream();
+		DefaultExpectations def = new DefaultExpectations() {{
+			never(session).setAttribute("__magma_lastmain", any(String.class));									
+		}};
+		def.setupDefaults("/test/neverRepeatCall");
+		Dispatch disp = def.start();
 		
+		/*
 		mock.checking(new Expectations() {{
 			one(req).getLocale(); will(returnValue(Locale.ITALY));
 			one(req).getPathInfo(); will(returnValue("/test/neverRepeatCall"));
@@ -625,42 +344,17 @@
 			one(resp).setContentType("text/html; charset=utf-8");			
 			allowing(resp).getOutputStream(); will(returnValue(out));
 		}});
-		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+		*/
 	}	
 
 	@Test
 	public void sessionConversion() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			one(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/testSession/setUser"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			one(session).getAttribute("user"); will(returnValue("Massimo"));			
-			one(req).setAttribute("__magma_url","/testSession/setUser");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/testSession/setUser"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("user", "Simone");
-			one(session).setAttribute("__magma_lastmain", "/testSession/setUser");
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-		
-		Dispatch disp = new Dispatch();		
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();		
+			one(session).getAttribute("user"); will(returnValue("Massimo"));			
+		}};
+		def.setupMinimal("/testSession/setUser");
+		Dispatch disp = def.start();		
 	}	
 	
 }

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/templating/TemplatingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/templating/TemplatingTest.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/templating/TemplatingTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/templating/TemplatingTest.java Mon Oct 20 03:33:37 2008
@@ -20,6 +20,7 @@
 
 import java.util.Locale;
 
+import org.apache.magma.website.DefaultExpectations;
 import org.apache.magma.website.Dispatch;
 import org.apache.magma.website.MockServletOutputStream;
 import org.apache.magma.website.UnitTestDispatch;
@@ -39,70 +40,32 @@
 
 	@Test
 	public void simpleTemplateClean() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			allowing(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/testSession/setUser"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			one(session).getAttribute("user"); will(returnValue("Massimo"));			
-			one(req).setAttribute("__magma_url","/testSession/setUser");
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/testSession/setUser"));
-			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).setAttribute("user", "Simone");
-			one(session).setAttribute("__magma_lastmain", "/testSession/setUser");	
-			one(resp).setContentType("text/html; charset=utf-8");
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-
-		
+			one(session).getAttribute("user"); will(returnValue("Massimo"));						
+		}};
 		UnitTestDispatch disp = new UnitTestDispatch();
 		disp.setTemplate(new SimpleTemplate());
-		disp.doGet(req, resp);
+		def.disp = disp;
+		def.setupMinimal("/testSession/setUser");
+		def.start();
 		
-		mock.assertIsSatisfied();
-
-		assertStructure(out.toString(), "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxSearch]", "AuxiliaryWebHandler.doAuxPoll]");
+		assertStructure(def.out.toString(), "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxSearch]", "AuxiliaryWebHandler.doAuxPoll]");
 	}	
 
 	@Test
 	public void simpleTemplateWithReplacedAuxiliary() throws Exception {
-		Mockery mock = new Mockery();
-		
-		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
-		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
-		final HttpSession session = mock.mock(HttpSession.class);
-		final MockServletOutputStream out = new MockServletOutputStream();
-		
-		mock.checking(new Expectations() {{
-			allowing(req).getLocale(); will(returnValue(Locale.ITALY));
-			one(req).getPathInfo(); will(returnValue("/aux/auxPollResponse"));
-			one(req).getContextPath(); will(returnValue(""));
-			one(req).getServletPath(); will(returnValue(""));			
-			allowing(req).getSession(); will(returnValue(session));
-			one(session).getAttribute("user"); will(returnValue("Massimo"));			
-			allowing(req).getAttribute("__magma_url"); will(returnValue("/aux/auxPollResponse"));
-			one(req).setAttribute("__magma_url","/aux/auxPollResponse");
+		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).getAttribute("__magma_lastmain"); will(returnValue("/testSession/setUser"));
 			one(session).setAttribute("user", "Simone");
-			one(resp).setContentType("text/html; charset=utf-8");			
-			allowing(resp).getOutputStream(); will(returnValue(out));
-		}});
-
-		
+			one(session).getAttribute("user"); will(returnValue("Massimo"));						
+		}};
 		UnitTestDispatch disp = new UnitTestDispatch();
 		disp.setTemplate(new SimpleTemplate());
-		disp.doGet(req, resp);
-		
-		mock.assertIsSatisfied();
+		def.disp = disp;
+		def.setupMinimal("/aux/auxPollResponse");
+		def.start();
 		
-		assertStructure(out.toString(), "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxSearch]", "AuxiliaryWebHandler.doAuxPollResponse]");
+		assertStructure(def.out.toString(), "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxSearch]", "AuxiliaryWebHandler.doAuxPollResponse]");
 	}
 }

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/FakeHtmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/FakeHtmlProducer.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/FakeHtmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/FakeHtmlProducer.java Mon Oct 20 03:33:37 2008
@@ -17,6 +17,7 @@
 package org.apache.magma.website.teststuff;
 
 import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.Head;
 import org.apache.magma.website.HtmlProducer;
 import org.apache.magma.website.producers.ParametrizableHtmlProducerBase;
 import org.apache.magma.website.producers.ParametrizableProducer;
@@ -63,7 +64,7 @@
 		return parameters;
 	}
 
-	public void head(OutputStream stream) {
+	public void head(Head head) {
 	}
 
 }

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTests.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTests.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTests.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTests.java Mon Oct 20 03:33:37 2008
@@ -32,17 +32,22 @@
 public class RewritingTests {
 	@DataPoint
 	public static final String[] 
-	SET1 = {"<a href=\"ciao\">test</a>", "<a href=\"/test/ciao\">test</a>"},
-	SET2 = {"<a href=ciao>test</a>", "<a href=/test/ciao>test</a>"},
+	SET1 = {"<a href=\"ciao\">test</a>", "<a href=\"/context/current/place/ciao\">test</a>"},
+	SET2 = {"<a href=ciao>test</a>", "<a href=/context/current/place/ciao>test</a>"},
 	SET3 = {"<a href=\"/ciao\">test</a>", "<a href=\"/ciao\">test</a>"},
 	SET4 = {"<a href=\"http://ciao\">test</a>", "<a href=\"http://ciao\">test</a>"},
-	SET5 = {"<a href=\"ciaociaociaociao?src=ciao\">test</a>", "<a href=\"/test/ciaociaociaociao?src=ciao\">test</a>"},
-	SET6 = {"<a src=\"ciaociaociaociao\" href=\"ciao\">test</a>", "<a src=\"/test/ciaociaociaociao\" href=\"ciao\">test</a>"};
-	
+	SET5 = {"<a href=\"ciaociaociaociao?src=ciao\">test</a>", "<a href=\"/context/current/place/ciaociaociaociao?src=ciao\">test</a>"},
+	SET6 = {"<a src=\"ciaociaociaociao\" href=\"ciao\">test</a>", "<a src=\"/context/current/place/ciaociaociaociao\" href=\"ciao\">test</a>"},
+	SET7 = {"<link href=\"magma:template/subtest.css\"/>", "<link href=\"/context/template/dummy/subtest.css\"/>"},
+	SET8 = {"<link href=\"magma:/somewhere/else\"/>", "<link href=\"/context/somewhere/else\"/>"},
+	SET9 = {"<link href=\"#internal\"/>", "<link href=\"#internal\"/>"};
+	 	
 	@Theory
 	public void rewriteTest(String[] set) throws Exception {
 		ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		URLRewritingStream urs = new URLRewritingStream(baos, "/test/");
+		URLRewritingStream urs = new URLRewritingStream(baos, "/context/");
+		urs.setBaseUrl("current/place/");
+		urs.setTemplatePrefix("template/dummy/");
 		urs.write(set[0].getBytes());
 		String res = baos.toString();
 		try {

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java?rev=706208&r1=706207&r2=706208&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java Mon Oct 20 03:33:37 2008
@@ -39,34 +39,42 @@
 		long elapsedvoid = 0;
 		long elapsed = 0;
 		
-		for (int j = 0; j < 100; j++) {
-			vs = new ByteArrayOutputStream();
-			start = System.currentTimeMillis();
+		// Seeding JIT
+		for (int j = 0; j < 500; j++) {
+			vs = new ByteArrayOutputStream(100000);
 			for (int i = 0; i < 100000; i++) {
 				vs.write('a');
 			}
 		}
-		for (int j = 0; j < 100; j++) {
-			vs = new ByteArrayOutputStream();
+		for (int j = 0; j < 500; j++) {
+			vs = new ByteArrayOutputStream(100000);
 			URLRewritingStream urs = new URLRewritingStream(vs, "/test/");
-			start = System.currentTimeMillis();
 			for (int i = 0; i < 100000; i++) {
 				urs.write('a');
 			}
 		}
 		
+		// Trying to create same ram conditions
+		System.gc();
+		Thread.sleep(100);
+		System.gc();
+		Thread.sleep(100);
 		start = System.currentTimeMillis();
 		for (int j = 0; j < 500; j++) {
-			vs = new ByteArrayOutputStream();
+			vs = new ByteArrayOutputStream(100000);
 			for (int i = 0; i < 100000; i++) {
 				vs.write('a');
 			}
 		}
 		elapsedvoid = System.currentTimeMillis() - start;
-		
+
+		System.gc();
+		Thread.sleep(100);
+		System.gc();
+		Thread.sleep(100);		
 		start = System.currentTimeMillis();
 		for (int j = 0; j < 500; j++) {
-			vs = new ByteArrayOutputStream();
+			vs = new ByteArrayOutputStream(100000);
 			URLRewritingStream urs = new URLRewritingStream(vs, "/test/");
 			for (int i = 0; i < 100000; i++) {
 				urs.write('a');
@@ -76,7 +84,7 @@
 		
 		float rate = ((float)elapsed/(float)elapsedvoid);
 		System.out.println(elapsed + ":" + elapsedvoid + " - " + rate);
-		assertTrue("Bad rate against ByteArrayOutputStream : " + rate, rate < 2);
+		assertTrue("Bad rate against ByteArrayOutputStream : " + rate, rate < 5);
 	}
 	
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org