You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/07/20 01:27:40 UTC
svn commit: r965675 - in /shindig/trunk: ./ java/common/
java/common/src/main/java/org/apache/shindig/expressions/
java/common/src/main/java/org/apache/shindig/expressions/jasper/
java/common/src/main/java/org/apache/shindig/expressions/juel/ java/comm...
Author: lindner
Date: Mon Jul 19 23:27:39 2010
New Revision: 965675
URL: http://svn.apache.org/viewvc?rev=965675&view=rev
Log:
SHINDIG-1383 | Patch from Mark Nesbitt | Allow choice of El implementations (Juel/Jasper)
Added:
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ELTypeConverter.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ExpressionProvider.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperConversionModule.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperModule.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperProvider.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperTypeConverter.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelModule.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelProvider.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelTypeConverter.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/JasperExpressionsTest.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/JuelExpressionsTest.java
Modified:
shindig/trunk/java/common/pom.xml
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
shindig/trunk/java/gadgets/pom.xml
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateELResolver.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
shindig/trunk/java/samples/pom.xml
shindig/trunk/java/server/pom.xml
shindig/trunk/java/social-api/pom.xml
shindig/trunk/pom.xml
Modified: shindig/trunk/java/common/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/pom.xml (original)
+++ shindig/trunk/java/common/pom.xml Mon Jul 19 23:27:39 2010
@@ -155,9 +155,12 @@
<artifactId>juel-impl</artifactId>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
- <scope>provided</scope>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>jasper-el</artifactId>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ELTypeConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ELTypeConverter.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ELTypeConverter.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ELTypeConverter.java Mon Jul 19 23:27:39 2010
@@ -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.expressions;
+
+/**
+ * Expression Language type conversion interface.
+ */
+import javax.el.ELException;
+
+import org.apache.shindig.expressions.juel.JuelTypeConverter;
+
+import com.google.inject.ImplementedBy;
+
+@ImplementedBy(JuelTypeConverter.class)
+public interface ELTypeConverter {
+
+ /**
+ * for some EL without custom type conversion (Jasper), we want to delay
+ * conversion until after expression has been evaluated (with minimal amount of coercion).
+ */
+ public boolean isPostConvertible(Class<?> type);
+
+ /**
+ *
+ */
+ public <T> T convert(Object obj, Class<T> type) throws ELException;
+
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ExpressionProvider.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ExpressionProvider.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ExpressionProvider.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ExpressionProvider.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,40 @@
+/*
+ * 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 javax.el.ExpressionFactory;
+
+import org.apache.shindig.common.cache.CacheProvider;
+import org.apache.shindig.expressions.juel.JuelProvider;
+
+import com.google.inject.ImplementedBy;
+
+@ImplementedBy(JuelProvider.class)
+public interface ExpressionProvider {
+
+ /**
+ *
+ * @param cacheProvider - the cache provider - not used by all EL implementations.
+ * @param converter - type conversion class -
+ * @return
+ */
+ ExpressionFactory newExpressionFactory(CacheProvider cacheProvider,
+ ELTypeConverter converter);
+
+}
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/Expressions.java Mon Jul 19 23:27:39 2010
@@ -18,20 +18,23 @@
*/
package org.apache.shindig.expressions;
-import org.apache.shindig.common.cache.Cache;
import org.apache.shindig.common.cache.CacheProvider;
-import org.apache.shindig.common.cache.NullCache;
+import org.apache.shindig.expressions.juel.JuelProvider;
+import org.apache.shindig.expressions.juel.JuelTypeConverter;
import java.util.Map;
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.PropertyNotFoundException;
+import javax.el.PropertyNotWritableException;
import javax.el.ValueExpression;
import javax.el.VariableMapper;
@@ -39,43 +42,46 @@ import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import de.odysseus.el.ExpressionFactoryImpl;
-import de.odysseus.el.misc.TypeConverter;
-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;
- private final TypeConverter typeConverter;
+ private final ELTypeConverter typeConverter;
/**
* Returns an instance of Expressions that doesn't require
* any functions or perform any caching. Use only for testing.
*/
+ public static Expressions forTesting(Functions functions) {
+ return new Expressions(functions, null, new JuelTypeConverter(), new JuelProvider());
+ }
+
+ /**
+ * Returns an instance of Expressions that doesn't require
+ * any functions or perform any caching. Use only for testing.
+ */
public static Expressions forTesting() {
- return new Expressions(null, null, new ShindigTypeConverter());
+ return new Expressions(null, null, new JuelTypeConverter(), new JuelProvider());
}
@Inject
public Expressions(Functions functions, CacheProvider cacheProvider,
- ShindigTypeConverter typeConverter) {
+ ELTypeConverter typeConverter, ExpressionProvider expProvider) {
this.functions = functions;
this.typeConverter = typeConverter;
- factory = newExpressionFactory(cacheProvider);
+ factory = newExpressionFactory(expProvider, cacheProvider);
// Stub context with no FunctionMapper, used only to parse expressions
parseContext = new Context(null);
defaultELResolver = createDefaultELResolver();
+
+
}
/**
@@ -100,40 +106,31 @@ public class Expressions {
* @return a ValueExpression corresponding to the expression
*/
public ValueExpression parse(String expression, Class<?> type) {
- return factory.createValueExpression(parseContext, expression, type);
+ boolean shouldConvert = typeConverter.isPostConvertible(type);
+ if (shouldConvert) {
+ return new ValueExpressionWrapper(factory.createValueExpression(
+ parseContext, expression, Object.class), typeConverter, type);
+ }
+ else {
+ return factory.createValueExpression(parseContext, expression, type);
+ }
}
public ValueExpression constant(Object value, Class<?> type) {
- return factory.createValueExpression(value, type);
- }
-
- /**
- * 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);
+ boolean shouldConvert = typeConverter.isPostConvertible(type);
+ if (shouldConvert) {
+ return new ValueExpressionWrapper(factory.createValueExpression(value, Object.class), typeConverter, type);
}
-
- 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);
- }
- };
+ else {
+ return factory.createValueExpression(value, type);
+ }
+
}
- private ExpressionFactory newExpressionFactory(CacheProvider cacheProvider) {
- TreeStore store = new TreeStore(new Builder(), createTreeCache(cacheProvider));
- return new ExpressionFactoryImpl(store, typeConverter);
+ private ExpressionFactory newExpressionFactory(
+ ExpressionProvider expProvider, CacheProvider cacheProvider) {
+ return expProvider.newExpressionFactory(cacheProvider, typeConverter);
}
/**
@@ -200,4 +197,71 @@ public class Expressions {
}
}
+
+ private class ValueExpressionWrapper extends ValueExpression {
+
+ private static final long serialVersionUID = 2135607228206570229L;
+ private ValueExpression expression = null;
+ private Class<?> type = null;
+ private ELTypeConverter converter = null;
+
+ public ValueExpressionWrapper(ValueExpression ve,
+ ELTypeConverter converter, Class<?> type) {
+ expression = ve;
+ this.type = type;
+ this.converter = converter;
+ }
+
+ @Override
+ public Object getValue(ELContext context) throws NullPointerException,
+ PropertyNotFoundException, ELException {
+ return converter.convert(expression.getValue(context), type);
+ }
+
+ @Override
+ public Class<?> getExpectedType() {
+ return expression.getExpectedType();
+ }
+
+ @Override
+ public Class<?> getType(ELContext context) throws NullPointerException,
+ PropertyNotFoundException, ELException {
+ return expression.getType(context);
+ }
+
+ @Override
+ public boolean isReadOnly(ELContext context) throws NullPointerException,
+ PropertyNotFoundException, ELException {
+ return expression.isReadOnly(context);
+ }
+
+ @Override
+ public void setValue(ELContext context, Object value)
+ throws NullPointerException, PropertyNotFoundException,
+ PropertyNotWritableException, ELException {
+ expression.setValue(context, value);
+
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return expression.equals(obj);
+ }
+
+ @Override
+ public String getExpressionString() {
+ return expression.getExpressionString();
+ }
+
+ @Override
+ public int hashCode() {
+ return expression.hashCode();
+ }
+
+ @Override
+ public boolean isLiteralText() {
+ return expression.isLiteralText();
+ }
+ }
+
}
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java Mon Jul 19 23:27:39 2010
@@ -28,19 +28,18 @@ import java.util.StringTokenizer;
import javax.el.ELException;
import com.google.common.collect.ImmutableList;
-import com.google.inject.Inject;
-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.
*/
-public class ShindigTypeConverter implements TypeConverter {
-
- @Inject
- public ShindigTypeConverter() {
+public class ShindigTypeConverter implements ELTypeConverter {
+
+
+ public boolean isPostConvertible(Class<?> type) {
+ return false;
}
@SuppressWarnings("unchecked")
@@ -58,8 +57,8 @@ public class ShindigTypeConverter implem
return (T) coerceToIterable(obj);
}
- // Otherwise, use the default
- return TypeConverter.DEFAULT.convert(obj, type);
+ // Nothing more we can do.
+ return null;
}
/**
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperConversionModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperConversionModule.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperConversionModule.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperConversionModule.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.jasper;
+
+
+import org.apache.shindig.expressions.ELTypeConverter;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+/**
+ * Creates a module to supply a Jasper Type Converter
+ */
+public class JasperConversionModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ELTypeConverter.class).to(JasperTypeConverter.class).in(Scopes.SINGLETON);;
+ }
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperModule.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperModule.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperModule.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.jasper;
+
+import org.apache.shindig.expressions.ExpressionProvider;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+/**
+ * Creates a module to supply a Jasper Provider
+ */
+public class JasperModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ExpressionProvider.class).to(JasperProvider.class)
+ .in(Scopes.SINGLETON);
+ }
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperProvider.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperProvider.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperProvider.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperProvider.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,34 @@
+/*
+ * 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.jasper;
+
+import javax.el.ExpressionFactory;
+import org.apache.el.ExpressionFactoryImpl;
+
+import org.apache.shindig.common.cache.CacheProvider;
+import org.apache.shindig.expressions.ELTypeConverter;
+import org.apache.shindig.expressions.ExpressionProvider;
+
+public class JasperProvider implements ExpressionProvider {
+
+ public ExpressionFactory newExpressionFactory(CacheProvider cacheProvider,
+ ELTypeConverter converter) {
+ return new ExpressionFactoryImpl();
+ }
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperTypeConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperTypeConverter.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperTypeConverter.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/jasper/JasperTypeConverter.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.jasper;
+
+import org.apache.shindig.expressions.ShindigTypeConverter;
+import org.json.JSONArray;
+
+public class JasperTypeConverter extends ShindigTypeConverter {
+
+ @Override
+ public boolean isPostConvertible(Class<?> type) {
+ if (type == Boolean.class || type == Boolean.TYPE
+ || type == JSONArray.class || type == Iterable.class) {
+ return true;
+ }
+ return false;
+ }
+
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelModule.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelModule.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelModule.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,34 @@
+/*
+ * 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.juel;
+
+import org.apache.shindig.expressions.ExpressionProvider;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+/**
+ * Creates a module to supply a Juel Provider
+ */
+public class JuelModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ExpressionProvider.class).to(JuelProvider.class).in(Scopes.SINGLETON);;
+ }
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelProvider.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelProvider.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelProvider.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelProvider.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,73 @@
+/*
+ * 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.juel;
+
+import javax.el.ExpressionFactory;
+
+import de.odysseus.el.ExpressionFactoryImpl;
+import de.odysseus.el.misc.TypeConverter;
+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;
+
+import org.apache.shindig.common.cache.Cache;
+import org.apache.shindig.common.cache.NullCache;
+import org.apache.shindig.common.cache.CacheProvider;
+import org.apache.shindig.expressions.ELTypeConverter;
+import org.apache.shindig.expressions.ExpressionProvider;
+
+public class JuelProvider implements ExpressionProvider {
+
+ private static final String EXPRESSION_CACHE = "expressions";
+
+ /**
+ * Any provided JUEL converter must implement both JUEL TypeConverter impl and ELTypeConverter
+ */
+ public ExpressionFactory newExpressionFactory(CacheProvider cacheProvider,
+ ELTypeConverter converter) {
+ TreeStore store = new TreeStore(new Builder(),
+ createTreeCache(cacheProvider));
+ return new ExpressionFactoryImpl(store, (TypeConverter) converter);
+ }
+
+ /**
+ * 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);
+ }
+ };
+ }
+
+}
Added: shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelTypeConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelTypeConverter.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelTypeConverter.java (added)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/expressions/juel/JuelTypeConverter.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,42 @@
+/*
+ * 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.juel;
+
+import javax.el.ELException;
+
+import org.apache.shindig.expressions.ShindigTypeConverter;
+
+import de.odysseus.el.misc.TypeConverter;
+
+public class JuelTypeConverter extends ShindigTypeConverter implements
+ TypeConverter {
+
+ private static final long serialVersionUID = -4382092735987940726L;
+
+ @Override
+ public <T> T convert(Object obj, Class<T> type) throws ELException {
+ T retValue = super.convert(obj, type);
+ if (retValue == null) {
+ retValue = TypeConverter.DEFAULT.convert(obj, type);
+ }
+
+ return retValue;
+ }
+
+}
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/ExpressionsTest.java Mon Jul 19 23:27:39 2010
@@ -39,7 +39,7 @@ import com.google.common.collect.Immutab
import com.google.common.collect.Maps;
public class ExpressionsTest {
- private Expressions expressions;
+ public Expressions expressions;
private ELContext context;
private Map<String, Object> variables;
@@ -133,14 +133,13 @@ public class ExpressionsTest {
@Test
public void booleanCoercionOfNumbers() throws Exception{
+ // Negation tests have been moved to EL subdir
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{
@@ -151,6 +150,7 @@ public class ExpressionsTest {
@Test
public void booleanCoercionOfStrings() throws Exception{
+ // Negation tests for FALSE and any String have been moved El subdir
addVariable("bool", "");
assertFalse(evaluate("${bool}", Boolean.class));
assertTrue(evaluate("${!bool}", Boolean.class));
@@ -162,7 +162,6 @@ public class ExpressionsTest {
// 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));
@@ -170,8 +169,8 @@ public class ExpressionsTest {
addVariable("bool", "booga");
assertTrue(evaluate("${bool}", Boolean.class));
- assertFalse(evaluate("${!bool}", Boolean.class));
- }
+ }
+
@Test
public void iterableCoercionOfScalar() throws Exception {
@@ -219,12 +218,12 @@ public class ExpressionsTest {
ImmutableList.copyOf(evaluate("${iter}", Iterable.class)));
}
- private <T> T evaluate(String expression, Class<T> type) {
+ public <T> T evaluate(String expression, Class<T> type) {
ValueExpression expr = expressions.parse(expression, type);
return type.cast(expr.getValue(context));
}
- private void addVariable(String key, Object value) {
+ public void addVariable(String key, Object value) {
variables.put(key, value);
}
}
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/FunctionsTest.java Mon Jul 19 23:27:39 2010
@@ -70,7 +70,7 @@ public class FunctionsTest extends Asser
@Test
public void testExpressionEvaluation() {
- Expressions expressions = new Expressions(functions, null, new ShindigTypeConverter());
+ Expressions expressions = Expressions.forTesting(functions);
ELContext context = expressions.newELContext();
ValueExpression expression = expressions.parse("${other:bonjour()}", String.class);
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/OpensocialFunctionsTest.java Mon Jul 19 23:27:39 2010
@@ -19,6 +19,7 @@
package org.apache.shindig.expressions;
import org.apache.commons.codec.binary.Base64;
+
import java.util.Map;
import javax.el.ELContext;
@@ -38,7 +39,7 @@ public class OpensocialFunctionsTest ext
@Before
public void setUp() {
Functions functions = new Functions(OpensocialFunctions.class);
- expressions = new Expressions(functions, null, new ShindigTypeConverter());
+ expressions = Expressions.forTesting(functions);
context = expressions.newELContext(new RootELResolver(vars));
}
Added: shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/JasperExpressionsTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/JasperExpressionsTest.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/JasperExpressionsTest.java (added)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/jasper/JasperExpressionsTest.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,65 @@
+/*
+ * 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.jasper;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.expressions.ExpressionsTest;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class JasperExpressionsTest extends ExpressionsTest{
+
+ @Before
+ @Override
+ public void setUp() {
+ super.setUp();
+ expressions = new Expressions(null, null, new JasperTypeConverter(), new JasperProvider());
+ }
+
+ @Ignore
+ public void booleanCoercionOfStringsFails() throws Exception{
+ // Case-sensitive coercion: FALSE is true
+ // Test fails because Jasper type conversion routines does not recognize FALSE.
+ addVariable("bool", "FALSE");
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ // Jasper cannot handle this
+ addVariable("bool", "booga");
+ assertFalse(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Ignore
+ public void booleanCoercionOfNumbersFails() throws Exception {
+ // These test cases will not pass with Jasper due to ELSupport exceptions
+ // thrown when coercing Integer to Boolean
+ addVariable("bool", 0);
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", 1);
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ evaluate("${true && 5}", String.class);
+ }
+
+}
Added: shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/JuelExpressionsTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/JuelExpressionsTest.java?rev=965675&view=auto
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/JuelExpressionsTest.java (added)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/expressions/juel/JuelExpressionsTest.java Mon Jul 19 23:27:39 2010
@@ -0,0 +1,81 @@
+/*
+ * 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.juel;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import javax.el.ELContext;
+import javax.el.ValueExpression;
+
+import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.expressions.RootELResolver;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Maps;
+
+public class JuelExpressionsTest {
+
+ private Expressions expressions;
+ private ELContext context;
+ private Map<String, Object> variables;
+
+ @Before
+ public void setUp() {
+ expressions = Expressions.forTesting(null);
+ variables = Maps.newHashMap();
+ context = expressions.newELContext(new RootELResolver(variables));
+ }
+
+ @Test
+ public void booleanCoercionOfStringsFails() throws Exception {
+
+ addVariable("bool", "FALSE");
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", "booga");
+ assertFalse(evaluate("${!bool}", Boolean.class));
+ }
+
+ @Test
+ public void booleanCoercionOfNumbersFails() throws Exception {
+ addVariable("bool", 0);
+ assertTrue(evaluate("${!bool}", Boolean.class));
+
+ addVariable("bool", 1);
+ assertFalse(evaluate("${!bool}", Boolean.class));
+
+ evaluate("${true && 5}", String.class);
+ }
+
+ private <T> T evaluate(String expression, Class<T> type) {
+
+ ValueExpression expr = expressions.parse(expression, type);
+ return type.cast(expr.getValue(context));
+ }
+
+ private void addVariable(String key, Object value) {
+ variables.put(key, value);
+ }
+
+}
Modified: shindig/trunk/java/gadgets/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/pom.xml (original)
+++ shindig/trunk/java/gadgets/pom.xml Mon Jul 19 23:27:39 2010
@@ -228,13 +228,8 @@
<artifactId>xml-apis</artifactId>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
- <scope>provided</scope>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java Mon Jul 19 23:27:39 2010
@@ -479,6 +479,8 @@ public class DefaultTemplateProcessor im
public <T> T evaluate(String expression, Class<T> type, T defaultValue) {
try {
ValueExpression expr = expressions.parse(expression, type);
+ // Workaround for inability of Jasper-EL resolvers to access VariableMapper
+ elContext.putContext(TemplateContext.class, elContext);
Object result = expr.getValue(elContext);
return type.cast(result);
} catch (ELException e) {
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateELResolver.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateELResolver.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateELResolver.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateELResolver.java Mon Jul 19 23:27:39 2010
@@ -91,7 +91,9 @@ public class TemplateELResolver extends
// Check variables.
if (property instanceof String) {
- ValueExpression valueExp = context.getVariableMapper().resolveVariable((String) property);
+ // Workaround for inability of Jasper-EL resolvers to access VariableMapper
+ ELContext elContext = (ELContext)context.getContext(TemplateContext.class);
+ ValueExpression valueExp = elContext.getVariableMapper().resolveVariable((String) property);
if (valueExp != null) {
context.setPropertyResolved(true);
return valueExp.getValue(context);
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/DefaultServiceFetcherTest.java Mon Jul 19 23:27:39 2010
@@ -57,7 +57,7 @@ public class DefaultServiceFetcherTest e
JSONObject config = createConfig();
JsonContainerConfig containerConfig =
- new JsonContainerConfig(config, new Expressions(new Functions(), null, new ShindigTypeConverter()));
+ new JsonContainerConfig(config, Expressions.forTesting(new Functions()));
mockFetcher = mock(HttpFetcher.class);
fetcher = new DefaultServiceFetcher(containerConfig, mockFetcher);
}
@@ -96,7 +96,7 @@ public class DefaultServiceFetcherTest e
.remove(DefaultServiceFetcher.OSAPI_FEATURE_CONFIG);
JsonContainerConfig containerConfig =
new JsonContainerConfig(config,
- new Expressions(new Functions(), null, new ShindigTypeConverter()));
+ Expressions.forTesting(new Functions()));
fetcher = new DefaultServiceFetcher(containerConfig, mockFetcher);
EasyMock.expect(mockFetcher.fetch(EasyMock.isA(HttpRequest.class))).andReturn(
Modified: shindig/trunk/java/samples/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/samples/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/samples/pom.xml (original)
+++ shindig/trunk/java/samples/pom.xml Mon Jul 19 23:27:39 2010
@@ -169,10 +169,10 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
<scope>test</scope>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.apache.shindig</groupId>
<artifactId>shindig-common</artifactId>
Modified: shindig/trunk/java/server/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/server/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/server/pom.xml (original)
+++ shindig/trunk/java/server/pom.xml Mon Jul 19 23:27:39 2010
@@ -176,8 +176,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Modified: shindig/trunk/java/social-api/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/java/social-api/pom.xml (original)
+++ shindig/trunk/java/social-api/pom.xml Mon Jul 19 23:27:39 2010
@@ -162,8 +162,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Modified: shindig/trunk/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/pom.xml?rev=965675&r1=965674&r2=965675&view=diff
==============================================================================
--- shindig/trunk/pom.xml (original)
+++ shindig/trunk/pom.xml Mon Jul 19 23:27:39 2010
@@ -1548,14 +1548,25 @@
<version>0.97-incubator</version>
</dependency>
<dependency>
- <groupId>de.odysseus.juel</groupId>
- <artifactId>juel-api</artifactId>
- <version>2.1.3</version>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>el-api</artifactId>
+ <version>6.0.26</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>jasper-el</artifactId>
+ <version>6.0.26</version>
</dependency>
<dependency>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
<version>2.1.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>de.odysseus.juel</groupId>
+ <artifactId>juel-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>