/** * Verifies that a non-splittable {@link DoFn} does not declare any methods that only make sense * for splittable {@link DoFn}: {@link DoFn.GetInitialRestriction}, {@link DoFn.SplitRestriction}, * {@link DoFn.NewTracker}, {@link DoFn.GetRestrictionCoder}. */ private static void verifyUnsplittableMethods(ErrorReporter errors, DoFnSignature signature) { List<String> forbiddenMethods = new ArrayList<>(); if (signature.getInitialRestriction() != null) { forbiddenMethods.add("@" + DoFn.GetInitialRestriction.class.getSimpleName()); } if (signature.splitRestriction() != null) { forbiddenMethods.add("@" + DoFn.SplitRestriction.class.getSimpleName()); } if (signature.newTracker() != null) { forbiddenMethods.add("@" + DoFn.NewTracker.class.getSimpleName()); } if (signature.getRestrictionCoder() != null) { forbiddenMethods.add("@" + DoFn.GetRestrictionCoder.class.getSimpleName()); } errors.checkArgument( forbiddenMethods.isEmpty(), "Non-splittable, but defines methods: %s", forbiddenMethods); }
DoFnSignature.GetInitialRestrictionMethod getInitialRestriction = signature.getInitialRestriction(); DoFnSignature.NewTrackerMethod newTracker = signature.newTracker(); DoFnSignature.GetRestrictionCoderMethod getRestrictionCoder = signature.getRestrictionCoder(); DoFnSignature.SplitRestrictionMethod splitRestriction = signature.splitRestriction();
SomeRestriction.class, signature.getInitialRestriction().restrictionT().getRawType()); assertEquals(SomeRestriction.class, signature.splitRestriction().restrictionT().getRawType()); assertEquals(RestrictionTracker.class, signature.newTracker().trackerT().getRawType()); assertEquals(SomeRestriction.class, signature.newTracker().restrictionT().getRawType()); assertEquals(SomeRestrictionCoder.class, signature.getRestrictionCoder().coderT().getRawType());
SomeRestriction.class, signature.getInitialRestriction().restrictionT().getRawType()); assertEquals(SomeRestriction.class, signature.splitRestriction().restrictionT().getRawType()); assertEquals(SomeRestrictionTracker.class, signature.newTracker().trackerT().getRawType()); assertEquals(SomeRestriction.class, signature.newTracker().restrictionT().getRawType()); assertEquals(SomeRestrictionCoder.class, signature.getRestrictionCoder().coderT().getRawType());
.intercept(getRestrictionCoderDelegation(clazzDescription, signature)) .method(ElementMatchers.named("invokeNewTracker")) .intercept(newTrackerDelegation(clazzDescription, signature.newTracker()));