1 21 22 package org.continuent.sequoia.controller.virtualdatabase.protocol; 23 24 import java.io.Serializable ; 25 import java.lang.reflect.InvocationTargetException ; 26 27 import org.continuent.hedera.common.Member; 28 import org.continuent.sequoia.common.exceptions.ControllerException; 29 import org.continuent.sequoia.controller.virtualdatabase.DistributedVirtualDatabase; 30 import org.continuent.sequoia.controller.virtualdatabase.VirtualDatabaseDynamicMetaData; 31 32 38 public class GetMetadata extends DistributedVirtualDatabaseMessage 39 { 40 private static final long serialVersionUID = -3691893740718177069L; 41 42 private String methodName; 43 private Class [] argTypes; 44 private Object [] args; 45 46 53 public GetMetadata(String methodName, Class [] argTypes, Object [] args) 54 { 55 this.methodName = methodName; 56 this.argTypes = argTypes; 57 this.args = args; 58 } 59 60 64 public Object handleMessageSingleThreaded(DistributedVirtualDatabase dvdb, 65 Member sender) 66 { 67 68 try 69 { 70 return VirtualDatabaseDynamicMetaData.class.getMethod(methodName, 71 argTypes).invoke(dvdb.getDynamicMetaData(), args); 72 } 73 catch (IllegalArgumentException e) 74 { 75 return new ControllerException(e); 76 } 77 catch (SecurityException e) 78 { 79 return new ControllerException(e); 80 } 81 catch (IllegalAccessException e) 82 { 83 return new ControllerException(e); 84 } 85 catch (InvocationTargetException e) 86 { 87 return new ControllerException(e); 88 } 89 catch (NoSuchMethodException e) 90 { 91 return new ControllerException(e); 92 } 93 } 94 95 99 public Serializable handleMessageMultiThreaded( 100 DistributedVirtualDatabase dvdb, Member sender, 101 Object handleMessageSingleThreadedResult) 102 { 103 return (Serializable ) handleMessageSingleThreadedResult; 104 } 105 106 } 107 | Popular Tags |