1 package org.jicengine.element.impl; 2 3 4 import org.jicengine.element.Element; 5 import org.jicengine.expression.FactoryInvocationParser; 6 import org.jicengine.operation.Context; 7 import org.jicengine.operation.Factory; 8 import org.jicengine.operation.FactoryInvocationOperation; 9 import org.jicengine.operation.MethodInvocationOperation; 10 import org.jicengine.operation.ObjectNotFoundException; 11 import org.jicengine.operation.Operation; 12 import org.jicengine.operation.OperationException; 13 import org.jicengine.operation.StaticValue; 14 import org.jicengine.operation.VariableValueOperation; 15 16 21 public class CdataConverterInvocationOperation implements Operation { 22 23 private Class targetClass; 24 private String cdata; 25 26 public CdataConverterInvocationOperation(Class targetClass, String cdata) 27 { 28 this.targetClass = targetClass; 29 this.cdata = cdata; 30 } 31 32 public boolean needsParameters() 33 { 34 return true; 35 } 36 37 public boolean needsParameter(String name) 38 { 39 return name.equals(Element.VARIABLE_NAME_CDATA); 40 } 41 42 public Object execute(Context context) throws OperationException 43 { 44 45 String contextVariableName = CdataConverterElementCompiler.toContextVariableName(this.targetClass); 46 47 try { 48 Factory factory = (Factory) context.getObject(contextVariableName); 49 50 Object result = factory.invoke(new Object []{this.cdata}); 51 52 return result; 53 } catch (ObjectNotFoundException e){ 54 throw new OperationException("CDATA conversion for class '" + this.targetClass.getName() + "' not available."); 55 } 56 57 } 58 59 } 60 | Popular Tags |