@Override public String getName() { return p.getName(); }
@SuppressWarnings("unchecked") public <T> T newInstance(Object... args){ try { return (T)reflectedConstructor.newInstance(args); } catch (Exception e) { StringBuilder s = new StringBuilder(); for(int i=0;i<parameters.length;i++){ if(i>0){ s.append(','); } s.append(parameters[i].getName()); } throw new ReflectException(Strings.format( "Error newInstance in constructor '{0}({1})'", getDeclaringClass().getSimpleName(), s.toString()),e); } }
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; }
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;