Author: ilgrosso
Date: Thu Apr 10 14:54:38 2014
New Revision: 1586317
URL: http://svn.apache.org/r1586317
Log:
Refactoring JEXL evaluation
Added:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
(with props)
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
(with props)
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
- copied, changed from r1586315,
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/JexlUtil.java
Removed:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/JexlUtil.java
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/connid/ConnObjectUtil.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerAttr.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/LDAPMembershipPropagationActions.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/ResourceDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/SchemaDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java
syncope/branches/1_1_X/core/src/main/resources/syncopeContext.xml
syncope/branches/1_1_X/core/src/test/resources/persistenceTestEnv.xml
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/connid/ConnObjectUtil.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/connid/ConnObjectUtil.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/connid/ConnObjectUtil.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/connid/ConnObjectUtil.java
Thu Apr 10 14:54:38 2014
@@ -59,7 +59,7 @@ import org.apache.syncope.core.rest.data
import org.apache.syncope.core.util.ApplicationContextProvider;
import org.apache.syncope.core.util.AttributableUtil;
import org.apache.syncope.core.util.InvalidPasswordPolicySpecException;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.apache.syncope.core.util.MappingUtil;
import org.apache.syncope.core.util.SecureRandomUtil;
import org.apache.syncope.core.util.VirAttrCache;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerAttr.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerAttr.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerAttr.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerAttr.java
Thu Apr 10 14:54:38 2014
@@ -25,7 +25,7 @@ import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.MapContext;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
@MappedSuperclass
public abstract class AbstractDerAttr extends AbstractBaseBean {
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/LDAPMembershipPropagationActions.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/LDAPMembershipPropagationActions.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/LDAPMembershipPropagationActions.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/LDAPMembershipPropagationActions.java
Thu Apr 10 14:54:38 2014
@@ -32,7 +32,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
import org.apache.syncope.core.persistence.dao.UserDAO;
import org.apache.syncope.core.propagation.DefaultPropagationActions;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
import org.identityconnectors.framework.common.objects.AttributeUtil;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
Thu Apr 10 14:54:38 2014
@@ -51,7 +51,7 @@ import org.apache.syncope.core.rest.data
import org.apache.syncope.core.rest.data.RoleDataBinder;
import org.apache.syncope.core.rest.data.UserDataBinder;
import org.apache.syncope.core.util.AttributableUtil;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.apache.syncope.core.util.MappingUtil;
import org.apache.syncope.core.util.VirAttrCache;
import org.apache.syncope.core.workflow.WorkflowResult;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java
Thu Apr 10 14:54:38 2014
@@ -63,7 +63,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.VirSchemaDAO;
import org.apache.syncope.core.propagation.PropagationByResource;
import org.apache.syncope.core.util.AttributableUtil;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.apache.syncope.core.util.MappingUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
Thu Apr 10 14:54:38 2014
@@ -24,7 +24,7 @@ import org.apache.syncope.common.types.S
import
org.apache.syncope.common.validation.SyncopeClientCompositeErrorException;
import org.apache.syncope.common.validation.SyncopeClientException;
import org.apache.syncope.core.persistence.beans.AbstractDerSchema;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/ResourceDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/ResourceDataBinder.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/ResourceDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/ResourceDataBinder.java
Thu Apr 10 14:54:38 2014
@@ -48,7 +48,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.ConnInstanceDAO;
import org.apache.syncope.core.persistence.dao.NotFoundException;
import org.apache.syncope.core.persistence.dao.PolicyDAO;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/SchemaDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/SchemaDataBinder.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/SchemaDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/SchemaDataBinder.java
Thu Apr 10 14:54:38 2014
@@ -28,7 +28,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.beans.AbstractSchema;
import org.apache.syncope.core.persistence.dao.SchemaDAO;
import org.apache.syncope.core.util.AttributableUtil;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
Thu Apr 10 14:54:38 2014
@@ -43,7 +43,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.NotFoundException;
import org.apache.syncope.core.persistence.dao.ResourceDAO;
import org.apache.syncope.core.persistence.dao.TaskExecDAO;
-import org.apache.syncope.core.util.JexlUtil;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import org.apache.syncope.core.util.TaskUtil;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java
Thu Apr 10 14:54:38 2014
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.util;
+import org.apache.syncope.core.util.jexl.JexlUtil;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Collection;
Added:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java?rev=1586317&view=auto
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
(added)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
Thu Apr 10 14:54:38 2014
@@ -0,0 +1,43 @@
+/*
+ * 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.syncope.core.util.jexl;
+
+import org.apache.commons.jexl2.JexlInfo;
+import org.apache.commons.jexl2.introspection.JexlMethod;
+import org.apache.commons.jexl2.introspection.JexlPropertyGet;
+import org.apache.commons.jexl2.introspection.UberspectImpl;
+import org.apache.commons.logging.Log;
+
+class ClassFreeUberspectImpl extends UberspectImpl {
+
+ public ClassFreeUberspectImpl(final Log runtimeLogger) {
+ super(runtimeLogger);
+ }
+
+ @Override
+ public JexlPropertyGet getPropertyGet(final Object obj, final Object
identifier, final JexlInfo info) {
+ return "class".equals(identifier) ? null : super.getPropertyGet(obj,
identifier, info);
+ }
+
+ @Override
+ public JexlMethod getMethod(final Object obj, final String method, final
Object[] args, final JexlInfo info) {
+ return "getClass".equals(method) ? null : super.getMethod(obj, method,
args, info);
+ }
+
+}
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/ClassFreeUberspectImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java?rev=1586317&view=auto
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
(added)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
Thu Apr 10 14:54:38 2014
@@ -0,0 +1,36 @@
+/*
+ * 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.syncope.core.util.jexl;
+
+/**
+ * A class loader that will throw {@link ClassNotFoundException} for every
class name.
+ */
+class EmptyClassLoader extends ClassLoader {
+
+ @Override
+ public Class<?> loadClass(final String name) throws ClassNotFoundException
{
+ throw new ClassNotFoundException("This classloader won't attemp to
load " + name);
+ }
+
+ @Override
+ protected Class<?> loadClass(final String name, boolean resolve) throws
ClassNotFoundException {
+ throw new ClassNotFoundException("This classloader won't attemp to
load " + name);
+ }
+
+}
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/EmptyClassLoader.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
(from r1586315,
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/JexlUtil.java)
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java?p2=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java&p1=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/JexlUtil.java&r1=1586315&r2=1586317&rev=1586317&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/JexlUtil.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
Thu Apr 10 14:54:38 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.syncope.core.util;
+package org.apache.syncope.core.util.jexl;
import java.lang.reflect.Field;
import java.util.Collection;
@@ -36,13 +36,14 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.beans.AbstractAttributable;
import org.apache.syncope.core.persistence.beans.AbstractDerAttr;
import org.apache.syncope.core.persistence.beans.AbstractVirAttr;
+import org.apache.syncope.core.util.DataFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @see http://commons.apache.org/jexl/reference/index.html
*/
-public class JexlUtil {
+public final class JexlUtil {
/**
* Logger.
@@ -57,7 +58,11 @@ public class JexlUtil {
private static JexlEngine getEngine() {
synchronized (LOG) {
if (jexlEngine == null) {
- jexlEngine =
ApplicationContextProvider.getApplicationContext().getBean(JexlEngine.class);
+ jexlEngine = new JexlEngine(new ClassFreeUberspectImpl(null),
null, null, null);
+ jexlEngine.setClassLoader(new EmptyClassLoader());
+ jexlEngine.setCache(512);
+ jexlEngine.setLenient(true);
+ jexlEngine.setSilent(false);
}
}
Modified: syncope/branches/1_1_X/core/src/main/resources/syncopeContext.xml
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/resources/syncopeContext.xml?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/resources/syncopeContext.xml (original)
+++ syncope/branches/1_1_X/core/src/main/resources/syncopeContext.xml Thu Apr
10 14:54:38 2014
@@ -85,12 +85,6 @@ under the License.
<task:annotation-driven executor="connectorExecutor"/>
<task:executor id="connectorExecutor" pool-size="10"/>
-
- <bean id="jexlEngine" class="org.apache.commons.jexl2.JexlEngine">
- <property name="cache" value="512"/>
- <property name="lenient" value="true"/>
- <property name="silent" value="false"/>
- </bean>
<bean id="virAttrCache" class="org.apache.syncope.core.util.VirAttrCache"
scope="singleton">
<constructor-arg value="60"/>
Modified: syncope/branches/1_1_X/core/src/test/resources/persistenceTestEnv.xml
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/resources/persistenceTestEnv.xml?rev=1586317&r1=1586316&r2=1586317&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/resources/persistenceTestEnv.xml
(original)
+++ syncope/branches/1_1_X/core/src/test/resources/persistenceTestEnv.xml Thu
Apr 10 14:54:38 2014
@@ -75,12 +75,5 @@ under the License.
</property>
</bean>
- <bean id="jexlEngine" class="org.apache.commons.jexl2.JexlEngine">
- <property name="cache" value="512"/>
- <property name="lenient" value="true"/>
- <property name="silent" value="false"/>
- </bean>
- <bean id="jexlUtil" class="org.apache.syncope.core.util.JexlUtil"/>
-
<import resource="persistenceContext.xml"/>
</beans>