public static boolean equals(final MetaConstructor a, final MetaConstructor b) { if (a.getParameters().length != b.getParameters().length) { return false; } for (int i = 0; i < a.getParameters().length; i++) { if (!equals(a.getParameters()[i], b.getParameters()[i])) { return false; } } return a.getDeclaringClass().equals(b.getDeclaringClass()); }
public static boolean equals(final MetaConstructor a, final MetaConstructor b) { if (a.getParameters().length != b.getParameters().length) { return false; } for (int i = 0; i < a.getParameters().length; i++) { if (!equals(a.getParameters()[i], b.getParameters()[i])) { return false; } } return a.getDeclaringClass().equals(b.getDeclaringClass()); }
protected static MetaConstructor _getConstructor(final MetaConstructor[] constructors, final MetaClass... parmTypes) { MetaConstructor candidate = null; int bestScore = 0; int score; for (final MetaConstructor constructor : constructors) { score = 0; if (constructor.getParameters().length == parmTypes.length) { if (parmTypes.length == 0) { score = 1; } else { for (int i = 0; i < parmTypes.length; i++) { if (constructor.getParameters()[i].getType().isAssignableFrom(parmTypes[i])) { score++; if (constructor.getParameters()[i].getType().equals(parmTypes[i])) { score++; } } } } } if (score > bestScore) { bestScore = score; candidate = constructor; } } return candidate; }
protected static MetaConstructor _getConstructor(final MetaConstructor[] constructors, final MetaClass... parmTypes) { MetaConstructor candidate = null; int bestScore = 0; int score; for (final MetaConstructor constructor : constructors) { score = 0; if (constructor.getParameters().length == parmTypes.length) { if (parmTypes.length == 0) { score = 1; } else { for (int i = 0; i < parmTypes.length; i++) { if (constructor.getParameters()[i].getType().isAssignableFrom(parmTypes[i])) { score++; if (constructor.getParameters()[i].getType().equals(parmTypes[i])) { score++; } } } } } if (score > bestScore) { bestScore = score; candidate = constructor; } } return candidate; }
public Constructor asConstructor() { try { final Class cls = Class.forName(getDeclaringClass().getFullyQualifiedName()); final Class[] parms = MetaClassFactory.asClassArray(getParameters()); for (Constructor constructor : cls.getDeclaredConstructors()) { if (Arrays.equals(parms, constructor.getParameterTypes())) { return constructor; } } return null; } catch (Throwable t) { return null; } } }
public Constructor asConstructor() { try { final Class cls = Class.forName(getDeclaringClass().getFullyQualifiedName()); final Class[] parms = MetaClassFactory.asClassArray(getParameters()); for (Constructor constructor : cls.getDeclaredConstructors()) { if (Arrays.equals(parms, constructor.getParameterTypes())) { return constructor; } } return null; } catch (Throwable t) { return null; } } }
private void addConstructorInjectionPoints(final Injectable concreteInjectable, final MetaConstructor injectableConstructor, final DependencyGraphBuilder builder) { final MetaParameter[] params = injectableConstructor.getParameters(); for (int i = 0; i < params.length; i++) { final MetaParameter param = params[i]; builder.addConstructorDependency(concreteInjectable, param.getType(), qualFactory.forSink(param), i, param); } }
for (final MetaParameter param : ctor.getParameters()) { if (param.isAnnotationPresent(annoType)) { annotated.add(param);
private void maybeImplementConstructor(final ClassStructureBuilder<?> proxyImpl, final Injectable injectable) { if (injectable.getInjectedType().isInterface()) { return; } final MetaConstructor accessibleConstructor = getAccessibleConstructor(injectable); if (accessibleConstructor.getParameters().length > 0) { implementConstructor(proxyImpl, accessibleConstructor); } }
private void implementConstructor(final ClassStructureBuilder<?> proxyImpl, final MetaConstructor accessibleConstructor) { final Object[] args = new Object[accessibleConstructor.getParameters().length]; for (int i = 0; i < args.length; i++) { args[i] = loadLiteral(null); } proxyImpl.publicConstructor().callSuper(args).finish(); }
for (final MetaParameter param : ctor.getParameters()) { if (param.isAnnotationPresent(annoType)) { annotated.add(param);
if ((parmTypes = meth.getParameters()).length != arguments.length && !isVarArgs) { continue;
if ((parmTypes = meth.getParameters()).length != arguments.length && !isVarArgs) { continue;
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
public static String initCachedMethod(final ClassStructureBuilder<?> classBuilder, final MetaConstructor c) { createJavaReflectionConstructorInitializerUtilMethod(classBuilder); final String fieldName = PrivateAccessUtil.getPrivateMethodName(c) + "_meth"; classBuilder.privateField(fieldName, Constructor.class).modifiers(Modifier.Static) .initializesWith(Stmt.invokeStatic(classBuilder.getClassDefinition(), JAVA_REFL_CONSTRUCTOR_UTIL_METH, c.getDeclaringClass(), MetaClassFactory.asClassArray(c.getParameters()))).finish(); return fieldName; }
public static String initCachedMethod(final ClassStructureBuilder<?> classBuilder, final MetaConstructor c) { createJavaReflectionConstructorInitializerUtilMethod(classBuilder); final String fieldName = PrivateAccessUtil.getPrivateMethodName(c) + "_meth"; classBuilder.privateField(fieldName, Constructor.class).modifiers(Modifier.Static) .initializesWith(Stmt.invokeStatic(classBuilder.getClassDefinition(), JAVA_REFL_CONSTRUCTOR_UTIL_METH, c.getDeclaringClass(), MetaClassFactory.asClassArray(c.getParameters()))).finish(); return fieldName; }
@Override public void makeConstructorAccessible(final ClassStructureBuilder<?> classBuilder, final MetaConstructor constructor) { final DefParameters methodDefParms = DefParameters.from(constructor); Annotation[] annotations = NO_ANNOTATIONS; for (MetaParameter p : constructor.getParameters()) { if (p.getType().getCanonicalName().equals("long")) { annotations = new Annotation[] { UNSAFE_NATIVE_LONG_ANNOTATION }; } } classBuilder.publicMethod(constructor.getReturnType(), PrivateAccessUtil.getPrivateMethodName(constructor)) .annotatedWith(annotations) .parameters(methodDefParms) .modifiers(Modifier.Static, Modifier.JSNI) .body() ._(StringStatement.of(JSNIUtil.methodAccess(constructor))) .finish(); }
@Override public void makeConstructorAccessible(final ClassStructureBuilder<?> classBuilder, final MetaConstructor constructor) { final DefParameters methodDefParms = DefParameters.from(constructor); Annotation[] annotations = NO_ANNOTATIONS; for (MetaParameter p : constructor.getParameters()) { if (p.getType().getCanonicalName().equals("long")) { annotations = new Annotation[] { UNSAFE_NATIVE_LONG_ANNOTATION }; } } classBuilder.publicMethod(constructor.getReturnType(), PrivateAccessUtil.getPrivateMethodName(constructor)) .annotatedWith(annotations) .parameters(methodDefParms) .modifiers(Modifier.Static, Modifier.JSNI) .body() ._(StringStatement.of(JSNIUtil.methodAccess(constructor))) .finish(); }
if (c.getParameters().length != 0) { for (int i = 0; i < c.getParameters().length; i++) { final Annotation[] annotations = c.getParameters()[i].getAnnotations(); if (annotations.length == 0) { hasMapsTos.add(false); final MapsTo mapsTo = (MapsTo) a; final String key = mapsTo.value(); simpleConstructorMapping.mapParmToIndex(key, i, c.getParameters()[i].getType());