You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by dd...@apache.org on 2012/08/14 15:49:35 UTC
svn commit: r1372882 - in /shindig/trunk:
content/samplecontainer/examples/templates/
java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/
java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/
java/gadgets/src/test/java/org/...
Author: ddumont
Date: Tue Aug 14 13:49:34 2012
New Revision: 1372882
URL: http://svn.apache.org/viewvc?rev=1372882&view=rev
Log:
SHINDIG-1737 - Declaring Variables Inline - <os:Var> does not work
Committed for Erik Bi
Added:
shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml (with props)
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java (with props)
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java (with props)
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
Added: shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml?rev=1372882&view=auto
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml (added)
+++ shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml Tue Aug 14 13:49:34 2012
@@ -0,0 +1,17 @@
+<Module>
+ <ModulePrefs title="Varible Replacement Templating Example"
+ height="400" width="400">
+ <Require feature="opensocial-templates">
+ </Require>
+ </ModulePrefs>
+ <Content view="default" type="html">
+ <![CDATA[
+ <div>
+ <script type="text/os-template" xmlns:os="http://ns.opensocial.org/2008/markup" >
+ <os:Var key="myvar" value="3"></os:Var>
+ This value of myvar is ${myvar}
+ </script>
+ </div>
+ ]]>
+ </Content>
+</Module>
\ No newline at end of file
Propchange: shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: shindig/trunk/content/samplecontainer/examples/templates/VarTag.xml
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java?rev=1372882&r1=1372881&r2=1372882&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java Tue Aug 14 13:49:34 2012
@@ -27,6 +27,7 @@ import org.apache.shindig.gadgets.templa
import org.apache.shindig.gadgets.templates.tags.RenderTagHandler;
import org.apache.shindig.gadgets.templates.tags.RepeatTagHandler;
import org.apache.shindig.gadgets.templates.tags.TagHandler;
+import org.apache.shindig.gadgets.templates.tags.VarTagHandler;
import org.apache.shindig.gadgets.templates.tags.VariableTagHandler;
/**
@@ -50,5 +51,6 @@ public class TemplateModule extends Abst
tagBinder.addBinding().to(RepeatTagHandler.class);
tagBinder.addBinding().to(FlashTagHandler.class);
tagBinder.addBinding().to(VariableTagHandler.class);
+ tagBinder.addBinding().to(VarTagHandler.class);
}
}
Added: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java?rev=1372882&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java (added)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java Tue Aug 14 13:49:34 2012
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.gadgets.templates.tags;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+
+import org.apache.shindig.gadgets.templates.TemplateProcessor;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Implement the os:Var tag
+ */
+public class VarTagHandler extends AbstractTagHandler {
+
+ private static final String TAG_VAR = "Var";
+ private static final String TAG_KEY = "key";
+ private static final String TAG_VALUE = "value";
+
+ @Inject
+ public VarTagHandler() {
+ super(TagHandler.OPENSOCIAL_NAMESPACE, TAG_VAR);
+ }
+
+ public void process(Node result, Element tag, TemplateProcessor processor) {
+ // Get the key. Don't support EL (to match pipelining)
+ String key = tag.getAttribute(TAG_KEY);
+ if ("".equals(key)) {
+ return;
+ }
+
+ // Get the value (with EL)
+ Object value = getValueFromTag(tag, TAG_VALUE, processor, Object.class);
+
+ if (processor.getTemplateContext().getMy() == null) {
+ processor.getTemplateContext().setMy(Maps.<String, Object> newHashMap());
+ }
+ processor.getTemplateContext().getMy().put(key, value);
+ }
+
+}
+
Propchange: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VarTagHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java?rev=1372882&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java (added)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java Tue Aug 14 13:49:34 2012
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.gadgets.templates.tags;
+
+import static org.junit.Assert.assertEquals;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+
+import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.expressions.RootELResolver;
+import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.parse.DefaultHtmlSerializer;
+import org.apache.shindig.gadgets.parse.ParseModule;
+import org.apache.shindig.gadgets.parse.SocialDataTags;
+import org.apache.shindig.gadgets.parse.nekohtml.NekoSimplifiedHtmlParser;
+import org.apache.shindig.gadgets.templates.DefaultTemplateProcessor;
+import org.apache.shindig.gadgets.templates.TagRegistry;
+import org.apache.shindig.gadgets.templates.TemplateContext;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Set;
+
+import javax.el.ELResolver;
+
+public class VarTagHandlerTest {
+
+ private Expressions expressions;
+
+ private TemplateContext context;
+ private DefaultTemplateProcessor processor;
+ private Map<String, Object> variables;
+ private ELResolver resolver;
+ private TagRegistry registry;
+
+ private NekoSimplifiedHtmlParser parser;
+ protected Document result;
+
+ @Before
+ public void setUp() throws Exception {
+
+ expressions = Expressions.forTesting();
+ variables = Maps.newHashMap();
+ Set<TagHandler> handlers = ImmutableSet.<TagHandler> of(new VarTagHandler());
+ registry = new DefaultTagRegistry(handlers);
+
+ processor = new DefaultTemplateProcessor(expressions);
+ resolver = new RootELResolver();
+ parser = new NekoSimplifiedHtmlParser(new ParseModule.DOMImplementationProvider().get());
+ context = new TemplateContext(new Gadget(), variables);
+
+ }
+
+ @Test
+ public void testTag() throws Exception {
+ String output = executeTemplate("<os:Var key='myvar' value='3'></os:Var>The value of my var is ${myvar}",
+ "xmlns:os=\"http://ns.opensocial.org/2008/markup\"");
+ assertEquals("The value of my var is 3", output);
+ }
+
+ private String executeTemplate(String markup, String extra) throws Exception {
+ Element template = prepareTemplate(markup, extra);
+ DocumentFragment result = processor.processTemplate(template, context, resolver, registry);
+ return serialize(result);
+ }
+
+ private Element prepareTemplate(String markup, String extra) throws GadgetException {
+ String content = "<script type=\"text/os-template\"" + extra + '>' + markup + "</script>";
+ Document document = parser.parseDom(content);
+ return SocialDataTags.getTags(document, SocialDataTags.OSML_TEMPLATE_TAG).get(0);
+ }
+
+ private String serialize(Node node) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ NodeList children = node.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ new DefaultHtmlSerializer().serialize(child, sb);
+ }
+ return sb.toString();
+ }
+
+}
Propchange: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/tags/VarTagHandlerTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain