Search in sources :

Example 1 with CommonOptions

use of com.couchbase.client.java.CommonOptions in project spring-data-couchbase by spring-projects.

the class DynamicInvocationHandler method invoke.

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    if ("toString".equals(method.getName())) {
        return "proxy -> target:" + target;
    }
    if (method.getName().equals("withOptions")) {
        return Proxy.newProxyInstance(repositoryClass.getClassLoader(), target.getClass().getInterfaces(), new DynamicInvocationHandler<>(target, (CommonOptions) args[0], collection, scope));
    }
    if (method.getName().equals("withScope")) {
        return Proxy.newProxyInstance(repositoryClass.getClassLoader(), target.getClass().getInterfaces(), new DynamicInvocationHandler<>(target, options, collection, (String) args[0]));
    }
    if (method.getName().equals("withCollection")) {
        return Proxy.newProxyInstance(repositoryClass.getClassLoader(), target.getClass().getInterfaces(), new DynamicInvocationHandler<>(target, options, (String) args[0], scope));
    }
    Class<?>[] paramTypes = null;
    if (args != null) {
        // the CouchbaseRepository methods - save(entity) etc - will have a parameter type of Object instead of entityType
        // so change the paramType to match
        paramTypes = Arrays.stream(args).map(o -> o == null ? null : (o.getClass() == entityInformation.getJavaType() ? Object.class : o.getClass())).toArray(Class<?>[]::new);
        // the CouchbaseRepository methods - findById(id) etc - will have a parameter type of Object instead of ID
        if (method.getName().endsWith("ById") && args.length == 1) {
            paramTypes[0] = Object.class;
        }
    }
    Method theMethod = repositoryClass.getMethod(method.getName(), paramTypes);
    Object result;
    try {
        setThreadLocal();
        result = theMethod.invoke(target, args);
    } catch (InvocationTargetException ite) {
        throw ite.getCause();
    }
    return result;
}
Also used : CommonOptions(com.couchbase.client.java.CommonOptions) Method(java.lang.reflect.Method) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 2 with CommonOptions

use of com.couchbase.client.java.CommonOptions in project couchbase-jvm-clients by couchbase.

the class AsyncQueryIndexManager method exec.

private CompletableFuture<QueryResult> exec(QueryType queryType, CharSequence statement, CommonOptions<?>.BuiltCommonOptions options, String spanName, String bucketName, JsonArray parameters) {
    QueryOptions queryOpts = toQueryOptions(options).readonly(requireNonNull(queryType) == READ_ONLY);
    if (parameters != null && !parameters.isEmpty()) {
        queryOpts.parameters(parameters);
    }
    RequestSpan parent = cluster.environment().requestTracer().requestSpan(spanName, options.parentSpan().orElse(null));
    parent.attribute(TracingIdentifiers.ATTR_SYSTEM, TracingIdentifiers.ATTR_SYSTEM_COUCHBASE);
    if (bucketName != null) {
        parent.attribute(TracingIdentifiers.ATTR_NAME, bucketName);
    }
    queryOpts.parentSpan(parent);
    return cluster.query(statement.toString(), queryOpts).exceptionally(t -> {
        throw translateException(t);
    }).whenComplete((r, t) -> parent.end());
}
Also used : Arrays(java.util.Arrays) Validators.notNull(com.couchbase.client.core.util.Validators.notNull) RetryExhaustedException(com.couchbase.client.core.retry.reactor.RetryExhaustedException) CbThrowables.findCause(com.couchbase.client.core.util.CbThrowables.findCause) TimeoutException(java.util.concurrent.TimeoutException) QueryResult(com.couchbase.client.java.query.QueryResult) Collectors.toMap(java.util.stream.Collectors.toMap) Duration(java.time.Duration) Map(java.util.Map) CbThrowables.throwIfUnchecked(com.couchbase.client.core.util.CbThrowables.throwIfUnchecked) RequestSpan(com.couchbase.client.core.cnc.RequestSpan) READ_ONLY(com.couchbase.client.java.manager.query.AsyncQueryIndexManager.QueryType.READ_ONLY) IndexExistsException(com.couchbase.client.core.error.IndexExistsException) Collectors.toSet(java.util.stream.Collectors.toSet) DropPrimaryQueryIndexOptions.dropPrimaryQueryIndexOptions(com.couchbase.client.java.manager.query.DropPrimaryQueryIndexOptions.dropPrimaryQueryIndexOptions) CbThrowables.hasCause(com.couchbase.client.core.util.CbThrowables.hasCause) Predicate(java.util.function.Predicate) Mapper(com.couchbase.client.core.json.Mapper) Collection(java.util.Collection) Set(java.util.Set) InvalidArgumentException(com.couchbase.client.core.error.InvalidArgumentException) Collectors(java.util.stream.Collectors) Validators.notNullOrEmpty(com.couchbase.client.core.util.Validators.notNullOrEmpty) QueryOptions(com.couchbase.client.java.query.QueryOptions) List(java.util.List) GetAllQueryIndexesOptions.getAllQueryIndexesOptions(com.couchbase.client.java.manager.query.GetAllQueryIndexesOptions.getAllQueryIndexesOptions) RedactableArgument.redactMeta(com.couchbase.client.core.logging.RedactableArgument.redactMeta) Optional(java.util.Optional) WRITE(com.couchbase.client.java.manager.query.AsyncQueryIndexManager.QueryType.WRITE) CreatePrimaryQueryIndexOptions.createPrimaryQueryIndexOptions(com.couchbase.client.java.manager.query.CreatePrimaryQueryIndexOptions.createPrimaryQueryIndexOptions) CreateQueryIndexOptions.createQueryIndexOptions(com.couchbase.client.java.manager.query.CreateQueryIndexOptions.createQueryIndexOptions) Retry(com.couchbase.client.core.retry.reactor.Retry) CouchbaseException(com.couchbase.client.core.error.CouchbaseException) CompletableFuture(java.util.concurrent.CompletableFuture) WatchQueryIndexesOptions.watchQueryIndexesOptions(com.couchbase.client.java.manager.query.WatchQueryIndexesOptions.watchQueryIndexesOptions) QueryException(com.couchbase.client.core.error.QueryException) Function(java.util.function.Function) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) CommonOptions(com.couchbase.client.java.CommonOptions) TracingIdentifiers(com.couchbase.client.core.cnc.TracingIdentifiers) Objects.requireNonNull(java.util.Objects.requireNonNull) Stability(com.couchbase.client.core.annotation.Stability) IndexFailureException(com.couchbase.client.core.error.IndexFailureException) IndexesNotReadyException(com.couchbase.client.core.error.IndexesNotReadyException) DropQueryIndexOptions.dropQueryIndexOptions(com.couchbase.client.java.manager.query.DropQueryIndexOptions.dropQueryIndexOptions) Reactor(com.couchbase.client.core.Reactor) IndexNotFoundException(com.couchbase.client.core.error.IndexNotFoundException) Mono(reactor.core.publisher.Mono) JsonArray(com.couchbase.client.java.json.JsonArray) Collectors.toList(java.util.stream.Collectors.toList) BuildQueryIndexOptions.buildDeferredQueryIndexesOptions(com.couchbase.client.java.manager.query.BuildQueryIndexOptions.buildDeferredQueryIndexesOptions) AsyncCluster(com.couchbase.client.java.AsyncCluster) QueryOptions(com.couchbase.client.java.query.QueryOptions) RequestSpan(com.couchbase.client.core.cnc.RequestSpan)

Aggregations

CommonOptions (com.couchbase.client.java.CommonOptions)2 Reactor (com.couchbase.client.core.Reactor)1 Stability (com.couchbase.client.core.annotation.Stability)1 RequestSpan (com.couchbase.client.core.cnc.RequestSpan)1 TracingIdentifiers (com.couchbase.client.core.cnc.TracingIdentifiers)1 CouchbaseException (com.couchbase.client.core.error.CouchbaseException)1 IndexExistsException (com.couchbase.client.core.error.IndexExistsException)1 IndexFailureException (com.couchbase.client.core.error.IndexFailureException)1 IndexNotFoundException (com.couchbase.client.core.error.IndexNotFoundException)1 IndexesNotReadyException (com.couchbase.client.core.error.IndexesNotReadyException)1 InvalidArgumentException (com.couchbase.client.core.error.InvalidArgumentException)1 QueryException (com.couchbase.client.core.error.QueryException)1 Mapper (com.couchbase.client.core.json.Mapper)1 RedactableArgument.redactMeta (com.couchbase.client.core.logging.RedactableArgument.redactMeta)1 Retry (com.couchbase.client.core.retry.reactor.Retry)1 RetryExhaustedException (com.couchbase.client.core.retry.reactor.RetryExhaustedException)1 CbThrowables.findCause (com.couchbase.client.core.util.CbThrowables.findCause)1 CbThrowables.hasCause (com.couchbase.client.core.util.CbThrowables.hasCause)1 CbThrowables.throwIfUnchecked (com.couchbase.client.core.util.CbThrowables.throwIfUnchecked)1 Validators.notNull (com.couchbase.client.core.util.Validators.notNull)1