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 [2/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/im...
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/ComplexPolicy.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/ComplexPolicy.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/ComplexPolicy.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/ComplexPolicy.spl 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.
+ */
+// Demonstrates a large variety of built in operators that ship with SPL
+
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable;
+Policy
+{
+ Declaration
+ {
+ integervar = 4000;
+ stringtxt1 = "neeraj";
+ stringtxt2 = "joshi";
+
+ }
+ Condition // Arithmetic operators
+ {
+ Power(200,2) + Abs(Ln(5) - Floor(2.4)) - Ceiling(7.1 + Ln(8)) - Max(2,5,10) - Min(4,2,9)* Round(4.2) == 4
+ }
+ Decision
+ {
+ Set(te.s32 = 30)
+ }
+}:1;
+
+Policy
+{
+
+ Declaration
+ {
+ somestr = "-520";
+ }
+ Condition // String operators
+ {
+ Contains(SubString(Concatenate("abc","def"),3),"ef")
+ || LeftSubString(RightSubString("neerajramchandrajoshi",6,"LeftToRight"),3,"LeftToRight") == "ram"
+ || Contains(MiddleSubString("neerajramchandrajoshi",7,10,"LeftToRight"),"ram")
+
+ }
+ Decision
+ {
+
+ Set(te.s = somestr) == 0
+
+ }
+}:4;
+Policy
+{
+ Declaration
+ {
+ oddarray = [1,3,5,7];
+ evenarray = [2,4,6,8];
+ allarray = [1,2,3,4,5,6,7,8];
+
+
+ }
+ Condition // Collection operators
+ {
+ EqCollection(Union(oddarray,evenarray),allarray)
+ && SubCollection(oddarray,allarray)
+ && AllInCollection(Sum(evenarray),"LESS",allarray)
+ && (CollectionSize(oddarray) == 4) && AnyInCollection(3, "GREATER",evenarray)
+ && (Sum(ApplyToCollection(4, "PLUS", allarray)) >= 32)
+
+ }
+ Decision
+ {
+ Set(te.s = "x") == 0
+
+
+ }
+
+}:3;
+Policy
+{
+ Declaration
+ {
+ todaysdate = "20070615164020.000000-300";
+ tomorrowsdate = "20070616164020.000000-300";
+ yesterdaysdate = "20070614164020.000000-300";
+
+ }
+ Condition // Date time operators
+ {
+ GetDayOfMonth(todaysdate) == GetDayOfMonth(tomorrowsdate) - 1
+ && GetDayOfWeek(todaysdate) == 6
+ && GetDayOfWeekInMonth(todaysdate) == 3
+ && GetHour24(todaysdate) == 16
+ && GetMonth(todaysdate) == 5
+
+
+ }
+ Decision
+ {
+ Set(te.s = "x") == 0
+
+
+ }
+
+}:6;
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/DateTime.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/DateTime.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/DateTime.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/DateTime.spl Sat Dec 22 11:33:46 2007
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+// Demonstrates various DateTime operators
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable;
+Policy
+{
+ Declaration
+ {
+ todaysdate = "20071013143920.000000-300";
+ tomorrowsdate = "20071014143920.000000-300";
+ yesterdaysdate = "20071012143920.000000-300";
+
+ }
+ Condition
+ {
+ GetDayOfMonth(todaysdate) == GetDayOfMonth(tomorrowsdate) - 1
+ && GetDayOfWeek(todaysdate) == 3
+ && GetDayOfWeekInMonth(todaysdate) == 2
+ && GetHour24(todaysdate) == 14
+ && GetMonth(todaysdate) == 10
+
+
+ }
+ Decision
+ {
+ Set(te.s = "x") == 0
+
+
+ }
+
+}:6;
\ No newline at end of file
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/InvokeMethodSample.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/InvokeMethodSample.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/InvokeMethodSample.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/InvokeMethodSample.spl Sat Dec 22 11:33:46 2007
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+// Demonstrates how to invoke a method on the anchor instance
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable;
+
+Policy
+{
+ Declaration
+ {
+ excpectedReturnValue = 10;
+
+ }
+ Condition
+ {
+ true
+ }
+ Decision
+ {
+ te.testMethod(1,2) <= 4
+ }
+}:1;
\ No newline at end of file
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MacroSample.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MacroSample.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MacroSample.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MacroSample.spl Sat Dec 22 11:33:46 2007
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+
+/* Demonstrates use of Macro statement */
+/* Anchor class declaration */
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable; /* Execute all policies */
+Declaration /* Global Declaration */
+{
+ Macro /* macro that calculates avrg of 2 nos */
+ {
+ Name = GetAverage; /* Name of the macro */
+ type = Real64; /* Return type */
+ argument = number1:Sint64,number2:Sint64; /* Input parameters and types */
+ procedure = (number1 + number2) / 2 /* Actual code */
+ }
+}
+Policy
+{
+ Declaration
+ { /* constants used in t condition */
+ NoToAvrg1 = 8;
+ NoToAvrg2 = 2;
+ TwentyFive = 25;
+ }
+ Condition
+ {
+
+ SquareRoot(TwentyFive) == GetAverage(NoToAvrg1,NoToAvrg2) && AnyInCollection(5,"GREATER",[6,7,8])
+ }
+ Decision
+ { /* set testElement.s32 to 3 */
+ Set(te.s32 = 4)
+ }
+
+}:1; /* Priority of the policy */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MultiplePolicySample.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MultiplePolicySample.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MultiplePolicySample.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/MultiplePolicySample.spl Sat Dec 22 11:33:46 2007
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+// Demonstrates how to define multiple sub policies
+
+/* Anchor class declaration */
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable; /* Execute all policies */
+Declaration /* Global Declaration */
+{
+ Macro /* macro that calculates avrg of 2 nos */
+ {
+ Name = GetAverage;
+ type = Real64;
+ argument = number1:Uint64,number2:Uint64;
+ procedure = (number1 + number2) / 2
+ }
+}
+Policy // Policy 1
+{
+ Declaration
+ { /* constants used in t condition */
+ NoToAvrg1 = 8;
+ NoToAvrg2 = 2;
+ TwentyFive = 25;
+ }
+ Condition
+ {
+
+ SquareRoot(TwentyFive) == GetAverage(NoToAvrg1,NoToAvrg2)
+ }
+ Decision
+ { /* set testElement.s32 to 3 */
+ Set(te.s32 = 3)
+ }
+
+}:2; /* Priority of the policy */
+Policy // Policy 2
+{
+ Declaration
+ { /* even and odd array constants */
+ evenArray = [0,2,4,6,8];
+ oddArray = [1,3,5,7,9];
+ sumOfnumbersTill9 = 45;
+
+ Macro /* macro to add all elements of passed array */
+ {
+ Name = Add2Arrays;
+ type = Uint32;
+ argument = array1:Uint32[],array2:Uint32[];
+ procedure = sum(array1) + sum(array2)
+
+ }
+ }
+ Condition
+ {
+ Add2Arrays(evenArray,oddArray) == sumOfnumbersTill9
+
+
+ }
+ Decision
+ { /* set testElement.s32 to 3 */
+ Set(te.s32 = 3)
+ }
+
+}:1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/SimplePolicy.spl
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/SimplePolicy.spl?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/SimplePolicy.spl (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/policies/SimplePolicy.spl Sat Dec 22 11:33:46 2007
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+//
+Import Class org.apache.imperius.javaspl.samples.simplepolicies.TestElement:te;
+Strategy Execute_All_Applicable;
+Policy
+{
+Declaration
+{
+ four = 4;
+}
+Condition
+{
+
+ SquareRoot(16) == four
+}
+Decision
+{
+Set(te.s32 = 3)
+}
+}:1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/readme.txt
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/readme.txt?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/readme.txt (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/readme.txt Sat Dec 22 11:33:46 2007
@@ -0,0 +1,77 @@
+Overview:
+---------
+The Imperius binding for Java (JavaSPL) processor currently operates in
+an embedded mode only. Which means you need to write the wrapper code
+that interacts with the processor.
+JavaSPL ships with a sample wrapper under
+org/apache/imperius/samples/simplepolicies/RunSamples.java
+
+The runsamples script simple invokes this wrapper.
+
+The /policies folder contains some simple JavaSPL policies that showcase
+the various features of the language.
+
+
+Prerequisites:
+--------------
+1. ANTLR 2.7.7 : Can be downloaded from http://www.antlr2.org. Make sure to set
+ the ANTLR_HOME environment variable
+2. JDK 142 : The java executable must be on the PATH
+
+Running the Samples:
+--------------------
+
+Open a command prompt and execute the runsamples script
+
+This script will execute all the policies one by one. It will first try to delete
+the policy, then create it and finally run it.
+Note: If the policy does not exist an exception will be thrown ignore the exception
+
+To run a single policy invoke the script as follows:
+
+runsamples <policyname>
+
+
+The Policies:
+--------------
+
+1. Basic Policy:
+
+A simple policy that demonstrates:
+
+-Importing multiple classes with multiple instances.
+-Invoking methods of imported instances
+-Returning values as part of decision
+
+2. MacroSample:
+
+-Demonstrates how to define and use a Macro within a policy
+
+3. MultiplePolicySample:
+
+-Demonstrates how to define multiple sub-policies
+
+4. ComplexPolicy:
+
+-Demonstrates the use of several built-in operators including
+String, Numeric, DateTime and Collection
+
+5. DateTime
+
+-Demonstrates several datetime operators
+
+6. InvokeMethodSample
+
+-Demonstrates how to invoke a method on the imported instance
+as part of the decision
+
+7. SimplePolicy
+
+-A very simple poliy
+
+
+
+
+
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.bat
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.bat?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.bat (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.bat Sat Dec 22 11:33:46 2007
@@ -0,0 +1,4 @@
+
+echo "Running Test policies..."
+set CLASSPATH=%CLASSPATH%;%ANTLR_HOME%/lib/antlr.jar;../../lib/imperius-javaspl-1.0.0.jar;../../lib/imperius-splcore-1.0.0.jar
+java org.apache.imperius.javaspl.samples.simplepolicies.RunSamples %1
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.sh
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.sh?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.sh (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/resources/samples/simple/runsamples.sh Sat Dec 22 11:33:46 2007
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -classpath $ANTLR_HOME/antlr.jar:../../lib/imperius-javaspl-1.0.0.jar:../../lib/imperius-splcore-1.0.0.jar org.apache.imperius.javaspl.samples.simplepolicies.RunSamples
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaActuatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaActuatorImpl.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaActuatorImpl.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaActuatorImpl.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,207 @@
+/*
+ * 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>
+ *
+ * This class implements the Actuator interface for the JAVA binding
+ * of SPL
+ *
+ */
+
+package org.apache.imperius.javaspl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.Argument;
+import org.apache.imperius.spl.parser.exceptions.*;
+import org.apache.imperius.spl.parser.util.*;
+
+
+public class JavaActuatorImpl implements Actuator {
+
+ //private static final String sourceClass="JavaActuatorImpl";
+ //private static Logger logger = SPLLogger.getCIMSPLLogger().getLogger();
+
+ private URL[] fUrls = null;
+
+ public JavaActuatorImpl() {
+
+ }
+
+ public JavaActuatorImpl(URL[] urls) {
+ fUrls = urls;
+ }
+
+
+ /**
+ * Invokes the given method on the given instance
+ */
+ public Object invokeMethod(String className, String qualifier,
+ Object instance, String methodName, List arguments) throws SPLException {
+ Class c;
+ Object result = null;
+ try {
+ // Load class
+
+ //c = Class.forName(instance.getClass().getName());
+
+ // modified by naidu to enable URL class loading
+ if(fUrls == null) {
+ c = Class.forName(instance.getClass().getName());
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(instance.getClass().getName());
+ }
+
+
+ // Get an array of formal parameter class types
+ Class[] arrayOfParameterTypes = _getParameterTypeArray(arguments);
+
+ // Load the method using reflection
+ Method method = c.getMethod(methodName, arrayOfParameterTypes);
+
+ // If No. of formal params > 0
+ if (arguments.size() != 0) {
+ List paramValues = new ArrayList();
+ Iterator it = arguments.iterator();
+ // Iterate over the passed parameters
+ while (it.hasNext()) {
+ Argument arg = (Argument) it.next();
+ //Add the values of the passed parameters to a list
+ paramValues.add(arg.getValue());
+ }
+
+ // Convert list to an array
+ Object[] arrayOfParameters = paramValues.toArray();
+
+ // Invoke the method on the passed object
+ result = method.invoke(instance, arrayOfParameters);
+ } else {
+ Object[] arrayOfParameters = new Object[0];
+ result = method.invoke(instance, arrayOfParameters);
+ }
+ } catch (ClassNotFoundException e) {
+ throw new SPLException(e.getMessage());
+ } catch (SecurityException e) {
+ throw new SPLException(e.getMessage());
+ } catch (NoSuchMethodException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalArgumentException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalAccessException e) {
+ throw new SPLException(e.getMessage());
+ } catch (InvocationTargetException e) {
+ throw new SPLException(e.getMessage());
+ }
+ return result;
+ }
+
+ /**
+ * @param className : fully qualified name of the class whoose instance is to be modified
+ * @param instance : instance to be modified
+ * @param memberMap: A map of the form (String member Name -> Object value to be set to)
+ *
+ */
+
+ public void modifyInstance(String className, String qualifier,
+ Object instance, Map memberMap) throws SPLException {
+ Class c;
+ try {
+ // Load class
+ //c = Class.forName(className);
+
+ // modified by naidu to enable URL class loading
+ if(fUrls == null) {
+ c = Class.forName(className);
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(className);
+ }
+
+ // Iterate over the property map for the instance
+ Iterator keyIt = memberMap.keySet().iterator();
+ while (keyIt.hasNext()) {
+ String propName = (String) keyIt.next();
+ // Retrieve value of the property
+ Object value = memberMap.get(propName);
+
+ // Load field
+ Field member = c.getField(propName);
+
+ // Set the value of the field
+ member.set(instance, value);
+
+ }
+ } catch (ClassNotFoundException e) {
+ throw new SPLException(e.getMessage());
+
+ } catch (SecurityException e) {
+ throw new SPLException(e.getMessage());
+ } catch (NoSuchFieldException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalArgumentException e) {
+ throw new SPLException(e.getMessage());
+ } catch (IllegalAccessException e) {
+ throw new SPLException(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Iterate over the list of Argument objects to retrieve an
+ * array of the class types
+ * @param inParameterList
+ * @return
+ * @throws SPLException
+ */
+
+ private Class[] _getParameterTypeArray(List inParameterList)
+ throws SPLException {
+ int listSize = inParameterList.size();
+ int i = 0;
+ Class[] paramTypeArray = new Class[listSize];
+ try {
+ Iterator it = inParameterList.iterator();
+ // Iterate over the arguments
+ while (it.hasNext()) {
+ Argument arg = (Argument) it.next();
+ TypeInfo tp = arg.getType();
+ boolean isArray = arg.getIsArray();
+ String referenceName = arg.getReferenceTypeName();
+
+ // convert internal type to java type
+ Class c = JavaSPLTypeConstants.convertInternalTypeToJavaType(tp.getType(), isArray, referenceName);
+
+ // Add to array
+ paramTypeArray[i++] = c;
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+ return paramTypeArray;
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaDataCollectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaDataCollectorImpl.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaDataCollectorImpl.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaDataCollectorImpl.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,287 @@
+/*
+ * 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.javaspl;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.imperius.spl.external.Argument;
+import org.apache.imperius.spl.external.DataCollector;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.compiler.symboltable.MethodSymbol;
+import org.apache.imperius.spl.parser.compiler.symboltable.PropertySymbol;
+import org.apache.imperius.spl.parser.compiler.symboltable.Symbol;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.statements.impl.ArgumentImpl;
+
+
+
+public class JavaDataCollectorImpl implements DataCollector {
+
+ private URL[] fUrls = null;
+
+ public JavaDataCollectorImpl() {
+
+ }
+
+ public JavaDataCollectorImpl(URL[] urls) {
+ fUrls = urls;
+ }
+
+ /**
+ * Use reflection to retrieve properties of the given class and load them into
+ * the symbol map
+ * @param className
+ * @param symbolMap
+ * @throws SPLException
+ */
+ private void _populateClassMembers(String className, Map symbolMap)
+ throws SPLException {
+ Class c;
+
+ try {
+ // Load class
+ if(fUrls == null) {
+ c = Class.forName(className);
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(className);
+ }
+
+ // Iterate over it's fields
+ Field[] fields = c.getFields();
+ for (int i = 0; i < fields.length; i++) {
+ Field f = fields[i];
+
+ String fieldName = f.getName();
+ String javaType = f.getType().toString();
+
+ // Retrieve the SPL type constant corresponding to the java type
+ int internalType = JavaSPLTypeConstants.convertJavaTypeToInternalType(javaType);
+
+ // check if its an array
+ boolean isArray = JavaSPLTypeConstants.getIsArray(javaType);
+
+ // if type is reference get the class name
+ String referenceTypeName = "";
+ if (internalType == TypeConstants.referenceType) {
+ referenceTypeName = JavaSPLTypeConstants.getReferenceTypeName(javaType);
+ }
+ boolean isPropertyOfClass = true;
+ boolean isKey = false;
+
+ // create a new property symbol object
+ Symbol s = new PropertySymbol(f.getName(), internalType,
+ referenceTypeName, isArray, isKey, isPropertyOfClass);
+
+ // insert into map
+ symbolMap.put(fieldName, s);
+
+ }
+ } catch (Exception e) {
+
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Use reflection to retrieve the public methods supported by the given class
+ * and populate into the given Map
+ * @param className
+ * @param symbolMap
+ * @throws SPLException
+ */
+ private void _populateClassMethods(String className, Map symbolMap)
+ throws SPLException {
+ Class c;
+ try {
+ // Load Class
+ if(fUrls == null) {
+ c = Class.forName(className);
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(className);
+ }
+
+ // Iterate over the methods
+ Method[] methods = c.getMethods();
+
+ for (int j = 0; j < methods.length; j++) {
+ Method m = methods[j];
+ String methodName = m.getName();
+ String returnType = m.getReturnType().getName();
+
+ // Retrieve the SPL type constant corresponding to the java method return type
+ int internalReturnType = JavaSPLTypeConstants.convertJavaTypeToInternalType(returnType);
+
+ // In case of type reference retrieve the class name
+ String returnReferenceTypeName = "";
+ if (internalReturnType == TypeConstants.referenceType) {
+ returnReferenceTypeName = JavaSPLTypeConstants.getReferenceTypeName(returnType);
+ }
+
+ // Check if returning an array
+ boolean isReturnArray = JavaSPLTypeConstants.getIsArray(returnType);
+
+ // Get the list of formal parameters to the method
+ Class[] paramTypes = m.getParameterTypes();
+ List argTypeList = new ArrayList();
+
+ // Iterate over the formal parameters
+ for (int k = 0; k < paramTypes.length; k++) {
+ Class p = paramTypes[k];
+ String javaType = p.getName();
+
+ // Get the SPL type constant for the java type of the paramter
+ int internalType = JavaSPLTypeConstants.convertJavaTypeToInternalType(javaType);
+
+ // Get the class name in case of Reference type
+ String referenceTypeName = "";
+ if (internalType == TypeConstants.referenceType) {
+ referenceTypeName = JavaSPLTypeConstants
+ .getReferenceTypeName(javaType);
+ }
+
+ // check if array
+ boolean isArray = JavaSPLTypeConstants.getIsArray(javaType);
+
+ // Construct an argument object
+ Argument param;
+ String paramName = "";
+ try {
+ param = new ArgumentImpl(internalType, paramName, isArray, referenceTypeName);
+ argTypeList.add(param);
+ } catch (SPLException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+ }
+
+ // construct a method symbol
+ Symbol s = new MethodSymbol(methodName, internalReturnType, isReturnArray, returnReferenceTypeName, argTypeList, null);
+
+ // Insert into map
+ symbolMap.put(methodName, s);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+
+ }
+
+ public Map getSymbolsForClass(String className, String qualifier) throws SPLException {
+ String formattedClass = null;
+ if (className.startsWith("\"")) // string of form ""lkasdlk""
+ {
+ formattedClass = className.substring(1, className.length() - 1);
+ } else {
+ formattedClass = className;
+ }
+
+ Map symbolMap = new Hashtable();
+ _populateClassMembers(formattedClass, symbolMap);
+ _populateClassMethods(formattedClass, symbolMap);
+
+ return symbolMap;
+
+ }
+
+ /**
+ * Get symbols for the given instance
+ */
+
+ public Map getSymbolsForInstance(String className, String qualifier, Object instance) throws SPLException {
+ Map instanceMemberValues = new Hashtable();
+
+ Class c;
+ try {
+ // Load the class
+ if(fUrls == null) {
+ c = Class.forName(className);
+ } else {
+ URLClassLoader uc = new URLClassLoader(fUrls);
+ c = uc.loadClass(className);
+ }
+
+ Field[] fields = c.getFields();
+
+ // Iterate over the fields
+ for (int i = 0; i < fields.length; i++) {
+ Field f = fields[i];
+
+ // Get the instance value of the current field
+ Object value = f.get(instance);
+ String fieldName = f.getName();
+
+ // Insert into map
+ instanceMemberValues.put(fieldName, value);
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ throw new SPLException(e.getMessage());
+ }
+ return instanceMemberValues;
+
+ }
+
+ /**
+ * Not applicable for java spl
+ */
+ public boolean associationExists(String nameSpace, String className,
+ String resultClass, String assocClass, String role, String resultRole) throws SPLException {
+ throw new SPLException("associationExists not supported in JAVA-SPL");
+ }
+
+ public List getAssociatedInstanceReferences(Object srcReference,
+ String classPath, String resultInstancesClassFilter,
+ String assocClass, String role, String resultRole) throws SPLException {
+
+ throw new SPLException("getAssociatedInstanceReferences not supported in JAVA-SPL");
+ }
+
+ public List enumerateInstanceNames(String className, String qualifier) throws SPLException {
+ throw new SPLException("enumerateInstanceNames not supported in JAVA-SPL");
+
+ }
+
+ public String getReferenceTypeName(String reference) {
+ String refTypeNm = JavaSPLTypeConstants.getReferenceTypeName(reference);
+ return refTypeNm;
+ }
+
+}
\ No newline at end of file
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaSPLTypeConstants.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaSPLTypeConstants.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaSPLTypeConstants.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/JavaSPLTypeConstants.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,323 @@
+/*
+ * 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>
+ *
+ * This class provides methods to map java types to SPL types and vice
+ * versa
+ */
+package org.apache.imperius.javaspl;
+
+
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.*;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public class JavaSPLTypeConstants
+{
+
+ private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+ private static final String sourceClass="JavaSPLTypeConstants";
+
+ public static boolean getIsArray(String type)
+ {
+ if(type.startsWith("["))
+ {
+ return true;
+ }
+ return false;
+
+ }
+ public static Class convertInternalTypeToJavaType(int type, boolean isArray,
+ String referenceName) throws ClassNotFoundException
+ {
+ Class javaType = null;
+ if(type == TypeConstants.byteType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[B");
+ }
+ else
+ {
+
+ javaType = Byte.TYPE;
+ }
+ }
+ else if(type == TypeConstants.shortType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[S");
+ }
+ else
+ {
+ javaType = Short.TYPE;
+ }
+ }
+ else if(type == TypeConstants.intType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[I");
+ }
+ else
+ {
+ javaType = Integer.TYPE;
+ }
+ }
+ else if(type == TypeConstants.longType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[J");
+ }
+ else
+ {
+ javaType = Long.TYPE;
+ }
+ }
+ else if(type == TypeConstants.floatType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[F");
+ }
+ else
+ {
+ javaType = Float.TYPE;
+ }
+ }
+ else if(type == TypeConstants.doubleType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[D");
+ }
+ else
+ {
+ javaType = Double.TYPE;
+ }
+ }
+ else if(type == TypeConstants.booleanType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[Z");
+ }
+ else
+ {
+ javaType = Boolean.TYPE;
+ }
+ }
+ else if(type == TypeConstants.charType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[C");
+ }
+ else
+ {
+ javaType = Character.TYPE;
+ }
+ }
+ else if(type == TypeConstants.stringType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[Ljava.lang.String;");
+ }
+ else
+ {
+ javaType = Class.forName("java.lang.String");
+ }
+ }
+ else if(type == TypeConstants.dateTime)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[Ljava.util.Calendar;");
+ }
+ else
+ {
+ javaType = Class.forName("Ljava.util.Calendar");
+ }
+ }
+ else if(type == TypeConstants.referenceType)
+ {
+ if(isArray)
+ {
+ javaType = Class.forName("[L" + referenceName + ";");
+ }
+ else
+ {
+ javaType = Class.forName(referenceName);
+ }
+ }
+ return javaType;
+
+
+
+ }
+
+ public static int convertJavaTypeToInternalType(String type)
+ {
+
+
+ int retTp = TypeConstants.INVALID;
+
+ if (type.equals("byte") || type.equals("[B"))
+ {
+ retTp = TypeConstants.byteType;
+ }
+ else if (type.equals("short") || type.equals("[S"))
+ {
+ retTp = TypeConstants.shortType;
+ }
+ else if (type.equals("int") || type.equals("[I"))
+ {
+ retTp = TypeConstants.intType;
+ }
+ else if (type.equals("long") || type.equals("[J"))
+ {
+ retTp = TypeConstants.longType;
+ }
+ else if (type.equals("float") || type.equals("[F"))
+ {
+ retTp = TypeConstants.floatType;
+ }
+ else if (type.equals("double") || type.equals("[D"))
+ {
+ retTp = TypeConstants.doubleType;
+ }
+ else if (type.equals("boolean") || type.equals("[Z"))
+ {
+ retTp = TypeConstants.booleanType;
+ }
+ else if (type.equals("char") || type.equals("[C"))
+ {
+ retTp = TypeConstants.charType;
+ }
+ else if (type.equals("java.lang.String")
+ || type.equals("[Ljava.lang.String;")
+ || type.equals("class java.lang.String"))
+ {
+ retTp = TypeConstants.stringType;
+ }
+ else if (type.equals("java.util.Calendar") || type.equals("[Ljava.util.Calendar;"))
+ {
+ retTp = TypeConstants.dateTime;
+ }
+ else
+ {
+ retTp = TypeConstants.referenceType;
+
+ }
+ return retTp;
+
+ }
+
+
+
+ public static int getTypeOfObject(Object ob) throws TypeMismatchException
+ {
+ logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getTypeOfObject");
+
+ int currentLocaltype = -1;
+ if (ob instanceof java.lang.Boolean)
+ {
+ currentLocaltype = TypeConstants.booleanType;
+ }
+ else if (ob instanceof java.lang.String)
+ {
+ currentLocaltype = TypeConstants.stringType;
+ }
+ else if (ob instanceof java.util.Calendar || ob instanceof java.util.Date)
+ {
+ currentLocaltype = TypeConstants.dateTime;
+ }
+ else if (ob instanceof java.lang.Byte)
+ {
+ currentLocaltype = TypeConstants.byteType;
+ }
+ else if (ob instanceof java.lang.Character)
+ {
+ currentLocaltype = TypeConstants.charType;
+ }
+ else if (ob instanceof java.lang.Short)
+ {
+ currentLocaltype = TypeConstants.shortType;
+ }
+ else if (ob instanceof java.lang.Integer)
+ {
+ currentLocaltype = TypeConstants.intType;
+ }
+ else if (ob instanceof java.lang.Long)
+ {
+ currentLocaltype = TypeConstants.longType;
+ }
+ else if (ob instanceof java.lang.Float)
+ {
+ currentLocaltype = TypeConstants.floatType;
+ }
+ else if (ob instanceof java.lang.Double)
+ {
+ currentLocaltype = TypeConstants.doubleType;
+ }
+ else
+ {
+ currentLocaltype = TypeConstants.referenceType;
+ }
+
+
+ return currentLocaltype;
+ }
+ public static String getReferenceTypeName(String javaType)
+ {
+
+ //extract class name and return
+ String referenceType = null;
+ if(convertJavaTypeToInternalType(javaType) == TypeConstants.referenceType)
+ {
+ if(javaType.startsWith("["))
+ {
+ referenceType = javaType.substring(1);
+
+ }
+ else
+ {
+ if(javaType.startsWith("class ")) // of type class com.ibm.xxx
+ {
+ int ind = javaType.indexOf(' ');
+ referenceType = javaType.substring(ind + 1);
+ }
+ else
+ {
+ referenceType = javaType;
+ }
+ }
+ }
+ else
+ {
+ System.out.println("Only reference types have referenceType names" + javaType);
+ }
+ return referenceType;
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/Java_SPLPolicyRuleProvider.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/Java_SPLPolicyRuleProvider.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/Java_SPLPolicyRuleProvider.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/Java_SPLPolicyRuleProvider.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,146 @@
+/*
+ * 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.javaspl;
+
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.imperius.spl.external.Actuator;
+import org.apache.imperius.spl.external.DataCollector;
+import org.apache.imperius.spl.manager.PolicyManager;
+import org.apache.imperius.spl.manager.impl.PolicyManagerImpl;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+
+
+
+
+
+public class Java_SPLPolicyRuleProvider
+{
+
+
+ private PolicyManager _policyManager= null;
+
+
+ public Java_SPLPolicyRuleProvider() throws SPLException
+ {
+ initialize();
+
+ }
+
+ public void cleanup() throws SPLException {
+
+
+
+ }
+
+ public void initialize() throws SPLException
+ {
+
+
+ DataCollector dc = new JavaDataCollectorImpl();
+ Actuator ac = new JavaActuatorImpl();
+
+
+ _policyManager= new PolicyManagerImpl(dc,ac);
+
+
+ }
+
+
+ public boolean createPolicy(String name, String policyString) throws SPLException
+ {
+
+ boolean result = _policyManager.createPolicy(name,policyString);
+
+ return result;
+ }
+
+ public boolean validatePolicyString(String policyString) throws SPLException
+ {
+
+ boolean result = _policyManager.validatePolicyString(policyString);
+
+ return result;
+ }
+
+ public void deletePolicy(String name) throws SPLException
+ {
+
+ _policyManager.deletePolicy(name);
+
+ return;
+ }
+
+ public List enumeratePolicyNames() throws SPLException
+ {
+
+ List policyNames = _policyManager.getAllPolicyNames();
+
+ return policyNames;
+ }
+
+ public Map enumeratePolicies() throws SPLException
+ {
+
+ Map policyInstances = _policyManager.getAllPolicies();
+
+ return policyInstances;
+
+ }
+
+
+ public String getPolicy(String policyName) throws SPLException
+ {
+
+ String policy = _policyManager.getPolicy(policyName);
+
+ return policy;
+
+ }
+
+ public void modifyPolicy(String name, String policyString) throws SPLException {
+
+
+ _policyManager.updatePolicy(name,policyString);
+
+
+ }
+
+ public Object executePolicy(String policyName, Map instanceObjectMap) throws SPLException
+ {
+
+
+ Object retVal = _policyManager.evaluatePolicy(policyName,instanceObjectMap);
+
+
+ return retVal;
+ }
+
+ public static void main(String [] args)
+ {
+
+
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/AnotherClass.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/AnotherClass.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/AnotherClass.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/AnotherClass.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,44 @@
+/*
+ * 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.javaspl.samples.simplepolicies;
+
+public class AnotherClass {
+ public int anotherClassProperty1;
+ public int anotherClassProperty2;
+ public AnotherClass(int a1, int b1)
+ {
+ this.setAnotherClassProperty1(a1);
+ this.setAnotherClassProperty2(b1);
+ }
+ public int getAnotherClassProperty1() {
+ return anotherClassProperty1;
+ }
+ public void setAnotherClassProperty1(int a) {
+ this.anotherClassProperty1 = a;
+ }
+ public int getAnotherClassProperty2() {
+ return anotherClassProperty2;
+ }
+ public void setAnotherClassProperty2(int b) {
+ this.anotherClassProperty2 = b;
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/EmbeddedClass1.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/EmbeddedClass1.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/EmbeddedClass1.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/EmbeddedClass1.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,46 @@
+/*
+ * 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.javaspl.samples.simplepolicies;
+
+public class EmbeddedClass1 {
+
+ public String embeddedClassProperty1;
+ public String embeddedClassProperty2;
+
+ public EmbeddedClass1(String a1, String b1)
+ {
+ embeddedClassProperty1 = a1;
+ embeddedClassProperty2 = b1;
+ }
+ public String getEmbeddedClassProperty1() {
+ return embeddedClassProperty1;
+ }
+ public void setEmbeddedClassProperty1(String a1) {
+ this.embeddedClassProperty1 = a1;
+ }
+ public String getEmbeddedClassProperty2() {
+ return embeddedClassProperty2;
+ }
+ public void setEmbeddedClassProperty2(String b1) {
+ this.embeddedClassProperty2 = b1;
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/RunSamples.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/RunSamples.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/RunSamples.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/RunSamples.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,177 @@
+package org.apache.imperius.javaspl.samples.simplepolicies;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.imperius.javaspl.Java_SPLPolicyRuleProvider;
+import org.apache.imperius.spl.external.InstanceInfo;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+
+public class RunSamples {
+
+ public static String policyFolder = "policies/";
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args)
+ {
+ if(args.length == 0)
+ {
+ RunSamples.test();
+ }
+ else
+ {
+ RunSamples.testPolicy(args[0]);
+ }
+
+ }
+
+ public static void _test(String policyName, Map objMap)
+ {
+ try
+ {
+
+ Java_SPLPolicyRuleProvider jspl = new Java_SPLPolicyRuleProvider();
+ String aFile = policyFolder + policyName + ".spl";
+ //System.out.println("starting test");
+ StringBuffer contents = new StringBuffer();
+ BufferedReader input = null;
+ try
+ {
+ input = new BufferedReader( new FileReader(aFile) );
+ String line = null;
+
+ while (( line = input.readLine()) != null)
+ {
+ contents.append(line);
+ contents.append(System.getProperty("line.separator"));
+ }
+ input.close();
+ }
+ catch (FileNotFoundException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch (IOException ex){
+ ex.printStackTrace();
+ }
+ try
+ {
+ jspl.deletePolicy(policyName);
+ }
+ catch(Exception e)
+ {
+
+ }
+
+ boolean createReturn=jspl.createPolicy(policyName, contents.toString());
+ System.out.println("Policy Created : " + policyName +createReturn);
+ System.out.println("");
+ Object result = jspl.executePolicy(policyName, objMap);
+ System.out.println("Result is " + result);
+ }
+ catch (SPLException e)
+ { // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+ public static void testPolicy(String policyToExecute)
+ {
+ TestElement te=new TestElement();
+
+
+ Map objMap = new Hashtable();
+
+ List instanceInfoList = new ArrayList();
+
+ InstanceInfo ii1 = new InstanceInfo("te",te);
+ instanceInfoList.add(ii1);
+
+ objMap.put("org.apache.imperius.javaspl.samples.simplepolicies.TestElement", instanceInfoList);
+
+ _test(policyToExecute,objMap);
+
+
+
+ }
+
+ public static void testBasicPolicy()
+ {
+
+ String policyToExecute = "BasicPolicy";
+
+
+ Map objMap = new Hashtable();
+
+ List instanceInfoList1 = new ArrayList();
+
+ SampleClass sc1 = new SampleClass(1,2);
+ InstanceInfo ii1 = new InstanceInfo("sc1", sc1);
+
+ instanceInfoList1.add(ii1);
+
+ SampleClass sc2 = new SampleClass(3,4);
+ InstanceInfo ii2 = new InstanceInfo("sc2",sc2);
+
+ instanceInfoList1.add(ii2);
+
+ objMap.put("org.apache.imperius.javaspl.samples.simplepolicies.SampleClass", instanceInfoList1);
+
+ List instanceInfoList2 = new ArrayList();
+ AnotherClass ac1 = new AnotherClass(5,6);
+ InstanceInfo ii3 = new InstanceInfo("ac1",ac1);
+ instanceInfoList2.add(ii3);
+
+ objMap.put("org.apache.imperius.javaspl.samples.simplepolicies.AnotherClass", instanceInfoList2);
+
+ _test(policyToExecute,objMap);
+
+
+ }
+ public static void test()
+ {
+ String [] policiesToTest = {"SimplePolicy","ComplexPolicy",
+ "MultiplePolicySample","InvokeMethodSample","DateTime","MacroSample"};
+
+ String policyToExecute = null;
+ /*if(args.length == 1)
+ {
+ policyToExecute = args[0];
+ if(!policyToExecute.equals("BasicPolicy"))
+ {
+ testPolicy(policyToExecute);
+ }
+ else
+ {
+ testBasicPolicy();
+ }
+ }
+ else
+ {*/
+ for (int i=0 ; i < policiesToTest.length; i++)
+ {
+ String policy = policiesToTest[i];
+ testPolicy(policy);
+ }
+ testBasicPolicy();
+// }
+
+ }
+
+ public static void test(String pFolder) {
+
+ policyFolder = pFolder;
+ test();
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/SampleClass.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/SampleClass.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/SampleClass.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/SampleClass.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,45 @@
+/*
+ * 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.javaspl.samples.simplepolicies;
+
+public class SampleClass {
+ public int sampleClassProperty1;
+ public int sampleClassProperty2;
+ public EmbeddedClass1 ec = new EmbeddedClass1("ec1","ec2");
+ public SampleClass(int a1, int b1)
+ {
+ sampleClassProperty1 = a1;
+ sampleClassProperty2 = b1;
+ }
+ public int getSampleClassProperty1() {
+ return sampleClassProperty1;
+ }
+ public void setSampleClassProperty1(int a) {
+ this.sampleClassProperty1 = a;
+ }
+ public int getSampleClassProperty2() {
+ return sampleClassProperty2;
+ }
+ public void setSampleClassProperty2(int b) {
+ this.sampleClassProperty2 = b;
+ }
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestElement.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestElement.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestElement.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestElement.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.imperius.javaspl.samples.simplepolicies;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+public class TestElement
+{
+ public String ElementName;
+
+ public String s;
+ public char c;
+ public double r64;
+ public float r32;
+ public Calendar d;
+ public long s64;
+ public int s32;
+ public short s16;
+ public byte s8;
+ public boolean b;
+
+ public String childProperty;
+
+ public int testMethod(int a, int b)
+ {
+ return a + b;
+ }
+
+ public TestElement()
+ {
+ ElementName = "Element1";
+
+ s="string5";
+ c='d';
+ r64=54.0;
+ r32=54.0f;
+ d= new GregorianCalendar();
+ s64=-530;
+ s32=-530;
+ s16=-50;
+ s8=-10;
+ b=false;
+ childProperty="child property5";
+
+
+ }
+
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestSimplePolicies.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestSimplePolicies.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestSimplePolicies.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/simplepolicies/TestSimplePolicies.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.imperius.javaspl.samples.simplepolicies;
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+
+public class TestSimplePolicies extends TestCase
+{
+
+ public TestSimplePolicies(String arg0) {
+ super(arg0);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(TestSimplePolicies.class);
+ TestSetup wrapper = new TestSetup(suite) {
+
+ protected void setUp() throws Exception {
+ oneTimeSetUp();
+ }
+
+ protected void tearDown() throws Exception {
+ oneTimeTearDown();
+ }
+ };
+ return wrapper;
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+
+ protected static void oneTimeSetUp() throws Exception {
+ }
+
+ protected static void oneTimeTearDown() throws Exception {
+
+ }
+
+
+ /**
+ * @param args
+ */
+ public static void testMain()
+ {
+ String userDir = System.getProperty("user.dir");
+ System.out.println("user dir is " + userDir);
+ RunSamples.test(userDir + "/resources/samples/simple/policies/");
+
+
+ }
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/CommandLineExecution.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/CommandLineExecution.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/CommandLineExecution.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/CommandLineExecution.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.javaspl.samples.userdefinedmethods;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public class CommandLineExecution implements Expression
+{
+
+ private List inputParams =null;
+ private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+
+ public CommandLineExecution(List input, boolean boo)
+ {
+ System.out.println(" creating sendMail action");
+ this.inputParams=input;
+ }
+ public Object evaluate() throws SPLException
+ {
+
+ Expression commandExpression=(Expression)this.inputParams.get(0);
+ Object command=commandExpression.evaluate();
+ System.out.println("command :"+command);
+
+ Runtime runtime=Runtime.getRuntime();
+ try{
+ runtime.exec((String)command);
+ System.out.println("command execution completed :"+command);
+ System.out.println("");
+
+
+ }
+ catch(IOException e){
+ logger.severe(Thread.currentThread().getName()+" "+e.getMessage());
+ e.printStackTrace();
+ }
+
+ return new Boolean(true);
+ }
+
+
+
+
+ public String getReferenceTypeName() throws SPLException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public TypeInfo getType() throws SPLException {
+ // TODO Auto-generated method stub
+ return new TypeInfo(TypeConstants.booleanType,null,false);
+ }
+
+ public boolean isArray() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean validate() throws SPLException {
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/SendMail.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/SendMail.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/SendMail.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/userdefinedmethods/SendMail.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,190 @@
+/*
+ * 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.javaspl.samples.userdefinedmethods;
+
+import java.util.List;
+import java.util.Properties;
+import java.util.logging.Logger;
+import javax.mail.Authenticator;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.imperius.spl.external.Expression;
+import org.apache.imperius.spl.external.TypeConstants;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.util.SPLLogger;
+
+
+
+public class SendMail implements Expression
+{
+
+ private List inputParams =null;
+ private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+
+
+ public SendMail(List input, boolean boo)
+ {
+ //System.out.println(" creating sendMail action");
+ this.inputParams=input;
+ }
+ public Object evaluate() throws SPLException
+ {
+
+ Expression fromExpression=(Expression)this.inputParams.get(0);
+ Object from=fromExpression.evaluate();
+ System.out.println("from :"+from);
+
+
+ Expression toExpression=(Expression)this.inputParams.get(1);
+ Object to=toExpression.evaluate();
+ System.out.println("to :"+to);
+
+
+ Expression subjectExpression=(Expression)this.inputParams.get(2);
+ Object subject=subjectExpression.evaluate();
+ System.out.println("subject :"+subject);
+
+
+ Expression messageExpression=(Expression)this.inputParams.get(3);
+ Object message=messageExpression.evaluate();
+ System.out.println("message :"+message);
+
+ try {
+ //System.out.println("trying to send mail");
+
+ //System.out.println("trying to create service object ");
+
+ boolean ret=postMail((String)from,(String)to,(String)subject,(String)message);
+ System.out.println("Sent mail, return value='" + ret + "'");
+ System.out.println("");
+ } catch (Exception e) {
+ System.out.println("send mail exception block");
+ logger.severe(Thread.currentThread().getName()+" "+e.getMessage());
+
+ e.printStackTrace();
+ System.out.println(e.toString());
+ }
+
+ // TODO Auto-generated method stub
+ return new Boolean(true);
+ }
+
+
+ public boolean postMail( String from,String recipients, String subject,
+ String message) throws MessagingException
+ {
+ //System.out.println("post mail");
+ String JAVAX_MAIL_PROTOCOL = "smtp";
+ String SMTP_HOST_NAME = "relay.de.ibm.com";
+// String SMTP_AUTH_USER = "anonymous";
+// String SMTP_AUTH_PWD = "anonymous";
+ String SMTP_AUTH_ENABLED = "false";
+// int SEVERITY = 50;
+// int NO_ACTION_SEVERITY = 50;
+
+ boolean debug = false;
+// Set the host smtp address
+ Properties props = new Properties();
+ props.put( "mail.transport.protocol", JAVAX_MAIL_PROTOCOL);
+ props.put("mail.smtp.host", SMTP_HOST_NAME);
+ Session session = null;
+ //System.out.println("post mail1");
+ if(SMTP_AUTH_ENABLED.equals("true"))
+ {
+ props.put("mail.smtp.auth", "true");
+ Authenticator auth = new SMTPAuthenticator();
+ session = Session.getDefaultInstance(props, auth);
+ //System.out.println("post mail2");
+ }
+ else
+ session = Session.getDefaultInstance(props);
+ //System.out.println("post mail3");
+ session.setDebug(debug);
+
+// create a message
+ Message msg = new MimeMessage(session);
+ //System.out.println("post mail4");
+ msg.setFrom(new InternetAddress(from));
+ //System.out.println("post mail5");
+ msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse( recipients ));
+ //System.out.println("post mail6");
+
+// Setting the Subject and Content Type
+ msg.setSubject(subject);
+ msg.setContent(message, "text/plain");
+ //System.out.println("post mail7");
+ try{
+ //System.out.println("post mail8");
+ Transport.send(msg);
+ //System.out.println("post mail9");
+ }catch(Exception e)
+ {
+ e.printStackTrace();
+
+ }
+
+ //System.out.println("messsage sent");
+ return true;
+ }
+
+
+ public String getReferenceTypeName() throws SPLException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public TypeInfo getType() throws SPLException {
+ // TODO Auto-generated method stub
+ return new TypeInfo(TypeConstants.booleanType,null,false);
+ }
+
+ public boolean isArray() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean validate() throws SPLException {
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+
+
+ private class SMTPAuthenticator extends javax.mail.Authenticator
+ {
+ public PasswordAuthentication getPasswordAuthentication()
+ {
+ String SMTP_AUTH_USER = "anonymous";
+ String SMTP_AUTH_PWD = "anonymous";
+
+ String username = SMTP_AUTH_USER;
+ String password = SMTP_AUTH_PWD;
+ return new PasswordAuthentication(username, password);
+ }
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsComputerSystem.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsComputerSystem.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsComputerSystem.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsComputerSystem.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,129 @@
+//(c) Copyright IBM Corp. 2007
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+
+package org.apache.imperius.javaspl.samples.windowscomputersystem;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.StringTokenizer;
+
+
+public class WindowsComputerSystem {
+
+ public float freeSpace=0;
+ public long totalSpace=0;
+ public String osArchitecture="";
+ public String osName="";
+ public String osVersion="";
+ public String osPatchLevel="";
+ public String userCountry="";
+ public String userLanguage="";
+ public String ownerName="";
+ public String javaVersion="";
+
+ public static long getFreeSpace() throws IOException
+ {
+ long bytesFree = -1;
+
+ if (System.getProperty("os.name").startsWith("Windows")) {
+ // create a .bat file to run a directory command
+ File script = new File(System.getProperty("java.io.tmpdir"), "script.bat");
+ PrintWriter writer = new PrintWriter(new FileWriter(script, false));
+ writer.println("dir \"" + "." + "\"");
+ writer.close();
+
+ // get the output from running the .bat file
+ Process p = Runtime.getRuntime().exec(script.getAbsolutePath());
+ InputStream reader = new BufferedInputStream(p.getInputStream());
+ StringBuffer buffer = new StringBuffer();
+ for (; ; ) {
+ int c = reader.read();
+ if (c == -1)
+ break;
+ buffer.append( (char) c);
+ }
+ String outputText = buffer.toString();
+ reader.close();
+ script.delete();
+
+ // parse the output text for the bytes free info
+ StringTokenizer tokenizer = new StringTokenizer(outputText, "\n");
+ while (tokenizer.hasMoreTokens()) {
+ String line = tokenizer.nextToken().trim();
+ // see if line contains the bytes free information
+ if (line.endsWith("bytes free")) {
+ tokenizer = new StringTokenizer(line, " ");
+ tokenizer.nextToken();
+ tokenizer.nextToken();
+ bytesFree = Long.parseLong(tokenizer.nextToken().replaceAll(",",""));
+ }
+ }
+ }
+
+ if (bytesFree == -1)
+ throw new UnsupportedOperationException(
+ "The method getFreeSpace(File) has not been implemented for this operating system.");
+
+ return bytesFree;
+ }
+
+ public WindowsComputerSystem() throws IOException
+ {
+ freeSpace=getFreeSpace();
+ freeSpace = freeSpace/1000000000l;
+ //totalSpace=javaFile.getTotalSpace();
+ osArchitecture=System.getProperty("os.arch");
+ osName=System.getProperty("os.name");
+ osPatchLevel=System.getProperty("sun.os.patch.level");
+ osVersion=System.getProperty("os.version");
+ ownerName=System.getProperty("user.name");
+ userCountry=System.getProperty("user.country");
+ userLanguage=System.getProperty("user.language");
+ javaVersion=System.getProperty("java.specification.version");
+ }
+
+ public boolean deleteFiles(String flavour) throws IOException{
+ Runtime runtime=Runtime.getRuntime();
+ if(flavour.equalsIgnoreCase("TemporarySetupFiles")){
+ //32
+ runtime.exec("CLEANMGR /sagerun:32");
+ }
+ else if(flavour.equalsIgnoreCase("TemporaryInternetFiles")){
+ //64
+ runtime.exec("CLEANMGR /sagerun:64");
+ }
+ else if(flavour.equalsIgnoreCase("TemporaryFiles")){
+ //128
+ runtime.exec("CLEANMGR /sagerun:128");
+ }
+ else if(flavour.equalsIgnoreCase("RecycleBin")){
+ //256
+ runtime.exec("CLEANMGR /sagerun:256");
+ }
+
+
+
+ return true;
+ }
+
+ public static void main(String [] args)
+ {
+ WindowsComputerSystem ws;
+ try {
+ ws = new WindowsComputerSystem();
+ System.out.println("free space" + ws.freeSpace);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsSystemManager.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsSystemManager.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsSystemManager.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-javaspl/src/org/apache/imperius/javaspl/samples/windowscomputersystem/WindowsSystemManager.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,98 @@
+//(c) Copyright IBM Corp. 2007
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+
+package org.apache.imperius.javaspl.samples.windowscomputersystem;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.imperius.javaspl.Java_SPLPolicyRuleProvider;
+import org.apache.imperius.spl.external.InstanceInfo;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+
+public class WindowsSystemManager
+{
+
+ public static void main(String[] args) throws IOException, SPLException
+ {
+
+ WindowsComputerSystem system1=new WindowsComputerSystem();
+ String policyToExecute = "Java_FileSystem";
+
+ try
+ {
+ if(args.length == 1)
+ {
+ policyToExecute = args[0];
+ }
+ Java_SPLPolicyRuleProvider jspl = new Java_SPLPolicyRuleProvider();
+ String aFile = "policies/" + policyToExecute + ".spl";
+ //System.out.println("starting test");
+ StringBuffer contents = new StringBuffer();
+ BufferedReader input = null;
+ try
+ {
+ input = new BufferedReader( new FileReader(aFile) );
+ String line = null;
+
+ while (( line = input.readLine()) != null)
+ {
+ contents.append(line);
+ contents.append(System.getProperty("line.separator"));
+ }
+ input.close();
+ }
+ catch (FileNotFoundException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch (IOException ex){
+ ex.printStackTrace();
+ }
+ try
+ {
+ jspl.deletePolicy(policyToExecute);
+ }
+ catch(Exception e)
+ {
+
+ }
+
+ boolean createReturn=jspl.createPolicy(policyToExecute, contents.toString());
+ System.out.println("Policy Created : " + policyToExecute +createReturn);
+ System.out.println("");
+
+ Map objMap = new Hashtable();
+
+ List instanceInfoList = new ArrayList();
+
+ InstanceInfo ii1 = new InstanceInfo("system1",system1);
+ instanceInfoList.add(ii1);
+
+ objMap.put("org.apache.imperius.javaspl.samples.windowscomputersystem.WindowsComputerSystem", instanceInfoList);
+
+
+ Object result = jspl.executePolicy(policyToExecute, objMap);
+ System.out.println("Result is " + result);
+
+ }
+ catch (SPLException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/pom.xml
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/pom.xml?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/pom.xml (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/pom.xml Sat Dec 22 11:33:46 2007
@@ -0,0 +1,41 @@
+<!--
+ * 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.
+ */-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>imperius</groupId>
+ <artifactId>imperius-splcore</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0.0-SNAPSHOT</version>
+ <name>imperius-splcore</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>antlr</groupId>
+ <artifactId>antlr</artifactId>
+ <version>2.7.7</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+
+ </dependency>
+ </dependencies>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <testSourceDirectory>src</testSourceDirectory>
+
+ </build>
+</project>
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyDataStore.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyDataStore.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyDataStore.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyDataStore.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,66 @@
+/*
+ * 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.datastore;
+
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.statements.impl.PolicyInfo;
+import org.apache.imperius.spl.parser.statements.impl.SPLPolicy;
+
+
+public interface PolicyDataStore
+{
+
+ public String getPolicy(String policyName)
+ throws SPLException;
+
+ public PolicyInfo getPolicyInfo(String policyName)
+ throws SPLException;
+
+ public boolean createPolicy(String policyName, String policyString) throws SPLException;
+
+ public boolean validatePolicyString(String policyString) throws SPLException;
+
+
+ public SPLPolicy createSPLPolicyObject(String policyName, String policyString)
+ throws SPLException;
+
+ public void updatePolicy(String policyName, String policyString) throws SPLException;
+
+ public void deletePolicy(String policyName)
+ throws SPLException;
+
+ public Map getAllPolicies() throws SPLException;
+
+ public List getAllPolicyNames() throws SPLException;
+
+ public void init() throws SPLException;
+
+ public void shutdown();
+
+
+ public SPLPolicy getInternalPolicyObject(String PolicyRuleName)
+ throws SPLException;
+
+}
Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyParser.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyParser.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyParser.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/datastore/PolicyParser.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,41 @@
+/*
+ * 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.datastore;
+
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.statements.impl.SPLPolicy;
+
+
+public interface PolicyParser
+{
+
+ public SPLPolicy createInternalPolicyObject(String PolicyRuleName,
+ String PolicyString) throws SPLException;
+
+ public boolean validate(String PolicyRuleName, String PolicyString);
+
+ public void init() throws SPLException;
+
+ public void shutDown();
+
+ public boolean validatePolicyString(String policyString) throws SPLException;
+
+}