@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } for (int i = paramTypes.length - 1; i < args.length; i++) { if (args[i] == null) { args[i] = defaultInstance; } } return args; }
@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } for (Integer location : primitiveLocations) { if (args[location] == null) { Class<?> primitiveClass = paramTypes[location]; args[location] = defaultPrimitives.getInstance(primitiveClass); } } return args; }
@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } int current = 0; // constructor args Object[] cargs = new Object[paramTypes.length]; for (int i = 0; i < cargs.length - 1; i++) { set(cargs, i, args[current++]); } // array with vargs int size = args.length - cargs.length + 1; Object vargs = Array.newInstance( componentType, size); cargs[cargs.length - 1] = vargs; for (int i = 0; i < Array.getLength(vargs); i++) { set(vargs, i, args[current++]); } return cargs; }
@Test public void getDefaultConstructor() { Class<?>[] args = {}; Constructor<?> emptyDefaultConstructor = getConstructor(ProjectionExample.class, args); Constructor<?> nullDefaultConstructor = getConstructor(ProjectionExample.class, null); assertNotNull(emptyDefaultConstructor); assertNotNull(nullDefaultConstructor); assertTrue(isEmpty(emptyDefaultConstructor.getParameterTypes()) && isEmpty(nullDefaultConstructor.getParameterTypes())); }
@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } for (int i = paramTypes.length - 1; i < args.length; i++) { if (args[i] == null) { args[i] = defaultInstance; } } return args; }
private <E extends Collection<Path<?>>> E filterUpdatePaths(E paths, Path<?>[] duplicatePaths) { if (ArrayUtils.isEmpty(duplicatePaths)) { return paths; } else { List<Path<?>> updates = new ArrayList<>(paths.size()); for (Path<?> path : paths) { for (Path<?> duplicatePath : duplicatePaths) { if (Objects.equals(path, duplicatePath)) { updates.add(path); break; } } } return (E) updates; } }
@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } for (Integer location : primitiveLocations) { if (args[location] == null) { Class<?> primitiveClass = paramTypes[location]; args[location] = defaultPrimitives.getInstance(primitiveClass); } } return args; }
@Override public Object[] apply(Object[] args) { if (isEmpty(args)) { return args; } int current = 0; // constructor args Object[] cargs = new Object[paramTypes.length]; for (int i = 0; i < cargs.length - 1; i++) { set(cargs, i, args[current++]); } // array with vargs int size = args.length - cargs.length + 1; Object vargs = Array.newInstance( componentType, size); cargs[cargs.length - 1] = vargs; for (int i = 0; i < Array.getLength(vargs); i++) { set(vargs, i, args[current++]); } return cargs; }