You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2011/11/13 22:53:14 UTC
svn commit: r1201524 - in /abdera/abdera2:
common/src/main/java/org/apache/abdera2/common/selector/
common/src/main/java/org/apache/abdera2/common/templates/
common/src/main/java/org/apache/abdera2/common/text/
examples/src/main/java/org/apache/abdera2...
Author: jmsnell
Date: Sun Nov 13 21:53:14 2011
New Revision: 1201524
URL: http://svn.apache.org/viewvc?rev=1201524&view=rev
Log: (empty)
Modified:
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/AbstractSelector.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selector.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selectors.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Expression.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/text/CharUtils.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/AbstractSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/AbstractSelector.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/AbstractSelector.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/AbstractSelector.java Sun Nov 13 21:53:14 2011
@@ -20,6 +20,8 @@ package org.apache.abdera2.common.select
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Constraint;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
@SuppressWarnings("unchecked")
public abstract class AbstractSelector<X>
@@ -29,6 +31,54 @@ public abstract class AbstractSelector<X
return select(item);
}
+ public boolean all(Iterable<X> items) {
+ if (items == null) return false;
+ return Iterables.all(items, this);
+ }
+
+ public boolean any(Iterable<X> items) {
+ if (items == null) return false;
+ return Iterables.any(items, this);
+ }
+
+ public boolean none(Iterable<X> items) {
+ if (items == null) return false;
+ return Iterables.all(items, this.negate());
+ }
+
+ public Iterable<X> filter(Iterable<X> items) {
+ if (items == null) return ImmutableSet.<X>of();
+ return Iterables.filter(items, this);
+ }
+
+ public Iterable<X> filterOut(Iterable<X> items) {
+ if (items == null) return ImmutableSet.of();
+ return Iterables.<X>filter(items, this.negate());
+ }
+
+ public X choose(Iterable<X> items) {
+ if (items == null) return null;
+ return Iterables.find(items, this);
+ }
+
+ public X chooseNot(Iterable<X> items) {
+ if (items == null) return null;
+ return Iterables.find(items, this.negate());
+ }
+
+ public X test(X item) {
+ return apply(item) ? item : null;
+ }
+
+ public X test(X item, X otherwise) {
+ return apply(item) ? item : otherwise;
+ }
+
+ public <Y>Y test(X item, Function<X,Y> transform) {
+ return apply(item) ? transform.apply(item) : null;
+ }
+
+
public X checkElement(X element) {
if (apply(element))
return element;
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selector.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selector.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selector.java Sun Nov 13 21:53:14 2011
@@ -31,14 +31,55 @@ public interface Selector<X>
/** Returns true the item is to be selected **/
boolean select(Object item);
- public Function<X,Boolean> asFunction();
- public Predicate<X> asPredicate();
- public Constraint<X> asConstraint();
+ /** Returns true if all the items in the set match **/
+ boolean all(Iterable<X> items);
+
+ /** Returns true if any the items in the set match **/
+ boolean any(Iterable<X> items);
+
+ /** Returns true if none the items in the set match **/
+ boolean none(Iterable<X> items);
+
+ /**
+ * Returns an immutable iterable containing only the items
+ * from the given iterable for which the selector applies
+ */
+ Iterable<X> filter(Iterable<X> items);
+
+ /**
+ * Returns an immutable iterable containing only the items
+ * from the given iterable for which the selector does not apply
+ */
+ Iterable<X> filterOut(Iterable<X> items);
+
+ /**
+ * Returns the first item in the set that matches the selector
+ */
+ X choose(Iterable<X> items);
+
+ /**
+ * Returns the first item in the set that matches the selector
+ */
+ X chooseNot(Iterable<X> items);
+
+ /** Returns the object if the Selector applies, or return null if it doesn't **/
+ X test(X item);
+
+ /** Returns the result of transform.apply(item) if the Selector applies to the input **/
+ <Y>Y test(X item, Function<X,Y> transform);
+
+ /** Returns the object if the Selector applies, or return the other X if it doesn't **/
+ X test(X item, X otherwise);
+
+ Function<X,Boolean> asFunction();
+ Predicate<X> asPredicate();
+ Constraint<X> asConstraint();
+
/**
* Returns a Selector that matches this selector up to a specific number of times
*/
- public Selector<X> limit(int limit);
+ Selector<X> limit(int limit);
/**
* Returns a Selector<Y> A using this Selector B and Funtion<Y,X> C such that
@@ -46,27 +87,27 @@ public interface Selector<X>
* B(X),
* A(Y) = B(C(Y))
*/
- public <Y>Selector<Y> compose(Function<Y,X> transform);
+ <Y>Selector<Y> compose(Function<Y,X> transform);
/**
* Returns a Selector that selects the opposite of this selector
*/
- public Selector<X> negate();
+ Selector<X> negate();
/**
* Returns a Selector that is the union of this and the specified selector
*/
- public Selector<X> and(Selector<X> selector);
+ Selector<X> and(Selector<X> selector);
/**
* Returns a Selector that matches either this or the specified selector
*/
- public Selector<X> or(Selector<X> selector);
+ Selector<X> or(Selector<X> selector);
/**
* Returns a Selector that matches this, but not the specified selector
*/
- public Selector<X> andNot(Selector<X> selector);
+ Selector<X> andNot(Selector<X> selector);
/**
* Returns a Selector that matches this or the inverse of the specified selector
*/
- public Selector<X> orNot(Selector<X> selector);
+ Selector<X> orNot(Selector<X> selector);
public static class ConstraintSelector<X>
extends AbstractSelector<X> {
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selectors.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selectors.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selectors.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/selector/Selectors.java Sun Nov 13 21:53:14 2011
@@ -29,6 +29,14 @@ public final class Selectors {
private Selectors() {}
+ public static <X>Selector<X> notNull() {
+ return forPredicate(Predicates.<X>notNull());
+ }
+
+ public static <X>Selector<X> isNull() {
+ return forPredicate(Predicates.<X>isNull());
+ }
+
public static <X>Selector<X> alwaysTrue() {
return forPredicate(Predicates.<X>alwaysTrue());
}
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Expression.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Expression.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Expression.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Expression.java Sun Nov 13 21:53:14 2011
@@ -18,9 +18,7 @@
package org.apache.abdera2.common.templates;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Iterator;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -30,7 +28,7 @@ import org.apache.abdera2.common.templat
import org.apache.abdera2.common.templates.Expression;
import org.apache.abdera2.common.templates.Operation;
-import com.google.common.collect.Iterables;
+import com.google.common.collect.ImmutableList;
import static com.google.common.base.Preconditions.*;
import static org.apache.abdera2.common.misc.MorePreconditions.*;
@@ -41,7 +39,7 @@ public final class Expression
private static final long serialVersionUID = 1457650843240079628L;
private static final Pattern EXPRESSION = Pattern.compile("([\\+\\#\\.\\/\\;\\?\\&\\=\\,\\!\\@\\|\\$\\(\\)])?(.*){1}");
private static final Pattern VARSPEC = Pattern.compile("([^(?:\\:\\d+)\\*\\^]+)([(?:\\:\\d+)\\*\\^]+)?");
- private static final Pattern LENGTH = Pattern.compile("\\:(\\d+)");
+ static final Pattern LENGTH = Pattern.compile("\\:(\\d+)");
private final String EXP;
private final Operation op;
@@ -103,7 +101,7 @@ public final class Expression
}
private Pair<Operation,Iterable<VarSpec>> parse() {
- List<VarSpec> varspecs = new ArrayList<VarSpec>();
+ ImmutableList.Builder<VarSpec> varspecs = ImmutableList.builder();
Operation op = null;
Matcher mt = EXPRESSION.matcher(EXP);
if (checkArgument(mt.find(),"Invalid Expression")) {
@@ -120,7 +118,7 @@ public final class Expression
vt.group(2)));
}
}
- return Pair.of(op,Iterables.unmodifiableIterable(varspecs));
+ return Pair.<Operation,Iterable<VarSpec>>of(op,varspecs.build());
}
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java Sun Nov 13 21:53:14 2011
@@ -19,7 +19,6 @@ package org.apache.abdera2.common.templa
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -37,9 +36,9 @@ public final class MultiContext
public static final class Builder implements Supplier<Context> {
- private final Set<Context> contexts =
- new LinkedHashSet<Context>();
- private boolean isiri;
+ final ImmutableSet.Builder<Context> contexts =
+ ImmutableSet.builder();
+ boolean isiri;
public Builder iri() {
this.isiri = false;
@@ -76,7 +75,7 @@ public final class MultiContext
MultiContext(Builder builder) {
super(builder.isiri);
- this.contexts = ImmutableSet.copyOf(builder.contexts);
+ this.contexts = builder.contexts.build();
}
public boolean contains(String var) {
for (Context context : contexts)
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/text/CharUtils.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/text/CharUtils.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/text/CharUtils.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/text/CharUtils.java Sun Nov 13 21:53:14 2011
@@ -209,4 +209,5 @@ public final class CharUtils {
}
public static final Joiner joiner = Joiner.on(',').skipNulls();
+
}
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java Sun Nov 13 21:53:14 2011
@@ -57,9 +57,7 @@ public class ReadingListExample {
makeBook()
.displayName("Meditations on the Method")
.author(
- makePerson()
- .displayName("Rene Descartes")
- .get())
+ makePerson("Rene Descartes").get())
.get())
.set("format", HARDCOVER())
.get());
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java?rev=1201524&r1=1201523&r2=1201524&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java Sun Nov 13 21:53:14 2011
@@ -1,5 +1,6 @@
package org.apache.abdera2.examples.activities;
+import static org.apache.abdera2.activities.extra.Extra.*;
import org.apache.abdera2.activities.model.Activity;
import static org.apache.abdera2.activities.model.objects.NoteObject.makeNote;
import static org.apache.abdera2.activities.model.objects.PersonObject.makePerson;
@@ -24,6 +25,9 @@ public class RepliesAndTargetingExample
activity.writeTo(System.out);
+ System.out.println(isToMe().apply(activity));
+ System.out.println(isTo(makePerson().displayName("bob").get()).apply(activity));
+
/**
* {"to":[
* {"displayName":"bob",