From: Gautam J. <ga...@us...> - 2008-03-27 01:45:31
|
Update of /cvsroot/jaffa/JaffaRules/source/test/junit/test/rules In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv32199/source/test/junit/test/rules Added Files: SelectiveInheritanceTest.java SomeGraphCriteria.java Log Message: Enhanced JaffaRules to selectively inherit rules - Enhanced the Realm definition to support an 'inherit-rules-filter' to include/exclude a set of rules when inheriting from another class - Introduced a 'criteria' realm that maps to Finder, Lookup, Viewer and GraphCriteria - Enhanced the <super> rule to support includes/excludes --- NEW FILE: SomeGraphCriteria.java --- /* * ==================================================================== * JAFFA - Java Application Framework For All * * Copyright (C) 2002 JAFFA Development Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Redistribution and use of this software and associated documentation ("Software"), * with or without modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name "JAFFA" must not be used to endorse or promote products derived from * this Software without prior written permission. For written permission, * please contact mail to: jaf...@ya.... * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA" * appear in their names without prior written permission. * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net). * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== */ package test.rules; import org.jaffa.components.finder.StringCriteriaField; import org.jaffa.persistence.Criteria; import org.jaffa.soa.graph.GraphCriteria; /** This is an example GraphCriteria for testing the inheritance of rules across realms. */ public class SomeGraphCriteria extends GraphCriteria { private StringCriteriaField field1; private StringCriteriaField field2; private StringCriteriaField field3; public Criteria returnQueryClause(Criteria arg0) { throw new UnsupportedOperationException("Not supported yet."); } public StringCriteriaField getField1() { return field1; } public void setField1(StringCriteriaField field1) { this.field1 = field1; } public StringCriteriaField getField2() { return field2; } public void setField2(StringCriteriaField field2) { this.field2 = field2; } public StringCriteriaField getField3() { return field3; } public void setField3(StringCriteriaField field3) { this.field3 = field3; } } --- NEW FILE: SelectiveInheritanceTest.java --- /* * ==================================================================== * JAFFA - Java Application Framework For All * * Copyright (C) 2002 JAFFA Development Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Redistribution and use of this software and associated documentation ("Software"), * with or without modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name "JAFFA" must not be used to endorse or promote products derived from * this Software without prior written permission. For written permission, * please contact mail to: jaf...@ya.... * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA" * appear in their names without prior written permission. * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net). * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== */ package test.rules; import junit.framework.TestCase; import org.jaffa.rules.IPropertyRuleIntrospector; import org.jaffa.rules.RulesEngineFactory; /** This tests the selective inheritance of rules across a realm, based on the defined filters * The selective inheritance can also be a result of the 'includes' and/or 'excludes' attributes defined in a 'super' rule */ public class SelectiveInheritanceTest extends TestCase { static { // The following statement is required to load all the meta-data. // It is necessary since only pure metadata-based rules been defined for the classes involved in this UnitTest. // The AspectManager needs to be invoked manually since none of the classes have been instrumented. org.jboss.aop.AspectManager.instance(); } /** Creates new AccessTest * @param name The name of the test case. */ public SelectiveInheritanceTest(String name) { super(name); } public void testRealmFiltering() { try { IPropertyRuleIntrospector parentPri = RulesEngineFactory.getRulesEngine().getPropertyRuleIntrospector(Strings1.class, "field2"); IPropertyRuleIntrospector childPri = RulesEngineFactory.getRulesEngine().getPropertyRuleIntrospector(SomeGraphCriteria.class, "field2"); // min-length should not be inherited as defined in the realm assertEquals("Strings1.field2 should have a min-length of 3", new Integer(3), parentPri.getMinLength()); assertNull("SomeGraphCriteria.field2 should not have a min-length", childPri.getMinLength()); // case-type should be inherited as defined in the realm assertEquals("Strings1.field2 should have lower case-type", "lower", parentPri.getCaseType()); assertEquals("SomeGraphCriteria.field2 should have lower case-type", "lower", childPri.getCaseType()); } catch (Exception e) { e.printStackTrace(System.err); fail(); } } public void testSuperRuleFiltering() { try { IPropertyRuleIntrospector parentPri = RulesEngineFactory.getRulesEngine().getPropertyRuleIntrospector(Strings1.class, "field3"); IPropertyRuleIntrospector childPri = RulesEngineFactory.getRulesEngine().getPropertyRuleIntrospector(SomeGraphCriteria.class, "field3"); // min-length should not be inherited as defined in the realm assertEquals("Strings1.field3 should have a max-length of 10", new Integer(10), parentPri.getMaxLength()); assertNull("SomeGraphCriteria.field3 should not have a max-length", childPri.getMaxLength()); // case-type should not be inherited as defined in the super-rule assertEquals("Strings1.field3 should have upper case-type", "upper", parentPri.getCaseType()); assertNull("SomeGraphCriteria.field3 should not have a case-type", childPri.getCaseType()); } catch (Exception e) { e.printStackTrace(System.err); fail(); } } } |