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 2009/03/26 20:59:13 UTC
svn commit: r758824 - in /labs/magma/trunk:
foundation-basics/src/main/java/org/apache/magma/basics/startup/
foundation-website/src/main/java/org/apache/magma/website/
foundation-website/src/main/java/org/apache/magma/website/context/
foundation-websit...
Author: simoneg
Date: Thu Mar 26 19:59:12 2009
New Revision: 758824
URL: http://svn.apache.org/viewvc?rev=758824&view=rev
Log:
LABS-325 and LABS-326 : refactored URL rewriting system heavily
Added:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/AddURLRewritingToCycle.aj
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj (contents, props changed)
- copied, changed from r741815, labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebCycling.aj
Removed:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebCycling.aj
Modified:
labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java
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/Head.java
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/context/ContextWebMethods.aj
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/MakeURLRewritingContextBased.aj
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/DefaultExpectations.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/utils/RewritingTest.java
labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamPerformanceTests.java
labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamTest.java
labs/magma/trunk/website-dojo-pack/src/main/java/org/apache/magma/dojo/AddDojoMethodsToHead.aj
labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj
labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/CSSUrlRewritingStream.java
labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/InliningHtmlHead.java
Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java Thu Mar 26 19:59:12 2009
@@ -106,6 +106,7 @@
private List<CycleCleanable> cleanables = new ArrayList<CycleCleanable>();
private boolean inError = false;
+ private boolean started = false;
/**
* @return true if the cycle ended in an error.
@@ -115,9 +116,17 @@
}
/**
+ * @return true if the cycle has already been started.
+ */
+ public boolean isStarted() {
+ return started;
+ }
+
+ /**
* Runs all the startup methods.
*/
private void globalSetup() {
+ this.started = true;
for (Method method : setups) {
try {
method.invoke(this);
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=758824&r1=758823&r2=758824&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 Thu Mar 26 19:59:12 2009
@@ -20,12 +20,10 @@
import org.apache.magma.website.templating.DefaultTemplate;
import org.apache.magma.website.templating.PreviousGiver;
import org.apache.magma.website.templating.Template;
-import org.apache.magma.website.utils.URLRewritingStream;
import org.apache.magma.settings.Settings;
+import org.apache.magma.basics.startup.Cycle;
import org.apache.magma.basics.startup.Startup;
-import sun.reflect.generics.scope.MethodScope;
-
import java.io.IOException;
import java.io.PrintStream;
import java.lang.reflect.Method;
@@ -159,38 +157,17 @@
}
public void handleAJAX(HtmlProducer producer, HttpServletRequest req, HttpServletResponse resp) {
- String mybaseurl = "";
- if (req.getContextPath().length() > 0) {
- mybaseurl += req.getContextPath();
- }
- if (req.getServletPath().length() > 0) {
- mybaseurl += "/" + req.getServletPath();
- }
-
String contentType = producer.getMimeType();
if (contentType == null) contentType = "application/octet-stream";
if (contentType.startsWith("text")) {
contentType += "; charset=utf-8";
}
resp.setContentType(contentType);
- try {
- URLRewritingStream rew = new URLRewritingStream(resp.getOutputStream(),mybaseurl);
- producer.produce(rew);
- } catch (IOException e) {
- throw new MagmaException(e, "Error getting servlet output stream");
- }
+ producer.produce(Cycle.get().getRewriting());
}
public void handleHTML(HtmlProducer producer, HttpServletRequest req, HttpServletResponse resp) {
resp.setContentType("text/html; charset=utf-8");
-
- String mybaseurl = "";
- if (req.getContextPath().length() > 0) {
- mybaseurl += req.getContextPath();
- }
- if (req.getServletPath().length() > 0) {
- mybaseurl += "/" + req.getServletPath();
- }
// Try to determine if current request is considered a main or not
HttpSession session = req.getSession();
@@ -241,11 +218,8 @@
t.parse();
}
- try {
- t.produce(mybaseurl, resp.getOutputStream());
- } catch (IOException e) {
- throw new MagmaException(e, "Error getting servlet output stream");
- }
+ t.produce(Cycle.get().getRewriting());
+
if (t.wasMain() && producer.isRepeatable()) {
System.out.println("Producer has a reproducible main path of " + producer.getCompletePath());
session.setAttribute("__magma_lastmain", producer.getCompletePath());
Modified: 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=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Head.java Thu Mar 26 19:59:12 2009
@@ -8,21 +8,17 @@
import java.util.Set;
import org.apache.magma.basics.MagmaException;
-import org.apache.magma.website.utils.URLRewritingStream;
+import org.apache.magma.basics.startup.Cycle;
public class Head {
protected OutputStream stream = null;
protected OutputStreamWriter writer = null;
- protected URLRewritingStream rewriting;
public Set<String> components = new HashSet<String>();
public Head(OutputStream stream) {
this.stream = stream;
- if (stream instanceof URLRewritingStream) {
- this.rewriting = (URLRewritingStream)stream;
- }
try {
this.writer = new OutputStreamWriter(stream, "UTF-8");
} catch (UnsupportedEncodingException e) {
@@ -36,9 +32,10 @@
}
public void addExternalScript(String name, String mimeType) {
- if (!containsComponent(name)) {
+ String ctxname = contextualize(name);
+ if (!containsComponent(ctxname)) {
rawWrite("<script src=\"",name,"\" type=\"",mimeType,"\"></script>");
- added(name);
+ added(ctxname);
}
}
@@ -54,19 +51,22 @@
}
public void addCss(String name) {
- if (!containsComponent(name)) {
+ String ctxname = contextualize(name);
+ if (!containsComponent(ctxname)) {
rawWrite("<link href=\"", name, "\" type=\"text/css\" rel=\"stylesheet\"/>");
- added(name);
+ added(ctxname);
}
}
+
+ protected String contextualize(String name) {
+ return Cycle.get().getRewriting().localUrl(name);
+ }
public boolean containsComponent(String name) {
- if (rewriting != null) name = rewriting.localurl(name);
return components.contains(name);
}
protected void added(String name) {
- if (rewriting != null) name = rewriting.localurl(name);
this.components.add(name);
}
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/context/ContextWebMethods.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/context/ContextWebMethods.aj?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/context/ContextWebMethods.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/context/ContextWebMethods.aj Thu Mar 26 19:59:12 2009
@@ -9,7 +9,7 @@
import org.apache.magma.website.WebHandler;
public aspect ContextWebMethods {
-
+
public String SubRunningContext.getCurrentURL() {
List<WebMethodContextElement> methods = getElements(WebMethodContextElement.class);
if (methods.size() == 0) return null;
Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/AddURLRewritingToCycle.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/AddURLRewritingToCycle.aj?rev=758824&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/AddURLRewritingToCycle.aj (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/AddURLRewritingToCycle.aj Thu Mar 26 19:59:12 2009
@@ -0,0 +1,22 @@
+package org.apache.magma.website.cycle;
+
+import org.apache.magma.basics.startup.Cycle;
+import org.apache.magma.website.utils.URLRewritingStream;
+import java.io.ByteArrayOutputStream;
+
+public aspect AddURLRewritingToCycle {
+
+ private URLRewritingStream Cycle.rewriting = null;
+
+ public URLRewritingStream Cycle.getRewriting() {
+ if (this.rewriting == null) {
+ this.rewriting = new URLRewritingStream(new ByteArrayOutputStream(), "/", "http://localhost");
+ }
+ return this.rewriting;
+ }
+
+ public void Cycle.setRewriting(URLRewritingStream rewriting) {
+ this.rewriting = rewriting;
+ }
+
+}
Copied: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj (from r741815, labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebCycling.aj)
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj?p2=labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj&p1=labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebCycling.aj&r1=741815&r2=758824&rev=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/WebCycling.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj Thu Mar 26 19:59:12 2009
@@ -1,13 +1,55 @@
-package org.apache.magma.website;
+package org.apache.magma.website.cycle;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.magma.basics.MagmaException;
import org.apache.magma.basics.startup.Cycle;
+import org.apache.magma.website.Dispatch;
+import org.apache.magma.website.utils.URLRewritingStream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
public aspect WebCycling {
- pointcut servletHandling() : execution(* Dispatch.handle(..));
+ pointcut servletStarting(HttpServletRequest req, HttpServletResponse resp) :
+ execution(* Dispatch.handle(HttpServletRequest, HttpServletResponse)) &&
+ args(req, resp);
- before() : servletHandling() {
+ pointcut servletHandling() :
+ execution(* Dispatch.handle(..));
+
+ before(HttpServletRequest req, HttpServletResponse resp) : servletStarting(req, resp) {
+ if (Cycle.get().isStarted()) return;
Cycle.start();
+ String mybaseurl = "";
+ String ctxpath = req.getContextPath();
+ if (ctxpath.length() > 0) {
+ mybaseurl += ctxpath;
+ }
+ String svltpath = req.getServletPath();
+ if (svltpath.length() > 0) {
+ mybaseurl += svltpath;
+ }
+
+ StringBuffer buff = req.getRequestURL();
+ String serverpart = null;
+ try {
+ URL url = new URL(buff.toString());
+ url = new URL(url.getProtocol(), url.getHost(), url.getPort(), "");
+ serverpart = url.toExternalForm();
+ } catch (MalformedURLException e) {
+ throw new MagmaException(e, "Cannot determine the server url");
+ }
+
+ try {
+ URLRewritingStream rew = new URLRewritingStream(resp.getOutputStream(),mybaseurl, serverpart);
+ Cycle.get().setRewriting(rew);
+ } catch (IOException e) {
+ throw new MagmaException(e, "Error getting servlet output stream");
+ }
}
after() returning : servletHandling() {
Propchange: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/cycle/WebCycling.aj
------------------------------------------------------------------------------
svn:mergeinfo =
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=758824&r1=758823&r2=758824&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 Thu Mar 26 19:59:12 2009
@@ -157,9 +157,8 @@
}
}
- public void produce(String baseurl, OutputStream stream) {
+ public void produce(URLRewritingStream rewrite) {
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 < data.zones.size(); i++) {
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj Thu Mar 26 19:59:12 2009
@@ -1,5 +1,6 @@
package org.apache.magma.website.utils;
+import org.apache.magma.basics.startup.Cycle;
import org.apache.magma.basics.startup.CycleThreadLocal;
import org.apache.magma.website.Producer;
import org.apache.magma.website.HtmlProducer;
@@ -11,12 +12,6 @@
public aspect MakeURLRewritingContextBased {
- private CycleThreadLocal<URLRewritingStream> mystream = new CycleThreadLocal<URLRewritingStream>();
-
- after(URLRewritingStream stream) : execution(URLRewritingStream.new(..)) && this(stream) {
- mystream.set(stream);
- }
-
pointcut producing(Producer prod) :
(
execution(* Producer+.produce(OutputStream)) ||
@@ -25,7 +20,7 @@
) && this(prod);
before(Producer prod) : producing(prod) {
- URLRewritingStream stream = mystream.get();
+ URLRewritingStream stream = Cycle.get().getRewriting();
if (stream == null) return;
try {
stream.pushBaseUrl(prod.getBasePath());
@@ -55,7 +50,7 @@
} catch (Throwable e) {
return;
}
- URLRewritingStream stream = mystream.get();
+ URLRewritingStream stream = Cycle.get().getRewriting();
if (stream == null) return;
stream.popBaseUrl();
}
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=758824&r1=758823&r2=758824&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 Thu Mar 26 19:59:12 2009
@@ -33,15 +33,17 @@
protected int matched = -1;
protected int[] intbuff = new int[30];
protected int intbuffpos = 0;
+ protected String absolute;
protected String commonPrefix;
protected String baseurl;
protected Stack<String> baseurlStack = new Stack<String>();
private boolean injecting = false;
protected String templatePrefix;
- public URLRewritingStream(OutputStream out, String commonPrefix) {
+ public URLRewritingStream(OutputStream out, String commonPrefix, String absolute) {
super(out);
setCommonPrefix(commonPrefix);
+ this.absolute = absolute;
}
public void setBaseUrl(String baseUrl) {
@@ -132,8 +134,8 @@
}
}
- public String localurl(String accontent) {
- if (accontent.startsWith("/") || accontent.startsWith("http:/") || accontent.startsWith("#")) return accontent;
+ public String localUrl(String accontent) {
+ if (accontent.startsWith("/") || (!accontent.startsWith("magma:") && accontent.indexOf(':') != -1) || accontent.startsWith("#")) return accontent;
if (accontent.startsWith("magma:")) {
accontent = accontent.substring(6);
if (accontent.startsWith("template")) {
@@ -147,6 +149,18 @@
}
}
+ public String serverUrl(String accontent) {
+ String mod = localUrl(accontent);
+ if (mod.equals(accontent)) return mod;
+ return this.commonPrefix + mod;
+ }
+
+ public String absoluteUrl(String accontent) {
+ String mod = serverUrl(accontent);
+ if (mod.equals(accontent)) return mod;
+ return this.absolute + mod;
+ }
+
private void send(String segment) throws IOException {
if (segment != null) {
super.write(segment.getBytes());
Modified: 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=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/DefaultExpectations.java Thu Mar 26 19:59:12 2009
@@ -39,8 +39,9 @@
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(""));
+ atMost(1).of(req).getContextPath(); will(returnValue("/app"));
+ atMost(1).of(req).getServletPath(); will(returnValue("/tests"));
+ atMost(1).of(req).getRequestURL(); will(returnValue(new StringBuffer("http://localhost/app/tests" + path)));
allowing(req).getSession(); will(returnValue(session));
allowing(req).getSession(true); will(returnValue(session));
allowing(req).getCookies(); will(returnValue(cookies));
@@ -68,8 +69,9 @@
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).getContextPath(); will(returnValue("/app"));
+ allowing(req).getServletPath(); will(returnValue("/tests"));
+ allowing(req).getRequestURL(); will(returnValue(new StringBuffer("http://localhost/app/tests" + path)));
allowing(req).getSession(); will(returnValue(session));
allowing(req).getSession(true); will(returnValue(session));
allowing(req).getAttribute("__magma_url"); will(returnValue(path));
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=758824&r1=758823&r2=758824&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 Thu Mar 26 19:59:12 2009
@@ -299,10 +299,24 @@
def.disp = disp;
def.setupMinimal("/aux/checkLinks");
def.start();
- assertStructure(def.out.toString(), "<head>", "<link", "\"/aux/relative.css", "</head","<body", "<a href", "\"/aux/inside", "<a href", "\"/base", "<a href", "\"http://absolute");
+ assertStructure(def.out.toString(), "<head>", "<link", "\"/app/tests/aux/relative.css", "</head","<body", "<a href", "\"/app/tests/aux/inside", "<a href", "\"/app/tests/base", "<a href", "\"http://absolute");
}
@Test
+ public void emptyLinks() throws Exception {
+ DefaultExpectations def = new DefaultExpectations() {{
+ allowing(req).getContextPath(); will(returnValue(""));
+ allowing(req).getServletPath(); will(returnValue(""));
+ }};
+ UnitTestDispatch disp = new UnitTestDispatch();
+ disp.setTemplate(new SimpleTemplate());
+ def.disp = disp;
+ def.setupMinimal("/aux/checkLinks");
+ def.start();
+ assertStructure(def.out.toString(), "<head>", "<link", "\"/aux/relative.css", "</head","<body", "<a href", "\"/aux/inside", "<a href", "\"/base", "<a href", "\"http://absolute");
+ }
+
+ @Test
public void resendLinks() throws Exception {
DefaultExpectations def = new DefaultExpectations() {{
}};
@@ -311,7 +325,7 @@
def.disp = disp;
def.setupMinimal("/testSession/resendLink");
def.start();
- assertStructure(def.out.toString(), "<head>", "<link", "\"/aux/relative.css", "</head","<body", "<a href", "\"/aux/inside", "<a href", "\"/base", "<a href", "\"http://absolute");
+ assertStructure(def.out.toString(), "<head>", "<link", "\"/app/tests/aux/relative.css", "</head","<body", "<a href", "\"/app/tests/aux/inside", "<a href", "\"/app/tests/base", "<a href", "\"http://absolute");
}
// see LABs-305
Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTest.java?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/RewritingTest.java Thu Mar 26 19:59:12 2009
@@ -48,7 +48,7 @@
@Theory
public void rewriteTest(String[] set) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- URLRewritingStream urs = new URLRewritingStream(baos, "/context/");
+ URLRewritingStream urs = new URLRewritingStream(baos, "/context/", "http://localhost");
urs.setBaseUrl("current/place/");
urs.setTemplatePrefix("template/dummy/");
urs.write(set[0].getBytes());
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=758824&r1=758823&r2=758824&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 Thu Mar 26 19:59:12 2009
@@ -48,7 +48,7 @@
}
for (int j = 0; j < 500; j++) {
vs = new ByteArrayOutputStream(100000);
- URLRewritingStream urs = new URLRewritingStream(vs, "/test/");
+ URLRewritingStream urs = new URLRewritingStream(vs, "/test/", "http://localhost");
for (int i = 0; i < 100000; i++) {
urs.write('a');
}
@@ -75,7 +75,7 @@
start = System.currentTimeMillis();
for (int j = 0; j < 500; j++) {
vs = new ByteArrayOutputStream(100000);
- URLRewritingStream urs = new URLRewritingStream(vs, "/test/");
+ URLRewritingStream urs = new URLRewritingStream(vs, "/test/", "http://localhost");
for (int i = 0; i < 100000; i++) {
urs.write('a');
}
Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamTest.java?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/utils/URLRewritingStreamTest.java Thu Mar 26 19:59:12 2009
@@ -29,7 +29,7 @@
@Test
public void stateTest() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- URLRewritingStream urs = new URLRewritingStream(baos, "/test/");
+ URLRewritingStream urs = new URLRewritingStream(baos, "/test/", "http://localhost");
urs.write("Should not alter state".getBytes());
assertFalse(urs.buffering);
@@ -80,6 +80,16 @@
assertEquals(-1, urs.matched);
assertEquals(0, urs.intbuffpos);
}
-
+
+ @Test
+ public void simpleMethods() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ URLRewritingStream urs = new URLRewritingStream(baos, "/ctx/", "http://localhost");
+ urs.setBaseUrl("dothis/dothat/");
+
+ assertEquals("dothis/dothat/test", urs.localUrl("test"));
+ assertEquals("/ctx/dothis/dothat/test", urs.serverUrl("test"));
+ assertEquals("http://localhost/ctx/dothis/dothat/test", urs.absoluteUrl("test"));
+ }
}
Modified: labs/magma/trunk/website-dojo-pack/src/main/java/org/apache/magma/dojo/AddDojoMethodsToHead.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-dojo-pack/src/main/java/org/apache/magma/dojo/AddDojoMethodsToHead.aj?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/website-dojo-pack/src/main/java/org/apache/magma/dojo/AddDojoMethodsToHead.aj (original)
+++ labs/magma/trunk/website-dojo-pack/src/main/java/org/apache/magma/dojo/AddDojoMethodsToHead.aj Thu Mar 26 19:59:12 2009
@@ -1,10 +1,9 @@
package org.apache.magma.dojo;
-import java.io.OutputStream;
import org.apache.magma.settings.Settings;
import org.apache.magma.website.Head;
-import org.apache.magma.website.utils.URLRewritingStream;
+import org.apache.magma.basics.startup.Cycle;
public aspect AddDojoMethodsToHead {
@@ -16,13 +15,7 @@
}
addOnloadScript();
addExternalScript("magma:/common/dojo/setTheme.js");
- String baseurl = null;
- OutputStream stream = getStream();
- if (stream instanceof URLRewritingStream) {
- baseurl = ((URLRewritingStream)stream).getCommonPrefix() + "dojo/";
- } else {
- baseurl = "/dojo/";
- }
+ String baseurl = Cycle.get().getRewriting().serverUrl("magma:/dojo/");
addRawScript("dojoBaseurl", "var dojoBaseurl = '" + baseurl + "';");
}
Modified: labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj (original)
+++ labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj Thu Mar 26 19:59:12 2009
@@ -10,6 +10,7 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.magma.basics.MagmaException;
+import org.apache.magma.basics.startup.Cycle;
import org.apache.magma.basics.startup.CycleThreadLocal;
import org.apache.magma.website.Head;
import org.apache.magma.website.HtmlProducer;
@@ -18,26 +19,10 @@
public aspect AddWebBasedEmailMethods {
- private static CycleThreadLocal<String> absoluteBaseUrl = new CycleThreadLocal<String>();
-
- before(HttpServletRequest req) :
- HandlerSetup.inRequest() &&
- args(req,..) {
- StringBuffer buff = req.getRequestURL();
- try {
- URL url = new URL(buff.toString());
- url = new URL(url.getProtocol(), url.getHost(), url.getPort(), req.getContextPath());
- absoluteBaseUrl.set(url.toExternalForm());
- } catch (MalformedURLException e) {
- }
- }
-
-
public Email Email.html(HtmlProducer producer) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- String abs = absoluteBaseUrl.get();
- if (abs == null) abs = "";
- URLRewritingStream str = new URLRewritingStream(baos, abs);
+ URLRewritingStream original = Cycle.get().getRewriting();
+ URLRewritingStream str = new URLRewritingStream(baos, original.absoluteUrl("magma:/"), "");
str.setBaseUrl(producer.getBasePath());
OutputStreamWriter osw = new OutputStreamWriter(str);
try {
Modified: labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/CSSUrlRewritingStream.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/CSSUrlRewritingStream.java?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/CSSUrlRewritingStream.java (original)
+++ labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/CSSUrlRewritingStream.java Thu Mar 26 19:59:12 2009
@@ -7,7 +7,7 @@
public class CSSUrlRewritingStream extends URLRewritingStream {
public CSSUrlRewritingStream(OutputStream out, URLRewritingStream other) {
- super(out, "");
+ super(out, "", "");
super.inside = true;
super.insider = ':';
super.outsider = ';';
Modified: labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/InliningHtmlHead.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/InliningHtmlHead.java?rev=758824&r1=758823&r2=758824&view=diff
==============================================================================
--- labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/InliningHtmlHead.java (original)
+++ labs/magma/trunk/website-production-optimizer/src/main/java/org/apache/magma/website/optimization/InliningHtmlHead.java Thu Mar 26 19:59:12 2009
@@ -2,6 +2,7 @@
import java.io.OutputStream;
+import org.apache.magma.basics.startup.Cycle;
import org.apache.magma.website.Head;
import org.apache.magma.website.Producer;
import org.apache.magma.website.RootWebHandler;
@@ -23,11 +24,9 @@
if (prod != null) {
rawWrite(prefix);
OutputStream rightstream = super.stream;
- if (rewriting != null) {
- rightstream = rewriting.getNonRewritingStream();
- if (css) {
- rightstream = new CSSUrlRewritingStream(rightstream, rewriting);
- }
+ rightstream = Cycle.get().getRewriting().getNonRewritingStream();
+ if (css) {
+ rightstream = new CSSUrlRewritingStream(rightstream, Cycle.get().getRewriting());
}
prod.produce(rightstream);
rawWrite(postfix);
@@ -36,34 +35,26 @@
@Override
public void addCss(String name) {
- if (!containsComponent(name)) {
- if (rewriting != null) {
- String locname = rewriting.localurl(name);
- if (locname.equals(name)) {
- super.addCss(name);
- } else {
- inline("<style type=\"text/css\">/*<![CDATA[*/\n", locname, "\n/*]]>*/</style>", true);
- added(name);
- }
- } else {
+ String ctxname = contextualize(name);
+ if (!containsComponent(ctxname)) {
+ if (ctxname.equals(name)) {
super.addCss(name);
+ } else {
+ inline("<style type=\"text/css\">/*<![CDATA[*/\n", ctxname, "\n/*]]>*/</style>", true);
+ added(ctxname);
}
}
}
@Override
public void addExternalScript(String name, String mimeType) {
- if (!containsComponent(name)) {
- if (rewriting != null) {
- String locname = rewriting.localurl(name);
- if (locname.equals(name)) {
- super.addExternalScript(name, mimeType);
- } else {
- inline("<script type=\"" + mimeType + "\">//<![CDATA[\n", locname, "\n//]]></script>", false);
- added(name);
- }
- } else {
+ String ctxname = contextualize(name);
+ if (!containsComponent(ctxname)) {
+ if (ctxname.equals(name)) {
super.addExternalScript(name, mimeType);
+ } else {
+ inline("<script type=\"" + mimeType + "\">//<![CDATA[\n", ctxname, "\n//]]></script>", false);
+ added(name);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org