io.vlingo.lattice.query.QueryAttempt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vlingo-lattice Show documentation
Show all versions of vlingo-lattice Show documentation
Tooling for reactive Domain-Driven Design projects that are highly concurrent. Includes compute grid, actor caching, spaces, cross-node cluster messaging, CQRS, and Event Sourcing support.
// Copyright © 2012-2020 VLINGO LABS. All rights reserved.
//
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v. 2.0. If a copy of the MPL
// was not distributed with this file, You can obtain
// one at https://mozilla.org/MPL/2.0/.
package io.vlingo.lattice.query;
import io.vlingo.lattice.model.CompletionTranslator;
import io.vlingo.symbio.store.object.QueryExpression;
/**
* The elements used in the attempted {@code queryAll()} or {@code queryObject()}.
* @param the type of the StateObject being queried
* @param the type of the outcome of the query
* @param the final result, being a {@code S} or {@code List}
*/
public class QueryAttempt {
public enum Cardinality { All, Object };
public final Cardinality cardinality;
public final CompletionTranslator completionTranslator;
public final QueryExpression query;
public final Class stateObjectType;
@SuppressWarnings({ "rawtypes", "unchecked" })
public static QueryAttempt from(final Object attempt) {
final QueryAttempt typed = (QueryAttempt) attempt;
return typed;
}
public static QueryAttempt with(final Cardinality cardinality, final Class stateObjectType, final QueryExpression query, final CompletionTranslator completionTranslator) {
return new QueryAttempt<>(cardinality, stateObjectType, query, completionTranslator);
}
public QueryAttempt(final Cardinality cardinality, final Class stateObjectType, final QueryExpression query, final CompletionTranslator completionTranslator) {
this.cardinality = cardinality;
this.stateObjectType = stateObjectType;
this.query = query;
this.completionTranslator = completionTranslator;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy