@Override public Class<?> getType() { return p.getType(); }
protected void addExtraSetter(ReflectMethod setter) { if (null == extraSetters) { extraSetters = new LinkedHashMap<>(1); } extraSetters.put(setter.getParameters()[0].getType(), setter); }
public ReflectDeleteEntityListener(Object inst, ReflectMethod m) { this.inst = inst; this.method = m; if(m.getParameters().length == 1) { this.transactional = false; ReflectParameter p = m.getParameters()[0]; if(p.getType().equals(Object.class)) { func = (e) -> m.invoke(inst, e.getId()); return; }else if(p.getType().equals(DeleteEntityEvent.class)) { func = (e) -> m.invoke(inst, e); return; } } else if(m.getParameters().length == 2) { this.transactional = true; ReflectParameter p0 = m.getParameters()[0]; ReflectParameter p1 = m.getParameters()[1]; if(p0.getType().equals(Object.class) && p1.getType().equals(TransactionStatus.class)) { func = (e) -> m.invoke(inst, e.getId(), e.getTransactionStatus()); return; } if(p0.getType().equals(DeleteEntityEvent.class) && p1.getType().equals(TransactionStatus.class)) { func = (e) -> m.invoke(inst, e, e.getTransactionStatus()); return; } } throw new IllegalArgumentException("Incorrect parameters in method '" + Reflection.fullQualifyName(m.getReflectedMethod()) + "' for 'DeleteEntity' event"); }
public Object invokeStatic(Object... args) { try { if(parameters.length != args.length){ throw new IllegalArgumentException("argument's length must be " + parameters.length); } for(int i=0;i<args.length;i++){ if(null == args[i]) { args[i] = Classes.getDefaultValue(parameters[i].getType()); } } return reflectedMethod.invoke(null, args); // if(index == -1){ // return javaMethod.invoke(null, args); // }else{ // return accessor.invokeMethod(null, index, args); // } } catch (Throwable e) { if(e instanceof InvocationTargetException){ e = e.getCause(); } if(e instanceof RuntimeException){ throw (RuntimeException)e; } throw new ReflectException(Strings.format("Error invoking method '{0}'",getName()),e); } }
args[i] = Classes.getDefaultValue(parameters[i].getType());
public boolean configure(Object[] args, ReflectParameter p, String keyPrefix) { keyPrefix = keyPrefix(keyPrefix); if(Property.class.isAssignableFrom(p.getType())) { doBeanConfigure(args, p, keyPrefix, p.getAnnotation(ConfigProperty.class)); return true; } ConfigProperty a = p.getAnnotation(ConfigProperty.class); if(null != a) { doBeanConfigure(args, p, keyPrefix, a); return true; } return false; }
if(p.getType().equals(eventType)) { func = (e) -> m.invoke(inst, e); return; if(p.getType().equals(EntityWrapper.class)) { func = (e) -> m.invoke(inst, ((EntityEventWithWrapper)e).getEntity()); return; BeanType bt = BeanType.of(p.getType()); func = (e) -> invoke((EntityEventWithWrapper)e, bt, (bean) -> m.invoke(inst, bean)); return; if(p0.getType().equals(EntityWrapper.class) && p1.getType().equals(TransactionStatus.class)) { func = (e) -> m.invoke(inst, ((EntityEventWithWrapper)e).getEntity(), e.getTransactionStatus()); return; if(p0.getType().equals(eventType) && p1.getType().equals(TransactionStatus.class)) { func = (e) -> m.invoke(inst, e, e.getTransactionStatus()); return; if(isEntityType(p0) && p1.getType().equals(TransactionStatus.class)) { BeanType bt = BeanType.of(p0.getType()); func = (e) -> invoke((EntityEventWithWrapper)e, bt, (bean) -> m.invoke(inst, bean, e.getTransactionStatus())); return;
@Override public ElMethod resolveMethod(Class<?> cls, String name, Object[] args) { ReflectClass rc = ReflectClass.of(cls); int len = args.length; for(ReflectMethod rm : rc.getMethods()){ if(rm.getName().equals(name) && rm.getParameters().length == len){ boolean ok = true; for(int i=0;i<len;i++){ Object v = args[i]; if(null != v && !rm.getParameters()[i].getType().isAssignableFrom(v.getClass())){ ok = false; break; } } if(ok){ return rm.isStatic() ? new ElStaticMethod(rm) : new ElInstanceMethod(rm); } } } return null; }
for(int i=0;i<cargs.length;i++) { ReflectParameter p = method.getParameters()[i]; cargs[i] = JsConvert.convert(args[i], p.getType(), p.getGenericType());
ReflectMethod m = bt.getReflectClass().getMethod("$"); if(null != m && m.getParameters().length == 1) { m.invoke(bean, Converts.convert(v, m.getParameters()[0].getType(), m.getParameters()[0].getGenericType(), context));
private static OpenMBeanParameterInfo[] params(ReflectMethod rm) { final OpenMBeanParameterInfo[] params = new OpenMBeanParameterInfo[rm.getParameters().length]; for (int i=0;i<params.length;i++) { ReflectParameter p = rm.getParameters()[i]; params[i] = new OpenMBeanParameterInfoSupport(p.getName(), p.getName(), MBeanTypes.of(p.getType(),p.getGenericType())); } return params; }
if(null != extraSetter) { ReflectParameter p = extraSetter.getParameters()[0]; value = Converts.convert(value, p.getType(), p.getGenericType(), context); extraSetter.invoke(bean, value); return; try { ReflectParameter p = extraSetter.getParameters()[0]; value = Converts.convert(value, p.getType(), p.getGenericType(), context); extraSetter.invoke(bean, value); return;
protected Object newInstance(ConvertContext context, BeanType bt, Map<String, Object> map){ ReflectClass cls = bt.getReflectClass(); ConvertContext.ConcreteTypes types = null == context ? null : context.getConcreteTypes(); if(null != types) { Object instance = types.newInstance(context, bt.getBeanClass(), null, map); if(null != instance) { return instance; } } if(cls.isAbstract() || cls.isInterface()) { throw new ConvertException("Cannot new instance for abstract class or interface '" + bt.getBeanClass().getName() + "'"); }else if(cls.hasDefaultConstructor()){ return bt.newInstance(); }else{ ReflectConstructor c = cls.getConstructors()[0]; ReflectParameter[] ps = c.getParameters(); Object[] args = new Object[c.getParameters().length]; for(int i=0;i<args.length;i++){ ReflectParameter p = ps[i]; args[i] = Converts.convert(map.get(p.getName()), p.getType(), p.getGenericType(), context); } return c.newInstance(args); } }
args[i] = resolveInjectValue(beanFactory, bd, p.getName(), p.getType(), p.getGenericType(), p.getAnnotations()); continue;