/** * Creates an instance of {@link ObjectGenerator} which extracts property with given name and type from specified * instance of {@link ObjectGenerator}. * * @param keyName Name of the key. * @param keyType Type of the key. * @param generator Instance of {@link ObjectGenerator} from which value will be extracted. * @param <T> Type object generator will return. * @return An instance of {@link ObjectGenerator} which extracts property. */ public static <T> ObjectGenerator<T> get(String keyName, Class<T> keyType, ObjectGenerator<?> generator) { return wrap(new GetterTransformer<>(keyName, keyType, generator.value)); }
/** * Creates an instance of {@link ObjectGenerator} which extracts property with given name and type from specified * instance of {@link ObjectGenerator}. * * @param keyName Name of the key. * @param keyType Type of the key. * @param generator Instance of {@link ObjectGenerator} from which value will be extracted. * @param <T> Type object generator will return. * @return An instance of {@link ObjectGenerator} which extracts property. */ public static <T> ObjectGenerator<T> get(String keyName, Class<T> keyType, ObjectGenerator<?> generator) { return wrap(new GetterTransformer<>(keyName, keyType, generator.value)); }
/** * Getter transformer definition. * * @return Getter transformer definition rule. */ @SuppressWarnings({ "rawtypes" }) public Rule getterTransformer() { return Sequence(function("get", Sequence(stringLiteral(), comma(), value())), push(new GetterTransformer<>((String) pop(1), Object.class, (Value) pop()))); }
/** * Getter transformer definition. * * @return Getter transformer definition rule. */ @SuppressWarnings({ "rawtypes" }) public Rule getterTransformer() { return Sequence(function("get", Sequence(stringLiteral(), comma(), value())), push(new GetterTransformer<>((String) pop(1), Object.class, (Value) pop()))); }