package org.springframework.roo.addon.finder; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.Validate; import org.springframework.roo.model.JavaSymbolName; import org.springframework.roo.model.JavaType; /** * Bean to hold the JPA query string, the method parameter types and parameter * names. * <p> * Immutable once constructed. * * @author Alan Stewart * @since 1.1.2 */ public class QueryHolder { private final String jpaQuery; private final List<JavaSymbolName> parameterNames; private final List<JavaType> parameterTypes; private final List<Token> tokens; public QueryHolder(final String jpaQuery, final List<JavaType> parameterTypes, final List<JavaSymbolName> parameterNames, final List<Token> tokens) { Validate.notBlank(jpaQuery, "JPA query required"); Validate.notNull(parameterTypes, "Parameter types required"); Validate.notNull(parameterNames, "Parameter names required"); Validate.notNull(tokens, "Tokens required"); this.jpaQuery = jpaQuery; this.parameterTypes = Collections.unmodifiableList(parameterTypes); this.parameterNames = Collections.unmodifiableList(parameterNames); this.tokens = Collections.unmodifiableList(tokens); } public String getJpaQuery() { return jpaQuery; } public List<JavaSymbolName> getParameterNames() { return parameterNames; } public List<JavaType> getParameterTypes() { return parameterTypes; } /** * Package protected as it is only intended for internal use. * * @return the tokens used to process this query (used internally; * immutable) */ List<Token> getTokens() { return tokens; } }