[Jameleon-cvscommits] jameleon/src/java/net/sf/jameleon JameleonTagSupport.java,1.1.2.2,1.1.2.3
Brought to you by:
engrean
From: Christian H. <en...@us...> - 2004-03-27 04:27:35
|
Update of /cvsroot/jameleon/jameleon/src/java/net/sf/jameleon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6423/src/java/net/sf/jameleon Modified Files: Tag: jameleon-1_8_1-dev JameleonTagSupport.java Log Message: Took out setting of instance variables. This just creates too many rules and therefore complex Index: JameleonTagSupport.java =================================================================== RCS file: /cvsroot/jameleon/jameleon/src/java/net/sf/jameleon/Attic/JameleonTagSupport.java,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -C2 -d -r1.1.2.2 -r1.1.2.3 *** JameleonTagSupport.java 24 Mar 2004 23:17:54 -0000 1.1.2.2 --- JameleonTagSupport.java 27 Mar 2004 04:16:31 -0000 1.1.2.3 *************** *** 37,44 **** /** * <p><code>JameleonTagSupport</code> is an implementation of DynaTag. This tag ! * currently, checks to see if the tag has an instance variable that matches ! * the variable being set, if so, then it attempts to set the instance variable. ! * Otherwise, a set method matching the variable name is attempted to be called and ! * then the variable name and value gets thrown into the context.</p> */ --- 37,46 ---- /** * <p><code>JameleonTagSupport</code> is an implementation of DynaTag. This tag ! * throws the variable name as the XML attribute into the context. It then ! * attempts to call to corresponding set method. There is currently no checking ! * on whether the set method was called or not. If it's there, then it gets ! * called. Calling the set method is mostly for backward compatability. However, ! * it can be used for set methods that need to do more than put the variable in the ! * context.</p> */ *************** *** 51,68 **** */ public void setAttribute(String name, Object value) { ! if (attributes == null || attributes.size() == 0) { ! getClassAttributes(); ! } ! ! if (attributes.containsKey(name)) { ! setInstanceVariableValue(name,value); ! }else{ ! context.setVariable(name, value); ! try{ ! BeanUtils.copyProperty(this, name, value); ! }catch(Exception e){ ! //Since the method doesn't tell me whether it succeeded or failed ! //We don't care if an exception was thrown. ! } } } --- 53,62 ---- */ public void setAttribute(String name, Object value) { ! context.setVariable(name, value); ! try{ ! BeanUtils.copyProperty(this, name, value); ! }catch(Exception e){ ! //Since the method doesn't tell me whether it succeeded or failed ! //We don't care if an exception was thrown. } } *************** *** 121,188 **** return clzz; } - - /** - * Sets the instance variable given by <code>name</code> to the provided - * <code>value</code>. - * @param name - the name of the variable to set. - * @param value - the value to set the varible to. - */ - protected void setInstanceVariableValue(String name, Object value){ - try{ - - Class clzz = this.getClass(); - Field f = null; - do { - try{ - f = clzz.getDeclaredField(name); - }catch(Exception nsfe){ - clzz = clzz.getSuperclass(); - } - }while(f == null && !clzz.equals(JameleonTagSupport.class)); - - if (f != null){ - if (! (value instanceof String) ) { - throw new IllegalArgumentException("The value sent must be of type java.lang.String"); - } - if (value == null) { - value = ""; - } - - f.setAccessible(true); - Class type = f.getType(); - Object o = f.get(this); - if (type.isPrimitive()) { - if (o instanceof Byte) { - f.setByte(this,(new Byte((String)value)).byteValue()); - }else if (o instanceof Integer) { - f.setInt(this, (new Integer((String)value)).intValue()); - }else if (o instanceof Long) { - f.setLong(this,(new Long((String)value)).longValue()); - }else if (o instanceof Boolean) { - f.setBoolean(this,(new Boolean((String)value)).booleanValue()); - }else if (o instanceof Short) { - f.setShort(this,(new Short((String)value)).shortValue()); - }else if (o instanceof Character) { - f.setChar(this,(((String)value).charAt(0))); - }else if (o instanceof Double) { - f.setDouble(this,(new Double((String)value)).doubleValue()); - }else if (o instanceof Float) { - f.setFloat(this,(new Float((String)value)).floatValue()); - }else{ - //How did I get here? - throw new IllegalArgumentException(name + " of type " + type + - ", not a supported type"); - } - }else{ - //Must not be a primitive. Lets just set the reference. - f.set(this,value); - } - }else{ - throw new IllegalArgumentException("No access to instance variable "+name); - } - }catch(IllegalAccessException iae){ - throw new IllegalArgumentException("No access to instance variable "+name+"\n"+iae.getMessage()); - } - } - } --- 115,117 ---- |