Author: lindner
Date: Tue Jun 23 19:59:30 2009
New Revision: 787808
URL: http://svn.apache.org/viewvc?rev=787808&view=rev
Log:
SHINDIG-1097 | Upgrade to Juel 2.1.2
Added:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/NullCache.java
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
Modified:
incubator/shindig/trunk/java/common/conf/shindig.properties
incubator/shindig/trunk/java/common/pom.xml
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
incubator/shindig/trunk/java/common/src/main/resources/org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
incubator/shindig/trunk/java/gadgets/pom.xml
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetELResolverTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelineExecutorTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/PipelineDataGadgetRewriterTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.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/MessageELResolverTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java
incubator/shindig/trunk/java/server/pom.xml
incubator/shindig/trunk/java/social-api/pom.xml
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
incubator/shindig/trunk/pom.xml
Modified: incubator/shindig/trunk/java/common/conf/shindig.properties
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/conf/shindig.properties?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/conf/shindig.properties (original)
+++ incubator/shindig/trunk/java/common/conf/shindig.properties Tue Jun 23
19:59:30 2009
@@ -79,6 +79,7 @@
# caches when using the LruCacheProvider.
# It is highly recommended that the EhCache implementation be used instead of
the LRU cache.
shindig.cache.lru.default.capacity=1000
+shindig.cache.lru.expressions.capacity=1000
shindig.cache.lru.gadgetSpecs.capacity=1000
shindig.cache.lru.messageBundles.capacity=1000
shindig.cache.lru.httpResponses.capacity=10000
Modified: incubator/shindig/trunk/java/common/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/pom.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/pom.xml (original)
+++ incubator/shindig/trunk/java/common/pom.xml Tue Jun 23 19:59:30 2009
@@ -151,11 +151,11 @@
<artifactId>ehcache</artifactId>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
<scope>provided</scope>
</dependency>
Added:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/NullCache.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/NullCache.java?rev=787808&view=auto
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/NullCache.java
(added)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/NullCache.java
Tue Jun 23 19:59:30 2009
@@ -0,0 +1,44 @@
+/*
+ * 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.common.cache;
+
+/**
+ * Cache implementation that does nothing.
+ */
+public class NullCache<K, V> implements Cache<K, V>{
+
+ public void addElement(K key, V value) {
+ }
+
+ public long getCapacity() {
+ return 0;
+ }
+
+ public V getElement(K key) {
+ return null;
+ }
+
+ public long getSize() {
+ return 0;
+ }
+
+ public V removeElement(K key) {
+ return null;
+ }
+}
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
(original)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
Tue Jun 23 19:59:30 2009
@@ -18,22 +18,20 @@
*/
package org.apache.shindig.expressions;
-import org.json.JSONArray;
+import org.apache.shindig.common.cache.Cache;
+import org.apache.shindig.common.cache.CacheProvider;
+import org.apache.shindig.common.cache.NullCache;
import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
import javax.el.ArrayELResolver;
import javax.el.CompositeELResolver;
import javax.el.ELContext;
-import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.ExpressionFactory;
import javax.el.FunctionMapper;
import javax.el.ListELResolver;
import javax.el.MapELResolver;
-import javax.el.PropertyNotWritableException;
import javax.el.ValueExpression;
import javax.el.VariableMapper;
@@ -42,28 +40,35 @@
import com.google.inject.Singleton;
import de.odysseus.el.ExpressionFactoryImpl;
+import de.odysseus.el.tree.Tree;
+import de.odysseus.el.tree.TreeCache;
+import de.odysseus.el.tree.TreeStore;
+import de.odysseus.el.tree.impl.Builder;
/**
* A facade to the expressions functionality.
*/
@Singleton
public class Expressions {
+ private static final String EXPRESSION_CACHE = "expressions";
+
private final ExpressionFactory factory;
private final ELContext parseContext;
private final ELResolver defaultELResolver;
private final Functions functions;
- /**
- * Convenience constructor that doesn't require any Functions.
+ /**
+ * Returns an instance of Expressions that doesn't require
+ * any functions or perform any caching. Use only for testing.
*/
- public Expressions() {
- this(null);
+ public static Expressions forTesting() {
+ return new Expressions(null, null);
}
@Inject
- public Expressions(Functions functions) {
+ public Expressions(Functions functions, CacheProvider cacheProvider) {
this.functions = functions;
- factory = newExpressionFactory();
+ factory = newExpressionFactory(cacheProvider);
// Stub context with no FunctionMapper, used only to parse expressions
parseContext = new Context(null);
defaultELResolver = createDefaultELResolver();
@@ -91,11 +96,6 @@
* @return a ValueExpression corresponding to the expression
*/
public ValueExpression parse(String expression, Class<?> type) {
- if (type == JSONArray.class) {
- // TODO: the coming version of JUEL offers support for custom type
converters. Use it!
- return new CustomCoerce(factory.createValueExpression(parseContext,
expression, String.class),
- type);
- }
return factory.createValueExpression(parseContext, expression, type);
}
@@ -103,10 +103,33 @@
return factory.createValueExpression(value, type);
}
- private ExpressionFactory newExpressionFactory() {
- Properties properties = new Properties();
- // TODO: configure cache size?
- return new ExpressionFactoryImpl(properties);
+ /**
+ * Create a JUEL cache of expressions.
+ */
+ private TreeCache createTreeCache(CacheProvider cacheProvider) {
+ Cache<String, Tree> treeCache;
+ if (cacheProvider == null) {
+ treeCache = new NullCache<String, Tree>();
+ } else {
+ treeCache = cacheProvider.createCache(EXPRESSION_CACHE);
+ }
+
+ final Cache<String, Tree> resolvedTreeCache = treeCache;
+ return new TreeCache() {
+ public Tree get(String expression) {
+ return resolvedTreeCache.getElement(expression);
+ }
+
+ public void put(String expression, Tree tree) {
+ resolvedTreeCache.addElement(expression, tree);
+ }
+ };
+ }
+
+
+ private ExpressionFactory newExpressionFactory(CacheProvider cacheProvider) {
+ TreeStore store = new TreeStore(new Builder(),
createTreeCache(cacheProvider));
+ return new ExpressionFactoryImpl(store, new ShindigTypeConverter());
}
/**
@@ -174,89 +197,4 @@
}
}
-
- /**
- * Class providing custom type coercion for getValue() where needed.
- * This will be obsolete with JUEL 2.1.1.
- */
- static private class CustomCoerce extends ValueExpression {
-
- private final ValueExpression base;
- private final Class<?> type;
-
- public CustomCoerce(ValueExpression base, Class<?> type) {
- this.base = base;
- this.type = type;
- }
-
- @Override
- public Class<?> getExpectedType() {
- return type;
- }
-
- @Override
- public Class<?> getType(ELContext context) {
- return type;
- }
-
- @Override
- public Object getValue(ELContext context) {
- Object value = base.getValue(context);
- if (value == null) {
- return null;
- }
-
- if (type == JSONArray.class) {
- JSONArray array = new JSONArray();
- StringTokenizer tokenizer = new StringTokenizer(value.toString(), ",");
- while (tokenizer.hasMoreTokens()) {
- array.put(tokenizer.nextToken());
- }
-
- return array;
- } else {
- throw new ELException("Can't coerce to type " + type.getName());
- }
- }
-
- @Override
- public boolean isReadOnly(ELContext context) {
- return true;
- }
-
- @Override
- public void setValue(ELContext context, Object value) {
- throw new PropertyNotWritableException();
- }
-
- @Override
- public String getExpressionString() {
- return base.getExpressionString();
- }
-
- @Override
- public boolean isLiteralText() {
- return base.isLiteralText();
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
-
- if (!(o instanceof CustomCoerce)) {
- return false;
- }
-
- CustomCoerce that = (CustomCoerce) o;
- return that.base.equals(this.base) && that.type.equals(this.type);
- }
-
- @Override
- public int hashCode() {
- return base.hashCode();
- }
-
- }
}
Added:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java?rev=787808&view=auto
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
(added)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
Tue Jun 23 19:59:30 2009
@@ -0,0 +1,174 @@
+/*
+ * 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.expressions;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.StringTokenizer;
+
+import javax.el.ELException;
+
+import com.google.common.collect.ImmutableList;
+
+import de.odysseus.el.misc.TypeConverter;
+
+/**
+ * Custom type converter class that overrides the default EL coercion rules
+ * where necessary. Specifically, Booleans are handled differently,
+ * and JSONArray is supported.
+ */
+class ShindigTypeConverter implements TypeConverter {
+
+ @SuppressWarnings("unchecked")
+ public <T> T convert(Object obj, Class<T> type) throws ELException {
+ // Handle boolean specially
+ if (type == Boolean.class || type == Boolean.TYPE) {
+ return (T) coerceToBoolean(obj);
+ }
+
+ if (type == JSONArray.class) {
+ return (T) coerceToJsonArray(obj);
+ }
+
+ if (type == Iterable.class) {
+ return (T) coerceToIterable(obj);
+ }
+
+ // Otherwise, use the default
+ return TypeConverter.DEFAULT.convert(obj, type);
+ }
+
+ /**
+ * Coerce objects to iterables. Iterables and JSONArrays have the obvious
+ * coercion. JSONObjects are coerced to single-element lists, unless
+ * they have a "list" property that is in array, in which case that's used.
+ */
+ private Iterable<?> coerceToIterable(Object obj) {
+ if (obj == null) {
+ return ImmutableList.of();
+ }
+
+ if (obj instanceof Iterable) {
+ return ((Iterable<?>) obj);
+ }
+
+ if (obj instanceof JSONArray) {
+ final JSONArray array = (JSONArray) obj;
+ // TODO: Extract JSONArrayIterator class?
+ return new Iterable<Object>() {
+ public Iterator<Object> iterator() {
+ return new Iterator<Object>() {
+ private int i = 0;
+
+ public boolean hasNext() {
+ return i < array.length();
+ }
+
+ public Object next() {
+ if (i >= array.length()) {
+ throw new NoSuchElementException();
+ }
+
+ try {
+ return array.get(i++);
+ } catch (Exception e) {
+ throw new ELException(e);
+ }
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+ };
+ }
+
+ if (obj instanceof JSONObject) {
+ JSONObject json = (JSONObject) obj;
+
+ // Does this object have a "list" property that is an array?
+ // TODO: add to specification
+ Object childList = json.opt("list");
+ if (childList != null && childList instanceof JSONArray) {
+ return coerceToIterable(childList);
+ }
+
+ // A scalar JSON value is treated as a single element list.
+ return ImmutableList.of(json);
+ }
+
+ return ImmutableList.of(obj);
+ }
+
+ private JSONArray coerceToJsonArray(Object obj) {
+ if (obj == null) {
+ return null;
+ }
+
+ if (obj instanceof JSONArray) {
+ return (JSONArray) obj;
+ }
+
+ if (obj instanceof String) {
+ JSONArray array = new JSONArray();
+ StringTokenizer tokenizer = new StringTokenizer(obj.toString(), ",");
+ while (tokenizer.hasMoreTokens()) {
+ array.put(tokenizer.nextToken());
+ }
+
+ return array;
+ }
+
+ throw new ELException("Could not coerce " + obj.getClass().getName() + "
to JSONArray");
+ }
+
+ /**
+ * Coerce the following booleans:
+ *
+ * null -> false
+ * empty string, and "false" -> false
+ * boolean false -> false
+ * number 0 -> false
+ *
+ * All else is true.
+ */
+ private Boolean coerceToBoolean(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+
+ if (obj instanceof String) {
+ return !("".equals(obj) || "false".equals(obj));
+ }
+
+ if (obj instanceof Boolean) {
+ return (Boolean) obj;
+ }
+
+ if (obj instanceof Number) {
+ return 0 != ((Number) obj).intValue();
+ }
+
+ return true;
+ }
+}
Modified:
incubator/shindig/trunk/java/common/src/main/resources/org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/resources/org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/resources/org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml
(original)
+++
incubator/shindig/trunk/java/common/src/main/resources/org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml
Tue Jun 23 19:59:30 2009
@@ -22,7 +22,7 @@
<!--
Mandatory Default Cache configuration. These settings will be applied to
caches
- created programmtically using CacheManager.add(String cacheName).
+ created programmatically using CacheManager.add(String cacheName).
The defaultCache has an implicit name "default" which is a reserved cache
name.
-->
@@ -79,4 +79,12 @@
overflowToDisk="false"
diskPersistent="false"
memoryStoreEvictionPolicy="LFU"/>
+
+ <!-- Used to cache parsed expressions based on their content -->
+ <cache name="expressions"
+ maxElementsInMemory="1000"
+ eternal="true"
+ overflowToDisk="false"
+ diskPersistent="false"
+ memoryStoreEvictionPolicy="LFU"/>
</ehcache>
Modified:
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
(original)
+++
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
Tue Jun 23 19:59:30 2009
@@ -83,7 +83,7 @@
@Test
public void parseBasicConfig() throws Exception {
ContainerConfig config = new
JsonContainerConfig(createDefaultContainer().getAbsolutePath(),
- new Expressions());
+ Expressions.forTesting());
assertEquals(1, config.getContainers().size());
for (String container : config.getContainers()) {
@@ -108,7 +108,7 @@
File childFile = createContainer(json);
ContainerConfig config = new
JsonContainerConfig(childFile.getAbsolutePath() +
- JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(), new
Expressions());
+ JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(),
Expressions.forTesting());
assertEquals(NESTED_VALUE, config.getString(CONTAINER_A, NESTED_KEY));
assertEquals(NESTED_VALUE, config.getString(CONTAINER_B, NESTED_KEY));
@@ -130,7 +130,7 @@
File childFile = createContainer(json);
File parentFile = createDefaultContainer();
ContainerConfig config = new
JsonContainerConfig(childFile.getAbsolutePath() +
- JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(), new
Expressions());
+ JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(),
Expressions.forTesting());
String value = config.getString(CHILD_CONTAINER, TOP_LEVEL_NAME);
assertEquals(TOP_LEVEL_VALUE, value);
@@ -157,7 +157,7 @@
@Test
public void invalidContainerReturnsNull() throws Exception {
ContainerConfig config = new
JsonContainerConfig(createDefaultContainer().getAbsolutePath(),
- new Expressions());
+ Expressions.forTesting());
assertNull("Did not return null for invalid container.",
config.getString("fake", PARENT_KEY));
}
@@ -168,12 +168,12 @@
json.put(PARENT_KEY, "bad bad bad parent!");
json.put(ARRAY_NAME, ARRAY_ALT_VALUE);
- new JsonContainerConfig(createContainer(json).getAbsolutePath(), new
Expressions());
+ new JsonContainerConfig(createContainer(json).getAbsolutePath(),
Expressions.forTesting());
}
@Test
public void pathQuery() throws Exception {
- ContainerConfig config = new
JsonContainerConfig(createDefaultContainer().getAbsolutePath(), new
Expressions());
+ ContainerConfig config = new
JsonContainerConfig(createDefaultContainer().getAbsolutePath(),
Expressions.forTesting());
String path = "${" + NESTED_KEY + "['" + NESTED_NAME + "']}";
String data = config.getString(DEFAULT_CONTAINER, path);
assertEquals(NESTED_VALUE, data);
@@ -187,7 +187,7 @@
json.put("expression", "Hello, ${world}!");
json.put("world", "Earth");
- ContainerConfig config = new
JsonContainerConfig(createContainer(json).getAbsolutePath(), new Expressions());
+ ContainerConfig config = new
JsonContainerConfig(createContainer(json).getAbsolutePath(),
Expressions.forTesting());
assertEquals("Hello, Earth!", config.getString(DEFAULT_CONTAINER,
"expression"));
}
@@ -203,7 +203,7 @@
File childFile = createContainer(json);
File parentFile = createDefaultContainer();
ContainerConfig config = new
JsonContainerConfig(childFile.getAbsolutePath() +
- JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(), new
Expressions());
+ JsonContainerConfig.FILE_SEPARATOR + parentFile.getAbsolutePath(),
Expressions.forTesting());
assertEquals(TOP_LEVEL_VALUE, config.getString(CHILD_CONTAINER,
"parentExpression"));
}
Modified:
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
(original)
+++
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
Tue Jun 23 19:59:30 2009
@@ -19,7 +19,9 @@
package org.apache.shindig.expressions;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.util.Map;
@@ -43,7 +45,7 @@
@Before
public void setUp() {
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
variables = Maps.newHashMap();
context = expressions.newELContext(new RootELResolver(variables));
}
@@ -118,6 +120,105 @@
assertNull(evaluate("${map.bar.baz}", Object.class));
}
+ @Test
+ public void booleanCoercionOfBooleans() throws Exception{
+ addVariable("bool", false);
+ assertFalse(evaluate("${bool}", Boolean.class));
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", true);
+ assertTrue(evaluate("${bool}", Boolean.class));
+ assertFalse(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Test
+ public void booleanCoercionOfNumbers() throws Exception{
+ addVariable("bool", 0);
+ assertFalse(evaluate("${bool}", Boolean.class));
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", 1);
+ assertTrue(evaluate("${bool}", Boolean.class));
+ assertFalse(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Test
+ public void booleanCoercionOfNull() throws Exception{
+ addVariable("bool", null);
+ assertFalse(evaluate("${bool}", Boolean.class));
+ assertTrue(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Test
+ public void booleanCoercionOfStrings() throws Exception{
+ addVariable("bool", "");
+ assertFalse(evaluate("${bool}", Boolean.class));
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", "false");
+ assertFalse(evaluate("${bool}", Boolean.class));
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ // Case-sensitive coercion: FALSE is true
+ addVariable("bool", "FALSE");
+ assertTrue(evaluate("${bool}", Boolean.class));
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", "true");
+ assertTrue(evaluate("${bool}", Boolean.class));
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", "booga");
+ assertTrue(evaluate("${bool}", Boolean.class));
+ assertFalse(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Test
+ public void iterableCoercionOfScalar() throws Exception {
+ addVariable("iter", "foo");
+ assertEquals(ImmutableList.of("foo"),
+ evaluate("${iter}", Iterable.class));
+ }
+
+ @Test
+ public void iterableCoercionOfNull() throws Exception {
+ addVariable("iter", null);
+ assertEquals(ImmutableList.of(),
+ evaluate("${iter}", Iterable.class));
+ }
+
+ @Test
+ public void iterableCoercionOfCollection() throws Exception {
+ addVariable("iter", ImmutableList.of(1, 2, 3));
+ assertEquals(ImmutableList.of(1, 2, 3),
+ evaluate("${iter}", Iterable.class));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void iterableCoercionOfJSONArray() throws Exception {
+ addVariable("iter", new JSONArray("[1,2,3]"));
+ assertEquals(ImmutableList.of(1, 2, 3),
+ ImmutableList.copyOf(evaluate("${iter}", Iterable.class)));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void iterableCoercionOfJSONObjectWithListProperty() throws Exception {
+ addVariable("iter", new JSONObject("{list: [1,2,3]}"));
+ assertEquals(ImmutableList.of(1, 2, 3),
+ ImmutableList.copyOf(evaluate("${iter}", Iterable.class)));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void iterableCoercionOfJSONObjectWithoutListProperty() throws
Exception {
+ JSONObject json = new JSONObject("{foo: [1,2,3]}");
+ addVariable("iter", json);
+ assertEquals(ImmutableList.of(json),
+ ImmutableList.copyOf(evaluate("${iter}", Iterable.class)));
+ }
+
private <T> T evaluate(String expression, Class<T> type) {
ValueExpression expr = expressions.parse(expression, type);
return type.cast(expr.getValue(context));
Modified:
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
(original)
+++
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
Tue Jun 23 19:59:30 2009
@@ -64,7 +64,7 @@
}
public void testExpressionEvaluation() {
- Expressions expressions = new Expressions(functions);
+ Expressions expressions = new Expressions(functions, null);
ELContext context = expressions.newELContext();
ValueExpression expression = expressions.parse("${other:bonjour()}",
String.class);
Modified:
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
(original)
+++
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
Tue Jun 23 19:59:30 2009
@@ -36,7 +36,7 @@
@Override
protected void setUp() {
Functions functions = new Functions(OpensocialFunctions.class);
- expressions = new Expressions(functions);
+ expressions = new Expressions(functions, null);
context = expressions.newELContext(new RootELResolver(vars));
}
Modified: incubator/shindig/trunk/java/gadgets/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/pom.xml (original)
+++ incubator/shindig/trunk/java/gadgets/pom.xml Tue Jun 23 19:59:30 2009
@@ -200,11 +200,11 @@
<artifactId>xml-apis</artifactId>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
<scope>provided</scope>
</dependency>
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=787808&r1=787807&r2=787808&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
Tue Jun 23 19:59:30 2009
@@ -21,12 +21,17 @@
import org.apache.shindig.expressions.Expressions;
import org.apache.shindig.gadgets.GadgetELResolver;
import org.apache.shindig.gadgets.parse.HtmlSerialization;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import java.io.IOException;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
import java.util.Set;
import java.util.logging.Logger;
@@ -35,17 +40,6 @@
import javax.el.ELResolver;
import javax.el.ValueExpression;
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -481,17 +475,8 @@
*/
public <T> T evaluate(String expression, Class<T> type, T defaultValue) {
try {
- Object result;
- // Coerce iterables specially
- if (type == Iterable.class) {
- ValueExpression expr = expressions.parse(expression, Object.class);
- Object value = expr.getValue(elContext);
- result = coerceToIterable(value);
- } else {
- ValueExpression expr = expressions.parse(expression, type);
- result = expr.getValue(elContext);
- }
-
+ ValueExpression expr = expressions.parse(expression, type);
+ Object result = expr.getValue(elContext);
return type.cast(result);
} catch (ELException e) {
logger.warning(e.getMessage());
@@ -499,69 +484,6 @@
}
}
- /**
- * Coerce objects to iterables. Iterables and JSONArrays have the obvious
- * coercion. JSONObjects are coerced to single-element lists, unless
- * they have a "list" property that is in array, in which case that's used.
- */
- private Iterable<?> coerceToIterable(Object value) {
- if (value == null) {
- return ImmutableList.of();
- }
-
- if (value instanceof Iterable) {
- return ((Iterable<?>) value);
- }
-
- if (value instanceof JSONArray) {
- final JSONArray array = (JSONArray) value;
- // TODO: Extract JSONArrayIterator class?
- return new Iterable<Object>() {
- public Iterator<Object> iterator() {
- return new Iterator<Object>() {
- private int i = 0;
-
- public boolean hasNext() {
- return i < array.length();
- }
-
- public Object next() {
- if (i >= array.length()) {
- throw new NoSuchElementException();
- }
-
- try {
- return array.get(i++);
- } catch (Exception e) {
- throw new ELException(e);
- }
- }
-
- public void remove() {
- throw new UnsupportedOperationException();
- }
- };
- }
- };
- }
-
- if (value instanceof JSONObject) {
- JSONObject json = (JSONObject) value;
-
- // Does this object have a "list" property that is an array?
- // TODO: add to specification
- Object childList = json.opt("list");
- if (childList != null && childList instanceof JSONArray) {
- return coerceToIterable(childList);
- }
-
- // A scalar JSON value is treated as a single element list.
- return ImmutableList.of(json);
- }
-
- return ImmutableList.of(value);
- }
-
private String getUniqueId() {
return "ostid" + (uniqueIdCounter++);
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetELResolverTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetELResolverTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetELResolverTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetELResolverTest.java
Tue Jun 23 19:59:30 2009
@@ -58,7 +58,7 @@
};
resolver = new GadgetELResolver(gadgetContext);
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
context = expressions.newELContext(resolver);
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelineExecutorTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelineExecutorTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelineExecutorTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelineExecutorTest.java
Tue Jun 23 19:59:30 2009
@@ -88,7 +88,7 @@
control = EasyMock.createStrictControl();
preloader = control.createMock(PipelinedDataPreloader.class);
preloaderService = new
ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null);
- executor = new PipelineExecutor(preloader, preloaderService, new
Expressions());
+ executor = new PipelineExecutor(preloader, preloaderService,
Expressions.forTesting());
context = new GadgetContext(){};
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java
Tue Jun 23 19:59:30 2009
@@ -55,7 +55,7 @@
*/
public class PipelinedDataPreloaderTest extends PreloaderTestFixture {
private ContainerConfig containerConfig;
- private final Expressions expressions = new Expressions();
+ private final Expressions expressions = Expressions.forTesting();
private static final String XML = "<Module xmlns:os=\"" +
PipelinedData.OPENSOCIAL_NAMESPACE
+ "\">" + "<ModulePrefs title=\"Title\"/>"
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
Tue Jun 23 19:59:30 2009
@@ -63,7 +63,7 @@
"{aliased: {aliases: ['some-alias', 'alias']}}" +
"}}}");
- containerConfig = new JsonContainerConfig(config, new Expressions());
+ containerConfig = new JsonContainerConfig(config,
Expressions.forTesting());
processor = new Processor(gadgetSpecFactory, substituter, containerConfig,
blacklist, null);
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
Tue Jun 23 19:59:30 2009
@@ -51,7 +51,7 @@
JSONObject config = createConfig();
JsonContainerConfig containerConfig =
- new JsonContainerConfig(config, new Expressions(new Functions()));
+ new JsonContainerConfig(config, new Expressions(new Functions(),
null));
mockFetcher = mock(HttpFetcher.class);
fetcher = new DefaultServiceFetcher(containerConfig, mockFetcher);
}
@@ -88,7 +88,7 @@
getJSONObject(DefaultServiceFetcher.GADGETS_FEATURES_CONFIG)
.remove(DefaultServiceFetcher.OSAPI_FEATURE_CONFIG);
JsonContainerConfig containerConfig =
- new JsonContainerConfig(config, new Expressions(new Functions()));
+ new JsonContainerConfig(config, new Expressions(new Functions(),
null));
fetcher = new DefaultServiceFetcher(containerConfig, mockFetcher);
EasyMock.expect(mockFetcher.fetch(EasyMock.isA(HttpRequest.class))).andReturn(
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/PipelineDataGadgetRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/PipelineDataGadgetRewriterTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/PipelineDataGadgetRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/PipelineDataGadgetRewriterTest.java
Tue Jun 23 19:59:30 2009
@@ -99,7 +99,7 @@
preloader = control.createMock(PipelinedDataPreloader.class);
preloaderService = new
ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null);
rewriter = new PipelineDataGadgetRewriter(new PipelineExecutor(preloader,
preloaderService,
- new Expressions()));
+ Expressions.forTesting()));
}
private void setupGadget(String gadgetXml) throws SpecParserException {
@@ -239,7 +239,7 @@
rewriter.parsePipelinedData(gadget, content.getDocument());
assertEquals(1, pipelines.size());
PipelinedData pipeline = pipelines.keySet().iterator().next();
- PipelinedData.Batch batch = pipeline.getBatch(new Expressions(), new
RootELResolver());
+ PipelinedData.Batch batch = pipeline.getBatch(Expressions.forTesting(),
new RootELResolver());
Map<String, Object> preloads = batch.getSocialPreloads();
JsonAssert.assertObjectEquals(
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
Tue Jun 23 19:59:30 2009
@@ -114,11 +114,11 @@
rewriter = new TemplateRewriter(
new Provider<TemplateProcessor>() {
public TemplateProcessor get() {
- return new DefaultTemplateProcessor(new Expressions());
+ return new DefaultTemplateProcessor(Expressions.forTesting());
}
},
new FakeMessageBundleFactory(),
- new Expressions(),
+ Expressions.forTesting(),
new DefaultTagRegistry(handlers),
new FakeTemplateLibraryFactory(),
new FakeContainerConfig());
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
Tue Jun 23 19:59:30 2009
@@ -54,7 +54,7 @@
public void setUp() {
elValues = Maps.newHashMap();
elResolver = new RootELResolver(elValues);
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
}
@Test
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java
Tue Jun 23 19:59:30 2009
@@ -224,7 +224,7 @@
+ "/></Content>";
View view = new View("test", Arrays.asList(XmlUtil.parse(xml)), SPEC_URL);
PipelinedData.Batch batch = view.getPipelinedData().getBatch(
- new Expressions(), new RootELResolver());
+ Expressions.forTesting(), new RootELResolver());
assertEquals(1, batch.getSocialPreloads().size());
assertTrue(batch.getSocialPreloads().containsKey("key"));
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=787808&r1=787807&r2=787808&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
Tue Jun 23 19:59:30 2009
@@ -75,7 +75,7 @@
@Before
public void setUp() throws Exception {
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
variables = Maps.newHashMap();
singletonElementHandler = new SingletonElementHandler();
Set<TagHandler> handlers = ImmutableSet.<TagHandler>of(
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/MessageELResolverTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/MessageELResolverTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/MessageELResolverTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/MessageELResolverTest.java
Tue Jun 23 19:59:30 2009
@@ -50,7 +50,7 @@
@Before
public void setUp() throws Exception {
messageBundle = new MessageBundle(XmlUtil.parse(MESSAGE_BUNDLE));
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
context = expressions.newELContext(new MessageELResolver(expressions,
messageBundle));
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java
Tue Jun 23 19:59:30 2009
@@ -63,7 +63,7 @@
@Before
public void setUp() throws Exception {
- expressions = new Expressions();
+ expressions = Expressions.forTesting();
variables = Maps.newHashMap();
Set<TagHandler> handlers = ImmutableSet.of((TagHandler) new
RenderTagHandler());
registry = new DefaultTagRegistry(handlers);
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java
Tue Jun 23 19:59:30 2009
@@ -86,7 +86,7 @@
@Test
public void testAddedResources() {
final TemplateContext context = new TemplateContext(null,
ImmutableMap.<String, Object>of());
- TemplateProcessor processor = new DefaultTemplateProcessor(new
Expressions()) {
+ TemplateProcessor processor = new
DefaultTemplateProcessor(Expressions.forTesting()) {
@Override
public TemplateContext getTemplateContext() {
return context;
Modified: incubator/shindig/trunk/java/server/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/pom.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/java/server/pom.xml (original)
+++ incubator/shindig/trunk/java/server/pom.xml Tue Jun 23 19:59:30 2009
@@ -183,7 +183,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
<scope>test</scope>
</dependency>
Modified: incubator/shindig/trunk/java/social-api/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/pom.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/pom.xml (original)
+++ incubator/shindig/trunk/java/social-api/pom.xml Tue Jun 23 19:59:30 2009
@@ -176,7 +176,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
<scope>test</scope>
</dependency>
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
Tue Jun 23 19:59:30 2009
@@ -75,5 +75,9 @@
Names.named("shindig.containers.default"))
.toInstance("res://containers/default/container.js");
bind(ContainerConfig.class).to(JsonContainerConfig.class);
+
+ bind(Integer.class).annotatedWith(
+ Names.named("shindig.cache.lru.default.capacity"))
+ .toInstance(10);
}
}
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java
Tue Jun 23 19:59:30 2009
@@ -80,7 +80,7 @@
"{supportedFields: {activity: ['id', 'title']}}" +
"}}}");
- containerConfig = new JsonContainerConfig(config, new Expressions());
+ containerConfig = new JsonContainerConfig(config,
Expressions.forTesting());
handler = new ActivityHandler(activityService, containerConfig);
registry = new DefaultHandlerRegistry(null, converter,
new HandlerExecutionListener.NoOpHandler());
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
Tue Jun 23 19:59:30 2009
@@ -89,7 +89,7 @@
"{supportedFields: {person: ['id', {name: 'familyName'}]}}" +
"}}}");
- containerConfig = new JsonContainerConfig(config, new Expressions());
+ containerConfig = new JsonContainerConfig(config,
Expressions.forTesting());
handler = new PersonHandler(personService, containerConfig);
registry = new DefaultHandlerRegistry(null, converter,
new HandlerExecutionListener.NoOpHandler());
Modified: incubator/shindig/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/pom.xml?rev=787808&r1=787807&r2=787808&view=diff
==============================================================================
--- incubator/shindig/trunk/pom.xml (original)
+++ incubator/shindig/trunk/pom.xml Tue Jun 23 19:59:30 2009
@@ -1203,6 +1203,16 @@
<id>jboss</id>
<url>http://repository.jboss.com/maven2</url>
</repository>
+ <repository>
+ <id>sakai repo temp for Juel</id>
+ <url>http://source.sakaiproject.org/maven2</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
</repositories>
<!-- ======================================================================
-->
@@ -1440,20 +1450,15 @@
<artifactId>sanselan</artifactId>
<version>0.97-incubator</version>
</dependency>
- <!--
- Intentionally not using the juel-impl RC build because we care about
- stability of that code. juel-api only has an RC build available,
- but is also simple enough I'm not too concerned about bugs.
- -->
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
- <version>2.1.1.RC2</version>
+ <version>2.1.2</version>
</dependency>
<dependency>
- <groupId>juel</groupId>
+ <groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
- <version>2.1.0</version>
+ <version>2.1.2</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>