Skip to content

Commit 23f4dd8

Browse files
committed
latest of is now a specialization of a pick expression. Small fixes
1 parent 1171004 commit 23f4dd8

File tree

4 files changed

+9
-10
lines changed

4 files changed

+9
-10
lines changed

src/java/org/tensorics/core/expressions/LatestOfExpression.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,26 @@
66

77
import java.util.List;
88

9+
import org.tensorics.core.iterable.expressions.PickExpression;
910
import org.tensorics.core.tree.domain.Expression;
1011

11-
import com.google.common.collect.Iterables;
12-
1312
/**
1413
* Expression that given an {@link Expression} of {@link List} of T, it gets the latest. Especially usefull for buffers.
1514
*
1615
* @param <T>
1716
*/
18-
public class LatestOfExpression<T> extends ConversionOperationExpression<Iterable<T>, T> {
17+
public class LatestOfExpression<T> extends PickExpression<T> {
1918

2019
private static final long serialVersionUID = 6562010523280754793L;
2120

22-
private final Expression<Iterable<T>> bufferExpression;
21+
private final Expression<? extends Iterable<T>> bufferExpression;
2322

24-
private LatestOfExpression(Expression<Iterable<T>> source) {
25-
super(Iterables::getLast, source);
23+
private LatestOfExpression(Expression<? extends Iterable<T>> source) {
24+
super(source, 0, Mode.FROM_END);
2625
bufferExpression = source;
2726
}
2827

29-
public static <T> LatestOfExpression<T> latestOf(Expression<Iterable<T>> source) {
28+
public static <T> LatestOfExpression<T> latestOf(Expression<? extends Iterable<T>> source) {
3029
return new LatestOfExpression<>(source);
3130
}
3231

src/java/org/tensorics/core/iterable/expressions/PickExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class PickExpression<T> extends AbstractDeferredExpression<T> implements
3333
private final int offset;
3434
private final Mode mode;
3535

36-
private PickExpression(Expression<? extends Iterable<T>> iterable, int offset, Mode mode) {
36+
protected PickExpression(Expression<? extends Iterable<T>> iterable, int offset, Mode mode) {
3737
super();
3838
this.iterable = iterable;
3939
this.offset = offset;

src/java/org/tensorics/core/resolve/domain/DetailedExpressionResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class DetailedExpressionResult<R, E extends Expression<R>> {
1515
private final R value;
1616
private final ResolvingContext context;
1717

18-
private DetailedExpressionResult(E rootExpression, R value, ResolvingContext context) {
18+
protected DetailedExpressionResult(E rootExpression, R value, ResolvingContext context) {
1919
super();
2020
this.rootExpression = requireNonNull(rootExpression, "rootExpression must not be null");
2121
this.value = requireNonNull(value, "value must not be null");

src/java/org/tensorics/core/resolve/resolvers/Resolvers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ public static ResolverRepository defaultRepository() {
4949
public static ResolverRepository defaultRepositoryWithAdditional(Resolver<?, ?>... resolvers) {
5050
List<Resolver<?, ?>> allResolvers = createDefaultResolvers();
5151
allResolvers.addAll(Arrays.asList(resolvers));
52-
System.err.println("Resolvers: " + allResolvers);
5352
return repositoryWithResolvers(allResolvers);
5453
}
5554

@@ -70,6 +69,7 @@ private static ResolverRepository repositoryWithResolvers(List<Resolver<?, ?>> r
7069
resolvers.add(new BinaryPredicateIterableResolver<>());
7170
resolvers.add(new FunctionalExpressionResolver<>());
7271
resolvers.add(new IterableExpressionToIterableResolver<>());
72+
resolvers.add(new PickResolver<>());
7373
return resolvers;
7474
}
7575

0 commit comments

Comments
 (0)