Java源码示例:com.googlecode.totallylazy.Sequences

示例1
public static String remove(String path) {
    final Deque<CharSequence> segments = new ArrayDeque<CharSequence>();
    segment.findMatches(path).replace(notMatched -> {
        segments.add(notMatched);
        return null;
    }, match -> {
        switch (match.group(1)) {
            case ".":
                return null;
            case "..":
                if (!segments.isEmpty()) segments.removeLast();
                break;
            default:
                segments.add(match.group());
                break;
        }
        return null;
    });
    return Sequences.toString(segments, "");
}
 
示例2
public CompletionResult call(String expression) throws Exception {
    final int lastSeparator = lastIndexOfSeparator(characters(" "), expression) + 1;
    final String packagePart = expression.substring(lastSeparator);

    Option<Pair<Class<?>, String>> completion = completionFor(packagePart);

    if (!completion.isEmpty()) {
        Function1<CompletionCandidate, String> value = CompletionCandidate::value;
        Sequence<CompletionCandidate> candidates = reflectionOf(completion.get().first())
                .declaredMembers()
                .filter(isStatic().and(isPublic()).and(not(isSynthetic())))
                .groupBy(candidateName())
                .map(candidate())
                .filter(where(value, startsWith(completion.get().second())));

        final int beginIndex = packagePart.lastIndexOf('.') + 1;
        return new CompletionResult(expression, lastSeparator + beginIndex, candidates);
    } else {
        return new CompletionResult(expression, 0, Sequences.empty(CompletionCandidate.class));
    }
}
 
示例3
public static Sequence<Class<? extends Command>> defaultCommands() {
    return Sequences.<Class<? extends Command>>sequence()
            .append(ClearScreen.class)
            .append(QuitApplication.class)
            .append(ShowHistory.class)
            .append(SearchHistory.class)
            .append(EvaluateFromHistory.class)
            .append(ResetAllEvaluations.class)
            .append(ReplayAllEvaluations.class)
            .append(EvaluateFile.class)
            .append(AddToClasspath.class)
            .append(LoadSourceFile.class)
            .append(ListValues.class)
            .append(ShowLastSource.class)
            .append(ShowTypeOfExpression.class)
            .append(CheckExpression.class);
}
 
示例4
@Test
public void rendersTemplateForMethod() {
    assertThat(renderExpressionClass(evaluationContext(), "AClass", new Method("someMethod", Object.class, "someMethodName", Sequences.<Class<?>>empty())), is(new StringBuilder()
            .append("import java.lang.*;\n")
            .append("import java.util.*;\n")
            .append("import java.math.*;\n")
            .append("import static java.lang.Math.*;\n")
            .append("import java.util.function.*;\n")
            .append("public final class AClass extends javarepl.EvaluationTemplate {\n")
            .append("  public AClass(javarepl.EvaluationContext context) { super(context); }\n")
            .append("  $JAVAREPL_EXPRESSION_TOKEN$\n")
            .append("\n")
            .append("  public void evaluate() throws Exception {\n")
            .append("  }\n")
            .append("}")
            .toString()));
}
 
示例5
public Iterable<SequenceDiagramMessage> messages(CapturedInputAndOutputs inputAndOutputs) {
    Sequence<SequenceDiagramMessage> result = Sequences.empty();
    Set<String> keys = inputAndOutputs.getTypes().keySet();
    for (String key : keys) {
        Matcher matcher = pattern.matcher(key);
        if (matcher.matches()) {
            final String what = matcher.group(1).trim();
            final String from = matcher.group(2).trim();
            final String to = matcher.group(3).trim();
            result = result.append(new SequenceDiagramMessage(from, to, what, key.replaceAll(" ","_").replaceAll("\\(","_").replaceAll("\\)","_")));
        }
    }
    return result;
}
 
示例6
public static <T> LogicalPredicate<T> and(Iterable<? extends Predicate<? super T>> predicates) {
    Sequence<Predicate<T>> sequence = Sequences.sequence(predicates).<Predicate<T>>unsafeCast().
            flatMap(AndPredicate.<T>asPredicates());
    if (sequence.exists(instanceOf(AlwaysFalse.class))) return Predicates.alwaysFalse();

    Sequence<Predicate<T>> collapsed = sequence.
            filter(instanceOf(AlwaysTrue.class).not());
    if (collapsed.isEmpty()) return Predicates.alwaysTrue();
    if (collapsed.size() == 1) return logicalPredicate(collapsed.head());
    if (collapsed.forAll(instanceOf(Not.class)))
        return Predicates.not(Predicates.<T>or(sequence.<Not<T>>unsafeCast().map(Not.functions.<T>predicate())));
    return new AndPredicate<T>(collapsed);
}
 
示例7
public static <T> LogicalPredicate<T> or(Iterable<? extends Predicate<? super T>> predicates) {
    Sequence<Predicate<T>> sequence = Sequences.sequence(predicates).<Predicate<T>>unsafeCast().
            flatMap(OrPredicate.<T>asPredicates());
    if (sequence.exists(instanceOf(AlwaysTrue.class))) return Predicates.alwaysTrue();

    Sequence<Predicate<T>> collapsed = sequence.
            filter(instanceOf(AlwaysFalse.class).not());
    if (collapsed.isEmpty()) return Predicates.alwaysFalse();
    if (collapsed.size() == 1) return logicalPredicate(collapsed.head());
    if (collapsed.forAll(instanceOf(Not.class)))
        return Predicates.not(Predicates.<T>and(sequence.<Not<T>>unsafeCast().map(Not.functions.<T>predicate())));
    return new OrPredicate<T>(sequence);
}
 
示例8
@Override
default Receiver<T> apply(Receiver<Group<K, T>> receiver) {
    return new Receiver<T>() {
        private final Map<K, Group<K, T>> groups = new ConcurrentHashMap<>();

        @Override
        public State start() {
            receivers().each(Receiver::start);
            return receiver.start();
        }

        @Override
        public State next(T item) {
            groups.computeIfAbsent(keyExtractor().apply(item), k -> {
                Group<K, T> group = new Group<>(k);
                receiver.next(group);
                return group;
            }).next(item);
            return State.Continue;
        }

        @Override
        public State error(Throwable throwable) {
            receivers().each(o -> o.error(throwable));
            return receiver.error(throwable);
        }

        @Override
        public void finish() {
            receivers().each(Receiver::finish);
            receiver.finish();
        }

        private Sequence<Receiver<T>> receivers() {
            return Sequences.sequence(groups.values());
        }
    };
}
 
示例9
private static Sequence<Node> internalSelectNodes(final Node node, final String expression) {
    try {
        return sequence((NodeList) xpathExpression(expression).evaluate(node, XPathConstants.NODESET));
    } catch (XPathExpressionException e) {
        try {
            String nodeAsString = (String) xpathExpression(expression).evaluate(node, XPathConstants.STRING);
            return Sequences.<Node>sequence(documentFor(node).createTextNode(nodeAsString));
        } catch (XPathExpressionException ignore) {
            throw new IllegalArgumentException(String.format("Failed to compile xpath '%s'", expression), e);
        }
    }
}
 
示例10
/**
 * Test case for issue #14
 */
@Test
public void supportsShort() {
    assertThat(numbers((short)0, (short)0 ,(short)1).reduceLeft(Numbers.maximum), NumberMatcher.is((short) 1));

    Sequence<Short> s = Sequences.sequence((short)0, (short)0 ,(short)1);
    Number result = s.reduceLeft(Numbers.maximum());
    assertEquals(Short.class, result.getClass());
    assertThat(result, NumberMatcher.is(Short.valueOf((short) 1)));
}
 
示例11
public Sequence<String> history() {
    createProcess();

    try {
        return new JavaREPLClient("localhost", port.get()).history();
    } catch (Exception e) {
        e.printStackTrace();
        return Sequences.empty();
    }
}
 
示例12
private Option<Pair<Class<?>, String>> completionFor(String expression) {
    Option<Pair<String, Sequence<String>>> parsedClass = parseExpression(pair(expression, Sequences.empty(String.class)));

    if (!parsedClass.isEmpty() && !parsedClass.get().second().isEmpty()) {
        return some(Pair.<Class<?>, String>pair(
                evaluator.classFrom(parsedClass.get().first()).get(),
                parsedClass.get().second().toString(".").trim()));
    } else {
        return none();
    }
}
 
示例13
public static CompletionResult fromJson(String json) {
    Map<String, Object> jsonMap = map(Json.map(json));

    Sequence<Map<String, Object>> candidates = CANDIDATES.map(Sequences::sequence).apply(jsonMap);

    return new CompletionResult(
            EXPRESSION.apply(jsonMap),
            POSITION.map(Integer::valueOf).apply(jsonMap),
            candidates.map(candidate -> new CompletionCandidate(VALUE.apply(candidate), FORMS.map(Sequences::sequence).apply(candidate)))
    );
}
 
示例14
public CompletionResult call(String expression) throws Exception {
    final int lastSeparator = lastIndexOfSeparator(characters(" "), expression) + 1;
    final String packagePart = expression.substring(lastSeparator);
    final Boolean canComplete = packagePart.matches("[a-zA-Z0-9\\$_\\\\.\\(\\[\\]]*") && packagePart.contains(".");

    final int beginIndex = packagePart.lastIndexOf('.') + 1;
    Option<Class<?>> aClass = canComplete
            ? evaluator.typeOfExpression(packagePart.substring(0, beginIndex - 1)).map(Types::classOf)
            : none();

    if (aClass.isDefined()) {
        ClassReflection classReflection = reflectionOf(aClass.get());

        Sequence<MemberReflection<?>> join = Sequences.empty()
                .join(classReflection.declaredFields())
                .join(classReflection.declaredMethods())
                .unique()
                .unsafeCast();

        Sequence<CompletionCandidate> candidates = join
                .filter(isPublic().and(not(isStatic())))
                .groupBy(candidateName())
                .map(candidate())
                .filter(where(CompletionCandidate::value, startsWith(packagePart.substring(beginIndex))));

        return new CompletionResult(expression, lastSeparator + beginIndex, candidates);
    } else {
        return new CompletionResult(expression, 0, Sequences.empty(CompletionCandidate.class));
    }
}
 
示例15
public Option<String> readExpression() {
    Sequence<String> lines = Sequences.empty();

    do {
        lines = lines.append(lineReader.apply(lines));
    } while (!expressionIsTerminated(lines));

    return lines.contains(null)
            ? none(String.class)
            : some(lines.toString("\n").trim());
}
 
示例16
public Option<String> readExpression(String line) {
    lines = lines.append(line);
    if (expressionIsTerminated(lines)) {
        Option<String> result = some(lines.toString("\n"));
        lines = Sequences.empty();
        return result;
    } else {
        return none();
    }
}
 
示例17
public synchronized Option<EvaluationResult> execute(String expr) throws Exception {
    String json = client.handle(post(url("execute")).form("expression", expr)).entity().toString();

    if (json.isEmpty())
        return none();

    Map<String, Object> response = map(json);
    Sequence<Map<String, Object>> logs = LOGS.map(Sequences::sequence).call(response);
    String expression = EXPRESSION.call(response);

    return some(new EvaluationResult(expression, logs.map(modelToEvaluationLog())));
}
 
示例18
@Test
public void rendersPreviousResultsMethodsAndImports() {
    EvaluationContext context = evaluationContext()
            .addResult(result("result1", "value1"))
            .addResult(result("result2", "value2"))
            .addExpression(new Import("import java.net.URL", "java.net.URL"))
            .addExpression(new Import("import java.io.File;", "java.io.File"))
            .addExpression(new Method("int method1(int i){\nreturn i;\n}", int.class, "method1", Sequences.<Class<?>>sequence(int.class)))
            .addExpression(new Method("char method1(char i){\nreturn i;\n}", char.class, "method2", Sequences.<Class<?>>sequence(char.class)));

    assertThat(renderExpressionClass(context, "AClass", new Statement("someStatement")), is(new StringBuilder()
            .append("import java.lang.*;\n")
            .append("import java.util.*;\n")
            .append("import java.math.*;\n")
            .append("import static java.lang.Math.*;\n")
            .append("import java.util.function.*;\n")
            .append("import java.net.URL;\n")
            .append("import java.io.File;;\n")
            .append("public final class AClass extends javarepl.EvaluationTemplate {\n")
            .append("  public AClass(javarepl.EvaluationContext context) { super(context); }\n")
            .append("  public java.lang.String result1 = valueOf(\"result1\");\n")
            .append("  public java.lang.String result2 = valueOf(\"result2\");\n")
            .append("  int method1(int i){\n")
            .append("  return i;\n")
            .append("  }\n")
            .append("\n")
            .append("  char method1(char i){\n")
            .append("  return i;\n")
            .append("  }\n")
            .append("  public void evaluate() throws Exception {\n")
            .append("    $JAVAREPL_EXPRESSION_TOKEN$;\n")
            .append("  }\n")
            .append("}")
            .toString()));
}
 
示例19
public Iterable<String> tags(TestMethod testMethod) {
    return notes(testMethod.getAnnotations())
            .map(notesToTags())
            .getOrElse(Sequences.<String>empty());
}
 
示例20
@Test
public void loggerShouldHandleNamingForMultiThreadCalls() {
    final TestState state = new TestState();
    sequence(Sequences.repeat(pair("logTitle", "content")).take(1000)).mapConcurrently(log(state), newFixedThreadPool(1000)).realise();
    assertThat(state.capturedInputAndOutputs.getTypes().size(), is(1000));
}
 
示例21
static <A> ListParser<A> list(final Iterable<? extends Parser<? extends A>> parsers) {
    return new ListParser<A>(Sequences.sequence(parsers));
}
 
示例22
static Parser<String> string(Iterable<? extends Predicate<? super Character>> predicates) {
    return new PredicatesParser(Sequences.sequence(predicates));
}
 
示例23
@SafeVarargs
static Parser<String> string(Predicate<? super Character>... predicates) {
    return new PredicatesParser(Sequences.sequence(predicates));
}
 
示例24
default Parser<List<A>> times(int number) {
    return Parsers.list(Sequences.repeat(this).take(number));
}
 
示例25
static <A> OrParser<A> or(Iterable<? extends Parser<? extends A>> parsers) {
    return new OrParser<A>(Sequences.sequence(parsers).<Parser<A>>unsafeCast());
}
 
示例26
public static <T> Matcher<Iterable<T>> isEmpty() {
    return IterableMatcher.<T>hasExactly(Sequences.<T>empty());
}
 
示例27
public static <T> AllOfValidator<T> allOf(Validator<? super T> first, Validator<? super T> second) {
    return allOf(Sequences.<Validator<? super T>>sequence(first, second));
}
 
示例28
public static <T> AllOfValidator<T> allOf(Validator<? super T> first, Validator<? super T> second, Validator<? super T> third) {
    return allOf(Sequences.<Validator<? super T>>sequence(first, second, third));
}
 
示例29
public static <T> AllOfValidator<T> allOf(Validator<? super T> first, Validator<? super T> second, Validator<? super T> third, Validator<? super T> fourth) {
    return allOf(Sequences.<Validator<? super T>>sequence(first, second, third, fourth));
}
 
示例30
public static <T> AllOfValidator<T> allOf(Validator<? super T> first, Validator<? super T> second, Validator<? super T> third, Validator<? super T> fourth, Validator<? super T> fifth) {
    return allOf(Sequences.<Validator<? super T>>sequence(first, second, third, fourth, fifth));
}