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 [10/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/compiler/symboltable/SPLSymbolTable.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/SPLSymbolTable.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,671 @@
+/*
+ * 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.compiler.symboltable;
+
+
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+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;
+import org.apache.imperius.spl.external.InstanceInfo;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.exceptions.SymbolAlreadyDefinedException;
+import org.apache.imperius.spl.parser.statements.impl.MacroDefinition;
+import org.apache.imperius.spl.parser.util.DataCollectorFactory;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class SPLSymbolTable
+{
+ public static final int COLLECT = 1;
+ public static final int MACRO = 2;
+ public static final int DEFAULT = 3;
+ public static final int BASICCOLLECT=4;
+ public static final int POLICYGROUP=5;
+ public static final int UNDEFINED=-1;
+
+ private AnchorData _anchorData = null;
+
+ private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+ private static final String sourceClass="SPLSymbolTable";
+
+ private Map _symbolMap = null;
+ private List _subSymbolTables = null;
+ private SPLSymbolTable _parentTable = null;
+ private int _symbolTableType = UNDEFINED;
+ private DataCollector _dataCollector = null;
+
+ private String _defaultQualifier = null;
+
+ public void addAnchor(String className,
+ String qualifier,
+ List instanceInfoList) throws SPLException
+ {
+ if(_anchorData == null)
+ {
+ _anchorData = new AnchorData();
+ }
+ //System.out.println("SPLSymbolTable addAnchor className "+className);
+ //System.out.println("SPLSymbolTable addAnchor qualifier "+qualifier);
+ //System.out.println("SPLSymbolTable addAnchor instanceInfoList "+instanceInfoList);
+ if(instanceInfoList.size()==0)
+ {
+ InstanceInfo iI=new InstanceInfo(className,null);
+ //System.out.println("created new instance info object ");
+
+ instanceInfoList.add(iI);
+ }
+ _anchorData.addInstanceInfoListForClass(className, instanceInfoList);
+ _anchorData.addQualifierForClass(className, qualifier);
+ if(qualifier!=null)
+ {
+ _defaultQualifier = qualifier;
+
+ }
+// _defaultQualifier = qualifier;
+
+ _populateAnchorClassSymbols(className, qualifier, instanceInfoList);
+
+ }
+
+ /*public void addCollectAnchor(String className,
+ String qualifier,
+ List instanceInfoList,
+ boolean isCollectInstance) throws SPLException
+ {
+
+ //System.out.println("SPLSymbolTable addAnchor className "+className);
+ //System.out.println("SPLSymbolTable addAnchor qualifier "+qualifier);
+ //System.out.println("SPLSymbolTable addAnchor instanceInfoList "+instanceInfoList);
+ if(instanceInfoList.size()==0)
+ {
+ InstanceInfo iI=new InstanceInfo(className,null,isCollectInstance);
+ //System.out.println("created new instance info object ");
+
+ instanceInfoList.add(iI);
+ }
+
+ _populateCollectAnchorClassSymbols(className, qualifier, instanceInfoList);
+
+ }*/
+
+ public AnchorData getAnchorData()
+ {
+ return _anchorData;
+ }
+
+ public void setAnchorData(AnchorData anchorData)
+ {
+ _anchorData = anchorData;
+
+ }
+
+
+ public SPLSymbolTable(SPLSymbolTable pt)
+ {
+ this(pt,DEFAULT);
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+ }
+
+
+ public SPLSymbolTable(SPLSymbolTable pt,int type)
+ {
+ this();
+ //System.out.println("creating SPLSymbolTable(SPLSymbolTable pt,int type)");
+
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+
+ //System.out.println("Setting Parent" + pt);
+ this._symbolTableType = type;
+ if(_symbolTableType!= COLLECT && _symbolTableType!= POLICYGROUP)
+ {
+ this._anchorData = pt.getAnchorData();
+
+ }
+
+ this._dataCollector = DataCollectorFactory.getDataCollector();
+ this._defaultQualifier=pt.getDefaultQualifier();
+ this.setParentSymbolTable(pt);
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+ }
+ public SPLSymbolTable()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+ //System.out.println("creating SPLSymbolTable()");
+ _subSymbolTables = new ArrayList();
+ _symbolMap = new LinkedHashMap();
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "SPLSymbolTable");
+ }
+
+ public void addChildSymbolTable(SPLSymbolTable c)
+ {
+ // //System.out.println("Current sym table entries" + _symbolMap);
+ // //System.out.println("Adding child sym table" + c);
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "addChildSymbolTable");
+ _subSymbolTables.add(c);
+ c._parentTable=this;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "addChildSymbolTable");
+ }
+
+ public SPLSymbolTable getParentSymbolTable()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getParentSymbolTable");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getParentSymbolTable");
+ return _parentTable;
+
+ }
+
+
+ public void insertVariableSymbol(String name,
+ TypeInfo type,
+ boolean isKey,
+ boolean isClassProp) throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertVariableSymbol");
+ // //System.out.println("Inserting Variable: " + name + type + val);
+ if(!_symbolMap.containsKey(name))
+ {
+
+ Symbol cimSym = new PropertySymbol(name,type,isKey,isClassProp);
+ _symbolMap.put(name, cimSym);
+ }
+ else
+ {
+ logger.severe(Thread.currentThread().getName()+" "+"Symbol: " + name + " already defined");
+ throw new SymbolAlreadyDefinedException("Symbol: " + name + " already defined");
+ }
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertVariableSymbol");
+ }
+
+ public void insertVariableSymbol(String name,
+ int type,
+ String referenceTypeName,
+ boolean isArray,
+ boolean isKey,
+ boolean isClassProp) throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertVariableSymbol");
+ // //System.out.println("Inserting Variable: " + name + type + val);
+ if(!_symbolMap.containsKey(name))
+ {
+ TypeInfo tp = new TypeInfo(type,referenceTypeName,isArray);
+ Symbol cimSym = new PropertySymbol(name,tp,isKey,isClassProp);
+ _symbolMap.put(name, cimSym);
+ }
+ else
+ {
+ logger.severe(Thread.currentThread().getName()+" "+"Symbol: " + name + " already defined");
+ throw new SymbolAlreadyDefinedException("Symbol: " + name + " already defined");
+ }
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertVariableSymbol");
+ }
+ public void insertMethodSymbol(String name,
+ TypeInfo retType,
+ boolean isReturnArray,
+ String returnReferenceName,
+ List argTypeList,
+ SPLSymbolTable argsSymbolTable) throws SymbolAlreadyDefinedException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertMethodSymbol");
+
+ // //System.out.println("Inserting Method: " + name + retType + argTypeList);
+ if(!_symbolMap.containsKey(name))
+ {
+ /* String nName,
+ int retType,
+ boolean isReturnArray,
+ String returnReferenceType,
+ SPLSymbolTable argsTable)*/
+ Symbol cimSym = new MethodSymbol(name,
+ retType,
+ argTypeList,
+ argsSymbolTable);
+ _symbolMap.put(name, cimSym);
+ //System.out.println("method symbol added to symboltable "+name);
+ }
+ else
+ {
+ logger.severe(Thread.currentThread().getName()+" "+"Symbol: " + name + " already defined");
+ throw new SymbolAlreadyDefinedException("Symbol: " + name + " already defined");
+ }
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "insertMethodSymbol");
+
+ }
+
+ public void insertMacroSymbol(String name,
+ String retType,
+ boolean isArray,
+ ArrayList argTypeList,
+ MacroDefinition macroDef) throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "insertMacroSymbol");
+ int type = TypeConstants.getActualType(retType);
+ TypeInfo returnType = new TypeInfo(type,null,isArray);
+ //System.out.println("Inserting Method: " + name + retType + argTypeList);
+ if(!_symbolMap.containsKey(name))
+ {
+ Symbol cimSym = new MacroSymbol(name,returnType,argTypeList,macroDef);
+ _symbolMap.put(name, cimSym);
+ }
+ else
+ {
+ logger.severe(Thread.currentThread().getName()+" "+"Symbol: " + name + " already defined");
+ throw new SymbolAlreadyDefinedException("Symbol: " + name + " already defined");
+ }
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "insertMacroSymbol");
+ }
+
+ 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;
+ }
+
+ public boolean symbolExists(String name, boolean recurse)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "symbolExists");
+ boolean res = false;
+ if(_symbolMap.containsKey(name))
+ {
+ res = true;
+ }
+ else
+ {
+ if(_parentTable != null && recurse)
+ {
+ res = _parentTable.symbolExists(name, recurse);
+ }
+ }
+ //System.out.println("symbol exists ? "+name+" "+res);
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "symbolExists");
+ return res;
+ }
+
+
+ private void _populateAnchorClassSymbols(String className,
+ String qualifier,
+ List instanceInfoList)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" " +
+ "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();
+
+ while(it.hasNext())
+ {
+ String key = (String)it.next();
+ Symbol s = (Symbol)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);
+ //System.out.println("Symbol added to symbolmap : "+instanceName + "." + key);
+ }
+
+ }
+ else
+ {
+ _symbolMap.put(className + "." + key,s);
+ //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
+ {
+ //System.out.println("populateAnchorElementSymbols ::
+ //_anchorElement,nameSpace :"+_anchorElement+" "+nameSpace);
+
+ if(_dataCollector == null)
+ {
+ _dataCollector = DataCollectorFactory.getDataCollector();
+ }
+
+ sMap = _dataCollector.getSymbolsForClass(className,qualifier);
+ Iterator it = sMap.keySet().iterator();
+
+ while(it.hasNext())
+ {
+ String key = (String)it.next();
+ Symbol s = (Symbol)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);
+ //System.out.println("Symbol added to symbolmap : "+instanceName + "." + key);
+ }
+
+ }
+ else
+ {
+ _symbolMap.put(className + "." + key,s);
+ //System.out.println("Symbol added to symbolmap : "+className + "." + key);
+
+ }
+ }
+
+ }
+ catch (SPLException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateAnchorElementSymbols");
+
+ }*/
+
+
+
+ public void populateInstanceValuesForInstance(
+ String className,
+ String instanceName,
+ Object instance,
+ Map currentInstanceSymbols) throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()
+ +" "+ "populateSymbolTableWithInstanceValues");
+ //System.out.println("SPLSymbolTable::populateSymbolTableWithInstanceValues");
+ resetSymbolValues();
+
+ Iterator keyIt = currentInstanceSymbols.keySet().iterator();
+ while(keyIt.hasNext())
+ {
+
+ String currentKey = (String)keyIt.next();
+ String qualifiedKey = currentKey;
+ qualifiedKey = instanceName + "." + currentKey;
+
+ //System.out.println("currentKey "+currentKey);
+ PropertySymbol sym = (PropertySymbol)getSymbol(qualifiedKey);
+
+ Object value = (Object)currentInstanceSymbols.get(currentKey);
+ sym.setValue(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()+" "+ "populateSymbolTableWithInstanceValues");
+ }
+
+ /*public void populateInstanceValuesForCollect(
+ String className,
+ String instanceName,
+ Object instance,
+ Map currentInstanceSymbols) throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()
+ +" "+ "populateSymbolTableWithInstanceValues");
+ //System.out.println("SPLSymbolTable::populateSymbolTableWithInstanceValues");
+ resetSymbolValues();
+
+ Iterator keyIt = currentInstanceSymbols.keySet().iterator();
+ while(keyIt.hasNext())
+ {
+
+ String currentKey = (String)keyIt.next();
+ String qualifiedKey = currentKey;
+ qualifiedKey = instanceName + "." + currentKey;
+
+ //System.out.println("currentKey "+currentKey);
+ PropertySymbol sym = (PropertySymbol)getSymbol(qualifiedKey);
+
+ Object value = (Object)currentInstanceSymbols.get(currentKey);
+ sym.setValue(value);
+ if(logger.isLoggable(Level.FINE))
+ {
+ logger.fine(Thread.currentThread().getName()+
+ " SPLSymbolTable setting symbol:"
+ +sym.getName()+" from:"+sym.getValue()+" to:"+value);
+ }
+
+
+ }
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "populateSymbolTableWithInstanceValues");
+ }*/
+
+ private void _insertInstanceObject(String className,
+ String instanceName,
+ Object instance) throws SPLException
+ {
+ _anchorData.insertInstanceObject(className, instanceName, instance);
+
+ }
+
+
+ public void resetSymbolValues()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "resetSymbolValues");
+ //TBD
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "resetSymbolValues");
+ }
+
+
+ public void setParentSymbolTable(SPLSymbolTable table) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setParentSymbolTable");
+ this._parentTable = table;
+ table._subSymbolTables.add(this);
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setParentSymbolTable");
+
+ }
+ public List getSubSymbolTables() {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSubSymbolTables");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSubSymbolTables");
+
+ return _subSymbolTables;
+ }
+ public void setSubSymbolTables(List symbolTables) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSubSymbolTables");
+ _subSymbolTables = symbolTables;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSubSymbolTables");
+
+ }
+ public Map getSymbolMap() {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymbolMap");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymbolMap");
+
+ return _symbolMap;
+
+
+ }
+ public void setSymbolMap(Map map) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymbolMap");
+ _symbolMap = map;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymbolMap");
+
+ }
+ public int getSymbolTableType() {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getSymbolTableType");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getSymbolTableType");
+
+ return _symbolTableType;
+ }
+ public void setSymbolTableType(int tp) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSymbolTableType");
+ this._symbolTableType = tp;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSymbolTableType");
+ }
+
+
+// public DataCollector getDataCollector() {
+// logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getDataCollector");
+// logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getDataCollector");
+//
+// return _dataCollector;
+// }
+ public void setDataCollector(DataCollector dataCollector) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setDataCollector");
+ if(dataCollector == null) {
+ this._dataCollector = DataCollectorFactory.getDataCollector();
+ } else {
+ this._dataCollector = dataCollector;
+ }
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setDataCollector");
+
+ }
+
+ public List getAnchorClassList()
+ {
+
+ List anchorClassList = _anchorData.getAnchorClassList();
+ return anchorClassList;
+ }
+
+ public String getQualifierForClass(String className)
+ {
+ String qualifier = _anchorData.getQualifierForClass(className);
+ return qualifier;
+ }
+
+ public List getInstanceInfoList(String className)
+ {
+ List instanceInfoList = _anchorData.getInstanceInfoList(className);
+ return instanceInfoList;
+ }
+
+ public Object getInstance(String instanceName)
+ {
+ Object instance = null;
+ instance = _anchorData.getInstance(instanceName);
+// if(instance ==null){
+//// SPLSymbolTable stab=this;
+////
+//// while(stab.getParentSymbolTable() != null){
+//// SPLSymbolTable parent=stab.getParentSymbolTable();
+//// instance = parent._anchorData.getInstance(instanceName);
+//// if(instance != null){
+//// break;
+//// }
+//// stab=stab.getParentSymbolTable();
+//// }
+//// logger.severe(Thread.currentThread().getName()+" "+"Did not find instance in Symbol Table: " + instanceName);
+//
+// }
+//
+ return instance;
+
+ }
+
+ public String getDefaultQualifier()
+ {
+ return _defaultQualifier;
+ }
+
+ public void setDefaultQualifier(String qualifier) {
+ _defaultQualifier = qualifier;
+ }
+
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/Symbol.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/Symbol.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/Symbol.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/Symbol.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.compiler.symboltable;
+
+import org.apache.imperius.spl.parser.util.TypeInfo;
+
+
+
+public interface Symbol
+{
+ TypeInfo getType();
+ String getReferenceTypeName();
+ Object getValue();
+ boolean isArray();
+ boolean isKey();
+ boolean isClassSymbol();
+
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ClassDoesNotExistException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ClassDoesNotExistException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ClassDoesNotExistException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ClassDoesNotExistException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class ClassDoesNotExistException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public ClassDoesNotExistException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalExpressionTypeException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalExpressionTypeException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalExpressionTypeException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalExpressionTypeException.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.exceptions;
+
+
+
+public class IllegalExpressionTypeException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public IllegalExpressionTypeException(String x)
+ {
+ super(x);
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalParameterTypeException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalParameterTypeException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalParameterTypeException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalParameterTypeException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class IllegalParameterTypeException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public IllegalParameterTypeException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalSymbolReferenceException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalSymbolReferenceException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalSymbolReferenceException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/IllegalSymbolReferenceException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,36 @@
+/*
+ * 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.exceptions;
+
+
+
+public class IllegalSymbolReferenceException extends SPLException
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public IllegalSymbolReferenceException(String x)
+ {
+ super(x);
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InstanceDoesNotExistException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InstanceDoesNotExistException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InstanceDoesNotExistException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InstanceDoesNotExistException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class InstanceDoesNotExistException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public InstanceDoesNotExistException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidAssociationException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidAssociationException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidAssociationException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidAssociationException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class InvalidAssociationException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public InvalidAssociationException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidCIMParameterException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidCIMParameterException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidCIMParameterException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidCIMParameterException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class InvalidCIMParameterException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public InvalidCIMParameterException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidPolicyParameterException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidPolicyParameterException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidPolicyParameterException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/InvalidPolicyParameterException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class InvalidPolicyParameterException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public InvalidPolicyParameterException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/MissingParameterException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/MissingParameterException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/MissingParameterException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/MissingParameterException.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.exceptions;
+
+
+
+public class MissingParameterException extends SPLException
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public MissingParameterException(String s)
+ {
+ super(s);
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/NonExistentSymbolException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/NonExistentSymbolException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/NonExistentSymbolException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/NonExistentSymbolException.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.exceptions;
+
+
+
+public class NonExistentSymbolException extends SPLException
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public NonExistentSymbolException(String x)
+ {
+ super(x);
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyAlreadyExistsInRepositoryException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyAlreadyExistsInRepositoryException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyAlreadyExistsInRepositoryException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyAlreadyExistsInRepositoryException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class PolicyAlreadyExistsInRepositoryException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public PolicyAlreadyExistsInRepositoryException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyDoesNotExistException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyDoesNotExistException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyDoesNotExistException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/PolicyDoesNotExistException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class PolicyDoesNotExistException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public PolicyDoesNotExistException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ReferenceDoesNotExistException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ReferenceDoesNotExistException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ReferenceDoesNotExistException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/ReferenceDoesNotExistException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class ReferenceDoesNotExistException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public ReferenceDoesNotExistException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SPLException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SPLException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SPLException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SPLException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,38 @@
+/*
+ * 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.exceptions;
+
+
+
+public class SPLException extends Exception
+{
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public SPLException(String s)
+ {
+ super(s);
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SymbolAlreadyDefinedException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SymbolAlreadyDefinedException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SymbolAlreadyDefinedException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/SymbolAlreadyDefinedException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class SymbolAlreadyDefinedException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public SymbolAlreadyDefinedException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypeMismatchException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypeMismatchException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypeMismatchException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypeMismatchException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class TypeMismatchException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public TypeMismatchException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypesNotAssignableException.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypesNotAssignableException.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypesNotAssignableException.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/exceptions/TypesNotAssignableException.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.exceptions;
+
+
+
+public class TypesNotAssignableException extends SPLException
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public TypesNotAssignableException(String s)
+ {
+ super(s);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/expression/primary/BasicCollectionExpression.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,260 @@
+/*
+ * 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.expression.primary;
+
+import java.security.InvalidParameterException;
+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.parser.compiler.symboltable.SPLSymbolTable;
+import org.apache.imperius.spl.parser.exceptions.IllegalParameterTypeException;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.spl.parser.util.TypeResolver;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class BasicCollectionExpression implements Expression
+{
+ private List _elements = null;
+ private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+ private static final String sourceClass="BasicCollectionExpression";
+
+ private int _size=0;
+ private TypeInfo _collectionType=null;
+ //private int expressionType=TypeConstants.basicCollectionType;
+
+ private String _referenceTypeName="";
+
+
+
+ public BasicCollectionExpression(List pList, SPLSymbolTable sTab)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "BasicCollectionExpression");
+
+ //System.out.println("creating BasicCollectionExpression");
+ if(pList.isEmpty())
+ {
+
+ logger.severe(Thread.currentThread().getName()+" "+
+ "No of parameters for Basic collection has to be greater than zero ");
+
+ throw new InvalidParameterException("No of parameters for Basic collection has to be greater than zero ");
+ }
+
+ _elements=pList;
+ try
+ {
+ if(!validate())
+ {
+
+ logger.severe(Thread.currentThread().getName()+" "+
+ "No of parameters for Basic collection has to be greater than zero ");
+ throw new IllegalParameterTypeException("Validation of BasicCollectionExpression Failed");
+ }
+
+
+ }
+ catch(SPLException e)
+ {
+ e.printStackTrace();
+ }
+
+ _size = _elements.size();
+
+ //System.out.println("size "+this._size+" isArray"+ this.getType().getIsArray());
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "BasicCollectionExpression");
+
+
+ }
+
+
+
+
+ public Object evaluate() throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+
+ //System.out.println("evaluate ");
+ ArrayList resultCollection=new ArrayList();
+ Iterator ExpIt = _elements.iterator();
+ while(ExpIt.hasNext())
+ {
+ Expression exp = (Expression)ExpIt.next();
+ Object resultElement = exp.evaluate();
+
+ //contained expression is not of type collection, just add it to the result Array
+
+ resultCollection.add(resultElement);
+
+
+ }
+ //System.out.println("returning resultCollection");
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "evaluate");
+
+ return resultCollection;
+ }
+
+
+
+ public boolean validate() throws SPLException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "validate");
+
+ //System.out.println("validate BasicCollectionExpression");
+ Iterator paramListIterator = _elements.iterator();
+ while(paramListIterator.hasNext())
+ {
+ Expression expression=(Expression)paramListIterator.next();
+ if(_collectionType == null)
+ {
+ _collectionType = new TypeInfo(expression.getType());
+ _collectionType.setIsArray(true);
+
+ //System.out.println("setting collectionType to "+_collectionType.getType()+" "+_collectionType.getIsArray());
+ if(TypeResolver.isReference(_collectionType))
+ {
+ _collectionType.setReferenceTypeName(expression.getReferenceTypeName());
+ _referenceTypeName = expression.getReferenceTypeName();
+ }
+
+ }
+ else if (_collectionType.getType() != expression.getType().getType())
+ {
+
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "validate");
+ return false;
+ }
+ _collectionType.setIsArray(true);
+
+ }
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "validate");
+ return true;
+ }
+ public List getCollectionElements()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getCollectionElements");
+
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getCollectionElements");
+
+ return _elements;
+ }
+ public int getCollectionSize()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getCollectionSize");
+
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getCollectionSize");
+
+ return _size;
+ }
+
+ public boolean isArray()
+ {
+ //System.out.println("Basic Collect returning this.getType().getIsArray()"+this.getType().getIsArray());
+ return this.getType().getIsArray();
+ }
+
+ /*public void setElements(List elements)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setElements");
+
+ _elements = elements;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setElements");
+
+ }*/
+
+ /*public void setSize(int size)
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setSize");
+
+ this.size = size;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setSize");
+
+ }*/
+
+
+
+
+ public TypeInfo getType()
+ {
+
+
+ return _collectionType;
+ }
+
+
+
+
+ /*public void setType(int expressionType) {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setType");
+
+ this.collectionType = expressionType;
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setType");
+
+ }*/
+
+ public String toString()
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "toString");
+
+
+ String str="[ ";
+
+ Iterator ExpIt = _elements.iterator();
+ while(ExpIt.hasNext())
+ {
+ Expression exp=(Expression)ExpIt.next();
+ if(exp!=null)
+ {
+
+ String expstr=exp.toString();
+ str+=expstr + " , ";
+ }
+
+ }
+ str=str.substring(0, str.length()-3);
+ str+=" ]";
+
+ logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "toString");
+
+ return str;
+ }
+
+
+
+
+ public String getReferenceTypeName() throws SPLException
+ {
+
+ return _referenceTypeName;
+ }
+
+
+}
\ No newline at end of file