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/28 18:17:03 UTC

svn commit: r708612 - in /labs/magma/trunk/foundation-website/src: main/java/org/apache/magma/website/ main/java/org/apache/magma/website/templating/ test/java/org/apache/magma/website/templating/ test/java/org/apache/magma/website/teststuff/ test/reso...

Author: simoneg
Date: Tue Oct 28 10:17:03 2008
New Revision: 708612

URL: http://svn.apache.org/viewvc?rev=708612&view=rev
Log:
LABS-193 : refixed

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/templating/Template.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/SimpleSecondTemplate.java
    labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/second.html

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=708612&r1=708611&r2=708612&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 Tue Oct 28 10:17:03 2008
@@ -93,8 +93,10 @@
 		if (req.getServletPath().length() > 0) {
 			mybaseurl += "/" + req.getServletPath();
 		}
-		
+
+		// Try to determine if current request is considered a main or not
 		HttpSession session = req.getSession();
+		boolean validTemplate = false;
 		Template t = producer.getTemplate();
 		if (t == null) {
 			Class<Template> tplcl = (Class<Template>) session.getAttribute("__magma_lasttemplate");
@@ -109,37 +111,48 @@
 			}
 			if (t == null) {
 				t = getDefaultTemplate();
+				validTemplate = true;
 			}
+		} else {
+			validTemplate = true;
 		}
-		session.setAttribute("__magma_lasttemplate", t.getClass());
 		t.setCurrent(producer);
 		
 		final String last = (String) session.getAttribute("__magma_lastmain");
-		if (last != null) {
-			t.setPrevious(new PreviousGiver() {
-				public HtmlProducer getPrevious() {
-					try {
-						Producer prod = findProducer(last);
-						if (prod != null && prod instanceof HtmlProducer) {
-							return (HtmlProducer) prod;
-						}
-					} catch (Exception e) {
-						// TODO log the exception
+		PreviousGiver giver = new PreviousGiver() {
+			public HtmlProducer getPrevious() {
+				try {
+					Producer prod = findProducer(last);
+					if (prod != null && prod instanceof HtmlProducer) {
+						return (HtmlProducer) prod;
 					}
-					return null;
+				} catch (Exception e) {
+					// TODO log the exception
 				}
-			});
-		}
+				return null;
+			}
+		};		
+		t.setPrevious(giver);		
+		t.parse();
 		
+		if (!validTemplate && t.wasMain()) {
+			t = getDefaultTemplate();
+			t.setCurrent(producer);
+			t.setPrevious(null);
+			t.setForceMain(true);
+			t.parse();
+		}
+
 		try {
 			t.produce(mybaseurl, resp.getOutputStream());
 		} catch (IOException e) {
 			throw new MagmaException(e, "Error getting servlet output stream");
 		}
-		System.out.println("Producer has a complete path of " + producer.getCompletePath());
 		if (t.wasMain() && producer.getCompletePath() != null) {
 			session.setAttribute("__magma_lastmain", producer.getCompletePath());			
-		}
+			session.setAttribute("__magma_lasttemplate", t.getClass());
+		}		
+		System.out.println("Producer has a complete path of " + producer.getCompletePath());
 	}
 	
 	public Template getDefaultTemplate() {

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=708612&r1=708611&r2=708612&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 Tue Oct 28 10:17:03 2008
@@ -40,9 +40,11 @@
 	protected String fileName = "template.html";
 	protected HtmlProducer current = null;
 	protected PreviousGiver previous = null;
+	protected boolean forceMain = false;
 	
 	private String currentZone = null;
 	private Map<String, List<HtmlProducer>> zones = new HashMap<String, List<HtmlProducer>>();
+	private TemplateData data;
 	
 	protected void always(HtmlProducer producer) {
 		addInZone(producer);
@@ -50,15 +52,25 @@
 	
 	protected void ifNeeded(Class<? extends WebHandler> clazz) {
 		if (current != null && current.isFrom(clazz)) {
-			addInZone(current);
-			current = null;
+			if (forceMain && previous == null) {
+				// Skip the auxiliary, cause we have to consider it as a main
+				// TODO log this? it could be a problem.
+			} else {
+				addInZone(current);
+				current = null;
+			}
 		}
 	}
 	
 	protected void byDefault(Class<? extends WebHandler> clazz, HtmlProducer def) {
 		if (current != null && current.isFrom(clazz)) {
-			addInZone(current);
-			current = null;
+			if (forceMain && previous == null) {
+				// Skip the auxiliary, cause we have to consider it as a main
+				// TODO log this? it could be a problem.
+			} else {
+				addInZone(current);
+				current = null;
+			}
 		} else {
 			addInZone(def);
 		}
@@ -92,11 +104,11 @@
 	public void setCurrent(HtmlProducer currentMain) {
 		this.current = currentMain;
 	}
-	
-	public void produce(String baseurl, OutputStream stream) {
-		TemplateData td = parseContent();
+
+	public void parse() {
+		data = parseContent();
 		Method[] methods = getClass().getMethods();
-		for (String acZone : td.zones) {
+		for (String acZone : data.zones) {
 			currentZone = acZone;
 			if (currentZone == null) continue;
 			if (currentZone.equals("Main")) continue;
@@ -115,17 +127,19 @@
 		}
 		
 		currentZone = "Main";
-		layoutMain();
-		
+		layoutMain();		
+	}
+	
+	public void produce(String baseurl, OutputStream stream) {
 		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++) {
+			for (int i = 0; i < data.zones.size(); i++) {
 				rewrite.setBaseUrl(rewrite.getTemplatePrefix());
-				osw.write(td.raws.get(i));
+				osw.write(data.raws.get(i));
 				osw.flush();
-				String zone = td.zones.get(i);
+				String zone = data.zones.get(i);
 				if (zone == null) {
 					Head head = new Head(rewrite);
 					for (List<HtmlProducer> producers : zones.values()) {
@@ -156,7 +170,7 @@
 				}
 			}
 			rewrite.setBaseUrl(rewrite.getTemplatePrefix());
-			osw.write(td.raws.get(td.zones.size()));
+			osw.write(data.raws.get(data.zones.size()));
 			osw.flush();
 			rewrite.flush();
 		} catch (IOException e) {
@@ -189,5 +203,9 @@
 	public boolean wasMain() {
 		return current != null;
 	}
+
+	public void setForceMain(boolean forceMain) {
+		this.forceMain = forceMain;
+	}
 	
 }

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=708612&r1=708611&r2=708612&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 Tue Oct 28 10:17:03 2008
@@ -55,7 +55,7 @@
 	}
 
 	@Test
-	public void reusingTemplate() throws Exception {
+	public void notReusingTemplate() throws Exception {
 		DefaultExpectations def = new DefaultExpectations() {{
 			one(session).getAttribute("__magma_lasttemplate"); will(returnValue(SimpleSecondTemplate.class));
 			one(session).setAttribute("user", "Simone");
@@ -67,9 +67,26 @@
 		def.setupMinimal("/testSession/setUser");
 		def.start();
 		
-		assertStructure(def.out.toString(), "Second template");
+		assertStructure(def.out.toString(), "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxSearch]", "AuxiliaryWebHandler.doAuxPoll]");
 	}	
 	
+	@Test
+	public void reusingTemplate() throws Exception {
+		DefaultExpectations def = new DefaultExpectations() {{
+			one(session).getAttribute("__magma_lasttemplate"); will(returnValue(SimpleSecondTemplate.class));
+			one(session).getAttribute("__magma_lastmain"); will(returnValue("/testSession/setUser"));
+			one(session).setAttribute("user", "Simone");
+			one(session).getAttribute("user"); will(returnValue("Massimo"));						
+		}};
+		UnitTestDispatch disp = new UnitTestDispatch();
+		disp.setTemplate(new SimpleTemplate());
+		def.disp = disp;
+		def.setupMinimal("/aux/auxPollResponse");
+		def.start();
+		
+		assertStructure(def.out.toString(), "Second template", "<div id=\"zoneMain", "ConvertedSessionHandler.doSetUser]", "<div id=\"zoneSide", "AuxiliaryWebHandler.doAuxPollResponse]");		
+	}
+	
 
 	@Test
 	public void simpleTemplateWithReplacedAuxiliary() throws Exception {

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleSecondTemplate.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleSecondTemplate.java?rev=708612&r1=708611&r2=708612&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleSecondTemplate.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleSecondTemplate.java Tue Oct 28 10:17:03 2008
@@ -9,6 +9,8 @@
 		super.fileName = "second.html";
 	}
 
-	
+	public void layoutSide() {
+		byDefault(AuxiliaryWebHandler.class, root().handleAux().doAuxPoll());
+	}	
 	
 }

Modified: labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/second.html
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/second.html?rev=708612&r1=708611&r2=708612&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/second.html (original)
+++ labs/magma/trunk/foundation-website/src/test/resources/org/apache/magma/website/teststuff/second.html Tue Oct 28 10:17:03 2008
@@ -21,5 +21,7 @@
     Second template
     <div id="zoneMain">
     </div>
+    <div id="zoneSide">
+    </div>    
   </body>
 </html>



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