diff --git a/pom.xml b/pom.xml index 6176bd50..cd494a1a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ DATACOUCH - 2.2.0-dp + 2.2.0-dp2 2.2.0 2.3.2 1.11.0.BUILD-SNAPSHOT diff --git a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentFactoryBean.java b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentFactoryBean.java index e452b50e..d47ae8b3 100644 --- a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentFactoryBean.java +++ b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentFactoryBean.java @@ -31,229 +31,245 @@ import org.springframework.beans.factory.config.AbstractFactoryBean; */ /*package*/ class CouchbaseEnvironmentFactoryBean extends AbstractFactoryBean { - private static final CouchbaseEnvironment DEFAULT_ENV = DefaultCouchbaseEnvironment.create(); - public static final String RETRYSTRATEGY_FAILFAST = "FailFast"; - public static final String RETRYSTRATEGY_BESTEFFORT = "BestEffort"; + private static final CouchbaseEnvironment DEFAULT_ENV = DefaultCouchbaseEnvironment.create(); + public static final String RETRYSTRATEGY_FAILFAST = "FailFast"; + public static final String RETRYSTRATEGY_BESTEFFORT = "BestEffort"; - private long managementTimeout = DEFAULT_ENV.managementTimeout(); - private long queryTimeout = DEFAULT_ENV.queryTimeout(); - private long viewTimeout = DEFAULT_ENV.viewTimeout(); - private long kvTimeout = DEFAULT_ENV.kvTimeout(); - private long connectTimeout = DEFAULT_ENV.connectTimeout(); - private long disconnectTimeout = DEFAULT_ENV.disconnectTimeout(); - private boolean dnsSrvEnabled = DEFAULT_ENV.dnsSrvEnabled(); + private long managementTimeout = DEFAULT_ENV.managementTimeout(); + private long queryTimeout = DEFAULT_ENV.queryTimeout(); + private long viewTimeout = DEFAULT_ENV.viewTimeout(); + private long kvTimeout = DEFAULT_ENV.kvTimeout(); + private long connectTimeout = DEFAULT_ENV.connectTimeout(); + private long disconnectTimeout = DEFAULT_ENV.disconnectTimeout(); + private boolean dnsSrvEnabled = DEFAULT_ENV.dnsSrvEnabled(); - private boolean dcpEnabled = DEFAULT_ENV.dcpEnabled(); - private boolean sslEnabled = DEFAULT_ENV.sslEnabled(); - private String sslKeystoreFile = DEFAULT_ENV.sslKeystoreFile(); - private String sslKeystorePassword = DEFAULT_ENV.sslKeystorePassword(); - private boolean queryEnabled = DEFAULT_ENV.queryEnabled(); - private int queryPort = DEFAULT_ENV.queryPort(); - private boolean bootstrapHttpEnabled = DEFAULT_ENV.bootstrapHttpEnabled(); - private boolean bootstrapCarrierEnabled = DEFAULT_ENV.bootstrapCarrierEnabled(); - private int bootstrapHttpDirectPort = DEFAULT_ENV.bootstrapHttpDirectPort(); - private int bootstrapHttpSslPort = DEFAULT_ENV.bootstrapHttpSslPort(); - private int bootstrapCarrierDirectPort = DEFAULT_ENV.bootstrapCarrierDirectPort(); - private int bootstrapCarrierSslPort = DEFAULT_ENV.bootstrapCarrierSslPort(); - private int ioPoolSize = DEFAULT_ENV.ioPoolSize(); - private int computationPoolSize = DEFAULT_ENV.computationPoolSize(); - private int responseBufferSize = DEFAULT_ENV.responseBufferSize(); - private int requestBufferSize = DEFAULT_ENV.requestBufferSize(); - private int kvEndpoints = DEFAULT_ENV.kvEndpoints(); - private int viewEndpoints = DEFAULT_ENV.viewEndpoints(); - private int queryEndpoints = DEFAULT_ENV.queryEndpoints(); - private RetryStrategy retryStrategy = DEFAULT_ENV.retryStrategy(); - private long maxRequestLifetime = DEFAULT_ENV.maxRequestLifetime(); - private long keepAliveInterval = DEFAULT_ENV.keepAliveInterval(); - private long autoreleaseAfter = DEFAULT_ENV.autoreleaseAfter(); - private boolean bufferPoolingEnabled = DEFAULT_ENV.bufferPoolingEnabled(); - - //These are tunings that are not practical to be exposed in a xml configuration - //or not supposed to be modified that easily: -// observeIntervalDelay -// reconnectDelay -// retryDelay -// userAgent -// packageNameAndVersion -// ioPool -// scheduler -// eventBus - - @Override - public Class getObjectType() { - return DefaultCouchbaseEnvironment.class; - } + private boolean dcpEnabled = DEFAULT_ENV.dcpEnabled(); + private boolean sslEnabled = DEFAULT_ENV.sslEnabled(); + private String sslKeystoreFile = DEFAULT_ENV.sslKeystoreFile(); + private String sslKeystorePassword = DEFAULT_ENV.sslKeystorePassword(); + private boolean queryEnabled = DEFAULT_ENV.queryEnabled(); + private int queryPort = DEFAULT_ENV.queryPort(); + private boolean bootstrapHttpEnabled = DEFAULT_ENV.bootstrapHttpEnabled(); + private boolean bootstrapCarrierEnabled = DEFAULT_ENV.bootstrapCarrierEnabled(); + private int bootstrapHttpDirectPort = DEFAULT_ENV.bootstrapHttpDirectPort(); + private int bootstrapHttpSslPort = DEFAULT_ENV.bootstrapHttpSslPort(); + private int bootstrapCarrierDirectPort = DEFAULT_ENV.bootstrapCarrierDirectPort(); + private int bootstrapCarrierSslPort = DEFAULT_ENV.bootstrapCarrierSslPort(); + private int ioPoolSize = DEFAULT_ENV.ioPoolSize(); + private int computationPoolSize = DEFAULT_ENV.computationPoolSize(); + private int responseBufferSize = DEFAULT_ENV.responseBufferSize(); + private int requestBufferSize = DEFAULT_ENV.requestBufferSize(); + private int kvEndpoints = DEFAULT_ENV.kvEndpoints(); + private int viewEndpoints = DEFAULT_ENV.viewEndpoints(); + private int queryEndpoints = DEFAULT_ENV.queryEndpoints(); + private RetryStrategy retryStrategy = DEFAULT_ENV.retryStrategy(); + private long maxRequestLifetime = DEFAULT_ENV.maxRequestLifetime(); + private long keepAliveInterval = DEFAULT_ENV.keepAliveInterval(); + private long autoreleaseAfter = DEFAULT_ENV.autoreleaseAfter(); + private boolean bufferPoolingEnabled = DEFAULT_ENV.bufferPoolingEnabled(); + private boolean tcpNodelayEnabled = DEFAULT_ENV.tcpNodelayEnabled(); + private boolean mutationTokensEnabled = DEFAULT_ENV.mutationTokensEnabled(); - @Override - protected CouchbaseEnvironment createInstance() throws Exception { - return DefaultCouchbaseEnvironment.builder() - .managementTimeout(managementTimeout) - .queryTimeout(queryTimeout) - .viewTimeout(viewTimeout) - .kvTimeout(kvTimeout) - .connectTimeout(connectTimeout) - .disconnectTimeout(disconnectTimeout) - .dnsSrvEnabled(dnsSrvEnabled) - .dcpEnabled(dcpEnabled) - .sslEnabled(sslEnabled) - .sslKeystoreFile(sslKeystoreFile) - .sslKeystorePassword(sslKeystorePassword) - .queryEnabled(queryEnabled) - .queryPort(queryPort) - .bootstrapHttpEnabled(bootstrapHttpEnabled) - .bootstrapCarrierEnabled(bootstrapCarrierEnabled) - .bootstrapHttpDirectPort(bootstrapHttpDirectPort) - .bootstrapHttpSslPort(bootstrapHttpSslPort) - .bootstrapCarrierDirectPort(bootstrapCarrierDirectPort) - .bootstrapCarrierSslPort(bootstrapCarrierSslPort) - .ioPoolSize(ioPoolSize) - .computationPoolSize(computationPoolSize) - .responseBufferSize(responseBufferSize) - .requestBufferSize(requestBufferSize) - .kvEndpoints(kvEndpoints) - .viewEndpoints(viewEndpoints) - .queryEndpoints(queryEndpoints) - .retryStrategy(retryStrategy) - .maxRequestLifetime(maxRequestLifetime) - .keepAliveInterval(keepAliveInterval) - .autoreleaseAfter(autoreleaseAfter) - .bufferPoolingEnabled(bufferPoolingEnabled) - .build(); - } + /* + These are tunings that are not practical to be exposed in a xml configuration + or not supposed to be modified that easily: + observeIntervalDelay + reconnectDelay + retryDelay + userAgent + packageNameAndVersion + ioPool + scheduler + eventBus + systemMetricsCollectorConfig + networkLatencyMetricsCollectorConfig + */ - /** - * Sets the {@link RetryStrategy} to use from an enum-like String value. - * Either "FailFast" or "BestEffort" are recognized. - * - * @param retryStrategy the string value enum from which to choose a strategy. - */ - public void setRetryStrategy(String retryStrategy) { - if (RETRYSTRATEGY_FAILFAST.equals(retryStrategy)){ - this.retryStrategy = FailFastRetryStrategy.INSTANCE; - } else if (RETRYSTRATEGY_BESTEFFORT.equals(retryStrategy)) { - this.retryStrategy = BestEffortRetryStrategy.INSTANCE; - } - } + @Override + public Class getObjectType() { + return DefaultCouchbaseEnvironment.class; + } - //==== SETTERS for the factory bean ==== + @Override + protected CouchbaseEnvironment createInstance() throws Exception { + return DefaultCouchbaseEnvironment.builder() + .managementTimeout(managementTimeout) + .queryTimeout(queryTimeout) + .viewTimeout(viewTimeout) + .kvTimeout(kvTimeout) + .connectTimeout(connectTimeout) + .disconnectTimeout(disconnectTimeout) + .dnsSrvEnabled(dnsSrvEnabled) + .dcpEnabled(dcpEnabled) + .sslEnabled(sslEnabled) + .sslKeystoreFile(sslKeystoreFile) + .sslKeystorePassword(sslKeystorePassword) + .queryEnabled(queryEnabled) + .queryPort(queryPort) + .bootstrapHttpEnabled(bootstrapHttpEnabled) + .bootstrapCarrierEnabled(bootstrapCarrierEnabled) + .bootstrapHttpDirectPort(bootstrapHttpDirectPort) + .bootstrapHttpSslPort(bootstrapHttpSslPort) + .bootstrapCarrierDirectPort(bootstrapCarrierDirectPort) + .bootstrapCarrierSslPort(bootstrapCarrierSslPort) + .ioPoolSize(ioPoolSize) + .computationPoolSize(computationPoolSize) + .responseBufferSize(responseBufferSize) + .requestBufferSize(requestBufferSize) + .kvEndpoints(kvEndpoints) + .viewEndpoints(viewEndpoints) + .queryEndpoints(queryEndpoints) + .retryStrategy(retryStrategy) + .maxRequestLifetime(maxRequestLifetime) + .keepAliveInterval(keepAliveInterval) + .autoreleaseAfter(autoreleaseAfter) + .bufferPoolingEnabled(bufferPoolingEnabled) + .tcpNodelayEnabled(tcpNodelayEnabled) + .mutationTokensEnabled(mutationTokensEnabled) + .build(); + } - public void setManagementTimeout(long managementTimeout) { - this.managementTimeout = managementTimeout; - } + /** + * Sets the {@link RetryStrategy} to use from an enum-like String value. + * Either "FailFast" or "BestEffort" are recognized. + * + * @param retryStrategy the string value enum from which to choose a strategy. + */ + public void setRetryStrategy(String retryStrategy) { + if (RETRYSTRATEGY_FAILFAST.equals(retryStrategy)) { + this.retryStrategy = FailFastRetryStrategy.INSTANCE; + } else if (RETRYSTRATEGY_BESTEFFORT.equals(retryStrategy)) { + this.retryStrategy = BestEffortRetryStrategy.INSTANCE; + } + } - public void setQueryTimeout(long queryTimeout) { - this.queryTimeout = queryTimeout; - } + //==== SETTERS for the factory bean ==== - public void setViewTimeout(long viewTimeout) { - this.viewTimeout = viewTimeout; - } + public void setManagementTimeout(long managementTimeout) { + this.managementTimeout = managementTimeout; + } - public void setKvTimeout(long kvTimeout) { - this.kvTimeout = kvTimeout; - } + public void setQueryTimeout(long queryTimeout) { + this.queryTimeout = queryTimeout; + } - public void setConnectTimeout(long connectTimeout) { - this.connectTimeout = connectTimeout; - } + public void setViewTimeout(long viewTimeout) { + this.viewTimeout = viewTimeout; + } - public void setDisconnectTimeout(long disconnectTimeout) { - this.disconnectTimeout = disconnectTimeout; - } + public void setKvTimeout(long kvTimeout) { + this.kvTimeout = kvTimeout; + } - public void setDnsSrvEnabled(boolean dnsSrvEnabled) { - this.dnsSrvEnabled = dnsSrvEnabled; - } + public void setConnectTimeout(long connectTimeout) { + this.connectTimeout = connectTimeout; + } - public void setDcpEnabled(boolean dcpEnabled) { - this.dcpEnabled = dcpEnabled; - } + public void setDisconnectTimeout(long disconnectTimeout) { + this.disconnectTimeout = disconnectTimeout; + } - public void setSslEnabled(boolean sslEnabled) { - this.sslEnabled = sslEnabled; - } + public void setDnsSrvEnabled(boolean dnsSrvEnabled) { + this.dnsSrvEnabled = dnsSrvEnabled; + } - public void setSslKeystoreFile(String sslKeystoreFile) { - this.sslKeystoreFile = sslKeystoreFile; - } + public void setDcpEnabled(boolean dcpEnabled) { + this.dcpEnabled = dcpEnabled; + } - public void setSslKeystorePassword(String sslKeystorePassword) { - this.sslKeystorePassword = sslKeystorePassword; - } + public void setSslEnabled(boolean sslEnabled) { + this.sslEnabled = sslEnabled; + } - public void setQueryEnabled(boolean queryEnabled) { - this.queryEnabled = queryEnabled; - } + public void setSslKeystoreFile(String sslKeystoreFile) { + this.sslKeystoreFile = sslKeystoreFile; + } - public void setQueryPort(int queryPort) { - this.queryPort = queryPort; - } + public void setSslKeystorePassword(String sslKeystorePassword) { + this.sslKeystorePassword = sslKeystorePassword; + } - public void setBootstrapHttpEnabled(boolean bootstrapHttpEnabled) { - this.bootstrapHttpEnabled = bootstrapHttpEnabled; - } + public void setQueryEnabled(boolean queryEnabled) { + this.queryEnabled = queryEnabled; + } - public void setBootstrapCarrierEnabled(boolean bootstrapCarrierEnabled) { - this.bootstrapCarrierEnabled = bootstrapCarrierEnabled; - } + public void setQueryPort(int queryPort) { + this.queryPort = queryPort; + } - public void setBootstrapHttpDirectPort(int bootstrapHttpDirectPort) { - this.bootstrapHttpDirectPort = bootstrapHttpDirectPort; - } + public void setBootstrapHttpEnabled(boolean bootstrapHttpEnabled) { + this.bootstrapHttpEnabled = bootstrapHttpEnabled; + } - public void setBootstrapHttpSslPort(int bootstrapHttpSslPort) { - this.bootstrapHttpSslPort = bootstrapHttpSslPort; - } + public void setBootstrapCarrierEnabled(boolean bootstrapCarrierEnabled) { + this.bootstrapCarrierEnabled = bootstrapCarrierEnabled; + } - public void setBootstrapCarrierDirectPort(int bootstrapCarrierDirectPort) { - this.bootstrapCarrierDirectPort = bootstrapCarrierDirectPort; - } + public void setBootstrapHttpDirectPort(int bootstrapHttpDirectPort) { + this.bootstrapHttpDirectPort = bootstrapHttpDirectPort; + } - public void setBootstrapCarrierSslPort(int bootstrapCarrierSslPort) { - this.bootstrapCarrierSslPort = bootstrapCarrierSslPort; - } + public void setBootstrapHttpSslPort(int bootstrapHttpSslPort) { + this.bootstrapHttpSslPort = bootstrapHttpSslPort; + } - public void setIoPoolSize(int ioPoolSize) { - this.ioPoolSize = ioPoolSize; - } + public void setBootstrapCarrierDirectPort(int bootstrapCarrierDirectPort) { + this.bootstrapCarrierDirectPort = bootstrapCarrierDirectPort; + } - public void setComputationPoolSize(int computationPoolSize) { - this.computationPoolSize = computationPoolSize; - } + public void setBootstrapCarrierSslPort(int bootstrapCarrierSslPort) { + this.bootstrapCarrierSslPort = bootstrapCarrierSslPort; + } - public void setResponseBufferSize(int responseBufferSize) { - this.responseBufferSize = responseBufferSize; - } + public void setIoPoolSize(int ioPoolSize) { + this.ioPoolSize = ioPoolSize; + } - public void setRequestBufferSize(int requestBufferSize) { - this.requestBufferSize = requestBufferSize; - } + public void setComputationPoolSize(int computationPoolSize) { + this.computationPoolSize = computationPoolSize; + } - public void setKvEndpoints(int kvEndpoints) { - this.kvEndpoints = kvEndpoints; - } + public void setResponseBufferSize(int responseBufferSize) { + this.responseBufferSize = responseBufferSize; + } - public void setViewEndpoints(int viewEndpoints) { - this.viewEndpoints = viewEndpoints; - } + public void setRequestBufferSize(int requestBufferSize) { + this.requestBufferSize = requestBufferSize; + } - public void setQueryEndpoints(int queryEndpoints) { - this.queryEndpoints = queryEndpoints; - } + public void setKvEndpoints(int kvEndpoints) { + this.kvEndpoints = kvEndpoints; + } - public void setMaxRequestLifetime(long maxRequestLifetime) { - this.maxRequestLifetime = maxRequestLifetime; - } + public void setViewEndpoints(int viewEndpoints) { + this.viewEndpoints = viewEndpoints; + } - public void setKeepAliveInterval(long keepAliveInterval) { - this.keepAliveInterval = keepAliveInterval; - } + public void setQueryEndpoints(int queryEndpoints) { + this.queryEndpoints = queryEndpoints; + } - public void setAutoreleaseAfter(long autoreleaseAfter) { - this.autoreleaseAfter = autoreleaseAfter; - } + public void setMaxRequestLifetime(long maxRequestLifetime) { + this.maxRequestLifetime = maxRequestLifetime; + } - public void setBufferPoolingEnabled(boolean bufferPoolingEnabled) { - this.bufferPoolingEnabled = bufferPoolingEnabled; - } + public void setKeepAliveInterval(long keepAliveInterval) { + this.keepAliveInterval = keepAliveInterval; + } + + public void setAutoreleaseAfter(long autoreleaseAfter) { + this.autoreleaseAfter = autoreleaseAfter; + } + + public void setBufferPoolingEnabled(boolean bufferPoolingEnabled) { + this.bufferPoolingEnabled = bufferPoolingEnabled; + } + + public void setTcpNodelayEnabled(boolean tcpNodelayEnabled) { + this.tcpNodelayEnabled = tcpNodelayEnabled; + } + + public void setMutationTokensEnabled(boolean mutationTokensEnabled) { + this.mutationTokensEnabled = mutationTokensEnabled; + } } diff --git a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentNoShutdownProxy.java b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentNoShutdownProxy.java index 6733a942..8597cb0b 100644 --- a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentNoShutdownProxy.java +++ b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentNoShutdownProxy.java @@ -17,6 +17,8 @@ package org.springframework.data.couchbase.config; import com.couchbase.client.core.event.EventBus; +import com.couchbase.client.core.metrics.MetricsCollector; +import com.couchbase.client.core.metrics.NetworkLatencyMetricsCollector; import com.couchbase.client.core.retry.RetryStrategy; import com.couchbase.client.core.time.Delay; import com.couchbase.client.deps.io.netty.channel.EventLoopGroup; @@ -32,211 +34,233 @@ import rx.Scheduler; */ public class CouchbaseEnvironmentNoShutdownProxy implements CouchbaseEnvironment { - private final CouchbaseEnvironment delegate; + private final CouchbaseEnvironment delegate; - public CouchbaseEnvironmentNoShutdownProxy(CouchbaseEnvironment delegate) { - this.delegate = delegate; - } + public CouchbaseEnvironmentNoShutdownProxy(CouchbaseEnvironment delegate) { + this.delegate = delegate; + } - @Override - public Observable shutdown() { - return Observable.just(false); - } + @Override + public Observable shutdown() { + return Observable.just(false); + } - //===== DELEGATION METHODS ===== + //===== DELEGATION METHODS ===== - @Override - public EventLoopGroup ioPool() { - return delegate.ioPool(); - } + @Override + public EventLoopGroup ioPool() { + return delegate.ioPool(); + } - @Override - public Scheduler scheduler() { - return delegate.scheduler(); - } + @Override + public Scheduler scheduler() { + return delegate.scheduler(); + } - @Override - public boolean dcpEnabled() { - return delegate.dcpEnabled(); - } + @Override + public boolean dcpEnabled() { + return delegate.dcpEnabled(); + } - @Override - public boolean sslEnabled() { - return delegate.sslEnabled(); - } + @Override + public boolean sslEnabled() { + return delegate.sslEnabled(); + } - @Override - public String sslKeystoreFile() { - return delegate.sslKeystoreFile(); - } + @Override + public String sslKeystoreFile() { + return delegate.sslKeystoreFile(); + } - @Override - public String sslKeystorePassword() { - return delegate.sslKeystorePassword(); - } + @Override + public String sslKeystorePassword() { + return delegate.sslKeystorePassword(); + } - @Override - public boolean queryEnabled() { - return delegate.queryEnabled(); - } + @Override + @Deprecated + public boolean queryEnabled() { + return delegate.queryEnabled(); + } - @Override - public int queryPort() { - return delegate.queryPort(); - } + @Override + @Deprecated + public int queryPort() { + return delegate.queryPort(); + } - @Override - public boolean bootstrapHttpEnabled() { - return delegate.bootstrapHttpEnabled(); - } + @Override + public boolean bootstrapHttpEnabled() { + return delegate.bootstrapHttpEnabled(); + } - @Override - public boolean bootstrapCarrierEnabled() { - return delegate.bootstrapCarrierEnabled(); - } + @Override + public boolean bootstrapCarrierEnabled() { + return delegate.bootstrapCarrierEnabled(); + } - @Override - public int bootstrapHttpDirectPort() { - return delegate.bootstrapHttpDirectPort(); - } + @Override + public int bootstrapHttpDirectPort() { + return delegate.bootstrapHttpDirectPort(); + } - @Override - public int bootstrapHttpSslPort() { - return delegate.bootstrapHttpSslPort(); - } + @Override + public int bootstrapHttpSslPort() { + return delegate.bootstrapHttpSslPort(); + } - @Override - public int bootstrapCarrierDirectPort() { - return delegate.bootstrapCarrierDirectPort(); - } + @Override + public int bootstrapCarrierDirectPort() { + return delegate.bootstrapCarrierDirectPort(); + } - @Override - public int bootstrapCarrierSslPort() { - return delegate.bootstrapCarrierSslPort(); - } + @Override + public int bootstrapCarrierSslPort() { + return delegate.bootstrapCarrierSslPort(); + } - @Override - public int ioPoolSize() { - return delegate.ioPoolSize(); - } + @Override + public int ioPoolSize() { + return delegate.ioPoolSize(); + } - @Override - public int computationPoolSize() { - return delegate.computationPoolSize(); - } + @Override + public int computationPoolSize() { + return delegate.computationPoolSize(); + } - @Override - public Delay observeIntervalDelay() { - return delegate.observeIntervalDelay(); - } + @Override + public Delay observeIntervalDelay() { + return delegate.observeIntervalDelay(); + } - @Override - public Delay reconnectDelay() { - return delegate.reconnectDelay(); - } + @Override + public Delay reconnectDelay() { + return delegate.reconnectDelay(); + } - @Override - public Delay retryDelay() { - return delegate.retryDelay(); - } + @Override + public Delay retryDelay() { + return delegate.retryDelay(); + } - @Override - public int requestBufferSize() { - return delegate.requestBufferSize(); - } + @Override + public int requestBufferSize() { + return delegate.requestBufferSize(); + } - @Override - public int responseBufferSize() { - return delegate.responseBufferSize(); - } + @Override + public int responseBufferSize() { + return delegate.responseBufferSize(); + } - @Override - public int kvEndpoints() { - return delegate.kvEndpoints(); - } + @Override + public int kvEndpoints() { + return delegate.kvEndpoints(); + } - @Override - public int viewEndpoints() { - return delegate.viewEndpoints(); - } + @Override + public int viewEndpoints() { + return delegate.viewEndpoints(); + } - @Override - public int queryEndpoints() { - return delegate.queryEndpoints(); - } + @Override + public int queryEndpoints() { + return delegate.queryEndpoints(); + } - @Override - public String userAgent() { - return delegate.userAgent(); - } + @Override + public String userAgent() { + return delegate.userAgent(); + } - @Override - public String packageNameAndVersion() { - return delegate.packageNameAndVersion(); - } + @Override + public String packageNameAndVersion() { + return delegate.packageNameAndVersion(); + } - @Override - public RetryStrategy retryStrategy() { - return delegate.retryStrategy(); - } + @Override + public RetryStrategy retryStrategy() { + return delegate.retryStrategy(); + } - @Override - public long maxRequestLifetime() { - return delegate.maxRequestLifetime(); - } + @Override + public long maxRequestLifetime() { + return delegate.maxRequestLifetime(); + } - @Override - public long autoreleaseAfter() { - return delegate.autoreleaseAfter(); - } + @Override + public long autoreleaseAfter() { + return delegate.autoreleaseAfter(); + } - @Override - public long keepAliveInterval() { - return delegate.keepAliveInterval(); - } + @Override + public long keepAliveInterval() { + return delegate.keepAliveInterval(); + } - @Override - public EventBus eventBus() { - return delegate.eventBus(); - } + @Override + public EventBus eventBus() { + return delegate.eventBus(); + } - @Override - public boolean bufferPoolingEnabled() { - return delegate.bufferPoolingEnabled(); - } + @Override + public boolean bufferPoolingEnabled() { + return delegate.bufferPoolingEnabled(); + } - @Override - public long managementTimeout() { - return delegate.managementTimeout(); - } + @Override + public long managementTimeout() { + return delegate.managementTimeout(); + } - @Override - public long queryTimeout() { - return delegate.queryTimeout(); - } + @Override + public long queryTimeout() { + return delegate.queryTimeout(); + } - @Override - public long viewTimeout() { - return delegate.viewTimeout(); - } + @Override + public long viewTimeout() { + return delegate.viewTimeout(); + } - @Override - public long kvTimeout() { - return delegate.kvTimeout(); - } + @Override + public long kvTimeout() { + return delegate.kvTimeout(); + } - @Override - public long connectTimeout() { - return delegate.connectTimeout(); - } + @Override + public long connectTimeout() { + return delegate.connectTimeout(); + } - @Override - public long disconnectTimeout() { - return delegate.disconnectTimeout(); - } + @Override + public long disconnectTimeout() { + return delegate.disconnectTimeout(); + } - @Override - public boolean dnsSrvEnabled() { - return delegate.dnsSrvEnabled(); - } + @Override + public boolean dnsSrvEnabled() { + return delegate.dnsSrvEnabled(); + } + + @Override + public NetworkLatencyMetricsCollector networkLatencyMetricsCollector() { + return delegate.networkLatencyMetricsCollector(); + } + + @Override + public MetricsCollector systemMetricsCollector() { + return delegate.systemMetricsCollector(); + } + + @Override + public boolean mutationTokensEnabled() { + return delegate.mutationTokensEnabled(); + } + + @Override + public boolean tcpNodelayEnabled() { + return delegate.tcpNodelayEnabled(); + } } diff --git a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParser.java b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParser.java index b4bf013f..61caa967 100644 --- a/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParser.java +++ b/src/main/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParser.java @@ -64,6 +64,8 @@ import org.springframework.util.StringUtils; *
  • {@link DefaultCouchbaseEnvironment.Builder#keepAliveInterval(long) keepAliveInterval}
  • *
  • {@link DefaultCouchbaseEnvironment.Builder#autoreleaseAfter(long) autoreleaseAfter}
  • *
  • {@link DefaultCouchbaseEnvironment.Builder#bufferPoolingEnabled(boolean) bufferPoolingEnabled}
  • + *
  • {@link DefaultCouchbaseEnvironment.Builder#tcpNodelayEnabled(boolean) tcpNodelayEnabled}
  • + *
  • {@link DefaultCouchbaseEnvironment.Builder#mutationTokensEnabled(boolean) mutationTokensEnabled}
  • * * * @author Simon BaslĂ© @@ -134,6 +136,8 @@ public class CouchbaseEnvironmentParser extends AbstractSingleBeanDefinitionPars setPropertyValue(envDefinitionBuilder, envElement, "keepAliveInterval", "keepAliveInterval"); setPropertyValue(envDefinitionBuilder, envElement, "autoreleaseAfter", "autoreleaseAfter"); setPropertyValue(envDefinitionBuilder, envElement, "bufferPoolingEnabled", "bufferPoolingEnabled"); + setPropertyValue(envDefinitionBuilder, envElement, "tcpNodelayEnabled", "tcpNodelayEnabled"); + setPropertyValue(envDefinitionBuilder, envElement, "mutationTokensEnabled", "mutationTokensEnabled"); //retry strategy is particular, in the xsd this is an enum (FailFast, BestEffort) setPropertyValue(envDefinitionBuilder, envElement, "retryStrategy", "retryStrategy"); diff --git a/src/main/java/org/springframework/data/couchbase/core/CouchbaseOperations.java b/src/main/java/org/springframework/data/couchbase/core/CouchbaseOperations.java index 91d5fa6d..a36ecfe7 100644 --- a/src/main/java/org/springframework/data/couchbase/core/CouchbaseOperations.java +++ b/src/main/java/org/springframework/data/couchbase/core/CouchbaseOperations.java @@ -184,13 +184,11 @@ public interface CouchbaseOperations { */ T findById(String id, Class entityClass); - //TODO add javadoc link to setIncludeDocs when GA - /** * Query a View for a list of documents of type T. *

    - *

    There is no need to setIncludeDocs(boolean) explicitly, because it will be set to true all the - * time. It is valid to pass in a empty constructed {@link ViewQuery} object.

    + *

    There is no need to {@link ViewQuery#includeDocs(boolean) set includeDocs} explicitly, because it will be set to + * true all the time. It is valid to pass in a empty constructed {@link ViewQuery} object.

    *

    *

    This method does not work with reduced views, because they by design do not contain references to original * objects. Use the provided {@link #queryView} method for more flexibility and direct access.

    diff --git a/src/main/java/org/springframework/data/couchbase/core/CouchbaseTemplate.java b/src/main/java/org/springframework/data/couchbase/core/CouchbaseTemplate.java index 3ba4b357..287421c3 100644 --- a/src/main/java/org/springframework/data/couchbase/core/CouchbaseTemplate.java +++ b/src/main/java/org/springframework/data/couchbase/core/CouchbaseTemplate.java @@ -150,7 +150,8 @@ public class CouchbaseTemplate implements CouchbaseOperations, ApplicationEventP * into a {@link CouchbaseStorable} */ private CouchbaseStorable decodeAndUnwrap(final Document source, final CouchbaseStorable target) { - return translationService.decode(source.content(), target); //TODO rework and check + //TODO at some point the necessity of CouchbaseStorable should be re-evaluated + return translationService.decode(source.content(), target); } /** diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQuery.java b/src/main/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQuery.java index cf4c4022..5cfaf2aa 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQuery.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQuery.java @@ -65,7 +65,7 @@ public abstract class AbstractN1qlBasedQuery implements RepositoryQuery { protected static Query buildQuery(Statement statement, JsonArray queryPlaceholderValues) { Query query; if (!queryPlaceholderValues.isEmpty()) { - query = Query.parametrized(statement, queryPlaceholderValues); + query = Query.parameterized(statement, queryPlaceholderValues); } else { query = Query.simple(statement); diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreator.java b/src/main/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreator.java index 9ff7c9f0..b97caab0 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreator.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreator.java @@ -26,6 +26,7 @@ import java.util.List; import com.couchbase.client.java.document.json.JsonArray; import com.couchbase.client.java.query.dsl.Expression; +import com.couchbase.client.java.query.dsl.functions.PatternMatchingFunctions; import com.couchbase.client.java.query.dsl.functions.StringFunctions; import com.couchbase.client.java.query.dsl.path.LimitPath; import com.couchbase.client.java.query.dsl.path.OrderByPath; @@ -220,7 +221,6 @@ public class N1qlQueryCreator extends AbstractQueryCreator parameterValues) { - //TODO migrate to using the Functions util class when 2.0-dp2 / 2.0 GA Object next = parameterValues.next(); String pattern; @@ -229,7 +229,7 @@ public class N1qlQueryCreator extends AbstractQueryCreator parameterValues, boolean ignoreCase) { diff --git a/src/main/resources/org/springframework/data/couchbase/config/spring-couchbase-env-2.0.xsd b/src/main/resources/org/springframework/data/couchbase/config/spring-couchbase-env-2.0.xsd index 91e8f61f..0647c96b 100644 --- a/src/main/resources/org/springframework/data/couchbase/config/spring-couchbase-env-2.0.xsd +++ b/src/main/resources/org/springframework/data/couchbase/config/spring-couchbase-env-2.0.xsd @@ -52,6 +52,8 @@ + + diff --git a/src/test/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParserTest.java b/src/test/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParserTest.java index ad0766f2..b1b84863 100644 --- a/src/test/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParserTest.java +++ b/src/test/java/org/springframework/data/couchbase/config/CouchbaseEnvironmentParserTest.java @@ -35,75 +35,76 @@ import org.springframework.core.io.ClassPathResource; public class CouchbaseEnvironmentParserTest { - private static GenericApplicationContext context; + private static GenericApplicationContext context; - @BeforeClass - public static void setUp() { - DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); - BeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); - reader.loadBeanDefinitions(new ClassPathResource("configurations/couchbaseEnv-bean.xml")); - context = new GenericApplicationContext(factory); - context.refresh(); - } + @BeforeClass + public static void setUp() { + DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); + BeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); + reader.loadBeanDefinitions(new ClassPathResource("configurations/couchbaseEnv-bean.xml")); + context = new GenericApplicationContext(factory); + context.refresh(); + } - @Test - public void testParsingRetryStrategyFailFast() throws Exception { - CouchbaseEnvironment env = context.getBean("envWithFailFast", CouchbaseEnvironment.class); + @Test + public void testParsingRetryStrategyFailFast() throws Exception { + CouchbaseEnvironment env = context.getBean("envWithFailFast", CouchbaseEnvironment.class); - assertThat(env.retryStrategy(), is(instanceOf(FailFastRetryStrategy.class))); - } + assertThat(env.retryStrategy(), is(instanceOf(FailFastRetryStrategy.class))); + } - @Test - public void testParsingRetryStrategyBestEffort() throws Exception { - CouchbaseEnvironment env = context.getBean("envWithBestEffort", CouchbaseEnvironment.class); + @Test + public void testParsingRetryStrategyBestEffort() throws Exception { + CouchbaseEnvironment env = context.getBean("envWithBestEffort", CouchbaseEnvironment.class); - assertThat(env.retryStrategy(), is(instanceOf(BestEffortRetryStrategy.class))); - } + assertThat(env.retryStrategy(), is(instanceOf(BestEffortRetryStrategy.class))); + } - @Test - public void testAllDefaultsOverridden() { - CouchbaseEnvironment env = context.getBean("envWithNoDefault", CouchbaseEnvironment.class); - CouchbaseEnvironment defaultEnv = DefaultCouchbaseEnvironment.create(); + @Test + public void testAllDefaultsOverridden() { + CouchbaseEnvironment env = context.getBean("envWithNoDefault", CouchbaseEnvironment.class); + CouchbaseEnvironment defaultEnv = DefaultCouchbaseEnvironment.create(); - assertThat(env, is(instanceOf(DefaultCouchbaseEnvironment.class))); + assertThat(env, is(instanceOf(DefaultCouchbaseEnvironment.class))); - assertThat(env.managementTimeout(), is(equalTo(1L))); - assertThat(env.queryTimeout(), is(equalTo(2L))); - assertThat(env.viewTimeout(), is(equalTo(3L))); - assertThat(env.kvTimeout(), is(equalTo(4L))); - assertThat(env.connectTimeout(), is(equalTo(5L))); - assertThat(env.disconnectTimeout(), is(equalTo(6L))); - assertThat(env.dnsSrvEnabled(), allOf(equalTo(true), not(defaultEnv.dnsSrvEnabled()))); + assertThat(env.managementTimeout(), is(equalTo(1L))); + assertThat(env.queryTimeout(), is(equalTo(2L))); + assertThat(env.viewTimeout(), is(equalTo(3L))); + assertThat(env.kvTimeout(), is(equalTo(4L))); + assertThat(env.connectTimeout(), is(equalTo(5L))); + assertThat(env.disconnectTimeout(), is(equalTo(6L))); + assertThat(env.dnsSrvEnabled(), allOf(equalTo(true), not(defaultEnv.dnsSrvEnabled()))); - //TODO activate test when dcp can be enabled on the environment (add it in the xml) -// assertThat(env.dcpEnabled(), allOf(equalTo(true), not(defaultEnv.dcpEnabled()))); - assertThat(env.sslEnabled(), allOf(equalTo(true), not(defaultEnv.sslEnabled()))); - assertThat(env.sslKeystoreFile(), is(equalTo("test"))); - assertThat(env.sslKeystorePassword(), is(equalTo("test"))); - assertThat(env.queryEnabled(), allOf(equalTo(true), not(defaultEnv.queryEnabled()))); - assertThat(env.queryPort(), is(equalTo(7))); - assertThat(env.bootstrapHttpEnabled(), allOf(equalTo(false), not(defaultEnv.bootstrapHttpEnabled()))); - assertThat(env.bootstrapCarrierEnabled(), allOf(equalTo(false), not(defaultEnv.bootstrapCarrierEnabled()))); - assertThat(env.bootstrapHttpDirectPort(), is(equalTo(8))); - assertThat(env.bootstrapHttpSslPort(), is(equalTo(9))); - assertThat(env.bootstrapCarrierDirectPort(), is(equalTo(10))); - assertThat(env.bootstrapCarrierSslPort(), is(equalTo(11))); - assertThat(env.ioPoolSize(), is(equalTo(12))); - assertThat(env.computationPoolSize(), is(equalTo(13))); - assertThat(env.responseBufferSize(), is(equalTo(14))); - assertThat(env.requestBufferSize(), is(equalTo(15))); - assertThat(env.kvEndpoints(), is(equalTo(16))); - assertThat(env.viewEndpoints(), is(equalTo(17))); - assertThat(env.queryEndpoints(), is(equalTo(18))); - assertThat(env.retryStrategy(), is(instanceOf(FailFastRetryStrategy.class))); - assertThat(env.maxRequestLifetime(), is(equalTo(19L))); - assertThat(env.keepAliveInterval(), is(equalTo(20L))); - assertThat(env.autoreleaseAfter(), is(equalTo(21L))); - assertThat(env.bufferPoolingEnabled(), allOf(equalTo(false), not(defaultEnv.bufferPoolingEnabled()))); - } + assertThat(env.dcpEnabled(), allOf(equalTo(true), not(defaultEnv.dcpEnabled()))); + assertThat(env.sslEnabled(), allOf(equalTo(true), not(defaultEnv.sslEnabled()))); + assertThat(env.sslKeystoreFile(), is(equalTo("test"))); + assertThat(env.sslKeystorePassword(), is(equalTo("test"))); + assertThat(env.queryEnabled(), allOf(equalTo(true), not(defaultEnv.queryEnabled()))); + assertThat(env.queryPort(), is(equalTo(7))); + assertThat(env.bootstrapHttpEnabled(), allOf(equalTo(false), not(defaultEnv.bootstrapHttpEnabled()))); + assertThat(env.bootstrapCarrierEnabled(), allOf(equalTo(false), not(defaultEnv.bootstrapCarrierEnabled()))); + assertThat(env.bootstrapHttpDirectPort(), is(equalTo(8))); + assertThat(env.bootstrapHttpSslPort(), is(equalTo(9))); + assertThat(env.bootstrapCarrierDirectPort(), is(equalTo(10))); + assertThat(env.bootstrapCarrierSslPort(), is(equalTo(11))); + assertThat(env.ioPoolSize(), is(equalTo(12))); + assertThat(env.computationPoolSize(), is(equalTo(13))); + assertThat(env.responseBufferSize(), is(equalTo(14))); + assertThat(env.requestBufferSize(), is(equalTo(15))); + assertThat(env.kvEndpoints(), is(equalTo(16))); + assertThat(env.viewEndpoints(), is(equalTo(17))); + assertThat(env.queryEndpoints(), is(equalTo(18))); + assertThat(env.retryStrategy(), is(instanceOf(FailFastRetryStrategy.class))); + assertThat(env.maxRequestLifetime(), is(equalTo(19L))); + assertThat(env.keepAliveInterval(), is(equalTo(20L))); + assertThat(env.autoreleaseAfter(), is(equalTo(21L))); + assertThat(env.bufferPoolingEnabled(), allOf(equalTo(false), not(defaultEnv.bufferPoolingEnabled()))); + assertThat(env.tcpNodelayEnabled(), allOf(equalTo(false), not(defaultEnv.tcpNodelayEnabled()))); + assertThat(env.mutationTokensEnabled(), allOf(equalTo(true), not(defaultEnv.mutationTokensEnabled()))); + } - @AfterClass - public static void tearDown() { - context.close(); - } + @AfterClass + public static void tearDown() { + context.close(); + } } \ No newline at end of file diff --git a/src/test/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQueryTest.java b/src/test/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQueryTest.java index bc3b7032..a684aba8 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQueryTest.java +++ b/src/test/java/org/springframework/data/couchbase/repository/query/AbstractN1qlBasedQueryTest.java @@ -9,7 +9,7 @@ import java.util.List; import com.couchbase.client.java.document.json.JsonArray; import com.couchbase.client.java.document.json.JsonObject; -import com.couchbase.client.java.query.ParametrizedQuery; +import com.couchbase.client.java.query.ParameterizedQuery; import com.couchbase.client.java.query.Query; import com.couchbase.client.java.query.SimpleQuery; import com.couchbase.client.java.query.Statement; @@ -41,7 +41,7 @@ public class AbstractN1qlBasedQueryTest { Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues); JsonObject queryObject = query.n1ql(); - assertTrue(query instanceof ParametrizedQuery); + assertTrue(query instanceof ParameterizedQuery); assertEquals(st.toString(), query.statement().toString()); assertNull(query.params()); assertTrue(queryObject.containsKey("args")); @@ -60,7 +60,7 @@ public class AbstractN1qlBasedQueryTest { Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues); JsonObject queryObject = query.n1ql(); - assertTrue(query instanceof ParametrizedQuery); + assertTrue(query instanceof ParameterizedQuery); assertEquals(st.toString(), query.statement().toString()); assertNull(query.params()); assertTrue(queryObject.containsKey("args")); diff --git a/src/test/resources/configurations/couchbaseEnv-bean.xml b/src/test/resources/configurations/couchbaseEnv-bean.xml index 07fedf93..d280a67c 100644 --- a/src/test/resources/configurations/couchbaseEnv-bean.xml +++ b/src/test/resources/configurations/couchbaseEnv-bean.xml @@ -19,7 +19,7 @@ disconnectTimeout="6" dnsSrvEnabled="true" - dcpEnabled="false" + dcpEnabled="true" sslEnabled="true" sslKeystoreFile="test" sslKeystorePassword="test" @@ -43,6 +43,8 @@ keepAliveInterval="20" autoreleaseAfter="21" bufferPoolingEnabled="false" + tcpNodelayEnabled="false" + mutationTokensEnabled="true" /> \ No newline at end of file