You are viewing a plain text version of this content. The canonical link for it is here.
Posted to imperius-commits@incubator.apache.org by da...@apache.org on 2009/09/29 18:29:48 UTC
svn commit: r820060 [1/3] - in /incubator/imperius/trunk: ./
imperius-javaspl/src/main/java/org/apache/imperius/javaspl/ imperius-splcore/
imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/
imperius-splcore/src/main/java/org/apache/imper...
Author: dawood
Date: Tue Sep 29 18:29:44 2009
New Revision: 820060
URL: http://svn.apache.org/viewvc?rev=820060&view=rev
Log:
Many changes to fix logged bugs, and some bug fixes from IBM. Also hooks to support policy transformation and analysis.
Added:
incubator/imperius/trunk/.antlr-eclipse
incubator/imperius/trunk/imperius-splcore/SPL.log.lck
incubator/imperius/trunk/javaspl-samples/PolicyStorage.DAT (with props)
incubator/imperius/trunk/javaspl-samples/SPL.log.lck
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius20.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius22.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius23.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius24.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius25.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius26.spl
incubator/imperius/trunk/javaspl-samples/resources/samples/bugfix/policies/Imperius28.spl
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/Bar.java
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/ByteArrayFactory.java
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/MyList.java
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/RunBugFixTest.java
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/SimpleBean1.java
incubator/imperius/trunk/javaspl-samples/src/main/java/org/apache/imperius/javaspl/samples/bugfix/SimpleBean2.java
Modified:
incubator/imperius/trunk/build.xml
incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaActuatorImpl.java
incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaDataCollectorImpl.java
incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaSPLTypeConstants.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/PolicyDataStore.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/external/InternalClient.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/manager/impl/PolicyManagerImpl.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/IdentPrimaryTuple.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/CollectOperation.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PostCollectExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PrimaryExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/SelfExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/DoubleArgumentExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/MultipleArgumentExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/QuadrupleArgumentExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/SingleArgumentExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TimeZoneExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TripleArgumentExpression.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Addition.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/AllInCollection.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/AnyInCollection.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Division.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/EqCollections.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Equal.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Greater.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/GreaterOrEqual.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/InCollection.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Less.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/LessOrEqual.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/LogicalAnd.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/LogicalNot.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/LogicalOr.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/LogicalXor.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Product.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/StringConstant.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/SubCollection.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/impl/Subtraction.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/factory/BuitInOperationExpressionFactory.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/factory/ExpressionFactory.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/AnchorMethodInvokeAction.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/ArrowActionBlock.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/ConcurrentActionBlock.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/ExtrinsicMethodInvokeAction.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/LogicalAndActionBlock.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/actions/impl/LogicalOrActionBlock.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/impl/DeclarationStatement.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/impl/ImportStatement.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/impl/PolicyDefinition.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/statements/impl/SPLPolicy.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/KeyStringToMapConvertor.java
incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java
incubator/imperius/trunk/imperius-splcore/src/test/java/org/apache/imperius/spl/tests/StringExpressionTest.java
incubator/imperius/trunk/javaspl-samples/src/test/java/org/apache/imperius/javaspl/samples/simplepolicies/TestSimplePolicies.java
Added: incubator/imperius/trunk/.antlr-eclipse
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/.antlr-eclipse?rev=820060&view=auto
==============================================================================
--- incubator/imperius/trunk/.antlr-eclipse (added)
+++ incubator/imperius/trunk/.antlr-eclipse Tue Sep 29 18:29:44 2009
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?>
+<settings>
+ <resource name='**ANTLR-ECLIPSE-PLUGIN**'>
+ <property name='pluginVersion' value='2.7.6' />
+ </resource>
+</settings>
Modified: incubator/imperius/trunk/build.xml
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/build.xml?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/build.xml (original)
+++ incubator/imperius/trunk/build.xml Tue Sep 29 18:29:44 2009
@@ -113,6 +113,7 @@
<!-- the svn ant task didn't work so call it directly
an executable svn must be on the system PATH -->
+<!--
<exec executable="svn" searchpath="true" dir="." failonerror="true">
<arg line="co http://svn.apache.org/repos/asf/incubator/imperius/trunk/imperius-splcore "/>
</exec>
@@ -143,7 +144,7 @@
<exec executable="svn" searchpath="true" dir="." failonerror="true">
<arg line="co http://svn.apache.org/repos/asf/incubator/imperius/trunk/imperius-cimsplprovider"/>
</exec>
-
+-->
<!-- <exec executable="svn" searchpath="true" dir="." failonerror="true">
<arg line="co ${IMPERIUS_SVN_SITE_REPOSITORY} ${IMPERIUS_SVN_SITE} -non-interactive"/>
Modified: incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaActuatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaActuatorImpl.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaActuatorImpl.java (original)
+++ incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaActuatorImpl.java Tue Sep 29 18:29:44 2009
@@ -28,108 +28,152 @@
package org.apache.imperius.javaspl;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import org.apache.imperius.spl.external.Actuator;
import org.apache.imperius.spl.external.Argument;
-import org.apache.imperius.spl.parser.exceptions.*;
-import org.apache.imperius.spl.parser.util.*;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
public class JavaActuatorImpl implements Actuator {
- //private static final String sourceClass="JavaActuatorImpl";
- //private static Logger logger = SPLLogger.getCIMSPLLogger().getLogger();
-
- private URL[] fUrls = null;
-
- public JavaActuatorImpl() {
-
- }
-
- public JavaActuatorImpl(URL[] urls) {
- fUrls = urls;
- }
-
-
- /**
- * Invokes the given method on the given instance
- */
- public Object invokeMethod(String className, String qualifier,
- Object instance, String methodName, List arguments) throws SPLException {
- Class c;
- Object result = null;
- try {
- // Load class
-
- //c = Class.forName(instance.getClass().getName());
-
- // modified by naidu to enable URL class loading
- if(fUrls == null) {
- c = Class.forName(instance.getClass().getName());
- } else {
- URLClassLoader uc = new URLClassLoader(fUrls);
- c = uc.loadClass(instance.getClass().getName());
- }
-
-
- // Get an array of formal parameter class types
- Class[] arrayOfParameterTypes = _getParameterTypeArray(arguments);
-
- // Load the method using reflection
- Method method = c.getMethod(methodName, arrayOfParameterTypes);
-
- // If No. of formal params > 0
- if (arguments.size() != 0) {
- List paramValues = new ArrayList();
- Iterator it = arguments.iterator();
- // Iterate over the passed parameters
- while (it.hasNext()) {
- Argument arg = (Argument) it.next();
- //Add the values of the passed parameters to a list
- paramValues.add(arg.getValue());
- }
-
- // Convert list to an array
- Object[] arrayOfParameters = paramValues.toArray();
-
- // Invoke the method on the passed object
- result = method.invoke(instance, arrayOfParameters);
- } else {
- Object[] arrayOfParameters = new Object[0];
- result = method.invoke(instance, arrayOfParameters);
- }
- } catch (ClassNotFoundException e) {
- throw new SPLException(e);
- } catch (SecurityException e) {
- throw new SPLException(e);
- } catch (NoSuchMethodException e) {
- throw new SPLException(e);
- } catch (IllegalArgumentException e) {
- throw new SPLException(e);
- } catch (IllegalAccessException e) {
- throw new SPLException(e);
- } catch (InvocationTargetException e) {
- throw new SPLException(e);
- }
- return result;
- }
-
- /**
- * @param className : fully qualified name of the class whoose instance is to be modified
- * @param instance : instance to be modified
- * @param memberMap: A map of the form (String member Name -> Object value to be set to)
- *
- */
+ //private static final String sourceClass="JavaActuatorImpl";
+ //private static Logger logger = SPLLogger.getCIMSPLLogger().getLogger();
+ private URL[] fUrls = null;
+
+ public JavaActuatorImpl() {
+
+ }
+
+ public JavaActuatorImpl(URL[] urls) {
+ fUrls = urls;
+ }
+
+
+ /**
+ * Invokes the given method on the given instance
+ */
+ public Object invokeMethod(String className, String qualifier,
+ Object instance, String methodName, List arguments) throws SPLException {
+ Class c;
+ Object result = null;
+ try {
+ // Load class
+
+ //c = Class.forName(instance.getClass().getName());
+
+ // modified by naidu to enable URL class loading
+ if(fUrls == null) {
+ c = Class.forName(instance.getClass().getName());
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(instance.getClass().getName());
+ }
+
+
+ // Get an array of formal parameter class types
+ Class[] arrayOfParameterTypes = _getParameterTypeArray(arguments);
+
+ // Load the method using reflection
+
+ Method method = c.getMethod(methodName, arrayOfParameterTypes);
+
+ // If No. of formal params > 0
+ if (arguments.size() != 0) {
+ List paramValues = new ArrayList();
+ Iterator it = arguments.iterator();
+ // Iterate over the passed parameters
+ while (it.hasNext()) {
+ Argument arg = (Argument) it.next();
+ //Add the values of the passed parameters to a list
+ paramValues.add(arg.getValue());
+ }
+
+ // Convert list to an array
+ Object[] arrayOfParameters = paramValues.toArray();
+
+ // Invoke the method on the passed object
+ result = method.invoke(instance, arrayOfParameters);
+ } else {
+ Object[] arrayOfParameters = new Object[0];
+ result = method.invoke(instance, arrayOfParameters);
+ }
+ } catch (ClassNotFoundException e) {
+ throw new SPLException(e.getMessage());
+ } catch (SecurityException e) {
+ throw new SPLException(e.getMessage());
+ } catch (NoSuchMethodException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalArgumentException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalAccessException e) {
+ throw new SPLException(e.getMessage());
+ } catch (InvocationTargetException e) {
+ throw new SPLException(e.getMessage());
+ }
+ return result;
+ }
+
+ /**
+ * @param className : fully qualified name of the class whoose instance is to be modified
+ * @param instance : instance to be modified
+ * @param memberMap: A map of the form (String member Name -> Object value to be set to)
+ *
+ */
+
+// public void modifyInstance(String className, String qualifier,
+// Object instance, Map memberMap) throws SPLException {
+// Class c;
+// try {
+// // Load class
+// //c = Class.forName(className);
+//
+// // modified by naidu to enable URL class loading
+// if(fUrls == null) {
+// c = Class.forName(className);
+// } else {
+// URLClassLoader uc = new URLClassLoader(fUrls);
+// c = uc.loadClass(className);
+// }
+//
+// // Iterate over the property map for the instance
+// Iterator keyIt = memberMap.keySet().iterator();
+// while (keyIt.hasNext()) {
+// String propName = (String) keyIt.next();
+// // Retrieve value of the property
+// Object value = memberMap.get(propName);
+//
+// // Load field
+// Field member = c.getField(propName);
+//
+// // Set the value of the field
+// member.set(instance, value);
+//
+// }
+// } catch (ClassNotFoundException e) {
+// throw new SPLException(e.getMessage());
+//
+// } catch (SecurityException e) {
+// throw new SPLException(e.getMessage());
+// } catch (NoSuchFieldException e) {
+// throw new SPLException(e.getMessage());
+// } catch (IllegalArgumentException e) {
+// throw new SPLException(e.getMessage());
+// } catch (IllegalAccessException e) {
+// throw new SPLException(e.getMessage());
+// }
+//
+// }
public void modifyInstance(String className, String qualifier,
Object instance, Map memberMap) throws SPLException {
Class c;
@@ -197,40 +241,41 @@
}
- /**
- * Iterate over the list of Argument objects to retrieve an
- * array of the class types
- * @param inParameterList
- * @return
- * @throws SPLException
- */
-
- private Class[] _getParameterTypeArray(List inParameterList)
- throws SPLException {
- int listSize = inParameterList.size();
- int i = 0;
- Class[] paramTypeArray = new Class[listSize];
- try {
- Iterator it = inParameterList.iterator();
- // Iterate over the arguments
- while (it.hasNext()) {
- Argument arg = (Argument) it.next();
- TypeInfo tp = arg.getType();
- boolean isArray = arg.getIsArray();
- String referenceName = arg.getReferenceTypeName();
-
- // convert internal type to java type
- Class c = JavaSPLTypeConstants.convertInternalTypeToJavaType(tp.getType(), isArray, referenceName);
+ /**
+ * Iterate over the list of Argument objects to retrieve an
+ * array of the class types
+ * @param inParameterList
+ * @return
+ * @throws SPLException
+ */
+
+ private Class[] _getParameterTypeArray(List inParameterList)
+ throws SPLException {
+ int listSize = inParameterList.size();
+ int i = 0;
+ Class[] paramTypeArray = new Class[listSize];
+ try {
+ Iterator it = inParameterList.iterator();
+ // Iterate over the arguments
+ while (it.hasNext()) {
+ Argument arg = (Argument) it.next();
+ TypeInfo tp = arg.getType();
+ boolean isArray = arg.getIsArray();
+ String referenceName = arg.getReferenceTypeName();
+
+ // convert internal type to java type
+ Class c = JavaSPLTypeConstants.convertInternalTypeToJavaType(tp.getType(), isArray, referenceName);
+
+ // Add to array
+ paramTypeArray[i++] = c;
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+ return paramTypeArray;
+ }
- // Add to array
- paramTypeArray[i++] = c;
- }
- } catch (ClassNotFoundException e) {
- throw new SPLException(e);
- }
- return paramTypeArray;
- }
-
private String getAccessorMethodName(String identifier)
{
if(Character.isLetter(identifier.charAt(0)))
Modified: incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaDataCollectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaDataCollectorImpl.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaDataCollectorImpl.java (original)
+++ incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaDataCollectorImpl.java Tue Sep 29 18:29:44 2009
@@ -33,6 +33,7 @@
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import java.util.Vector;
import org.apache.imperius.spl.external.Argument;
import org.apache.imperius.spl.external.DataCollector;
@@ -104,6 +105,8 @@
referenceTypeName, isArray, isKey, isPropertyOfClass);
// insert into map
+ // xiping's test 06/19/09
+ // a Java class field name must be unique
symbolMap.put(fieldName, s);
}
@@ -191,8 +194,20 @@
// construct a method symbol
Symbol s = new MethodSymbol(methodName, internalReturnType, isReturnArray, returnReferenceTypeName, argTypeList, null);
- // Insert into map
- symbolMap.put(methodName, s);
+// // Insert into map
+// symbolMap.put(methodName, s);
+
+ // xiping's test 06/19/09
+ // a Java class can have multiple methods that have the same method name
+ Vector v = null;
+ if (symbolMap.containsKey(methodName)) {
+ v = (Vector) symbolMap.get(methodName);
+ } else {
+ v = new Vector();
+ }
+ v.add(s);
+ symbolMap.put(methodName, v);
+//
}
} catch (Exception e) {
Modified: incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaSPLTypeConstants.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaSPLTypeConstants.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaSPLTypeConstants.java (original)
+++ incubator/imperius/trunk/imperius-javaspl/src/main/java/org/apache/imperius/javaspl/JavaSPLTypeConstants.java Tue Sep 29 18:29:44 2009
@@ -50,6 +50,7 @@
return false;
}
+
public static Class convertInternalTypeToJavaType(int type, boolean isArray,
String referenceName) throws ClassNotFoundException
{
@@ -62,7 +63,6 @@
}
else
{
-
javaType = Byte.TYPE;
}
}
@@ -176,10 +176,8 @@
javaType = Class.forName(referenceName);
}
}
+
return javaType;
-
-
-
}
public static int convertJavaTypeToInternalType(String type)
Added: incubator/imperius/trunk/imperius-splcore/SPL.log.lck
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/SPL.log.lck?rev=820060&view=auto
==============================================================================
(empty)
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/PolicyDataStore.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/PolicyDataStore.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/PolicyDataStore.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/datastore/PolicyDataStore.java Tue Sep 29 18:29:44 2009
@@ -17,6 +17,7 @@
* under the License.
*/
+
/**
* @author Prashant Baliga <pr...@in.ibm.com>
*
@@ -24,6 +25,7 @@
package org.apache.imperius.spl.datastore;
+
import java.util.List;
import java.util.Map;
@@ -31,35 +33,39 @@
import org.apache.imperius.spl.parser.statements.impl.PolicyInfo;
import org.apache.imperius.spl.parser.statements.impl.SPLPolicy;
-public interface PolicyDataStore
-{
- public String getPolicy(String policyName) throws SPLException;
-
- public PolicyInfo getPolicyInfo(String policyName) throws SPLException;
-
- public boolean createPolicy(String policyName, String policyString)
- throws SPLException;
-
- public boolean validatePolicyString(String policyString)
- throws SPLException;
-
- public SPLPolicy createSPLPolicyObject(String policyName,
- String policyString) throws SPLException;
-
- public void updatePolicy(String policyName, String policyString)
- throws SPLException;
-
- public void deletePolicy(String policyName) throws SPLException;
-
- public Map getAllPolicies() throws SPLException;
-
- public List getAllPolicyNames() throws SPLException;
-
- public void init() throws SPLException;
-
- public void shutdown();
-
- public SPLPolicy getInternalPolicyObject(String PolicyRuleName)
- throws SPLException;
+public interface PolicyDataStore
+{
+
+ public String getPolicy(String policyName)
+ throws SPLException;
+
+ public PolicyInfo getPolicyInfo(String policyName)
+ throws SPLException;
+
+ public boolean createPolicy(String policyName, String policyString) throws SPLException;
+
+ public boolean validatePolicyString(String policyString) throws SPLException;
+
+
+ public SPLPolicy createSPLPolicyObject(String policyName, String policyString)
+ throws SPLException;
+
+ public void updatePolicy(String policyName, String policyString) throws SPLException;
+
+ public void deletePolicy(String policyName)
+ throws SPLException;
+
+ public Map getAllPolicies() throws SPLException;
+
+ public List getAllPolicyNames() throws SPLException;
+
+ public void init() throws SPLException;
+
+ public void shutdown();
+
+
+ public SPLPolicy getInternalPolicyObject(String PolicyRuleName)
+ throws SPLException;
+
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/external/InternalClient.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/external/InternalClient.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/external/InternalClient.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/external/InternalClient.java Tue Sep 29 18:29:44 2009
@@ -159,7 +159,7 @@
{
logger.severe("POLICY_EVALUATION_SUCCESSFUL "+policyName+" "+instanceObj.toString()+" "+retVal);
}
-
+ if(logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" Internal client return value="+returnValue);
objectMap.remove(instanceInfoList);
}
@@ -193,7 +193,7 @@
String objectName=className;
objectMap.put(objectName, copI);
Integer retVal=(Integer)pm.evaluatePolicy(policyName,objectMap);
-
+ if (logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" return value is = "+retVal);
logger.exiting(sourceClass,Thread.currentThread().getName()+" "+"InvokePolicy");
@@ -208,6 +208,7 @@
logger.fine("POLICY_EVALUATION_SUCCESSFUL "+policyName+" "+copI.toString()+" "+retVal);
}
+ if(logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" Internal client return value="+returnValue);
objectMap.remove(copI);
}
@@ -222,7 +223,8 @@
logger.severe(e.getMessage());
}
- logger.exiting(sourceClass,Thread.currentThread().getName()+" "+"InvokePolicy");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+"InvokeMethod");
+ if(logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" Internal client return value is -1");
return -1;
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/manager/impl/PolicyManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/manager/impl/PolicyManagerImpl.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/manager/impl/PolicyManagerImpl.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/manager/impl/PolicyManagerImpl.java Tue Sep 29 18:29:44 2009
@@ -71,7 +71,7 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "getAllPolicies");
Map allPolicies = _policyDataStore.getAllPolicies();
-
+ if(auditLogger.isLoggable(Level.FINE))
auditLogger.fine(Thread.currentThread().getName() + "getAllPolicies invoked");
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "getAllPolicies");
@@ -84,9 +84,9 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "getAllPolicyNames");
List allPolicyNames = _policyDataStore.getAllPolicyNames();
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName()+"getAllPolicyNames invoked");
- auditLogger.fine(Thread.currentThread().getName() + " getAllPolicyNames method is invoked");
-
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "getAllPolicyNames");
return allPolicyNames;
@@ -95,21 +95,21 @@
public String getPolicy(String policyName) throws SPLException
{
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "getPolicy");
-
String ci = _policyDataStore.getPolicy(policyName);
-
- auditLogger.fine(Thread.currentThread().getName() + " getPolicy method is invoked :" + policyName);
-
- logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "getPolicy");
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName()+"getPolicy invoked :"+policyName);
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getPolicy");
return ci;
+
+
}
public void shutdown()
{
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "shutdown");
-
- auditLogger.fine(Thread.currentThread().getName() + " Policy Manager Shut Down initiated");
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName() + " Policy Manager Shut Down initiated");
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "shutdown");
}
@@ -120,8 +120,8 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "updatePolicy");
_policyDataStore.updatePolicy(policyName, policyString);
-
- auditLogger.fine(Thread.currentThread().getName() + " updatePolicy method is invoked :" + policyName);
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName() + " updatePolicy method is invoked :" + policyName);
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "updatePolicy");
}
@@ -134,8 +134,8 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "createPolicy");
boolean res = _policyDataStore.createPolicy(policyName, policyString);
-
- auditLogger.fine(Thread.currentThread().getName() + " createPolicy method invoked for policy : " + policyName);
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName() + " createPolicy method invoked for policy : " + policyName);
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "createPolicy");
@@ -155,8 +155,8 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " " + "deletePolicy");
_policyDataStore.deletePolicy(policyName);
-
- auditLogger.fine(Thread.currentThread().getName() + " deletePolicy method is invoked : " + policyName);
+ if(auditLogger.isLoggable(Level.FINE))
+ auditLogger.fine(Thread.currentThread().getName() + " deletePolicy method is invoked : " + policyName);
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "deletePolicy");
}
@@ -202,7 +202,7 @@
Object result;
SPLPolicy cp = _policyDataStore.createSPLPolicyObject(policyName, policyString);
result = _policyEvaluator.evaluatePolicy(cp, instances);
-
+ if(auditLogger.isLoggable(Level.FINE))
auditLogger.fine(Thread.currentThread().getName() + " evaluatePolicyString method is invoked :" + policyName);
logger.exiting(sourceClass, Thread.currentThread().getName() + " " + "createPolicy");
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/IdentPrimaryTuple.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/IdentPrimaryTuple.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/IdentPrimaryTuple.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/IdentPrimaryTuple.java Tue Sep 29 18:29:44 2009
@@ -28,10 +28,14 @@
package org.apache.imperius.spl.parser.compiler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Vector;
+import org.apache.imperius.spl.external.Argument;
import org.apache.imperius.spl.external.DataCollector;
import org.apache.imperius.spl.external.Expression;
import org.apache.imperius.spl.external.InstanceInfo;
@@ -76,6 +80,171 @@
{
_symbolTable = spt;
}
+
+// // no input object means that the symbol table already has anchor object
+// // populated
+// public Object evaluate() throws SPLException
+// {
+// Object returnValue = null;
+//
+// if(_isMethod)
+// {
+// Object instance = _symbolTable.getInstance(_classType);
+// String qualifier = _symbolTable.getQualifierForClass(_classType);
+// returnValue = AnchorMethodInvokeAction.invokeClassMethod(_symbolTable,
+// _classType, qualifier, _identifier, _paramList,instance);
+// }
+// else
+// {
+// // xiping's addition to support Java overloading, 06/19/09
+// // start
+// Symbol sym = null;
+// Object obj = _symbolTable.getSymbol(_classType + "." + _identifier);
+// if (obj instanceof Vector) { //MethodSysbol
+// Collection c = (Collection) obj;
+// for (Iterator it = c.iterator(); it.hasNext();) {
+// sym = (Symbol) it.next();
+// List aList = ((MethodSymbol)sym).getArgumentList();
+//
+// if (aList.size() != _paramList.size()) {
+// continue;
+// }
+//
+// boolean typeNotEqual = false;
+// for (int i = 0; i < aList.size(); i++) {
+// Expression exp = (Expression)_paramList.get(i);
+// Argument arg = (Argument)aList.get(i);
+// TypeInfo expDataType = exp.getType();
+// TypeInfo argDataType = arg.getType();
+//// if (expDataType.getIsArray() != argDataType.getIsArray() ||
+//// expDataType.getType() != argDataType.getType()) {
+// if (expDataType.getType() != argDataType.getType()) {
+// typeNotEqual = true;
+// break;
+// }
+// }
+//
+// if (typeNotEqual) {
+// continue;
+// }
+//
+// break;
+// }
+// } else { //PropertySymbol
+// sym = (Symbol) obj;
+// }
+//
+// for (Iterator it = c.iterator(); it.hasNext();) {
+// sym = (Symbol) it.next();
+// List aList = ((MethodSymbol)sym).getArgumentList();
+//
+// if (aList.size() != _paramList.size()) {
+// continue;
+// }
+//
+// boolean notEqual = false;
+// for (int i = 0; i < aList.size(); i++) {
+// Expression exp = (Expression)_paramList.get(i);
+// Argument arg = (Argument)aList.get(i);
+// TypeInfo expDataType = exp.getType();
+// TypeInfo argDataType = arg.getType();
+//// if (expDataType.getIsArray() != argDataType.getIsArray() ||
+//// expDataType.getType() != argDataType.getType()) {
+// if (expDataType.getType() != argDataType.getType()) {
+// notEqual = true;
+// break;
+// }
+// }
+//
+// if (notEqual) {
+// continue;
+// }
+//
+// break;
+// }
+//
+// if (sym == null) {
+// throw new SPLException("evaluate() failed: " + _identifier + "does not exit");
+// }
+// // end
+//
+// returnValue = sym.getValue();
+// }
+//
+//
+// return returnValue;
+//
+// }
+
+// public Object evaluate(Object parentObject) throws SPLException
+// {
+// Object returnValue = null;
+//
+// DataCollector dc = DataCollectorFactory.getDataCollector();
+// String qualifier = _symbolTable.getQualifierForClass(_classType);
+// Map symbolsofInstance = dc.getSymbolsForInstance(_classType,
+// qualifier,
+// parentObject);
+// Map instanceMap = new HashMap();
+// instanceMap.put(_classType, parentObject);
+// _symbolTable.populateInstanceValuesForInstance(_classType,
+// _classType,
+// parentObject,
+// symbolsofInstance);
+//
+// //_symbolTable.setAnchors(mapOfAnchorClassToInstance);
+// if(_isMethod)
+// {
+// returnValue = AnchorMethodInvokeAction.invokeClassMethod(_symbolTable,
+// _classType, qualifier, _identifier, _paramList, parentObject);
+// }
+// else
+// {
+// // xiping's addition to support Java overloading, 06/19/09
+// // start
+// Symbol sym = null;
+// Collection c = _symbolTable.getSymbol(_classType + "." + _identifier);
+// for (Iterator it = c.iterator(); it.hasNext();) {
+// sym = (Symbol) it.next();
+// List aList = ((MethodSymbol)sym).getArgumentList();
+//
+// if (aList.size() != _paramList.size()) {
+// continue;
+// }
+//
+// boolean notEqual = false;
+// for (int i = 0; i < aList.size(); i++) {
+// Expression exp = (Expression)_paramList.get(i);
+// Argument arg = (Argument)aList.get(i);
+// TypeInfo expDataType = exp.getType();
+// TypeInfo argDataType = arg.getType();
+//// if (expDataType.getIsArray() != argDataType.getIsArray() ||
+//// expDataType.getType() != argDataType.getType()) {
+// if (expDataType.getType() != argDataType.getType()) {
+// notEqual = true;
+// break;
+// }
+// }
+//
+// if (notEqual) {
+// continue;
+// }
+//
+// break;
+// }
+//
+// if (sym == null) {
+// throw new SPLException("evaluate(Object) failed: " + _identifier + "does not exit");
+// }
+// // end
+//
+// returnValue = sym.getValue();
+//
+// }
+//
+// return returnValue;
+// }
+
// no input object means that the symbol table already has anchor object
// populated
public Object evaluate() throws SPLException
@@ -83,17 +252,17 @@
Object returnValue = null;
Object instance = _symbolTable.getInstance(_classType);
String qualifier = _symbolTable.getQualifierForClass(_classType);
- if(_isMethod)
+ if(_isMethod) // MethodSymbol
{
returnValue = AnchorMethodInvokeAction.invokeClassMethod(_symbolTable,
- _classType, qualifier, _identifier, _paramList,instance);
+ _classType, qualifier, _identifier, _paramList, instance);
}
- else
+ else // PropertySymbol
{
Symbol sym = null;
try
{
- sym = _symbolTable.getSymbol(_classType + "." + _identifier);
+ sym = (Symbol)_symbolTable.getSymbol(_classType + "." + _identifier);
returnValue = sym.getValue();
}
catch(SPLException splex)
@@ -101,14 +270,22 @@
String accessorMethodName = getAccessorMethodName(_identifier, "get");
try
{
- sym = _symbolTable.getSymbol(_classType + "." + accessorMethodName);
+ // xiping 09/22/2009
+ // not sure what this line of code is doing
+ // sym is not referenced
+// sym = (Symbol)_symbolTable.getSymbol(_classType + "." + accessorMethodName);
+ Object obj = _symbolTable.getSymbol(_classType + "." + accessorMethodName);
}
catch(SPLException splex1)
{
accessorMethodName = getAccessorMethodName(_identifier, "is");
try
{
- sym = _symbolTable.getSymbol(_classType + "." + accessorMethodName);
+ // xiping 09/22/2009
+ // not sure what this line of code is doing
+ // sym is not referenced
+// sym = (Symbol)_symbolTable.getSymbol(_classType + "." + accessorMethodName);
+ Object obj = _symbolTable.getSymbol(_classType + "." + accessorMethodName);
}
catch(SPLException splex2)
{
@@ -120,13 +297,12 @@
+ _identifier }));
}
}
- returnValue = AnchorMethodInvokeAction.invokeClassMethod(
- _symbolTable, _classType, qualifier,
- accessorMethodName, _paramList, instance);
+
+ returnValue = AnchorMethodInvokeAction.invokeClassMethod(_symbolTable, _classType, qualifier,
+ accessorMethodName, _paramList, instance);
}
}
-
return returnValue;
}
@@ -142,26 +318,22 @@
Map instanceMap = new HashMap();
instanceMap.put(_classType, parentObject);
_symbolTable.populateInstanceValuesForInstance(_classType,
- _classType,
- parentObject,
- symbolsofInstance);
+ _classType, parentObject, symbolsofInstance);
// Symbol sym = _symbolTable.getSymbol(_classType + "." + _identifier);
//_symbolTable.setAnchors(mapOfAnchorClassToInstance);
- if(_isMethod)
+ if(_isMethod) //MethodSymbol
{
-
returnValue = AnchorMethodInvokeAction.invokeClassMethod(_symbolTable,
- _classType, qualifier, _identifier, _paramList, parentObject);
+ _classType, qualifier, _identifier, _paramList, parentObject);
}
- else
+ else // PropertySymbol
{
-
Symbol sym = null;
try
{
- sym = _symbolTable.getSymbol(_classType + "." + _identifier);
+ sym = (Symbol)_symbolTable.getSymbol(_classType + "." + _identifier);
returnValue = sym.getValue();
}
catch(SPLException splex)
@@ -169,7 +341,7 @@
String accessorMethodName = getAccessorMethodName(_identifier, "get");
try
{
- sym = _symbolTable.getSymbol(_classType + "."
+ sym = (Symbol)_symbolTable.getSymbol(_classType + "."
+ accessorMethodName);
}
catch(SPLException splex1)
@@ -177,7 +349,7 @@
accessorMethodName = getAccessorMethodName(_identifier, "is");
try
{
- sym = _symbolTable.getSymbol(_classType + "."
+ sym = (Symbol)_symbolTable.getSymbol(_classType + "."
+ accessorMethodName);
}
catch(SPLException splex2)
@@ -190,6 +362,7 @@
+ _identifier }));
}
}
+
returnValue = AnchorMethodInvokeAction.invokeClassMethod(
_symbolTable, _classType, qualifier,
accessorMethodName, _paramList, parentObject);
@@ -198,34 +371,30 @@
return returnValue;
}
-
- public TypeInfo validate(String classTypeOrVariableName) throws SPLException
- {
- TypeInfo typeInfo = new TypeInfo();
- _classType = classTypeOrVariableName;
- // ensure symbol table is populated
- _populateSymbolTable(_classType);
-
- // Symbol sym = _symbolTable.getSymbol(classTypeOrVariableName + "." + _identifier);
-
- Symbol sym = null;
- try
- {
- sym = _symbolTable.getSymbol(classTypeOrVariableName + "." + _identifier);
- }
- catch(SPLException splex)
- {
- try
- {
- sym = _symbolTable.getSymbol(classTypeOrVariableName + "."
- + getAccessorMethodName(_identifier, "get"));
+
+ public TypeInfo validate(String classTypeOrVariableName) throws SPLException
+ {
+ TypeInfo typeInfo = new TypeInfo();
+ _classType = classTypeOrVariableName;
+ // ensure symbol table is populated
+ _populateSymbolTable(_classType);
+
+ // xiping's addition to support Java overloading, 06/19/09
+ // start
+ Object obj = null;
+
+ try {
+ obj = _symbolTable.getSymbol(classTypeOrVariableName + "." + _identifier);
+ } catch(SPLException splex) {
+ try
+ {
+ obj = _symbolTable.getSymbol(classTypeOrVariableName + "." + getAccessorMethodName(_identifier, "get"));
}
catch(SPLException splex1)
{
try
{
- sym = _symbolTable.getSymbol(classTypeOrVariableName + "."
- + getAccessorMethodName(_identifier, "is"));
+ obj = _symbolTable.getSymbol(classTypeOrVariableName + "." + getAccessorMethodName(_identifier, "is"));
}
catch(SPLException splex2)
{
@@ -238,7 +407,42 @@
}
}
}
-
+
+ Symbol sym = null;
+ if (obj instanceof Vector) { // MethodSymbol
+ Collection c = (Collection) obj;
+ for (Iterator it = c.iterator(); it.hasNext();) {
+ sym = (Symbol) it.next();
+ List aList = ((MethodSymbol)sym).getArgumentList();
+
+ if (aList.size() != _paramList.size()) {
+ continue;
+ }
+
+ boolean typeNotEqual = false;
+ for (int i = 0; i < aList.size(); i++) {
+ Expression exp = (Expression)_paramList.get(i);
+ Argument arg = (Argument)aList.get(i);
+ TypeInfo expDataType = exp.getType();
+ TypeInfo argDataType = arg.getType();
+// if (expDataType.getIsArray() != argDataType.getIsArray() ||
+// expDataType.getType() != argDataType.getType()) {
+ if (expDataType.getType() != argDataType.getType()) {
+ typeNotEqual = true;
+ break;
+ }
+ }
+
+ if (typeNotEqual) {
+ continue;
+ }
+
+ break;
+ }
+ } else { // PropertySymbol
+ sym = (Symbol) obj;
+ }
+
if(_isMethod)
{
if(sym instanceof MethodSymbol)
@@ -274,13 +478,11 @@
}
}
-
-
-
- return typeInfo;
-
- }
-
+
+ return typeInfo;
+
+ }
+
private String getAccessorMethodName(String identifier, String setOrGetOrIs)
{
if(Character.isLetter(identifier.charAt(0)))
@@ -291,46 +493,58 @@
return identifier;
}
- private TypeInfo _validateActualParameters(Symbol sym,
- String classType) throws SPLException
- {
- TypeInfo returnTypeInfo = new TypeInfo();
- String returnClassName = null;
- AnchorMethodInvokeAction.validateActualParameters(_symbolTable,
- classType, _identifier, _paramList);
- TypeInfo returnType = sym.getType();
- boolean isArray = sym.isArray();
- if(TypeResolver.isReference(returnType))
- {
- returnClassName = sym.getReferenceTypeName();
- returnTypeInfo.setIsArray(isArray);
- returnTypeInfo.setReferenceTypeName(returnClassName);
- returnTypeInfo.setType(returnType.getType());
-
- }
- else
- {
- returnTypeInfo.setIsArray(isArray);
- returnTypeInfo.setType(returnType.getType());
- }
- return returnTypeInfo;
-
-
-
- }
+ private TypeInfo _validateActualParameters(Symbol sym,
+ String classType) throws SPLException
+ {
+ TypeInfo returnTypeInfo = new TypeInfo();
+ String returnClassName = null;
+ AnchorMethodInvokeAction.validateActualParameters(_symbolTable,
+ classType, _identifier, _paramList);
+ TypeInfo returnType = sym.getType();
+ boolean isArray = sym.isArray();
+ if(TypeResolver.isReference(returnType))
+ {
+ returnClassName = sym.getReferenceTypeName();
+ returnTypeInfo.setIsArray(isArray);
+ returnTypeInfo.setReferenceTypeName(returnClassName);
+ returnTypeInfo.setType(returnType.getType());
+
+ }
+ else
+ {
+ returnTypeInfo.setIsArray(isArray);
+ returnTypeInfo.setType(returnType.getType());
+ }
+ return returnTypeInfo;
+
+
+
+ }
- private void _populateSymbolTable(String classType) throws SPLException
- {
- String qualifierName = null;
- if(_symbolTable.getAnchorData() == null)
- {
- List instanceInfoList = new ArrayList();
- instanceInfoList.add(new InstanceInfo(classType, new Object()));
- _symbolTable.addAnchor(classType,qualifierName,instanceInfoList);
-
- }
-
- }
+ private void _populateSymbolTable(String classType) throws SPLException
+ {
+ String qualifierName = null;
+ if(_symbolTable.getAnchorData() == null)
+ {
+ List instanceInfoList = new ArrayList(1);
+ instanceInfoList.add(new InstanceInfo(classType, new Object()));
+ _symbolTable.addAnchor(classType,qualifierName,instanceInfoList);
+
+ }
+
+ }
+//Xiping 05/25/08
+ public List getParamList() {
+ return _paramList;
+ }
+
+ public String getIdentifier() {
+ return _identifier;
+ }
+ public boolean isMethod() {
+ return _isMethod;
+ }
+ //
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java Tue Sep 29 18:29:44 2009
@@ -26,10 +26,12 @@
package org.apache.imperius.spl.parser.compiler.symboltable;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -245,29 +247,74 @@
logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "insertMacroSymbol");
}
- public Symbol getSymbol(String name) throws SPLException
+// public Symbol getSymbol(String name) throws SPLException
+// {
+// logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymbol");
+// name=name.trim();
+// //System.out.println("getSymbol "+name);
+// Symbol retSym = null;
+// if(_symbolMap.containsKey(name))
+// {
+// //System.out.println("_symbolMap contains "+name);
+// retSym = (Symbol)_symbolMap.get(name);
+// }
+// else
+// {
+// //System.out.println("_symbolMap does not contains "+name);
+// if(_parentTable != null)
+// {
+// //System.out.println("trying parent symboltable");
+// retSym = (Symbol)_parentTable.getSymbol(name);
+// }
+// }
+// if (retSym==null)
+// {
+// throw new SPLException("Symbol does not exist " + name);
+// }
+// logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymbol");
+// return retSym;
+// }
+
+ // xiping's modification to support java overloading, 06/19/09
+ public Object getSymbol(String name) throws SPLException
{
logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymbol");
-
name = name.trim();
- Symbol retSym = null;
+ //System.out.println("getSymbol "+name);
+// Symbol retSym = null;
+
+ // xiping 09-16-2009
+ // obj can a collection of MethodSymbols that have the same name or
+ // a PropertySymbol
+ Object obj = null;
if(_symbolMap.containsKey(name))
{
- retSym = (Symbol)_symbolMap.get(name);
+ //System.out.println("_symbolMap contains "+name);
+// retSym = (Symbol)_symbolMap.get(name);
+ obj = _symbolMap.get(name);
}
else
{
+ //System.out.println("_symbolMap does not contains "+name);
if(_parentTable != null)
{
- retSym = (Symbol)_parentTable.getSymbol(name);
+ //System.out.println("trying parent symboltable");
+// retSym = (Symbol)_parentTable.getSymbol(name);
+ obj = _parentTable.getSymbol(name);
}
}
- if (retSym==null)
+
+// if (retSym==null)
+
+ if (obj == null)
{
throw new SPLException(Messages.getString("SPL_SYMBOL_DOES_NOT_EXISTS_MSG") + name);
}
logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymbol");
- return retSym;
+
+// return retSym;
+
+ return obj;
}
public boolean symbolExists(String name, boolean recurse)
@@ -296,8 +343,94 @@
List instanceInfoList)
{
logger.entering(sourceClass,Thread.currentThread().getName()+" " +
- "_populateAnchorClassSymbols");
+ "populateAnchorElementSymbols");
+
+ Map sMap = null;
+ try
+ {
+ //System.out.println("populateAnchorElementSymbols ::
+ //_anchorElement,nameSpace :"+_anchorElement+" "+nameSpace);
+
+ if(_dataCollector == null)
+ {
+ _dataCollector = DataCollectorFactory.getDataCollector();
+ }
+
+ //System.out.println("trying to get class "+className+" "+qualifier);
+ //System.out.println("_dataCollector "+_dataCollector);
+ sMap = _dataCollector.getSymbolsForClass(className,qualifier);
+ //System.out.println("sMap "+sMap);
+ Iterator it = sMap.keySet().iterator();
+
+ // xiping 09-16-2009
+ // at this point we have the methods (MethodSymbol) w/ the same name stored in a vector
+ // which is stored in Map and field members (PropertySymbol) stored directly in Map.
+ while(it.hasNext())
+ {
+ String key = (String)it.next();
+// Symbol s = (Symbol)sMap.get(key);
+
+ // xiping 06-19-2009
+ Object obj = sMap.get(key);
+ //
+
+ Iterator instanceInfoListIt = instanceInfoList.iterator();
+ if(instanceInfoList != null && !instanceInfoList.isEmpty())
+ {
+ while(instanceInfoListIt.hasNext())
+ {
+ InstanceInfo instanceInfo = (InstanceInfo)instanceInfoListIt.next();
+ String instanceName = instanceInfo.getInstanceName();
+// _symbolMap.put(instanceName + "." + key,s);
+
+// _symbolMap.put(instanceName + "." + key, v);
+
+ // xiping's test 06/19/09
+ _symbolMap.put(instanceName + "." + key, obj);
+//
+ //System.out.println("Symbol added to symbolmap : "+instanceName + "." + key);
+ }
+
+ }
+ else
+ {
+// _symbolMap.put(className + "." + key,s);
+
+ // xiping's test 06/19/09
+ _symbolMap.put(className + "." + key, obj);
+ //
+
+ //System.out.println("Symbol added to symbolmap : "+className + "." + key);
+
+ }
+ }
+
+ }
+ catch (SPLException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+ /* insertVariableSymbol(_anchorElement + ".intprop",TypeConstants.intType,false);
+ insertVariableSymbol(_anchorElement + ".intprop2",TypeConstants.intType,false);
+ insertVariableSymbol(_anchorElement + ".doubleprop",TypeConstants.doubleType,false);
+ insertVariableSymbol(_anchorElement + ".stringprop3",TypeConstants.stringType,false);*/
+
+
+ // TODO Auto-generated method stub
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateAnchorElementSymbols");
+ }
+
+
+ /*private void _populateCollectAnchorClassSymbols(String className,
+ String qualifier,
+ List instanceInfoList)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" " +
+ "populateAnchorElementSymbols");
Map sMap = null;
try
{
@@ -329,11 +462,13 @@
}
catch (SPLException e)
{
-
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
-
- logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "_populateAnchorClassSymbols");
- }
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateAnchorElementSymbols");
+
+ }*/
public void populateInstanceValuesForInstance(
String className,
@@ -354,12 +489,13 @@
PropertySymbol sym = (PropertySymbol)getSymbol(qualifiedKey);
Object value = (Object)currentInstanceSymbols.get(currentKey);
sym.setValue(value);
-
- logger.fine(Thread.currentThread().getName() + " SPLSymbolTable setting symbol:" +sym.getName()+" from:"+sym.getValue()+" to:"+value);
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName() + " SPLSymbolTable setting symbol:" +sym.getName()+" from:"+sym.getValue()+" to:"+value);
}
_insertInstanceObject(className, instanceName, instance);
- logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateInstanceValuesForInstance");
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateSymbolTableWithInstanceValues");
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java Tue Sep 29 18:29:44 2009
@@ -69,13 +69,15 @@
_elements=pList;
try
{
- if(!validate())
- {
- logger.severe(Thread.currentThread().getName()+" "+
+ if (sTab != null) { // xiping 03/05/09 to support collection analysis. sTab must not be null in normal cases.
+ if(!validate())
+ {
+ logger.severe(Thread.currentThread().getName()+" "+
"No of parameters for Basic collection has to be greater than zero ");
- throw new IllegalParameterTypeException(Messages
+ throw new IllegalParameterTypeException(Messages
.getString("SPL_EXPRESSION_VALIDATION_FAIL_MSG")
+ sourceClass);
+ }
}
}
catch(SPLException e)
@@ -156,6 +158,17 @@
public TypeInfo getType()
{
+ if (_collectionType == null) {
+ try
+ {
+ validate(); // Sets the collection type.
+ }
+ catch (SPLException e)
+ {
+ logger.severe(Thread.currentThread().getName()+" "+"Exception caught");
+ }
+
+ }
return _collectionType;
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/CollectOperation.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/CollectOperation.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/CollectOperation.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/CollectOperation.java Tue Sep 29 18:29:44 2009
@@ -29,9 +29,11 @@
import java.security.InvalidParameterException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.imperius.spl.external.DataCollector;
@@ -43,8 +45,9 @@
import org.apache.imperius.spl.parser.exceptions.MissingParameterException;
import org.apache.imperius.spl.parser.exceptions.NonExistentSymbolException;
import org.apache.imperius.spl.parser.exceptions.SPLException;
-import org.apache.imperius.spl.parser.expressions.*;
-import org.apache.imperius.spl.parser.util.*;
+import org.apache.imperius.spl.parser.expressions.ReferenceExpression;
+import org.apache.imperius.spl.parser.util.DataCollectorFactory;
+import org.apache.imperius.spl.parser.util.TypeInfo;
import org.apache.imperius.util.Messages;
import org.apache.imperius.util.SPLLogger;
@@ -303,7 +306,12 @@
}
else
{
- Symbol propSymbol = symTab.getSymbol(targetClassName + "." + targetClassPropertyName);
+ // xiping's modification to support Java overloading, 06/21/09
+ Symbol propSymbol = (Symbol)symTab.getSymbol(targetClassName + "." + targetClassPropertyName);
+// Collection c = symTab.getSymbol(targetClassName + "." + targetClassPropertyName);
+// Iterator it = c.iterator();
+// Symbol propSymbol = (Symbol) it.next();
+
this._dataType=new TypeInfo(propSymbol.getType());
this._dataType.setIsArray(true);
expressionForTarget = (Expression)paramList.get(6); // 6th param is an expression involving properties of the targetclass
@@ -481,16 +489,17 @@
// get instances of the targetclass that satisfy the association conditions
- logger.fine(Thread.currentThread().getName()+" refExpressionResult evaluateFlavour2 "+referenceStr);
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" refExpressionResult evaluateFlavour2 "+referenceStr);
//System.out.println("targetClassInstanceReferences to dc :"+refExpressionResult+" "+symTab.getDefaultQualifier()+" "+targetClassName+" "+associationName+" "+sourceRole+" "+targetRole);
targetClassInstanceReferences = dc.getAssociatedInstanceReferences(refExpressionResult,symTab.getDefaultQualifier(),targetClassName,associationName,sourceRole,targetRole);
//System.out.println("targetClassInstanceReferences "+targetClassInstanceReferences.toString());
-
+ if (logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" got associated references");
// targetClassInstance = dc.getAssociatedInstanceReferences(refTypeName, symTab.getDefaultQualifier(), targetClassName,associationName,sourceRole,targetRole, refExpressionResult);
-
+ if (logger.isLoggable(Level.FINE))
logger.fine(Thread.currentThread().getName()+" got associated instances");
// filter the List based on the target filter expression
@@ -499,7 +508,8 @@
List filteredTargetClassInstanceReferences = filterTargetClassInstanceReferencesWithTargetExpression(targetClassInstanceReferences , this.targetClassName,this.symTab.getDefaultQualifier());
//System.out.println("targetClassInstanceReferences "+filteredTargetClassInstanceReferences.toString());
- logger.fine(Thread.currentThread().getName()+" got filtered references");
+ if (logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" got filtered references");
ArrayList filteredTargetClassInstances = new ArrayList();
@@ -558,20 +568,24 @@
List targetClassInstanceReferences = null;
// traverse association to get an array of target class instances. Each instance is a Map of key=values
- logger.fine(Thread.currentThread().getName()+" refExpressionResult evaluateFlavour1 "+refExpressionStr);
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" refExpressionResult evaluateFlavour1 "+refExpressionStr);
targetClassInstanceReferences = dc.getAssociatedInstanceReferences((Object)refExpressionResult,symTab.getDefaultQualifier(),targetClassName,associationName,sourceRole,targetRole);
//System.out.println("targetClassInstanceReferences size "+targetClassInstanceReferences.size());
- logger.fine(Thread.currentThread().getName()+" got associated references");
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" got associated references");
// targetClassInstance = dc.getAssociatedInstanceReferences(refTypeName, symTab.getDefaultQualifier(), targetClassName,associationName,sourceRole,targetRole, refExpressionResult);
- logger.fine(Thread.currentThread().getName()+" got associated instances");
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" got associated instances");
// filter the List based on the target filter expression
List filteredTargetClassInstanceReferences = filterTargetClassInstanceReferencesWithTargetExpression(targetClassInstanceReferences , this.targetClassName,this.symTab.getDefaultQualifier());
//System.out.println("filteredTargetClassInstanceReferences size "+filteredTargetClassInstanceReferences.size());
- logger.fine(Thread.currentThread().getName()+" got filtered references");
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" got filtered references");
List filteredTargetClassInstances = new ArrayList();
@@ -584,7 +598,8 @@
filteredTargetClassInstances.add(instanceProperties);
}
- logger.fine(Thread.currentThread().getName()+" got filtered instances");
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" got filtered instances");
if(!noPostCollectOperation) // post collect exists
{
@@ -716,20 +731,23 @@
//System.out.println("result "+result);
if(result.booleanValue())
{
- logger.fine(Thread.currentThread().getName()+" cop passed filter "+cop);
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" cop passed filter "+cop);
//System.out.println("adding cop to list "+cop.toString());
filteredTargetClassInstanceReferences.add(cop);
}
else
{
- logger.fine(Thread.currentThread().getName()+" cop did not pass filter "+cop);
+ if(logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" cop did not pass filter "+cop);
}
}
}
else
{
- logger.fine(Thread.currentThread().getName()+" Zero instances passed in hence zero instance references filtered, therefore returning null ");
+ if (logger.isLoggable(Level.FINE))
+ logger.fine(Thread.currentThread().getName()+" Zero instances passed in hence zero instance references filtered, therefore returning null ");
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PostCollectExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PostCollectExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PostCollectExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PostCollectExpression.java Tue Sep 29 18:29:44 2009
@@ -199,12 +199,8 @@
logger.entering(sourceClass, Thread.currentThread().getName() + " "
+ "validate");
- if (arrExp1 != null
- && (arrExp1.getType().getType() == TypeConstants.intType)) // make
- // sure
- // [exp]
- // is
- // numeric
+ // make sure [exp] is numeric
+ if (arrExp1 != null && (arrExp1.getType().getType() == TypeConstants.intType))
{
targetName = targetClassName;
@@ -222,16 +218,17 @@
// System.out.println("!methodOrParam.equals()
// "+qualifiedPropertyName);
- if (symTab.symbolExists(qualifiedPropertyName, recurse)) // make
- // sure
- // ID1
- // exists in the
- // symbol table
+ // make sure ID1 exists in the symbol table
+ if (symTab.symbolExists(qualifiedPropertyName, recurse))
{
// System.out.println("symTab.symbolExists(propName,
// recurse)");
- Symbol sym = symTab.getSymbol(qualifiedPropertyName);
+ //TODO xiping 06/21/09
+// Collection c = symTab.getSymbol(qualifiedPropertyName);
+ Symbol sym = null;
+//
+
_dataType.copy(sym.getType());
if (sym instanceof MethodSymbol)
@@ -306,8 +303,10 @@
"SPL_SYMBOL_DOES_NOT_EXIST_EXCEPTION_MSG",
new Object[] { qualifiedPropertyName }));
}
- } else {
- // System.out.println("method or param name is null");
+ }
+ else
+ {
+ //System.out.println("method or param name is null");
// expression of type [exp]
_dataType.setType(TypeConstants.referenceType);
_dataType.setIsArray(false);
@@ -316,9 +315,11 @@
// target class name in the
// collect
}
- } else {
- logger.severe("arr index should be integer and not "
- + arrExp1.getType());
+ }
+ else
+ {
+ logger.severe(
+ "arr index should be integer and not " + arrExp1.getType());
throw new IllegalExpressionTypeException(Messages.getString(
"SPL_POSTCOLLECT_EXP_EXCEPTION1_MSG",
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PrimaryExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PrimaryExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PrimaryExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/PrimaryExpression.java Tue Sep 29 18:29:44 2009
@@ -26,6 +26,7 @@
package org.apache.imperius.spl.parser.expression.primary;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
@@ -178,6 +179,8 @@
ipt.setSymbolTable(_symTab);
}
returnType = ipt.validate(referenceTypeName);
+ } else {
+ identTupleIt.next(); // <--- Added by dawood
}
}
_dataType.copy(returnType);
@@ -189,7 +192,14 @@
boolean symbolExists = _symTab.symbolExists(_classNameOrInstanceVariableName, true);
if( symbolExists )
{
- Symbol sym = _symTab.getSymbol(_classNameOrInstanceVariableName);
+ Symbol sym = (Symbol)_symTab.getSymbol(_classNameOrInstanceVariableName);
+
+// // xiping's modification, 06/19/09
+// // contains only one local constant
+// Collection c = _symTab.getSymbol(_classNameOrInstanceVariableName);
+// Iterator it = c.iterator();
+// Symbol sym = (Symbol) it.next();
+
_dataType.copy(sym.getType());
// _isArray = sym.isArray();
_referenceTypeName = sym.getReferenceTypeName();
@@ -237,7 +247,12 @@
{
if( _symTab.symbolExists(_classNameOrInstanceVariableName,true) )
{
- Symbol sym = _symTab.getSymbol(_classNameOrInstanceVariableName);
+// Symbol sym = _symTab.getSymbol(_classNameOrInstanceVariableName);
+
+ // xiping's test 06/19/09
+ // return value must be a PropertySymbol
+ Symbol sym = (Symbol)_symTab.getSymbol(_classNameOrInstanceVariableName);
+//
intermediateObject = sym.getValue();
}
else
@@ -321,22 +336,11 @@
+ "setSymTab");
}
- public String toString()
- {
- logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "toString");
- String retStr=" "+this.getPropertyString() +"( ";
-
- if(this.evaluationResult!=null)
- {
- retStr+=this.evaluationResult.toString();
- }
-
- retStr+=" )";
-
- logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "toString");
-
- return retStr;
+
+ // Xiping 10/20/2008
+ public String toString() {
+ return getSensorName();
}
public String getReferenceTypeName() throws SPLException
@@ -364,4 +368,92 @@
return propName;
}
+ //Xiping 05/25/08
+ public String getSensorName() {
+ String sensorName = _classNameOrInstanceVariableName;
+
+ if(!_identTupleList.isEmpty()) {
+ Iterator identTupleIt = _identTupleList.iterator();
+ while(identTupleIt.hasNext()) {
+ IdentPrimaryTuple ipt = (IdentPrimaryTuple)identTupleIt.next();
+ boolean isMethod = ipt.isMethod();
+ List paramList = ipt.getParamList();
+ String identifier = ipt.getIdentifier();
+
+ sensorName +="." + identifier;
+ if (isMethod) {
+ sensorName += "(";
+ Iterator ite = paramList.iterator();
+ while (ite.hasNext()) {
+ Object obj = (Object)ite.next();
+ sensorName += obj + ",";
+ }
+ if (sensorName.endsWith(",")) {
+ sensorName = sensorName.substring(0, sensorName.length()-1);
+ }
+ sensorName += ")";
+ }
+ }
+ }
+
+ return sensorName;
+ }
+
+// public String getSensorName() {
+// String sensorName = _classNameOrInstanceVariableName;
+//
+// if(!_identTupleList.isEmpty()) {
+// Iterator identTupleIt = _identTupleList.iterator();
+// while(identTupleIt.hasNext()) {
+// IdentPrimaryTuple ipt = (IdentPrimaryTuple)identTupleIt.next();
+// boolean isMethod = ipt.isMethod();
+// List paramList = ipt.getParamList();
+// String identifier = ipt.getIdentifier();
+//
+// String param = "";
+// if (isMethod) {
+// Iterator ite = paramList.iterator();
+// while (ite.hasNext()) {
+// Object obj = (Object)ite.next();
+// param += obj + ",";
+// }
+// if (sensorName.endsWith(",")) {
+// param = param.substring(0, param.length()-1);
+// }
+// identifier.replaceAll("()", "("+param+")");
+// sensorName += "." + identifier;
+// }
+// }
+// }
+//
+// return sensorName;
+// }
+
+ //Xiping 06/04/08
+ public boolean equals(Object that) {
+
+ if (!(that instanceof PrimaryExpression)) {
+ return false;
+ }
+ //TODO SPLSymbolTable must overwrite hashCode() and equals()
+// boolean classNameOrInstanceVariableName = this._classNameOrInstanceVariableName.equals(((PrimaryExpression)that)._classNameOrInstanceVariableName);
+// boolean identTupleList = this._identTupleList.equals(((PrimaryExpression)that)._identTupleList);
+// boolean symTab = this._symTab.equals(((PrimaryExpression)that)._symTab);
+// if (classNameOrInstanceVariableName && identTupleList) {// && symTab) {
+// return true;
+// }
+
+ if (this.getSensorName().equals(((PrimaryExpression)that).getSensorName())) {
+ return true;
+ }
+
+ return false;
+ }
+
+ public int hashCode() {
+ //TODO see equals()
+ int hash = this.getSensorName().hashCode();
+
+ return hash;
+ }
}
\ No newline at end of file
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/SelfExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/SelfExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/SelfExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expression/primary/SelfExpression.java Tue Sep 29 18:29:44 2009
@@ -73,37 +73,33 @@
public String getReferenceTypeName()
{
- logger.entering(sourceClass, Thread.currentThread().getName() + " "
- + "evaluate");
-
- String referenceTypeName = null;
- SPLSymbolTable symbtab = sTab;
- while (sTab.getParentSymbolTable() != null
- && sTab.getParentSymbolTable().getSymbolTableType() == SPLSymbolTable.COLLECT)
- {
- symbtab = sTab.getParentSymbolTable();
- }
-
- if (symbtab.getParentSymbolTable() != null
- && symbtab.getParentSymbolTable().getSymbolTableType() != SPLSymbolTable.COLLECT)
- {
- SPLSymbolTable parentSymTab = symbtab.getParentSymbolTable();
- List anchorClassList = parentSymTab.getAnchorClassList();
- Iterator anchorClassListIt = anchorClassList.iterator();
-
- referenceTypeName = (String) anchorClassListIt.next();
-
- }
- else
- {
- logger
- .severe("non collect Parent SymbolTable not found in Self Expression");
- }
-
- logger.exiting(sourceClass, Thread.currentThread().getName() + " "
- + "evaluate");
-
- return referenceTypeName;
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+ //System.out.println("evaluating Self expression");
+ String referenceTypeName = null;
+
+ SPLSymbolTable symbtab=sTab;
+ while(sTab.getParentSymbolTable() != null && sTab.getParentSymbolTable().getSymbolTableType() == SPLSymbolTable.COLLECT){
+ symbtab=sTab.getParentSymbolTable();
+ }
+
+
+ if (symbtab.getParentSymbolTable() != null && symbtab.getParentSymbolTable().getSymbolTableType() != SPLSymbolTable.COLLECT )
+ {
+ SPLSymbolTable parentSymTab = symbtab.getParentSymbolTable();
+ List anchorClassList = parentSymTab.getAnchorClassList();
+ Iterator anchorClassListIt = anchorClassList.iterator();
+
+ referenceTypeName = (String)anchorClassListIt.next();
+
+
+ }
+ else{
+// throw new SPLException("non collect Parent SymbolTable not found in Self Expression");
+ logger.severe("non collect Parent SymbolTable not found in Self Expression");
+
+ }
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+ return referenceTypeName;
}
public Object evaluate() throws SPLException
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/DoubleArgumentExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/DoubleArgumentExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/DoubleArgumentExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/DoubleArgumentExpression.java Tue Sep 29 18:29:44 2009
@@ -25,7 +25,9 @@
package org.apache.imperius.spl.parser.expressions;
+import java.util.Iterator;
import java.util.List;
+import java.util.Vector;
import java.util.logging.Logger;
import org.apache.imperius.spl.external.Expression;
@@ -160,4 +162,33 @@
{
return null;
}
+
+ //Xiping 05/25/08
+ public Iterator getSubexpressions() {
+ Vector subexpressions = new Vector();
+ subexpressions.add(_lhsExp);
+ subexpressions.add(_rhsExp);
+
+ return subexpressions.iterator();
+ }
+ //
+
+ //Xiping 10/13/08
+ public Expression getLHS() {
+ return _lhsExp;
+ }
+
+ public Expression getRHS() {
+ return _rhsExp;
+ }
+
+ public void replaceLHS(Expression lhs) {
+ _lhsExp = lhs;
+ }
+
+ public void replaceRHS(Expression rhs) {
+ _rhsExp = rhs;
+ }
+ //
+
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/MultipleArgumentExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/MultipleArgumentExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/MultipleArgumentExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/MultipleArgumentExpression.java Tue Sep 29 18:29:44 2009
@@ -26,6 +26,7 @@
package org.apache.imperius.spl.parser.expressions;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
@@ -176,4 +177,17 @@
{
return null;
}
+
+ //xiping 06/13/08
+ public Iterator getSubexpressions() {
+ return _expressions.iterator();
+ }
+
+ public List getExpressions() {
+ return _expressions;
+ }
+
+ public void replaceExpressions(List list) {
+ _expressions = list;
+ }
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/QuadrupleArgumentExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/QuadrupleArgumentExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/QuadrupleArgumentExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/QuadrupleArgumentExpression.java Tue Sep 29 18:29:44 2009
@@ -24,7 +24,9 @@
*/
package org.apache.imperius.spl.parser.expressions;
+import java.util.Iterator;
import java.util.List;
+import java.util.Vector;
import java.util.logging.Logger;
import org.apache.imperius.spl.external.Expression;
@@ -149,5 +151,21 @@
public String getReferenceTypeName() throws SPLException
{
return null;
+ //throw new SPLException("ReferenceTypeName not supported");
+ }
+
+ //Xiping 05/29/2008
+ public Iterator getSubexpressions() {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSubexpressions");
+
+ Vector subexpressions = new Vector();
+ subexpressions.add(_exp1);
+ subexpressions.add(_exp2);
+ subexpressions.add(_exp3);
+ subexpressions.add(_exp4);
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSubexpressions");
+
+ return subexpressions.iterator();
}
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/SingleArgumentExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/SingleArgumentExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/SingleArgumentExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/SingleArgumentExpression.java Tue Sep 29 18:29:44 2009
@@ -25,7 +25,9 @@
package org.apache.imperius.spl.parser.expressions;
+import java.util.Iterator;
import java.util.List;
+import java.util.Vector;
import java.util.logging.Logger;
import org.apache.imperius.spl.external.Expression;
@@ -125,4 +127,26 @@
return null;
}
+ //Xiping 05/29/2008
+ public Iterator getSubexpressions() {
+
+ final String methodName = "getSubexpressions()";
+ logger.entering(sourceClass, Thread.currentThread().getName() + " " + methodName);
+
+ Vector subexpressions = new Vector();
+ subexpressions.add(_exp);
+
+ logger.exiting(sourceClass, Thread.currentThread().getName() + " " + methodName);
+
+ return subexpressions.iterator();
+ }
+
+ public Expression getExpression() {
+ return _exp;
+ }
+
+ public void replaceExpression(Expression exp) {
+ _exp = exp;
+ }
+ //
}
Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TimeZoneExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TimeZoneExpression.java?rev=820060&r1=820059&r2=820060&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TimeZoneExpression.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/expressions/TimeZoneExpression.java Tue Sep 29 18:29:44 2009
@@ -113,7 +113,7 @@
logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getType");
Expression e = new StringConstant(tzid);
- List aList = new ArrayList();
+ List aList = new ArrayList(1); // DAW
aList.add(e);
boolean validateExp = true;
if (sTab.getSymbolTableType() == SPLSymbolTable.COLLECT)