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();
}
}
-
}