From: Gautam J. <ga...@us...> - 2004-12-13 22:49:56
|
Update of /cvsroot/jaffa/JaffaRules/source/java/org/jaffa/rules/aop/metadata In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18262/source/java/org/jaffa/rules/aop/metadata Modified Files: JaffaClassMetaDataLoader.java ObjectRuleIntrospector.java PropertyRuleIntrospector.java Log Message: Added support for 'variation' Index: ObjectRuleIntrospector.java =================================================================== RCS file: /cvsroot/jaffa/JaffaRules/source/java/org/jaffa/rules/aop/metadata/ObjectRuleIntrospector.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ObjectRuleIntrospector.java 4 Dec 2004 01:52:14 -0000 1.8 --- ObjectRuleIntrospector.java 13 Dec 2004 22:49:45 -0000 1.9 *************** *** 142,145 **** --- 142,146 ---- /** This will determine a list of valid rules, provided the m_source is not null, by evaluating the conditions for the rules. + * The list will contain the variant rules after the core rules. */ private List determineValidRules(Class ruleClass) { *************** *** 147,157 **** if (rules != null && rules.size() > 0 && m_source != null) { List validRules = null; for (Iterator itr = rules.iterator(); itr.hasNext(); ) { ObjectRuleInterceptor rule = (ObjectRuleInterceptor) itr.next(); try { if (rule.isConditionTrue(m_source)) { ! if (validRules == null) ! validRules = new ArrayList(); ! validRules.add(rule); } } catch (Exception e) { --- 148,165 ---- if (rules != null && rules.size() > 0 && m_source != null) { List validRules = null; + List validVariantRules = null; for (Iterator itr = rules.iterator(); itr.hasNext(); ) { ObjectRuleInterceptor rule = (ObjectRuleInterceptor) itr.next(); try { if (rule.isConditionTrue(m_source)) { ! if (rule.getVariation() == null) { ! if (validRules == null) ! validRules = new ArrayList(); ! validRules.add(rule); ! } else { ! if (validVariantRules == null) ! validVariantRules = new ArrayList(); ! validVariantRules.add(rule); ! } } } catch (Exception e) { *************** *** 159,162 **** --- 167,177 ---- } } + + // Append the variant rules to the end of the list + if (validRules != null && validVariantRules != null) + validRules.addAll(validVariantRules); + else if (validVariantRules != null) + validRules = validVariantRules; + return validRules; } else Index: PropertyRuleIntrospector.java =================================================================== RCS file: /cvsroot/jaffa/JaffaRules/source/java/org/jaffa/rules/aop/metadata/PropertyRuleIntrospector.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PropertyRuleIntrospector.java 4 Dec 2004 01:52:14 -0000 1.10 --- PropertyRuleIntrospector.java 13 Dec 2004 22:49:45 -0000 1.11 *************** *** 515,518 **** --- 515,519 ---- /** This will determine a list of valid rules, provided the m_source is not null, by evaluating the conditions for the rules. + * The list will contain the variant rules after the core rules. */ private List determineValidRules(Class ruleClass) { *************** *** 520,530 **** if (rules != null && rules.size() > 0 && m_source != null) { List validRules = null; for (Iterator itr = rules.iterator(); itr.hasNext(); ) { PropertyRuleInterceptor rule = (PropertyRuleInterceptor) itr.next(); try { if (rule.isConditionTrue(m_source)) { ! if (validRules == null) ! validRules = new ArrayList(); ! validRules.add(rule); } } catch (Exception e) { --- 521,538 ---- if (rules != null && rules.size() > 0 && m_source != null) { List validRules = null; + List validVariantRules = null; for (Iterator itr = rules.iterator(); itr.hasNext(); ) { PropertyRuleInterceptor rule = (PropertyRuleInterceptor) itr.next(); try { if (rule.isConditionTrue(m_source)) { ! if (rule.getVariation() == null) { ! if (validRules == null) ! validRules = new ArrayList(); ! validRules.add(rule); ! } else { ! if (validVariantRules == null) ! validVariantRules = new ArrayList(); ! validVariantRules.add(rule); ! } } } catch (Exception e) { *************** *** 532,535 **** --- 540,550 ---- } } + + // Append the variant rules to the end of the list + if (validRules != null && validVariantRules != null) + validRules.addAll(validVariantRules); + else if (validVariantRules != null) + validRules = validVariantRules; + return validRules; } else Index: JaffaClassMetaDataLoader.java =================================================================== RCS file: /cvsroot/jaffa/JaffaRules/source/java/org/jaffa/rules/aop/metadata/JaffaClassMetaDataLoader.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** JaffaClassMetaDataLoader.java 10 Dec 2004 19:05:33 -0000 1.6 --- JaffaClassMetaDataLoader.java 13 Dec 2004 22:49:45 -0000 1.7 *************** *** 100,103 **** --- 100,104 ---- private static final String ATTR_EXT_CLASS = "extendsClass"; private static final String ATTR_EXT_PROP = "extendsProperty"; + private static final String ATTR_VARIATION = "variation"; /** Imports meta data. *************** *** 118,123 **** // Check if this class extends any other class ! String extendsClass = element.getAttribute(ATTR_EXT_CLASS); ! if (extendsClass != null && extendsClass.length() > 0) { if (log.isDebugEnabled()) log.debug("\textendsClass " + extendsClass); --- 119,124 ---- // Check if this class extends any other class ! String extendsClass = element.hasAttribute(ATTR_EXT_CLASS) ? element.getAttribute(ATTR_EXT_CLASS) : null; ! if (extendsClass != null) { if (log.isDebugEnabled()) log.debug("\textendsClass " + extendsClass); *************** *** 125,144 **** } Element[] ela = getChildren(element); for(int i = 0; i<ela.length; i++) { - //System.out.println("...process node " + ela[i].getNodeName()); String fieldName; Element[] ral; if(TAG_PROPERTY.equals(ela[i].getNodeName())) { // Property level rule ! fieldName = StringHelper.getLower1(ela[i].getAttribute(ATTR_NAME)); if (log.isDebugEnabled()) log.debug("\tProperty: " + fieldName); ! extendsClass = ela[i].getAttribute(ATTR_EXT_CLASS); ! if (extendsClass != null && extendsClass.length() == 0) ! extendsClass = null; ! String extendsProperty = StringHelper.getLower1(ela[i].getAttribute(ATTR_EXT_PROP)); ! if (extendsProperty != null && extendsProperty.length() == 0) ! extendsProperty = null; if (extendsClass != null || extendsProperty != null) { if (log.isDebugEnabled()) --- 126,149 ---- } + // Check if this class definition is applicable only for a certain variation + String classVariation = element.hasAttribute(ATTR_VARIATION) ? element.getAttribute(ATTR_VARIATION) : null; + if (classVariation != null) { + if (log.isDebugEnabled()) + log.debug("\tclass level variation " + classVariation); + } + // The following field is a place-holder for property-level variation + String propertyVariation = null; + Element[] ela = getChildren(element); for(int i = 0; i<ela.length; i++) { String fieldName; Element[] ral; if(TAG_PROPERTY.equals(ela[i].getNodeName())) { // Property level rule ! fieldName = ela[i].hasAttribute(ATTR_NAME) ? StringHelper.getLower1(ela[i].getAttribute(ATTR_NAME)) : null; if (log.isDebugEnabled()) log.debug("\tProperty: " + fieldName); ! extendsClass = ela[i].hasAttribute(ATTR_EXT_CLASS) ? ela[i].getAttribute(ATTR_EXT_CLASS) : null; ! String extendsProperty = ela[i].hasAttribute(ATTR_EXT_PROP) ? StringHelper.getLower1(ela[i].getAttribute(ATTR_EXT_PROP)) : null; if (extendsClass != null || extendsProperty != null) { if (log.isDebugEnabled()) *************** *** 148,151 **** --- 153,163 ---- // Get the rule attributes ral = getChildren(ela[i]); + + // Check if this property definition is applicable only for a certain variation + if (ela[i].hasAttribute(ATTR_VARIATION)) { + propertyVariation = ela[i].getAttribute(ATTR_VARIATION); + if (log.isDebugEnabled()) + log.debug("\tproperty level variation " + propertyVariation); + } } else { // Class level rule *************** *** 153,156 **** --- 165,171 ---- // Treat current rule like it was a property rule. ral = new Element[] {ela[i]}; + + // Set the property level variation to null, since we are processing a class level rule + propertyVariation = null; } *************** *** 174,177 **** --- 189,200 ---- } + // If no variation is specified for an individual rule, then apply the propertyVariation or the classVariation + if (!p.containsKey(ATTR_VARIATION)) { + if (propertyVariation != null) + p.put(ATTR_VARIATION, propertyVariation); + else if (classVariation != null) + p.put(ATTR_VARIATION, classVariation); + } + if(log.isDebugEnabled()) { String debug = "\t\tAttribute: " + attrName + " ( "; *************** *** 185,189 **** data.addPropertyAttribute(fieldName, attrName, p); - //System.out.println("Setup Data for property " +fieldName+", attribute " + attrName); } --- 208,211 ---- *************** *** 382,386 **** for(int i=0; i<nl.getLength(); i++) { Node n = nl.item(i); - //System.out.println("...node:" + n.getNodeType() + " / " + n.getNodeName()); if(n.getNodeType()==Node.ELEMENT_NODE) list.add(n); --- 404,407 ---- |