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 jn...@apache.org on 2007/12/22 19:34:03 UTC

svn commit: r606479 [21/30] - in /incubator/imperius/trunk/trunk: ./ modules/ modules/imperius-javaspl/ modules/imperius-javaspl/resources/ modules/imperius-javaspl/resources/samples/ modules/imperius-javaspl/resources/samples/computersystem/ modules/i...

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/ActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/ActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/ActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/ActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,29 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements;
+
+
+import org.apache.imperius.spl.external.Actuator;
+
+public interface ActionBlock {
+	
+	boolean execute(Actuator ac);
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/BasicActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/BasicActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/BasicActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/BasicActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,25 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements;
+
+public interface BasicActionBlock extends ActionBlock
+{
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/PolicyStatement.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/PolicyStatement.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/PolicyStatement.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/PolicyStatement.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,37 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.DataCollector;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+
+
+public interface PolicyStatement
+{
+    
+    int getPriority();
+    
+    int evaluate(DataCollector dc,Actuator ac) throws SPLException;
+    
+    String toString();
+    
+    String getAuditLogString();
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/AnchorMethodInvokeAction.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/AnchorMethodInvokeAction.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/AnchorMethodInvokeAction.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/AnchorMethodInvokeAction.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,427 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.Argument;
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.parser.compiler.symboltable.MethodSymbol;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.expression.primary.PrimaryExpression;
+import org.apache.imperius.spl.parser.expressions.impl.AssignmentExpression;
+import org.apache.imperius.spl.parser.statements.BasicActionBlock;
+import org.apache.imperius.spl.parser.statements.impl.ArgumentImpl;
+import org.apache.imperius.spl.parser.util.ActuatorFactory;
+import org.apache.imperius.spl.parser.util.DataCollectorFactory;
+import org.apache.imperius.spl.parser.util.ExpressionUtility;
+import org.apache.imperius.spl.parser.util.TypeResolver;
+import org.apache.imperius.util.SPLLogger;
+
+//import com.ibm.ac.cimspl.CIMSPLTypeConstants;
+
+
+public class AnchorMethodInvokeAction implements BasicActionBlock
+{
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+	private static final String sourceClass="MethodInvokeAction";
+
+	private String _optClassName;
+
+	private String _methodName;
+
+	private SPLSymbolTable _symTab;
+
+	private List _pList;
+
+	private String _operatorType;
+
+	private Expression _constantExpression;
+
+
+
+	// cexp--->integer, compare action result with that, paramlist format--->
+	public AnchorMethodInvokeAction(String optClassName, String methodName,
+			List paramList, String op, Expression cExp, SPLSymbolTable symTab) throws SPLException
+			{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "MethodInvokeAction");
+
+
+		//System.out.println("creating MethodInvokeAction block " + optClassName+ " " + methodName);
+		_optClassName = optClassName;
+		_methodName = methodName;
+		_pList = paramList;
+		_symTab = symTab;
+		if ((op != null) && (op != ""))
+		{
+			_operatorType = op;
+		}
+		_constantExpression = cExp;
+		_validate();
+
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "MethodInvokeAction");
+
+
+			}
+
+	public static void validateActualParameters(SPLSymbolTable symTab,
+			String classNameOrVariableName, 
+			String methodName, 
+			List pList) throws SPLException
+			{
+
+		MethodSymbol methodSym = 
+			(MethodSymbol)symTab.getSymbol(classNameOrVariableName + "." + methodName);
+		List argTypeList = methodSym.getArgumentList();
+		Iterator formalParamTypeIt = argTypeList.iterator();
+		Iterator actualParamIt = pList.iterator();
+		if(argTypeList.size() == pList.size())
+		{	
+			while(formalParamTypeIt.hasNext() && actualParamIt.hasNext())
+			{
+				Argument formalArg = (Argument)formalParamTypeIt.next();
+				Expression actualParam = (Expression)actualParamIt.next();
+				if(!TypeResolver.isTypeAssignableForEquality(formalArg.getType(),actualParam.getType()) 
+						|| formalArg.getIsArray() != actualParam.isArray())
+				{
+					throw new SPLException("Formal and passed parameter types don't match for method "
+							+ methodName);
+				}	
+
+			}	
+		}
+		else
+		{
+			System.err.println("Number of Formal and passed parameters don't match for method "
+					+ methodName);
+//			throw new SPLException("Number of Formal and passed parameters don't match for method "
+//			+ methodName);
+		}	
+
+
+			}
+
+	private void _validate() throws SPLException
+	{
+
+		validateActualParameters(_symTab,_optClassName,_methodName,_pList);
+
+	}
+
+	public static Object invokeClassMethod(SPLSymbolTable symTab, 
+			String className, 
+			String qualifier, 
+			String methodName, 
+			List paramList, 
+			Object targetObject)
+	{
+		List parameterObjects = new ArrayList();     
+
+		try
+		{
+
+			MethodSymbol methodSym = 
+				(MethodSymbol)symTab.getSymbol(className + "." + methodName);
+			List argTypeList = methodSym.getArgumentList();
+
+
+
+			for (int i = 0; i < paramList.size(); i++)
+			{
+				Expression exp = (Expression) paramList.get(i);
+
+				if(exp instanceof AssignmentExpression)
+				{
+					//System.out.println("assignment Expression");
+					Expression lhsExpression = null;
+					Expression rhsExpression = null;
+
+
+					AssignmentExpression assignmentExpression = (AssignmentExpression) exp;
+					if (assignmentExpression.getLHSExpression() instanceof org.apache.imperius.spl.external.Expression)
+					{
+						lhsExpression = (Expression) assignmentExpression
+						.getLHSExpression();
+					}
+					if (assignmentExpression.getRHSExpression() instanceof org.apache.imperius.spl.external.Expression)
+					{
+						rhsExpression = (Expression) assignmentExpression
+						.getRHSExpression();
+					}
+					if ((lhsExpression == null) || (rhsExpression == null))
+					{
+						logger.severe("LHS or RHS or argument in method call is null : "+lhsExpression.toString()+" "+rhsExpression);
+
+						throw new SPLException("LHS or RHS or argument in method call is null : "+lhsExpression.toString()+" "+rhsExpression);
+
+					}
+					//System.out.println("lhsExpression class "+ lhsExpression.getClass());
+					//System.out.println("lhsExpression getPropertyName() "+ ((PrimaryExpression) lhsExpression).getPropertyName());
+					// ((PrimaryExpression)lhsExpression).getPropertyName();
+
+					String keyName = ((PrimaryExpression) lhsExpression)
+					.getclassNameOrInstanceVariableName();
+					//System.out.println("argument name= " + keyName);
+
+					Object keyValue = rhsExpression.evaluate();
+					//System.out.println("argument value= " + keyValue);
+
+					String referenceTypeName=""; 
+
+					if(TypeResolver.isReference(rhsExpression.getType()))
+					{	
+
+						referenceTypeName = rhsExpression.getType().getReferenceTypeName();
+					}
+
+					if(keyValue!= null){
+						Argument arg=new ArgumentImpl(rhsExpression.getType().getType(), keyName, rhsExpression.isArray(), referenceTypeName);
+						arg.setValue(keyValue);
+						//System.out.println("created new arg :"+keyName+" "+keyValue.toString());
+						/*
+						 * Expression expression=(Expression)pList.get(i); String
+						 * nameAndValue=(String)expression.evaluate(); Key
+						 */
+						parameterObjects.add(arg);
+					}
+
+				}
+				else
+				{
+					//System.out.println("argument is not an assignment Expression");
+
+					Object result = exp.evaluate();
+					Argument arg=new ArgumentImpl(exp.getType().getType(), null, exp.isArray(), null);
+					arg.setValue(result);
+					parameterObjects.add(arg);
+				} 
+
+			}    
+
+			Actuator ac = ActuatorFactory.getActuator();
+
+			Object result = ac.invokeMethod(className, qualifier, targetObject,
+					methodName, parameterObjects);
+
+
+
+			//System.out.println("method invokation complete : "+className+" "+qualifier+" "+methodName+" "+targetObject);
+			//System.out.println("method invokation result of invokation : "+result);
+
+			// TO DO COMPARE RESULT WITH CONSTANT
+
+
+
+			return result;
+		}
+		catch (SPLException e)
+		{
+			e.printStackTrace();
+			logger.severe(e.getMessage());
+
+			logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+			return null;
+		}
+
+	}
+
+	public boolean execute(Actuator ac)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+		boolean postExprResult=false;
+		Object instance = _symTab.getInstance(_optClassName);
+		String qualifier = _symTab.getQualifierForClass(_optClassName);
+		Object result = invokeClassMethod(_symTab,_optClassName, qualifier, _methodName,_pList,instance);
+		
+		if(result != null )
+		{
+			if(_constantExpression == null)
+			{	
+				postExprResult = true;
+			}
+			else
+			{	
+				Expression constexpr=this._constantExpression;
+				Object constresult;
+				int compareResult=0;
+				try{
+					constresult=constexpr.evaluate();
+					compareResult=ExpressionUtility.compare(result, constresult);
+				}
+				catch(SPLException e){
+					e.printStackTrace();
+					logger.severe(Thread.currentThread().getName()+" "+e.getMessage());
+					
+				}
+				String operation=this._operatorType;
+				if(operation.equalsIgnoreCase("==")){
+					if(compareResult!=0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else if(operation.equalsIgnoreCase("!=")){
+					if(compareResult==0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else if(operation.equalsIgnoreCase(">=")){
+					if(compareResult < 0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else if(operation.equalsIgnoreCase(">")){
+					if(compareResult <= 0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else if(operation.equalsIgnoreCase("<")){
+					if(compareResult >= 0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else if(operation.equalsIgnoreCase("<=")){
+					if(compareResult > 0)
+						postExprResult=false;
+					else
+						postExprResult=true;
+				}
+				else {
+					logger.severe(Thread.currentThread().getName()+" "+"operation did not match any of the standard expressions "+operation);
+					
+				}
+			}	
+			//System.out.println("AnchorMethodInvokeAction returning  "+postExprResult);
+			return postExprResult;
+		}
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+		return false;
+
+	}
+
+	public String getMethodName()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMethodName");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMethodName");
+
+		return _methodName;
+	}
+
+	public void setMethodName(String methodName)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMethodName");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMethodName");
+
+		_methodName = methodName;
+	}
+
+	public String getOptClassName()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getOptClassName");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getOptClassName");
+
+		return _optClassName;
+	}
+
+	public void setOptClassName(String optClassName)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setOptClassName");
+
+		_optClassName = optClassName;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setOptClassName");
+
+	}
+
+	public List getPList()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getPList");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getPList");
+
+		return _pList;
+	}
+
+	public void setPList(ArrayList list)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setPList");
+
+		_pList = list;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setPList");
+
+	}
+
+	public Expression getConstantExpression()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getConstantExpression");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getConstantExpression");
+
+		return _constantExpression;
+	}
+
+	public void setConstantExpression(Expression constantExpression)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setConstantExpression");
+
+		_constantExpression = constantExpression;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setConstantExpression");
+
+	}
+
+	public String getOperatorType()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getOperatorType");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getOperatorType");
+
+		return _operatorType;
+	}
+
+	public void setOperatorType(String operatorType)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setOperatorType");
+
+		_operatorType = operatorType;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setOperatorType");
+
+	}
+
+
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ArrowActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ArrowActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ArrowActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ArrowActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,79 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.parser.statements.ActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class ArrowActionBlock extends DoubleArgumentActionBlock
+{
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+    private static final String sourceClass="ArrowActionBlock";
+    
+    
+    public ArrowActionBlock(ActionBlock a1, ActionBlock a2)
+    {
+        super(a1, a2);
+
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "ArrowActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "ArrowActionBlock");
+       
+        // TODO Auto-generated constructor stub
+    }
+    
+    // @Override
+    /**
+     * If the block is of the form <action block >- ><action block> and the
+     * first block returns failure, the second block is not evaluated and the
+     * whole block returns failure. If the first block succeeds, the second
+     * block is evaluated and the whole block returns whatever the second block
+     * returns.
+     */
+    public boolean execute(Actuator ac)
+    {
+
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+        
+        boolean result = true;
+        
+        boolean result1 = _leftActionBlock.execute( ac);
+        if (result1)
+        {
+            result = _rightActionBlock.execute( ac);
+        }
+        else
+        {
+            result = false;
+        }
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+        
+        return result;
+        
+    }
+
+	
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ConcurrentActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ConcurrentActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ConcurrentActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ConcurrentActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,63 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.parser.statements.ActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class ConcurrentActionBlock extends DoubleArgumentActionBlock
+{
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    
+    private static final String sourceClass="ConcurrentActionBlock";
+    
+    public ConcurrentActionBlock(ActionBlock a1, ActionBlock a2)
+    {
+        super(a1, a2);
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "ConcurrentActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "ConcurrentActionBlock");
+ 
+    }
+    
+    // @Override
+    /**
+     * If the block is of the form <action block> || <action block>, both blocks
+     * are evaluated concurrently and the whole block succeeds as soon as one of
+     * the two internal blocks succeeds.
+     */
+    public boolean execute(Actuator ac)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+        
+        boolean result1 = _leftActionBlock.execute(ac);
+        boolean result2 = _rightActionBlock.execute(ac);
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+        
+        return result1 || result2;
+    }
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/DoubleArgumentActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/DoubleArgumentActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/DoubleArgumentActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/DoubleArgumentActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,95 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.parser.statements.ActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public abstract class DoubleArgumentActionBlock implements ActionBlock
+{
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    private static final String sourceClass="DoubleArgumentActionBlock";
+    
+    
+    protected ActionBlock _leftActionBlock;
+    
+    protected ActionBlock _rightActionBlock;
+    
+   
+    
+    public DoubleArgumentActionBlock(ActionBlock a1, ActionBlock a2)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "DoubleArgumentActionBlock");
+
+        _leftActionBlock = a1;
+        _rightActionBlock = a2;
+
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "DoubleArgumentActionBlock");
+ 
+    }
+    
+   
+    
+    public ActionBlock getLeftActionBlock()
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getLeftActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getLeftActionBlock");
+ 
+        return _leftActionBlock;
+    }
+    
+    public void setLeftActionBlock(ActionBlock leftActionBlock)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setLeftActionBlock");
+
+       
+        this._leftActionBlock = leftActionBlock;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setLeftActionBlock");
+        
+    }
+    
+    public ActionBlock getRightActionBlock()
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getRightActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getRightActionBlock");
+ 
+        return _rightActionBlock;
+    }
+    
+    public void setRightActionBlock(ActionBlock rightActionBlock)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setRightActionBlock");
+
+        this._rightActionBlock = rightActionBlock;
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setRightActionBlock");
+ 
+    }
+    
+  
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ExtrinsicMethodInvokeAction.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ExtrinsicMethodInvokeAction.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ExtrinsicMethodInvokeAction.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/ExtrinsicMethodInvokeAction.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,59 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.List;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.factory.BuitInOperationExpressionFactory;
+import org.apache.imperius.spl.parser.statements.BasicActionBlock;
+
+
+public class ExtrinsicMethodInvokeAction implements BasicActionBlock 
+{
+	Expression _actionExpression = null;
+	public ExtrinsicMethodInvokeAction(String methodName, List paramList, SPLSymbolTable sst) throws SPLException
+	{
+		_actionExpression = 
+			BuitInOperationExpressionFactory.createBuiltInAction(
+					methodName, paramList, sst);
+		
+	}
+
+	public boolean execute(Actuator ac) 
+	{
+		try 
+		{
+			_actionExpression.evaluate();
+			return true;
+		} 
+		catch (SPLException e) 
+		{
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return false;
+	}
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/InvokePolicyAction.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/InvokePolicyAction.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/InvokePolicyAction.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/InvokePolicyAction.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,204 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.external.InternalClient;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.statements.BasicActionBlock;
+import org.apache.imperius.spl.parser.util.InternalClientFactory;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+
+public class InvokePolicyAction implements BasicActionBlock
+{
+
+	private List _paramList;
+
+	private String _className;
+
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+	public static final int POLICY_EVALUATED_SUCCESSFULLY = 0;
+	public static final int POLICY_NOT_EVALUATED = 1;
+	public static final int POLICY_EVALUATION_FAILED = -1;
+
+
+	private static final String sourceClass="InvokePolicyAction";
+
+
+	public InvokePolicyAction(List paramList)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "InvokePolicyAction");
+		//System.out.println("creating InvokePolicyAction ");
+
+//		_className = className;
+		_paramList = paramList;
+
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "InvokePolicyAction");
+
+	}
+
+	public boolean execute(Actuator ac)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+		//System.out.println("Executing InvokePolicy action  on "+this.getClassName());
+
+		Expression _lhsExp = null;
+		Expression _rhsExp = null;
+
+		TypeInfo lType=null;
+		TypeInfo rType=null;
+
+		try
+		{
+			//System.out.println("size of parameters in InvokePolicy action block :"+ this._paramList.size());
+			if(_paramList.size() > 2 || _paramList.size() == 0)
+			{
+				logger.severe(
+						"number of parameters passed to a InvokePolicyAction shoul be 2");
+
+				throw new SPLException("Last Expression should be a collection");
+			}
+			if(_paramList.size()==1)
+			{
+				_lhsExp = (Expression)_paramList.get(0);
+
+				lType=_lhsExp.getType();
+
+
+				if (lType.getType() != TypeConstants.stringType)
+				{
+					logger.severe(
+							"first Expression should be a string describing the Operation");
+					throw new SPLException(
+							"first Expression should be a string describing the Operation");
+				}
+
+				String policyName=(String)_lhsExp.evaluate();                
+				InternalClient ic=InternalClientFactory.getInternalClient();
+				int returnValue=ic.invokePolicy(policyName, null, true);
+				//System.out.println("policy evaluations return val="+returnValue);
+				return true;
+			}
+			if(_paramList.size()==2)
+			{
+				_lhsExp = (Expression)_paramList.get(0);
+				_rhsExp = (Expression)_paramList.get(1);
+
+				lType=_lhsExp.getType();
+				rType=_rhsExp.getType();
+
+
+				if (lType.getType() != TypeConstants.stringType)
+				{
+					logger.severe(
+							"first Expression should be a string describing the Operation");
+					throw new SPLException(
+							"first Expression should be a string describing the Operation");
+				}
+				String policyName=(String)_lhsExp.evaluate();
+
+				Object rhsResult = _rhsExp.evaluate();
+				//System.out.println("rhsResult , class " + rhsResult + " "+ rhsResult.getClass());
+				if (!(rhsResult instanceof java.util.List))
+				{
+
+					logger.severe(
+							"rhsResult is not of type List");
+
+					throw new SPLException("rhsResult is not of type List");
+				}
+				List instanceList=(List)rhsResult;
+				InternalClient ic=InternalClientFactory.getInternalClient();
+				int returnValue=ic.invokePolicy(policyName, instanceList, true);
+				//System.out.println("policy evaluations return val="+returnValue);
+				return true;
+
+			}
+
+			logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+			return false;
+		}
+		catch (SPLException e)
+		{
+			logger.severe(e.getMessage());
+
+			logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+			return false;
+		}
+
+
+	}
+
+	public String getClassName()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getClassName");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getClassName");
+
+		return _className;
+	}
+
+	public void setClassName(String className)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setClassName");
+
+
+		_className = className;
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setClassName");
+
+	}
+
+	public List getParamList()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getParamList");
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getParamList");
+
+		return _paramList;
+	}
+
+	public void setParamList(ArrayList paramList)
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setParamList");
+
+
+		_paramList = paramList;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setParamList");
+
+	}
+
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalAndActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalAndActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalAndActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalAndActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,65 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.parser.statements.ActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public class LogicalAndActionBlock extends DoubleArgumentActionBlock
+{
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    
+    private static final String sourceClass="LogicalAndActionBlock";
+    
+    public LogicalAndActionBlock(ActionBlock a1, ActionBlock a2)
+    {
+        super(a1, a2);
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "LogicalAndActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "LogicalAndActionBlock");
+ 
+        // TODO Auto-generated constructor stub
+    }
+    
+    // @Override
+    /**
+     * If the block is of the form <action block> && <action block>, both blocks
+     * may be evaluated concurrently and the whole block succeeds if both
+     * internal blocks return success.
+     */
+    public boolean execute(Actuator ac)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+        boolean result = (_leftActionBlock.execute(ac) && _rightActionBlock.execute(ac));
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+ 
+        return result;
+        
+    }
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalOrActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalOrActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalOrActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/LogicalOrActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,73 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.parser.statements.ActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public class LogicalOrActionBlock extends DoubleArgumentActionBlock
+{
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+    private static final String sourceClass="LogicalOrActionBlock";
+    
+    
+    public LogicalOrActionBlock(ActionBlock a1, ActionBlock a2)
+    {
+        super(a1, a2);
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "LogicalOrActionBlock");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "LogicalOrActionBlock");
+ 
+        // TODO Auto-generated constructor stub
+    }
+    
+    // @Override
+    /**
+     * If the block is of the form <action block> | <action block>, the first
+     * block is evaluated. If it succeeds, the whole block succeeds and the
+     * second block is not evaluated. If the first block fails, the second block
+     * is evaluated and the whole block returns whatever the second block
+     * returns.
+     */
+    public boolean execute(Actuator ac)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+        
+        boolean result = true;
+        boolean res1 = _rightActionBlock.execute(ac);
+        if (!res1)
+        {
+            result = _leftActionBlock.execute(ac);
+        }
+        
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+ 
+        return result;
+    }
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/SetActionBlock.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/SetActionBlock.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/SetActionBlock.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/actions/impl/SetActionBlock.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,180 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.actions.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.expression.primary.PrimaryExpression;
+import org.apache.imperius.spl.parser.expressions.impl.AssignmentExpression;
+import org.apache.imperius.spl.parser.statements.BasicActionBlock;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+
+public class SetActionBlock implements BasicActionBlock
+{
+    
+    private List _paramList;
+    
+    private String _className;
+    
+    private SPLSymbolTable _symTab;
+    
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+    private static final String sourceClass="SetActionBlock";
+   
+    
+    public SetActionBlock(String className, List paramList, SPLSymbolTable symTab)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "SetActionBlock");
+       //System.out.println("creating SetActionBlock "+className);
+        
+        _className = className;
+        _paramList = paramList;
+        _symTab = symTab;
+        
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "SetActionBlock");
+ 
+    }
+    
+    public boolean execute(Actuator ac)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+
+       //System.out.println("Executing set action  on "+this.getClassName());
+        HashMap modifiedProperties = new HashMap();
+        String instanceName = _className;
+        try
+        {
+           //System.out.println("size of parameters in set action block :"+ this._paramList.size());
+            for (int i = 0; i < _paramList.size(); i++)
+            {
+                if (_paramList.get(i) != null)
+                {
+                   //System.out.println("setactionblock::paramList.get(i) "+ this._paramList.get(i));
+                    if (_paramList.get(i) instanceof AssignmentExpression)
+                    {
+                        AssignmentExpression assignmentExpression = 
+                        	(AssignmentExpression) _paramList.get(i);
+                        PrimaryExpression lhsExpression = 
+                        	(PrimaryExpression) assignmentExpression.getLHSExpression();
+                        
+                        Expression rhsExpression = 
+                        	(Expression) assignmentExpression.getRHSExpression();
+                        instanceName = lhsExpression.getclassNameOrInstanceVariableName();
+                        String keyName = lhsExpression.getPropertyName();
+                       /* int indOfDot = keyName.indexOf('.');
+                        if (indOfDot != -1)
+                        {
+                        	instanceName = keyName.substring(0,indOfDot);
+                            keyName = keyName.substring(indOfDot + 1);
+                        }*/
+                        
+                        Object keyValue = rhsExpression.evaluate();
+                        modifiedProperties.put(keyName, keyValue);
+                        
+                    }
+                    else
+                    {
+
+    					logger.severe(Thread.currentThread().getName()+" "+"paramlist in SetActionBlock does not consist of asignment expressions");
+    					throw new SPLException("paramlist in SetActionBlock does not consist of asignment expressions");
+    				
+                        }
+                }
+                else
+                {
+                	logger.severe(Thread.currentThread().getName()+" "+"the parameter at position " + i + " is null ");
+					throw new SPLException("the parameter at position " + i + " is null ");
+				  }
+                
+            }
+            Object instance = _symTab.getInstance(instanceName);
+            String qualifier = _symTab.getQualifierForClass(_className);
+             ac.modifyInstance(_className, qualifier, instance, modifiedProperties);
+            
+
+            logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+            
+            return true;
+        }
+        catch (SPLException e)
+        {
+            logger.severe(e.getMessage());
+
+            logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "execute");
+     
+            return false;
+        }
+        
+      
+    }
+    
+    public String getClassName()
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getClassName");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getClassName");
+ 
+        return _className;
+    }
+    
+    public void setClassName(String className)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setClassName");
+
+        
+        _className = className;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setClassName");
+        
+    }
+    
+    public List getParamList()
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getParamList");
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getParamList");
+ 
+        return _paramList;
+    }
+    
+    public void setParamList(ArrayList paramList)
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setParamList");
+
+        
+        _paramList = paramList;
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setParamList");
+        
+    }
+
+	
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ArgumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ArgumentImpl.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ArgumentImpl.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ArgumentImpl.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,176 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.impl;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Argument;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.*;
+import org.apache.imperius.util.SPLLogger;
+
+public class ArgumentImpl implements Argument 
+{
+    private TypeInfo _type;
+    private String _name;
+   // private boolean _isArray;
+   // private String _referenceName = "";
+    private Object value=null;
+    private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    
+    
+    private static final String sourceClass="Argument";
+    
+    
+    public ArgumentImpl(String type, String name, boolean isArray, String referenceName) throws SPLException
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "Argument");
+        int tp = TypeConstants.getActualType(type); 
+        _type = new TypeInfo(tp,referenceName,isArray);
+        _name = name;
+       // _isArray = isArray;
+       // _referenceName = referenceName;
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "Argument");
+        
+    }
+    
+    public ArgumentImpl(int type, String name, boolean isArray, String referenceName) throws SPLException
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "Argument");
+        
+        _type = new TypeInfo(type,referenceName,isArray);
+        _name = name;
+     //   _isArray = isArray;
+     //   _referenceName = referenceName;
+        
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "Argument");
+        
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#getReferenceTypeName()
+	 */
+    public String getReferenceTypeName() 
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getReferenceTypeName");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getReferenceTypeName");
+        
+        return _type.getReferenceTypeName();
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#setReferenceTypeName(java.lang.String)
+	 */
+    public void setReferenceTypeName(String name) 
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setReferenceTypeName");
+        
+        _type.setReferenceTypeName( name);
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setReferenceTypeName");
+        
+    }
+    
+    
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#getName()
+	 */
+    public String getName() 
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getName");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getName");
+        
+        return _name;
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#setName(java.lang.String)
+	 */
+    public void setName(String name) 
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setName");
+        
+        this._name = name;
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setName");
+        
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#getType()
+	 */
+    public TypeInfo getType() 
+    {       
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getType");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getType");
+        
+        return _type;
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#setType(java.lang.String)
+	 */
+    public void setType(String type) throws SPLException
+    {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setType");
+        int tp = TypeConstants.getActualType(type);
+        
+        this._type = new TypeInfo(tp,null,false);
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setType");
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#getIsArray()
+	 */
+    public boolean getIsArray()
+    {
+    	return _type.getIsArray();
+    }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#setIsArray(boolean)
+	 */
+    public void setIsArray(boolean a)
+    {
+    	_type.setIsArray(a);
+    }
+
+	/* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#getValue()
+	 */
+	public Object getValue() {
+		return value;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.imperius.spl.parser.statements.impl.IArgument#setValue(java.lang.Object)
+	 */
+	public void setValue(Object value) {
+		this.value = value;
+	}
+    
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ConstantDefinition.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ConstantDefinition.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ConstantDefinition.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ConstantDefinition.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,99 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.impl;
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class ConstantDefinition 
+{
+	private String ident;
+	private Expression initExpr;
+	private SPLSymbolTable symTab;
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+    private static final String sourceClass="ConstantDefinition";
+    
+	
+	public String getIdent() {  
+        
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getIdent");
+    
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getIdent");
+   
+		return ident;
+	}
+
+	public void setIdent(String ident) {    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setIdent");
+    
+		this.ident = ident;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setIdent");
+        
+	}
+
+	public SPLSymbolTable getSymTab() {    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+    
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+   
+		return symTab;
+	}
+
+	public void setSymTab(SPLSymbolTable symTab) {    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+    
+		this.symTab = symTab;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+        
+	}
+
+	public Expression getInitExpr() {    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getInitExpr");
+    
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getInitExpr");
+   
+		return initExpr;
+	}
+
+	public void setInitExpr(Expression initExpr) {    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setInitExpr");
+    
+		this.initExpr = initExpr;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setInitExpr");
+        
+	}
+
+	public ConstantDefinition(String ident, Expression iExpr, SPLSymbolTable sTab)
+	{    
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "ConstantDefinition");
+    
+		this.ident = ident;
+		this.initExpr = iExpr;
+		this.symTab = sTab;
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "ConstantDefinition");
+   
+	}
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/DeclarationStatement.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/DeclarationStatement.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/DeclarationStatement.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/DeclarationStatement.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,126 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.impl;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.parser.compiler.symboltable.PropertySymbol;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class DeclarationStatement 
+{
+	private ArrayList constantList = new ArrayList();
+	private ArrayList macroList = new ArrayList();
+	private SPLSymbolTable symTab;
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    private static final String sourceClass="DeclarationStatement";
+    
+	
+	public DeclarationStatement(ArrayList cList, ArrayList mList, SPLSymbolTable sTab)
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "DeclarationStatement");
+        
+		constantList = cList;
+		macroList = mList;
+		this.symTab = sTab;
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "DeclarationStatement");
+   
+	}
+
+	public ArrayList getConstantList() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getConstantList");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getConstantList");
+   
+		return constantList;
+	}
+
+	public void setConstantList(ArrayList constantList) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setConstantList");
+        
+		this.constantList = constantList;
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setConstantList");
+   
+	}
+
+	public ArrayList getMacroList() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroList");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroList");
+   
+		return macroList;
+	}
+
+	public void setMacroList(ArrayList macroList) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroList");
+
+        this.macroList = macroList;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroList");
+   
+	}
+
+	public SPLSymbolTable getSymTab() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+   
+		return symTab;
+	}
+
+	public void setSymTab(SPLSymbolTable symTab) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+
+        this.symTab = symTab;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+   
+	}
+	
+	public void evaluate() throws SPLException
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+        
+		for(int i=0; i<constantList.size(); i++)
+		{
+			ConstantDefinition cd = (ConstantDefinition)constantList.get(i);
+			Expression e=cd.getInitExpr();
+            if(logger.isLoggable(Level.FINE))
+                logger.fine(Thread.currentThread().getName()+"constant expression "+e.toString());
+            Object result = e.evaluate();
+			String constantSymbol = cd.getIdent();
+			PropertySymbol constantSym = (PropertySymbol)symTab.getSymbol(constantSymbol);
+            if(logger.isLoggable(Level.FINE))
+                logger.fine(Thread.currentThread().getName()+"constantSym name"+ constantSym.getName()+" current value:"+constantSym.getValue()+" setting value to:"+result.toString());
+            
+            constantSym.setValue(result);
+		}
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+   
+	}
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ImportStatement.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ImportStatement.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ImportStatement.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/ImportStatement.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,113 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.external.InstanceInfo;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class ImportStatement 
+{
+	
+	private List _importInstanceInfoList;
+	private Expression _expr;
+	private SPLSymbolTable _symTab;
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    private static final String sourceClass="ImportStatement";
+    
+    
+	
+
+	public SPLSymbolTable getSymTab() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+   
+		return _symTab;
+	}
+
+	public void setSymTab(SPLSymbolTable symTab) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+        
+		this._symTab = symTab;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+        
+	}
+
+	public ImportStatement(List importInstanceInfoList, Expression e,SPLSymbolTable symTab)
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "ImportStatement");
+        
+		
+		this._expr = e;
+		this._symTab = symTab;
+		_importInstanceInfoList=new ArrayList();
+		Iterator it=importInstanceInfoList.iterator();
+		while(it.hasNext())
+		{
+			InstanceInfo iinfo=(InstanceInfo)it.next();
+			//NRJ
+			//if(!iinfo.isCollectInstance())
+			{
+				this._importInstanceInfoList.add(iinfo);
+			}
+			
+			
+		}
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "ImportStatement");
+        
+	}
+
+	
+	public Expression getExpr() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getExpr");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getExpr");
+   
+		return _expr;
+	}
+
+	public void setExpr(Expression expr) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setExpr");
+        
+		this._expr = expr;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setExpr");
+        
+	}
+	
+	public List getImportInstanceInfoList()
+	{
+		return _importInstanceInfoList;
+		
+	}
+
+	
+
+	
+
+	
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/MacroDefinition.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/MacroDefinition.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/MacroDefinition.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/statements/impl/MacroDefinition.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,246 @@
+/*
+ * Licensed 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.
+ */
+//
+
+/**
+ * @author Neeraj Joshi <jn...@us.ibm.com>
+ *
+ */
+package org.apache.imperius.spl.parser.statements.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Argument;
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.*;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class MacroDefinition 
+{
+	private String _macroName;
+	private int _retType;
+	private List _argList = new ArrayList();
+	private Expression _macroExpression;
+	private SPLSymbolTable _macroSymTab;
+	private SPLSymbolTable _symTab;
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    private static final String sourceClass="MacroDefinition";
+    private boolean _isArray =false;
+    
+    public MacroDefinition(String mName, String retType,boolean isArray, ArrayList aList, 
+			Expression mE, SPLSymbolTable mSymTab, SPLSymbolTable sTab) throws SPLException
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "MacroDefinition");
+        
+		this._macroName = mName;
+        
+		this._retType = TypeConstants.getActualType(retType);
+		
+        
+        
+		
+		this._macroSymTab = mSymTab;
+		this._symTab = sTab;
+        this._isArray=isArray;
+		populateArgList(aList);
+        /*if(!array.equalsIgnoreCase(""))
+        {
+            this.isArray=true;
+        }*/
+		//System.out.println("created macro expression "+mName);
+		this._macroExpression = mE;
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "MacroDefinition");
+   
+	}
+	
+	public SPLSymbolTable getMacroSymTab() 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroSymTab");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroSymTab");
+   
+		return _macroSymTab;
+	}
+
+	public Object evaluate() throws SPLException
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+        
+		Object returnValue = null;
+		returnValue = _macroExpression.evaluate();
+		
+
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+   
+		return returnValue;
+	}
+
+
+	public void setMacroSymTab(SPLSymbolTable macroSymTab) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroSymTab");
+        
+		this._macroSymTab = macroSymTab;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroSymTab");
+        
+	}
+
+
+
+	public SPLSymbolTable getSymTab() {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymTab");
+   
+		return _symTab;
+	}
+
+
+
+	public void setSymTab(SPLSymbolTable symTab) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+        
+		this._symTab = symTab;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymTab");
+        
+	}
+
+
+
+	public void setRetType(int retType) {
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setRetType");
+        
+		this._retType = retType;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setRetType");
+        
+	}
+
+
+
+	
+
+	
+
+	private void populateArgList(ArrayList list) 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "populateArgList");
+        
+		for(int i=0; i< list.size(); i++)
+		{
+			Argument e = (Argument)list.get(i);
+			TypeInfo argType = e.getType();
+			_argList.add(argType);
+			
+		}
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateArgList");
+        
+		
+	}
+
+	public List getArgList() 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getArgList");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getArgList");
+   
+		return _argList;
+	}
+
+	public void setArgList(ArrayList argList) 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setArgList");
+        
+		this._argList = argList;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setArgList");
+        
+	}
+
+	public Expression getMacroExpression() 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroExpression");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroExpression");
+   
+		return _macroExpression;
+	}
+
+	public void setMacroExpression(Expression macroExpression) 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroExpression");
+        
+		this._macroExpression = macroExpression;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroExpression");
+        
+	}
+
+	public String getMacroName() 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroName");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroName");
+   
+		return _macroName;
+	}
+
+	public void setMacroName(String macroName) 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroName");
+        
+		this._macroName = macroName;
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroName");
+        
+	}
+
+	public int getRetType() 
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getRetType");
+        
+        logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getRetType");
+   
+		return _retType;
+	}
+
+	public void setRetType(String retType) throws SPLException
+	{
+        logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setRetType");
+        this._retType = TypeConstants.getActualType(retType);
+        
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setRetType");
+        
+	}
+	
+	public String getReferenceTypeName() throws SPLException
+	{
+		String refTypeName = _macroExpression.getReferenceTypeName();
+		return refTypeName;
+	}
+
+    public boolean isArray()
+    {
+        return _isArray;
+    }
+
+    public void setArray(boolean isArray)
+    {
+        this._isArray = isArray;
+    }
+
+
+}