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