use of org.elasticsearch.common.inject.ConfigurationException in project crate by crate.
the class InjectionPoint method forConstructorOf.
/**
* Returns a new injection point for the injectable constructor of {@code type}.
*
* @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
* or a no-arguments constructor that is not private.
* @throws ConfigurationException if there is no injectable constructor, more than one injectable
* constructor, or if parameters of the injectable constructor are malformed, such as a
* parameter with multiple binding annotations.
*/
public static InjectionPoint forConstructorOf(TypeLiteral<?> type) {
Class<?> rawType = getRawType(type.getType());
Errors errors = new Errors(rawType);
Constructor<?> injectableConstructor = null;
for (Constructor<?> constructor : rawType.getConstructors()) {
Inject inject = constructor.getAnnotation(Inject.class);
if (inject != null) {
if (inject.optional()) {
errors.optionalConstructor(constructor);
}
if (injectableConstructor != null) {
errors.tooManyConstructors(rawType);
}
injectableConstructor = constructor;
checkForMisplacedBindingAnnotations(injectableConstructor, errors);
}
}
errors.throwConfigurationExceptionIfErrorsExist();
if (injectableConstructor != null) {
return new InjectionPoint(type, injectableConstructor);
}
// If no annotated constructor is found, look for a no-arg constructor instead.
try {
Constructor<?> noArgConstructor = rawType.getConstructor();
// Disallow private constructors on non-private classes (unless they have @Inject)
if (Modifier.isPrivate(noArgConstructor.getModifiers()) && !Modifier.isPrivate(rawType.getModifiers())) {
errors.missingConstructor(rawType);
throw new ConfigurationException(errors.getMessages());
}
checkForMisplacedBindingAnnotations(noArgConstructor, errors);
return new InjectionPoint(type, noArgConstructor);
} catch (NoSuchMethodException e) {
errors.missingConstructor(rawType);
throw new ConfigurationException(errors.getMessages());
}
}
use of org.elasticsearch.common.inject.ConfigurationException in project crate by crate.
the class SQLIntegrationTestCase method systemExecute.
/**
* Execute a SQL statement as system query on a specific node in the cluster
*
* @param stmt the SQL statement
* @param schema the schema that should be used for this statement
* schema is nullable, which means the default schema ("doc") is used
* @param node the name of the node on which the stmt is executed
* @return the SQL Response
*/
public SQLResponse systemExecute(String stmt, @Nullable String schema, String node) {
SQLOperations sqlOperations = internalCluster().getInstance(SQLOperations.class, node);
UserLookup userLookup;
try {
userLookup = internalCluster().getInstance(UserLookup.class, node);
} catch (ConfigurationException ignored) {
// If enterprise is not enabled there is no UserLookup instance bound in guice
userLookup = userName -> User.CRATE_USER;
}
try (Session session = sqlOperations.createSession(schema, userLookup.findUser("crate"))) {
response = sqlExecutor.exec(stmt, session);
}
return response;
}
Aggregations