Author: awiner
Date: Wed Mar 11 22:28:49 2009
New Revision: 752658

URL: http://svn.apache.org/viewvc?rev=752658&view=rev
Log:
Add GadgetContext to TemplateContext;  and TemplateContext to state accessible 
to TagHandlers.
Together, these make it possible to provide per-container tag implementations

Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/TemplateRewriter.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateContext.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateProcessor.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/FakeTemplateProcessor.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/TemplateRewriter.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/TemplateRewriter.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/TemplateRewriter.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/TemplateRewriter.java
 Wed Mar 11 22:28:49 2009
@@ -20,7 +20,6 @@
 import org.apache.shindig.common.xml.DomUtil;
 import org.apache.shindig.expressions.Expressions;
 import org.apache.shindig.gadgets.Gadget;
-import org.apache.shindig.gadgets.GadgetELResolver;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.MessageBundleFactory;
 import org.apache.shindig.gadgets.http.HttpRequest;
@@ -39,8 +38,6 @@
 import java.util.Set;
 import java.util.StringTokenizer;
 
-import javax.el.CompositeELResolver;
-
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -135,19 +132,16 @@
       return null;
     }
 
-    TemplateContext templateContext = new TemplateContext(pipelinedData);
-    GadgetELResolver globalGadgetVars = new 
GadgetELResolver(gadget.getContext());
+    TemplateContext templateContext = new TemplateContext(
+        gadget.getContext(), pipelinedData);
     
     MessageBundle bundle = messageBundleFactory.getBundle(gadget.getSpec(),
         gadget.getContext().getLocale(), gadget.getContext().getIgnoreCache());
     MessageELResolver messageELResolver = new MessageELResolver(expressions, 
bundle);
-    CompositeELResolver resolvers = new CompositeELResolver();
-    resolvers.add(globalGadgetVars);
-    resolvers.add(messageELResolver);
 
     for (Element template : templates) {
       DocumentFragment result = processor.get().processTemplate(
-          template, templateContext, resolvers);
+          template, templateContext, messageELResolver);
       // Note: replaceNode errors when replacing Element with DocumentFragment
       template.getParentNode().insertBefore(result, template);
       // TODO: clients that need to update data that is initially available,

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
 Wed Mar 11 22:28:49 2009
@@ -19,6 +19,7 @@
 package org.apache.shindig.gadgets.templates;
 
 import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.gadgets.GadgetELResolver;
 import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer;
 
 import java.io.IOException;
@@ -98,6 +99,7 @@
 
     this.templateContext = templateContext;
     this.elContext = expressions.newELContext(globals,
+        new GadgetELResolver(templateContext.getGadgetContext()),
         new TemplateELResolver(templateContext));
 
     DocumentFragment result = 
template.getOwnerDocument().createDocumentFragment();
@@ -112,7 +114,11 @@
       processNode(result, nodes.item(i));
     }
   }
-   
+  
+  public TemplateContext getTemplateContext() {
+    return templateContext;
+  }
+  
   /**
    * Process a node.
    * 

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateContext.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateContext.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateContext.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateContext.java
 Wed Mar 11 22:28:49 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.shindig.gadgets.templates;
 
+import org.apache.shindig.gadgets.GadgetContext;
 import org.json.JSONObject;
 
 import java.util.Map;
@@ -29,11 +30,14 @@
  */
 public class TemplateContext {
   private final Map<String, JSONObject> top;
+  private final GadgetContext gadgetContext;
+
   private Object cur = null;
   // TODO: support unique Id
   private Map<String, ? extends Object> context = ImmutableMap.of();
 
-  public TemplateContext(Map<String, JSONObject> top) {
+  public TemplateContext(GadgetContext gadgetContext, Map<String, JSONObject> 
top) {
+    this.gadgetContext = gadgetContext;
     this.top = top;
   }
   
@@ -60,4 +64,8 @@
     context = newContext;
     return oldContext;
   }
+  
+  public GadgetContext getGadgetContext() {
+    return gadgetContext;
+  }
 }

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateProcessor.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateProcessor.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateProcessor.java
 Wed Mar 11 22:28:49 2009
@@ -45,6 +45,12 @@
   DocumentFragment processTemplate(Element template,
       TemplateContext templateContext, ELResolver globals);    
   
+  
+  /**
+   * @return the current template context.
+   */
+  TemplateContext getTemplateContext();
+  
   /**
    * Process the children of an element or document.
    * @param result the node to which results should be appended

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
 Wed Mar 11 22:28:49 2009
@@ -23,6 +23,7 @@
 
 import org.apache.shindig.expressions.Expressions;
 import org.apache.shindig.expressions.RootELResolver;
+import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.parse.ParseModule;
 import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer;
@@ -75,7 +76,7 @@
     processor = new DefaultTemplateProcessor(expressions, registry);
     resolver = new RootELResolver();
     parser = new SocialMarkupHtmlParser(new 
ParseModule.DOMImplementationProvider().get());    
-    context = new TemplateContext(variables);
+    context = new TemplateContext(new GadgetContext(), variables);
     
     addVariable("foo", new JSONObject("{ title: 'bar' }"));
     addVariable("user", new JSONObject("{ id: '101', name: { first: 'John', 
last: 'Doe' }}"));

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/FakeTemplateProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/FakeTemplateProcessor.java?rev=752658&r1=752657&r2=752658&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/FakeTemplateProcessor.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/FakeTemplateProcessor.java
 Wed Mar 11 22:28:49 2009
@@ -35,6 +35,7 @@
  */
 public class FakeTemplateProcessor implements TemplateProcessor {
   public Map<String, ? extends Object> expressionResults = Maps.newHashMap();
+  public TemplateContext context;
   
   public final <T extends Object> T evaluate(String expression, Class<T> type, 
T defaultValue) {
     // Some quick-and-dirty mocking:  put a List in the map, and
@@ -47,6 +48,10 @@
     return type.cast(result);
   }
   
+  public TemplateContext getTemplateContext() {
+    return context;
+  }
+
   public DocumentFragment processTemplate(Element template,
       TemplateContext templateContext, ELResolver globals) {
     throw new UnsupportedOperationException();
@@ -64,5 +69,4 @@
       onEachLoop.run();
     }
   }
-
 }


Reply via email to