@Test public void testCustomDecode() throws Exception { assertNull(CustomAttribute.decodeCustomValue(null)); assertEquals("", CustomAttribute.decodeCustomValue("")); assertEquals("test", CustomAttribute.decodeCustomValue("test")); assertEquals("test=test", CustomAttribute.decodeCustomValue("test\\etest")); assertEquals("test\rtest", CustomAttribute.decodeCustomValue("test\\rtest")); assertEquals("test\ntest", CustomAttribute.decodeCustomValue("test\\ntest")); assertEquals("test\\test", CustomAttribute.decodeCustomValue("test\\\\test")); assertEquals("test=test\rtest\ntest\\test", CustomAttribute.decodeCustomValue("test\\etest\\rtest\\ntest\\\\test")); }
@SuppressWarnings("unchecked") public <V> V getValue(OProperty property, V defaultValue) { String stringValue = property.getCustom(name); if(encode) stringValue = decodeCustomValue(stringValue); V ret; if(OProperty.class.isAssignableFrom(javaClass)) { ret = (V)resolveProperty(property.getOwnerClass(), stringValue); } else { ret = (V) OType.convert(stringValue, javaClass); } return ret!=null?ret:defaultValue; }
@SuppressWarnings("unchecked") public <V> V getValue(OClass oClass, V defaultValue, boolean hiearchical) { String stringValue = oClass.getCustom(name); if(encode) stringValue = decodeCustomValue(stringValue); V ret; if(OProperty.class.isAssignableFrom(javaClass)) { ret = (V)resolveProperty(oClass, stringValue); } else { ret = (V) OType.convert(stringValue, javaClass); } if(ret==null && hiearchical) { for(OClass superClass : oClass.getSuperClasses()) { if((ret=getValue(superClass, null, true))!=null) break; } } return ret!=null?ret:defaultValue; }