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/10 16:00:34 UTC
svn commit: r752128 - in /labs/magma/trunk: foundation-website/
foundation-website/src/main/java/org/apache/magma/website/
foundation-website/src/main/java/org/apache/magma/website/producers/
website-developer/src/main/java/org/apache/magma/website/dev...
Author: simoneg
Date: Tue Mar 10 15:00:23 2009
New Revision: 752128
URL: http://svn.apache.org/viewvc?rev=752128&view=rev
Log:
LABS-250 : introduced templating producer, superclass and "factory" of velocity and other future templating systems
Added:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducer.java
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerFactory.java
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerHook.aj
labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/SetupVelocity.aj
Modified:
labs/magma/trunk/foundation-website/pom.xml
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Dispatch.java
labs/magma/trunk/website-developer/src/main/java/org/apache/magma/website/developer/DeveloperHandler.java
labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/VelocityHtmlProducer.java
Modified: labs/magma/trunk/foundation-website/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/pom.xml?rev=752128&r1=752127&r2=752128&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/pom.xml (original)
+++ labs/magma/trunk/foundation-website/pom.xml Tue Mar 10 15:00:23 2009
@@ -81,10 +81,5 @@
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
- <dependency>
- <groupId>org.apache.magma</groupId>
- <artifactId>foundation-startup</artifactId>
- <version>0.0.2-SNAPSHOT</version>
- </dependency>
</dependencies>
</project>
\ No newline at end of file
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=752128&r1=752127&r2=752128&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 Mar 10 15:00:23 2009
@@ -22,7 +22,7 @@
import org.apache.magma.website.templating.Template;
import org.apache.magma.website.utils.URLRewritingStream;
import org.apache.magma.settings.Settings;
-import org.apache.magma.startup.Startup;
+import org.apache.magma.basics.startup.Startup;
import sun.reflect.generics.scope.MethodScope;
Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducer.java?rev=752128&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducer.java (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducer.java Tue Mar 10 15:00:23 2009
@@ -0,0 +1,29 @@
+package org.apache.magma.website.producers;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.magma.website.Head;
+
+public class TemplatingProducer extends ParametrizableHtmlProducerBase {
+
+ private String templateFile = null;
+
+ public TemplatingProducer(String templateFile) {
+ this.templateFile = templateFile;
+ }
+
+ public TemplatingProducer() {
+
+ }
+
+ @Override
+ public void head(Head head) {
+ }
+
+ @Override
+ public void produce(Writer writer) throws IOException {
+ writer.append("Here goes a template file, located at \"" + templateFile + "\"");
+ }
+
+}
Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerFactory.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerFactory.java?rev=752128&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerFactory.java (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerFactory.java Tue Mar 10 15:00:23 2009
@@ -0,0 +1,56 @@
+package org.apache.magma.website.producers;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.settings.Settings;
+
+public class TemplatingProducerFactory {
+
+ private static Map<String, Class<? extends TemplatingProducer>> extensions = new HashMap<String, Class<? extends TemplatingProducer>>();
+
+ private static Map<String, Class<? extends TemplatingProducer>> cache = new HashMap<String, Class<? extends TemplatingProducer>>();
+
+ public static void register(String extension, Class<? extends TemplatingProducer> clazz) {
+ extensions.put(extension, clazz);
+ }
+
+ public static TemplatingProducer getFor(String path) {
+ Class<? extends TemplatingProducer> clazz = null;
+ String complete = null;
+ if (Settings.isProductionEnv()) {
+ clazz = cache.get(path);
+ }
+ if (clazz == null) {
+ for (Map.Entry<String, Class<? extends TemplatingProducer>> entry : extensions.entrySet()) {
+ complete = path + "." + entry.getKey();
+ if (TemplatingProducerFactory.class.getResource(complete) != null) {
+ clazz = entry.getValue();
+ if (Settings.isProductionEnv()) {
+ cache.put(complete, clazz);
+ }
+ break;
+ }
+ }
+ }
+ if (clazz == null) return null;
+ TemplatingProducer producer;
+ try {
+ Constructor<? extends TemplatingProducer> constructor = clazz.getConstructor(String.class);
+ producer = constructor.newInstance(complete);
+ } catch (NoSuchMethodException e) {
+ throw new MagmaException(e, "The templating producer {0} does not implement a string only constructor!", clazz);
+ } catch (IllegalAccessException e) {
+ throw new MagmaException(e, "The templating producer {0} has a non public string only constructor!", clazz);
+ } catch (Exception e) {
+ throw new MagmaException(e, "Error creating producer {0}", clazz);
+ }
+ return producer;
+ }
+
+}
Added: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerHook.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerHook.aj?rev=752128&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerHook.aj (added)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/producers/TemplatingProducerHook.aj Tue Mar 10 15:00:23 2009
@@ -0,0 +1,41 @@
+package org.apache.magma.website.producers;
+
+import java.beans.Introspector;
+
+import org.apache.magma.basics.context.RunningContext;
+import org.apache.magma.website.context.WebMethodContextElement;
+
+public aspect TemplatingProducerHook {
+
+ TemplatingProducer around(String path) : call(TemplatingProducer.new(String)) && args(path) {
+ WebMethodContextElement ele = RunningContext.get().getLast(WebMethodContextElement.class);
+ if (ele == null) return proceed(path);
+
+ if (path == null) {
+ String methodName = ele.getMethod().getName();
+ if (methodName.startsWith("do")) {
+ methodName = methodName.substring(2);
+ methodName = Introspector.decapitalize(methodName);
+ path = methodName;
+ }
+ }
+ if (path == null) return proceed(path);
+
+ String complete = null;
+ if (!path.startsWith("/")) {
+ complete = ele.getHandlerInstance().getClass().getName();
+ complete = complete.substring(0, complete.lastIndexOf('.'));
+ complete = complete.replace('.','/');
+ complete = '/' + complete;
+ complete += '/';
+ complete += path;
+ } else {
+ complete = path;
+ }
+
+ TemplatingProducer prod = TemplatingProducerFactory.getFor(complete);
+ if (prod == null) return proceed(path);
+ return prod;
+ }
+
+}
Modified: labs/magma/trunk/website-developer/src/main/java/org/apache/magma/website/developer/DeveloperHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-developer/src/main/java/org/apache/magma/website/developer/DeveloperHandler.java?rev=752128&r1=752127&r2=752128&view=diff
==============================================================================
--- labs/magma/trunk/website-developer/src/main/java/org/apache/magma/website/developer/DeveloperHandler.java (original)
+++ labs/magma/trunk/website-developer/src/main/java/org/apache/magma/website/developer/DeveloperHandler.java Tue Mar 10 15:00:23 2009
@@ -103,7 +103,7 @@
} catch (IOException e) {
throw new MagmaException(e, "Error reading from {0}", paramUrl);
}
- return new VelocityHtmlProducer(prop, paramUrl);
+ return new VelocityHtmlProducer().addParameter(prop).addParameter(paramUrl);
} finally {
if (instr != null) {
try {
@@ -126,7 +126,7 @@
public HtmlProducer doUris() {
HandlerDescription nd = new HandlerDescription(GenericClass.forClass(RootWebHandler.class));
- return new VelocityHtmlProducer(nd);
+ return new VelocityHtmlProducer().addParameter(nd);
}
public HtmlProducer doPanel() {
Added: labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/SetupVelocity.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/SetupVelocity.aj?rev=752128&view=auto
==============================================================================
--- labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/SetupVelocity.aj (added)
+++ labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/SetupVelocity.aj Tue Mar 10 15:00:23 2009
@@ -0,0 +1,25 @@
+package org.apache.magma.website.velocity;
+
+import java.util.Properties;
+
+import org.apache.magma.basics.startup.Startup;
+import org.apache.magma.settings.Settings;
+import org.apache.magma.website.producers.TemplatingProducerFactory;
+import org.apache.velocity.app.Velocity;
+
+public aspect SetupVelocity {
+
+ public void Startup.setupVelocity() {
+ try {
+ Properties prp = new Properties();
+ prp.putAll(Settings.getAll());
+ Velocity.init(prp);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ TemplatingProducerFactory.register("vm", VelocityHtmlProducer.class);
+ TemplatingProducerFactory.register("vt", VelocityHtmlProducer.class);
+ }
+
+}
Modified: labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/VelocityHtmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/VelocityHtmlProducer.java?rev=752128&r1=752127&r2=752128&view=diff
==============================================================================
--- labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/VelocityHtmlProducer.java (original)
+++ labs/magma/trunk/website-velocity/src/main/java/org/apache/magma/website/velocity/VelocityHtmlProducer.java Tue Mar 10 15:00:23 2009
@@ -19,7 +19,7 @@
import org.apache.magma.basics.MagmaException;
import org.apache.magma.settings.Settings;
import org.apache.magma.website.Head;
-import org.apache.magma.website.producers.ParametrizableHtmlProducerBase;
+import org.apache.magma.website.producers.TemplatingProducer;
import java.beans.Introspector;
import java.io.IOException;
@@ -38,27 +38,14 @@
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
-public class VelocityHtmlProducer extends ParametrizableHtmlProducerBase {
+public class VelocityHtmlProducer extends TemplatingProducer {
- {
- try {
- Properties prp = new Properties();
- prp.putAll(Settings.getAll());
- Velocity.init(prp);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public VelocityHtmlProducer(Object... params) {
- for (Object object : params) {
- addParameter(object);
- }
- }
-
public VelocityHtmlProducer(String template) {
this.template = template;
}
+ public VelocityHtmlProducer() {
+
+ }
private String template;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org