Commit Graph

174 Commits

Author SHA1 Message Date
David Kelly
f69d51586d DATACOUCH-484 - Thread safety issue using findBy.
Support for positional parameters necessitated caching them, however
that was not done in a threadsafe fashion.  ThreadLocal storage is
sufficient to take care of the issue.  Added test for it while at it.
2019-11-13 08:37:17 -07:00
David Kelly
4a8e07f8fd DATACOUCH-479 - Fix issue with testcontainers usage.
After updating the POM to not have a fixed testcontainers version, we
discovered the tests were failing with later versions of testcontainers.  It
seems that they updated how they did WaitStrategy, deprecating the old way, so
our WaitStrategy was not being called.  That means no setup was done to
the cluster (passwords, buckets, etc...).  Simple fix was to move to the
new interface.
2019-11-08 08:32:05 -08:00
Mark Paluch
e1460dd8d2 DATACOUCH-485 - Migrate tests to AssertJ. 2019-10-14 14:56:01 +02:00
David Kelly
35c72238cb DATACOUCH-475 Couchbase builds failing.
There was an integration test which wasn't named properly, and
so it was running with regular tests.  This left the container
around, and all subsequent integration tests failed.  Simple
fix.
2019-08-15 14:11:29 -07:00
David Kelly
98a4999f37 DATACOUCH-383 - RxJavaCouchbaseTemplate should return generated id when saving.
Seems we fixed this for the non-Rx version, but not the RxJava version.  Followed
same basic strategy which was used for version, added a simple test.
2019-08-01 09:58:32 -07:00
David Kelly
4341edf941 DATACOUCH-462 - ReactiveCouchbaseRepository count() will raise exception when bucket is empty.
Small cleanup in the deleteAll test (which actually tests this as well), while
we are there.

Also, removed an unused import
2019-06-28 10:21:41 -06:00
David Kelly
64a91f1eb6 DATACOUCH-356 Fix cast issue in deleteAll (#201)
Plus a test.  I didn't notice that Douglas Six did basically the
same thing in another PR (this was a re-do of an earlier PR which
didn't quite do what we'd like).  So since I already had it done
and had a test, I closed that PR (#163) and added him to the author
list.

Also - repository.count() raises a NoSuchElementException after you
delete all the documents.  That seems like a bug, but we will deal
with that separately.
2019-06-26 16:37:11 -06:00
Johannes Jasper
55235b2bc2 DATACOUCH-206 - Provides a way to set distinct consistency on repository methods.
* add @WithConsistency annotation
* evaluate it and set consistency in AbstractN1qlBasedQuery
* evaluate it and set consistency in ReactiveAbstractN1qlBasedQuery
* add documentation on @WithConsistency

Original pull request: #198.
2019-06-26 21:48:01 +02:00
David Kelly
7b3352e8db Fix test issue which only shows up in java 11 (#199)
Seems that LocalDateTime now has microseconds, so the comparison of the unconverted
and converted LocalDateTime will fail, since the conversion/mapping only retains
millisecond precision.
2019-06-21 09:30:55 -07:00
Mark Paluch
abee71cf54 DATACOUCH-439 - URL Cleanup. 2019-06-05 11:34:54 +02:00
David Nault
67479aa756 DATACOUCH-452 - SimpleCouchbaseRepositoryIntegrationTests fails
Ignore the flaky test until we can investigate cause of failure.
2019-05-22 11:28:22 -07:00
David Nault
9080c2dede DATACOUCH-451 - Should be able to run integration tests and all unit tests
This change enables running the integration tests with the command:

    mvn verify

Update the integration tests so they compile and pass. Rename them according
to Spring Data convention (*IntegrationTests.java) so they are executed by the
failsafe plugin instead of the surefire plugin. Move them to same folder as
unit tests according to Spring Data convention.

Update the surefire plugin configuration to include unit tests in classes
named `*Test` as well as `*Tests`. Prior to this change about half of the unit
tests were being ignored.

Integration test changes
========================

Use static factory methods for Sort and PageRequest instead of calling the
constructors which are now private.

Import EvaluationContextExtension from its new package. Remove reference to
deprecated EvaluationContextExtensionSupport.

Retry all calls to `getRepository` because otherwise they may fail due to
concurrent index creation.

Fix test `shouldDeriveViewParameters` to assume results are unordered.

Fail fast if the `server.properties` resource is missing.

Increase query and view timeouts; container is a big sluggish sometimes.
2019-05-20 18:46:21 -07:00
Spring Operator
2f4500e9c7 DATACOUCH-439 - URL Cleanup.
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 219 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).

Original Pull Request: #195
2019-03-22 11:19:57 +01:00
Subhashni Balakrishnan
e1e4385896 DATACOUCH-438 - Move off deprecations in Spring Data Commons.
Remove stray import IsNewStrategyFactory. This has been removed from commons and causing build failure.

Related ticket: DATACMNS-1496.
2019-03-13 19:01:26 +01:00
Subhashni Balakrishnan
580a50b40f DATACOUCH-388 Add support for ANSI-JOIN across entities
Motivation
----------
To support ANSI JOIN across associated entities

Changes
-------
N1qlJoin annotation on an associated entity field is discovered by the
couchbaseTemplate, which uses N1qlJoinResolver to build and resolve the
query. The query can be resolved eagerly or lazily based on the fetch
type configuration. The retrieved results are then mapped to the
associated entity. In the lazy resolver, a proxy is set on the property
which resolves on the first access.

Results
-------
Verified by unit and integration tests. ANSI join is now possible across
entities.

Original PR: #174
2019-02-12 09:56:58 -08:00
Mark Paluch
f4116f6de6 DATACOUCH-425 - Update copyright years to 2019. 2019-01-02 12:31:10 +01:00
Subhashni Balakrishnan
c4491dc8b4 DATACOUCH-413 Use parameterized queries for Query derivation
Changes
-------
- N1ql query creators implement an interface which provides the place
holder values.
- The query creator uses a position index counter to inject place holders in
the statement created and caches the place holder values in an array.
- Repository query constructor passes the generated query statement
and place holder values to query through the SDK.
- Cleanup N1ql integration tests for count validation and also add
couple of more tests

Results
-------
The testing for changes are already covered under the modified existing tests
in N1qlQueryCreator and Repository.
2018-11-26 11:23:14 -08:00
Subhashni Balakrishnan
9840acd2c6 DATACOUCH-384 - Apply converters to string based query parameters
Apply the converters registered to serialize the positional and named
parameters to match the database representation

Original Pull Request: #172.
2018-11-07 14:39:11 -08:00
Subhashni Balakrishnan
e360c23d92 DATACOUCH-376 - Apply custom conversions for collection elements
Original Pull Request: #164.
2018-07-16 11:10:43 -07:00
Subhashni Balakrishnan
076dcc0219 DATACOUCH-389 - Update to Couchbase-Java-Client 2.6.0
Added the new committed environment configurables to the xml based
configuration parser info. Also added couchbase FLE encryption library as bean
instantiation introspects class methods and fails with ClassNotFound
exception.

Original Pull Request: #165.
2018-07-16 10:25:56 -07:00
Oliver Gierke
b18761b409 DATACOUCH-373 - Adapt to API changes in Spring Data Commons.
Related tickets: DATACMNS-1275.
2018-04-09 14:56:27 +02:00
Subhashni Balakrishnan
0960f11a9c DATACOUCH-322 - Add RBAC username and password support
Motivation
----------
Couchbase server 5.0 allows role based access control and this allows
for users to be created and granted access to use bucket. Expose this
feature in SDC.

Changes
-------
1. Couchbase configurations allow for user name to be set. The user password
property is still retrieved from bucket password property.
2. CouchbaseFactoryBean has additional constructor for the username
property.
3. Couchbase bucket schema for xml configurations also includes username
property.
4. Integration tests have been restructured majorly to accomadate for
username
    - Testcontainers are used to allow for container based testing.
    - Container based testing is optional, it can be configured using
      resources/server.properties

Results
-------
The RBAC change has been tested with pre 5.0 and 5.0+ versions using
containers. The tests pass.

Original pull request: #158.
2018-03-07 15:09:15 -08:00
Subhashni Balakrishnan
039e106032 DATACOUCH-362 - Use dynamic proxying
Dynamic proxying for couchbase environment instead of an explicit no shutdown
proxy.

Original pull request: #157.

DATACOUCH-363 - Upgrade to 2.5.5

Java client upgrade. Remove the dcpEnabled property from
CouchbaseEnvironment factory bean and parser.

Original pull request: #157.
2018-03-07 13:26:55 -08:00
Mark Paluch
e8c647fb9d DATACOUCH-350 - Polishing.
Add test to verify configuration extension. Fix reactive module name to match non-reactive module name. Add author tags. Reorder methods, add javadoc comments.

Original pull request: #153.
2017-11-25 11:08:51 +01:00
Oliver Gierke
49c0b6def9 DATACOUCH-346 - Adapt API changes in Property in test cases. 2017-10-27 11:30:35 +02:00
Ben Benoit
4908749bcd DATACOUCH-328 - Fix document expiry when using expressions
When using an expiry expression with TimeUnit.DAYS larger than 30 days
the document expiry is not correctly set.

Original pull request: #150.
2017-10-17 11:34:12 -07:00
Oliver Gierke
5f24502175 DATACOUCH-330 - Improved detectability of Couchbase repositories in strict configuration mode.
We now make sure that repositories for domain types annotated with @Document or extending CouchbaseRepository are considered strict repository candidates.
2017-08-28 11:24:48 +02:00
Mark Paluch
9218b09f26 DATACOUCH-320 - Adapt to API changes in mapping subsystem. 2017-07-04 14:37:18 +02:00
Subhashni Balakrishnan
c7e4801305 DATACOUCH-310 - Convert N1ql query parameter enums to string values
Original pull request: #148.
2017-06-12 17:24:11 -07:00
Subhashni Balakrishnan
70343b0ac1 DATACOUCH-296 Add support for delete n1ql queries
Changes to support delete query by query derivation and SpEL based
queries.
- Adds a N1qlMutateQueryCreator which constucts the delete query
using dsl.
- Adds new SpEL values delete and returning required for delete
queries.

Original pull request: #144.
2017-06-12 17:22:53 -07:00
Oliver Gierke
22205678ef DATACOUCH-305 - Adapt to API changes in repository interfaces. 2017-05-03 17:48:06 +02:00
Mark Paluch
19f7597dc0 DATACOUCH-302 - Adapt to moved CustomConversions to Spring Data Commons.
Introduce CassandraCustomConversions extending o.s.d.convert.CustomConversions.

Remove o.s.d.couchbase.core.convert.CouchbaseCustomConversions implementation and utility classes, extend CouchbaseCustomConversions. Replace references to o.s.d.c.c.c.CustomConversions with o.s.d.convert.CustomConversions. Adapt tests and MappingCouchbaseConverter to CouchbaseCustomConversions.

Related ticket: DATACMNS-1035.
2017-04-24 10:20:32 +02:00
Subhashni Balakrishnan
ffb6ab8ff3 DATACOUCH-294 Fix failing N1ql unit tests due to changes in commons 2017-04-12 16:58:19 -07:00
Subhashni Balakrishnan
03bb6372c7 DATACOUCH-276 Dont escape the order by property as a whole
Escape each nested level and concatenate with a period

Original pull request: #141.
2017-04-11 16:17:13 -07:00
Subhashni Balakrishnan
620586af3b DATACOUCH-90 Polishing
Add modified couchbase specific jsr310 converters which converts to
number formats instead of date objects which cannot be handled by the
client.

Original pull request: #139.
2017-04-11 16:17:13 -07:00
Subhashni Balakrishnan
de4e02cedb DATACOUCH-90 - Add commons Jsr310 converters to support Java 8 date/time
Original pull request: #139.
2017-04-10 11:50:15 -07:00
Subhashni Balakrishnan
4cca923c59 DATACOUCH-290 - Upgrade to java-client 2.4.4
Original pull request: #136.
2017-04-10 11:33:02 -07:00
Alexander Derkach
6429dca5e6 DATACOUCH-287 - Add CAS operations to RxJavaCouchbaseOperations.
Original pull request: #135.
2017-04-06 06:57:53 -07:00
Oliver Gierke
1fc4a05f37 DATACOUCH-273 - Adapt API changes after upgrade to Mockito 2.7. 2017-03-24 09:57:13 +01:00
Mark Paluch
439ab14131 DATACOUCH-273 - Adapt to API changes in Spring Data Commons. 2017-03-24 09:57:13 +01:00
Mark Paluch
141dbefd3d DATACOUCH-273 - Integrate Data Commons Java 8 upgrade branch.
Replace PersistentEntity.doWithProperties(…) and .doWithAssociations(…) with stream processing using PersistentEntity.getPersistentProperties() and PersistentEntity.getAssociations().
2017-03-24 09:57:13 +01:00
Subhashni Balakrishnan
162d8124ab DATACOUCH-260 - Update to 2.4.1 and fix tests
Adapted changes to 3.0 branch

Original pull request: #131.
2017-02-05 13:08:38 -08:00
Subhashni Balakrishnan
d62f4bbe8c DATACOUCH-146 - Reactive repositories support
- Adds experimental support for reactor types in reactive CRUD and Sorting
  repositories using RxJava1Template
- Refactor configuration and query classes to be reusable by reactive repositories

Original pull request: #130.
2017-02-05 10:34:57 -08:00
Subhashni Balakrishnan
b52dee3a3c DATACOUCH-251 - Wrap base where criteria with parenthesis for OR expressions.
Base criteria for the query should be wrapped before adding the entity filter criteria so the priority of filtering is clear.
2016-12-20 10:57:47 +01:00
Oliver Gierke
610a6e51d2 DATACOUCH-246 - Polishing.
Removed the dynamic return type obtained from the ResultProcessor held in a query implementation field as this breaks thread safety. We now hand the type to read into the execution methods.

Adapted test cases accordingly and removed a bit of mocking.

Original pull request: #122.
2016-12-02 18:04:15 +01:00
Subhashni Balakrishnan
ce356f827f DATACOUCH-246 - Projections support for query derivation.
Used the result processor projecting information to just fetch the selected fields and again to post process results to projection object/interfaces.

Added test for projection using DTO.

Original pull request: #122.
2016-12-02 18:04:12 +01:00
Andrey Rubtsov
341c41250d DATACOUCH-239 - Allow configurable expiry in @Document.
Fixes #120
2016-08-18 13:21:14 +02:00
markramach
f18f61e371 DATACOUCH-237 - Prevent groupby on generated count queries
Fixes #119
2016-07-07 11:05:51 +02:00
Simon Bland
a40919ef8e DATACOUCH-235 - Fixed multiple Couchbase environments.
Defining <couchbase:env/> in XML configuration was causing a double
instantiation of DefaultCoreEnvironment, with subsequent warning in
logs:

[main] WARN c.c.client.core.env.CoreEnvironment - More than 1 Couchbase
Environments found (2), this can have severe impact on performance and
stability. Reuse environments!
2016-06-17 15:57:51 +02:00
Geoffrey Mina
7a57a235d8 DATACOUCH-226 - Enable strict @Field mapping
If the MappingCouchbaseConverter strict mode is enabled and no annotation is present, the property will not be eligible for document mapping.

This allows to specifically ignore some attributes in Couchbase only. For generally ignoring attributes in any Spring Data backing store, prefer the standard `@Transient`.

Closes #112
2016-05-20 17:52:41 +02:00