1 10 11 package org.mule.tck.model; 12 13 import org.mule.impl.RequestContext; 14 import org.mule.model.NoSatisfiableMethodsException; 15 import org.mule.tck.AbstractMuleTestCase; 16 import org.mule.tck.testmodels.fruit.InvalidSatsuma; 17 import org.mule.umo.UMODescriptor; 18 import org.mule.umo.model.UMOEntryPoint; 19 import org.mule.umo.model.UMOEntryPointResolver; 20 import org.mule.util.ClassUtils; 21 22 26 public abstract class AbstractEntryPointDiscoveryTestCase extends AbstractMuleTestCase 27 { 28 29 32 public void testFailEntryPointDiscovery() throws Exception 33 { 34 UMOEntryPointResolver epd = getEntryPointResolver(); 35 UMODescriptor descriptor = getTestDescriptor("badSatsuma", InvalidSatsuma.class.getName()); 36 37 UMOEntryPoint ep = null; 38 try 39 { 40 ep = epd.resolveEntryPoint(descriptor); 41 } 42 catch (NoSatisfiableMethodsException e) 43 { 44 return; 46 } 47 assertTrue(ep != null); 48 try 49 { 50 51 RequestContext.setEvent(getTestEvent("Hello")); 52 ep.invoke(new InvalidSatsuma(), RequestContext.getEventContext()); 53 fail("Should have failed to find entrypoint on Satsuma"); 54 55 } 56 catch (Exception e) 57 { 58 } 60 finally 61 { 62 RequestContext.setEvent(null); 63 } 64 65 } 66 67 71 public void testEntryPointDiscovery() throws Exception 72 { 73 ComponentMethodMapping[] mappings = getComponentMappings(); 74 75 for (int i = 0; i < mappings.length; i++) 76 { 77 if (mappings[i].isShouldFail()) 78 { 79 doExpectedFail(mappings[i]); 80 } 81 else 82 { 83 doExpectedPass(mappings[i]); 84 } 85 } 86 } 87 88 private void doExpectedPass(ComponentMethodMapping mapping) throws Exception 89 { 90 UMOEntryPointResolver epr = getEntryPointResolver(); 91 UMODescriptor descriptor = getDescriptorToResolve(mapping.getComponentClass().getName()); 92 UMOEntryPoint ep = epr.resolveEntryPoint(descriptor); 93 assertNotNull(ep); 94 } 100 101 private void doExpectedFail(ComponentMethodMapping mapping) throws Exception 102 { 103 UMOEntryPointResolver epr = getEntryPointResolver(); 104 UMODescriptor descriptor = getDescriptorToResolve(mapping.getComponentClass().getName()); 105 106 try 107 { 108 UMOEntryPoint ep = epr.resolveEntryPoint(descriptor); 109 ep.invoke(ClassUtils.instanciateClass(mapping.getComponentClass(), ClassUtils.NO_ARGS), 110 getTestEventContext("blah")); 111 fail("Resolving should have failed for: " + mapping.toString()); 112 } 113 catch (Exception e) 114 { 115 } 117 118 } 119 120 public UMODescriptor getDescriptorToResolve(String className) throws Exception 121 { 122 return getTestDescriptor("myComponent", className); 123 } 124 125 public abstract UMOEntryPointResolver getEntryPointResolver(); 126 127 131 public abstract ComponentMethodMapping[] getComponentMappings(); 132 133 141 public class ComponentMethodMapping 142 { 143 private Class componentClass; 144 private Class methodArgumentType; 145 private String methodName; 146 private boolean shouldFail; 147 148 public ComponentMethodMapping(Class componentClass, String methodName, Class methodArgumentType) 149 { 150 this(componentClass, methodName, methodArgumentType, false); 151 } 152 153 public ComponentMethodMapping(Class componentClass, 154 String methodName, 155 Class methodArgumentType, 156 boolean shouldFail) 157 { 158 this.componentClass = componentClass; 159 this.methodName = methodName; 160 this.methodArgumentType = methodArgumentType; 161 this.shouldFail = shouldFail; 162 } 163 164 167 public Class getComponentClass() 168 { 169 return componentClass; 170 } 171 172 175 public String getMethodName() 176 { 177 return methodName; 178 } 179 180 183 public Class getMethodArgumentType() 184 { 185 return methodArgumentType; 186 } 187 188 191 public boolean isShouldFail() 192 { 193 return shouldFail; 194 } 195 196 public String toString() 197 { 198 return componentClass.getName() + "." + methodName + "(" + methodArgumentType.getName() 199 + "), Expected to fail= " + shouldFail; 200 } 201 202 } 203 } 204 | Popular Tags |