1 15 package org.apache.hivemind.schema.rules; 16 17 import java.beans.PropertyEditor ; 18 import java.beans.PropertyEditorManager ; 19 import java.util.Map ; 20 21 import org.apache.hivemind.ApplicationRuntimeException; 22 import org.apache.hivemind.Location; 23 import org.apache.hivemind.internal.Module; 24 import org.apache.hivemind.schema.Translator; 25 26 32 public class SmartTranslator implements Translator 33 { 34 private String _default; 35 36 public SmartTranslator() 37 { 38 } 39 40 46 public SmartTranslator(String initializer) 47 { 48 Map m = RuleUtils.convertInitializer(initializer); 49 50 _default = (String ) m.get("default"); 51 } 52 53 public Object translate(Module contributingModule, Class propertyType, String inputValue, 54 Location location) 55 { 56 59 if (inputValue == null) 60 { 61 if (_default == null) 62 return null; 63 64 inputValue = _default; 65 } 66 67 if (propertyType.equals(String .class) || propertyType.equals(Object .class)) 68 return inputValue; 69 70 72 try 73 { 74 PropertyEditor e = PropertyEditorManager.findEditor(propertyType); 75 76 if (e == null) 77 throw new ApplicationRuntimeException(RulesMessages.noPropertyEditor(propertyType), 78 location, null); 79 80 e.setAsText(inputValue); 81 82 return e.getValue(); 83 } 84 catch (Exception ex) 85 { 86 throw new ApplicationRuntimeException(RulesMessages.smartTranslatorError( 87 inputValue, 88 propertyType, 89 ex), location, ex); 90 91 } 92 } 93 94 } | Popular Tags |