Commit Graph

551 Commits

Author SHA1 Message Date
Christoph Strobl
1738028359 Prepare 4.2 M2 (2021.0.0).
See #978
2021-01-13 15:33:34 +01:00
Christoph Strobl
4172006d01 Updated changelog.
See #978
2021-01-13 15:33:33 +01:00
Christoph Strobl
a8c9f81937 Updated changelog.
See #979
2021-01-13 15:16:25 +01:00
Michael Reiche
3364e0fa7f DATACOUCH-588 - Refactoring part 1 of n. (#278)
* DATACOUCH-588 - Implement pageable and realign repo query

This implements pageable for non-reactive queries and
realigns reactive queries with other spring-data projects
to facilitate the implementaion of pageable (done) and other
types of queries such as projection and distinct (not yet
done)

* DATACOUCH-588 - Implement pageable and realign repo query

This implements pageable for non-reactive queries and
realigns reactive queries with other spring-data projects
to facilitate the implementaion of pageable (done) and other
types of queries such as projection and distinct (not yet
done)

* DATACOUCH-588 - Refactoring part 1 of n.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-21 13:48:50 -08:00
Michael Reiche
9c9dde7312 DATACOUCH-645 - Support document expiryExpression. (#296)
Support document expiryExpression and make the initial expiry
to be null instead of Zero in the fluent API. This allows
a client to 'unset' the expiry from an annotation by explcitly
setting withExpiry(Zero).

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-16 15:06:37 -08:00
Michael Reiche
03ad3697ae DATACOUCH-550 - Autoindexing does not work spring-boot application. (#297)
Due to the interdependencies of beans, autoindexing does not work
in the startup of a normal spring-boot application. Processing of
entities occurs during the initialization of CouchbaseMappinContext,
which occurs before initialization of MappingCouchbaseConverter,
which occurs before the initialization of CouchbaseTemplate -
which creates the indexCreator listener. So when the
AbstractMappingContext (CouchbaseMappingContext) is publishing
MappingContextEvents - there is not yet any indexCreator.
And subsequent processing of entities finds the entities cached,
and therefore does not publish MappingContextEvents. This change
overrides the addPersistentEntity() and getPersistentEntity()
methods of AbstractMappingContext such that caching does not
preven the MappingContextEvents from being published.  This change
also exposes indexCreator classesSeen map to CouchbaseMappingContext
so that once an entity has been processed by indexCreator, it is
not published again.

Autoindexing by SpringJUnitConfig did work prior to this change.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-16 15:02:46 -08:00
mikereiche
6c6dc13de4 DATACOUCH-677 - Revert "Datacouch 550 autoindex not working in spring boot app (#295)"
This reverts commit 8ebb81b62d.
2020-12-16 14:58:06 -08:00
Michael Reiche
8ebb81b62d Datacouch 550 autoindex not working in spring boot app (#295)
* DATACOUCH-550 Autoindexing only works from SpringJunitConfig

Due to the interdependency in bean creation, Autoindexing does not
work in a normal spring-boot application. This change overrides
the addPersistentEntity and getPersistentEntity of CouchbaseMappingContext
to avoid entries cached before the indexCreator was listening from
preventing MappingContextEvents from being published after the indexCreator
is listening. It also exposes the indexCreators classesSeen map so that
MappingEvents for an entity are not re-published after the indexCreator
has seen them.

* DATACOUCH-550 - Autoindexing does not work spring-boot application.

Due to the interdependencies of beans, autoindexing does not work
in the startup of a normal spring-boot application. Processing of
entities occurs during the initialization of CouchbaseMappinContext,
which occurs before initialization of MappingCouchbaseConverter,
which occurs before the initialization of CouchbaseTemplate -
which creates the indexCreator listener. So when the
AbstractMappingContext (CouchbaseMappingContext) is publishing
MappingContextEvents - there is not yet any indexCreator.
And subsequent processing of entities finds the entities cached,
and therefore does not publish MappingContextEvents. This change
overrides the addPersistentEntity() and getPersistentEntity()
methods of AbstractMappingContext such that caching does not
preven the MappingContextEvents from being published.  This change
also exposes indexCreator classesSeen map to CouchbaseMappingContext
so that once an entity has been processed by indexCreator, it is
not published again.

Autoindexing by SpringJUnitConfig did work prior to this change.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-16 14:23:24 -08:00
Michael Reiche
608b013de8 DATACOUCH-675 - Factor out interfaces for common methods. (#293)
Added interfaces for apis on core objects which are common among
many objects. For instance withExpiry and withExpirty on all the
insert/replace/upsert/remove objects.  The definition of an interface
simplyfies testing of all the possible combinations - instead of having
four (or eight, counting Reactive), there is one interface to test
them all.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-14 13:50:04 -08:00
Michael Reiche
0494247cb1 DATACOUCH-526 - N1qlJoinResolver not escaping bucketNames with special characters (#291)
It escape the first bucket name, but not the second one.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-09 23:50:26 -08:00
Michael Reiche
662a84bba6 DATACOUCH-672 - reinstate replace expiry tests (#289)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-09 08:44:23 -08:00
Michael Reiche
69e0a1dc33 DATACOUCH-666 - Handle immutable entity in replace. (#288)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-09 08:44:17 -08:00
Michael Reiche
bce764c712 DATACOUCH-630 - Add expiry to replace 4.2.x (#287)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-09 07:56:08 -08:00
Mark Paluch
af51c27015 DATACOUCH-648 - Updated changelog. 2020-12-09 16:47:44 +01:00
Mark Paluch
93fc6891fa DATACOUCH-640 - Prepare 4.2 M1 (2021.0.0). 2020-12-09 15:21:30 +01:00
Mark Paluch
83e3e3af9c DATACOUCH-640 - Updated changelog. 2020-12-09 15:21:27 +01:00
Mark Paluch
d325d98a4a DATACOUCH-638 - Updated changelog. 2020-12-09 12:42:28 +01:00
Mark Paluch
214d0765cd DATACOUCH-637 - Updated changelog. 2020-12-09 09:59:13 +01:00
Michael Reiche
3c59af3cc8 DATACOUCH-661 - Fix integrations tests from 650. (#281)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-08 00:30:45 -08:00
Michael Reiche
8c1a24c619 DATACOUCH-653 - Update example versions in documentation. (#280)
The format has changed as well. The release versions no longer have
the .RELEASE suffix - they are just the version number (i.e. 4.1.1)
And the snapshot versions have the suffix -SNAPSHOT (i.e. 4.2.0-SNAPSHOT)
instead of 4.1.0.BUILD-SNAPSHOT

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-12-04 10:25:58 -08:00
Mark Paluch
94e6308123 DATACOUCH-650 - Polishing.
Reorder methods. Remove superfluous final keyword. Reformat pom. Fix dependency to Spring Data Commons.

Original pull request: #279.
2020-11-25 11:48:04 +01:00
Jens Schauder
3aeff66a3b DATACOUCH-650 - Implements CrudRepository and ReactiveCrudRepository.deleteById(Iterable<ID> ids).
Original pull request: #279.
2020-11-25 11:47:49 +01:00
Mark Paluch
605285188b DATACOUCH-639 - Updated changelog. 2020-11-11 12:34:41 +01:00
Mark Paluch
6a51b0c573 DATACOUCH-635 - Prepare 4.1 GA (2020.0.0). 2020-10-28 15:46:33 +01:00
Mark Paluch
3d52b583b8 DATACOUCH-635 - Updated changelog. 2020-10-28 15:46:28 +01:00
Mark Paluch
7c5be60f9e DATACOUCH-611 - Updated changelog. 2020-10-28 15:03:04 +01:00
Mark Paluch
29c37ba80d DATACOUCH-610 - Updated changelog. 2020-10-28 12:15:06 +01:00
Mark Paluch
eb35485f2d DATACOUCH-636 - Updated changelog. 2020-10-28 11:32:32 +01:00
Michael Reiche
182d45ab6e DATACOUCH-625 - Save doesn't return updated entity if immutable. (#274)
Modified applyUpdatedCas() to return accessor.getBean() which will
occur if the version property is Immutable.
Created applyUpdateId() that is analogous to applyUpdatedCas()
Factored out the equals() method that was used by a number of
test entity objects.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-22 10:54:43 -07:00
Haris Alesevic
a85720c8f4 DATACOUCH-619 - FindByMatchingQuery integration test
Verify that findByQuery works as expected (fixed as part of DATACOUCH-603)
2020-10-14 14:55:40 -07:00
Michael Reiche
1955cf45cd DATACOUCH-626 - Handle reading into entity with only all-args constructor; version primative type.
The version arg - which is not in the document - will be passed
into the constructor as a null which will fail if it is a primitive
type. This change will pre-populated the converted object with
the version/cas, so that it is not null.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-14 14:54:01 -07:00
Christoph Strobl
192fb27b60 DATACOUCH-612 - Prepare 4.1 RC2 (2020.0.0). 2020-10-14 14:27:38 +02:00
Christoph Strobl
cc15cd50c8 DATACOUCH-612 - Updated changelog. 2020-10-14 14:27:37 +02:00
Michael Reiche
0ce0f36b49 DATACOUCH-623 - Add replace() method to CouchbaseRepository for CAS usage. (#268)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-12 17:16:01 -07:00
Michael Reiche
7c431d640f DATACOUCH-583 - Nested properties in queries not working. (#270)
The complete property path was being quoted instead of the individual
components.  ie.  `address.street` instead of `address`.`street`
Also fixed another issue - changed the maybeQuote() method for
property names to correctly look for back-tics instead of double
quotes and changed the name accordingly.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-12 13:22:19 -07:00
Michael Reiche
ed02ed535e DATACOUCH-632 - Fix compilation error introduced in DATACOUCH-603. (#269)
Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-09 18:04:03 -07:00
Michael Reiche
1b5c32150e DATACOUCH-603 Do not cast query parameters in N1qlQueryCreator.
For IN and NOT_IN - they can take varargs, an array or a JsonArray
Don't cast query criteria parameters, let parameter accessor handle that.
Fixed conversion of query criteria values to parameters
Cleaned up QueryCriteria

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
2020-10-09 14:59:16 -07:00
mikereiche
e72cdba6ee DATACOUCH-616 - Fix parsing of String Query containing conditionals in quotes
For a query as below that has conditional portions, the parsing for
parameters was being done before the conditional portions were being
resolved, which left the parameters between quotes where they wre
not being recognized as query parameters.

@Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} " +
	" #{#projectIds != null ? 'AND iata IN $1' : ''} ")
Long count(@Param("projectIds") List<String> projectIds)
2020-10-05 10:45:40 -07:00
mikereiche
82edad5759 DATACOUCH-605 - Support ScanConsistency in n1ql queries 2020-10-05 10:14:03 -07:00
Haris Alesevic
fab72ee9c9 DATACOUCH-615 Use query in removeByQuery (#264)
* DATACOUCH-615 Use query in removeByQuery

Use provided query instead of hardcoded statement.

* DATACOUCH-615 Better method naming in Query class

* DATACOUCH-615 Replace hard-coded meta fields

* DATACOUCH-615 Test findByQuery.matching

* DATACOUCH-615 Remove failing test
2020-10-05 10:11:37 -07:00
mikereiche
2a06578145 DATACOUCH-620 - Fix nested object id/@Id issue.
Only treat the id (or @Id) field in top-level objects as the id.
2020-10-05 10:01:15 -07:00
mikereiche
ae43ed9949 DATACOUCH-604 - Fix NullPointerException when identifying Id fields. Handle @Field. 2020-09-16 13:46:48 -07:00
mikereiche
e9add0c90c DATACOUCH-608 - Propagate expiry option and annotation to insert and upsert calls. 2020-09-16 13:06:03 -07:00
mikereiche
4a52268f19 DATACOUCH-604 - Fix NPE when looking for Id field in interface.
This was failing with a repository for the domain object CouchbaseOAuth2AccessToken.
The following dependency is needed.

        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.4.1.RELEASE</version>
        </dependency>

package org.springframework.data.couchbase.domain;

import org.springframework.data.annotation.Id;
import org.springframework.data.couchbase.core.mapping.Document;
import org.springframework.data.couchbase.core.mapping.Field;
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;

@Document(expiry = 30 * 24 * 60 * 60)
public class CouchbaseOAuth2AccessToken extends DefaultOAuth2AccessToken {

	private static final long serialVersionUID = 6537949925775752989L;

	@Id
	private String tokenId;

	@Field
	private String authentication;

	@Field
	private String authenticationKey;

	@Field
	private String clientId;

	@Field
	private String userName;

	// getters and setters omitted for brevity

	private CouchbaseOAuth2AccessToken() {
		this((String) null);
	}

	public CouchbaseOAuth2AccessToken(OAuth2AccessToken accessToken) {
		super(accessToken);
		this.tokenId = accessToken.getValue();
	}

	public CouchbaseOAuth2AccessToken(String value) {
		super(value);
		this.tokenId = value;
	}

}
2020-09-16 13:04:07 -07:00
Mark Paluch
b69fcb8afe DATACOUCH-601 - Prepare 4.1 RC1 (2020.0.0). 2020-09-16 13:57:09 +02:00
Mark Paluch
5e3117da29 DATACOUCH-601 - Updated changelog. 2020-09-16 13:57:07 +02:00
Mark Paluch
16e86f83a1 DATACOUCH-602 - Updated changelog. 2020-09-16 12:16:35 +02:00
Mark Paluch
8242b53b17 DATACOUCH-592 - Updated changelog. 2020-09-16 11:20:11 +02:00
Mark Paluch
eeb03d076f DATACOUCH-591 - Updated changelog. 2020-09-16 10:39:02 +02:00
mikereiche
23d2f61d45 DATACOUCH-595 - Add cas to replace options if present on entity. 2020-09-11 15:18:27 -07:00