Skip to content

Include Jakarta NoSQL TCK at mongodb databases #277

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 58 commits into from
Jan 4, 2025
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
170c87b
chore: include mongodb tck driver
otaviojava Jun 2, 2024
9f813db
feat: include mongodb configuration to run tests
otaviojava Jun 2, 2024
cf2b334
feat: update and rebase codebase
otaviojava Dec 24, 2024
460cdc0
feat: cfix conversion
otaviojava Dec 24, 2024
3680b37
chore: refactoring mongodb template
otaviojava Dec 25, 2024
06ba201
feat: update mongodd template
otaviojava Dec 25, 2024
ddc588d
feat: update report to magazine
otaviojava Dec 25, 2024
ebadb2a
chore: creating tck maven profile
dearrudam Dec 29, 2024
0a2a713
chore: added property to enable nosql tck tests execution
dearrudam Dec 29, 2024
7248bbe
chore: removed unnecessary method calling
dearrudam Dec 29, 2024
5b86341
chore: added documentation about performing the Jakarta NoSQL TCK
dearrudam Dec 29, 2024
3526e63
feat: small fix at dynamo document manager
otaviojava Jan 1, 2025
e08a52b
feat: remove unecessary extends object
otaviojava Jan 1, 2025
2952c65
feat: remove unecessary toString
otaviojava Jan 1, 2025
be7815d
feat: remove unecessary semi comma
otaviojava Jan 1, 2025
a2fcc05
feat: remove unecessary imports
otaviojava Jan 1, 2025
5ca9e8c
feat: enhnace switch case at DynamoDB converter
otaviojava Jan 1, 2025
cf66341
feat: update orientdb with Safe varags annotations
otaviojava Jan 1, 2025
0085225
feat: update cassandra template with lambda
otaviojava Jan 1, 2025
a759bf3
feat: enhance code with method reference
otaviojava Jan 1, 2025
b65bc9e
docs: enhance documentation at solr configuration
otaviojava Jan 1, 2025
2351e66
feat: fix log creation at TableCreation configuration at oracle database
otaviojava Jan 1, 2025
97d1252
feat: remove unecessary method at orientdbbean
otaviojava Jan 1, 2025
cf5cf6c
chore: rebase remote branch
dearrudam Jan 3, 2025
62d6ffc
Merge branch 'main' into include-tck-nosql
dearrudam Jan 3, 2025
184e6dc
feat: update mapping integration
otaviojava Jan 3, 2025
c651f85
feat: fix mongodb
otaviojava Jan 3, 2025
bd62173
feat: update contact cassandra sample
otaviojava Jan 3, 2025
60b3d2d
feat: update contact entity at cassandra
otaviojava Jan 3, 2025
d0fac1b
feat: inline to Animal
otaviojava Jan 4, 2025
d8bf029
feat: update creature
otaviojava Jan 4, 2025
9e78f36
feat: rename entity class
otaviojava Jan 4, 2025
a567c88
feat: rename entity
otaviojava Jan 4, 2025
9d69776
test: update test on graph
otaviojava Jan 4, 2025
af3e735
feat: rename and update entities
otaviojava Jan 4, 2025
ee33c10
feat: update terminology
otaviojava Jan 4, 2025
1f7f32c
feat: rename to magazine at araongdb
otaviojava Jan 4, 2025
a086bf5
feat: update arangodb entities
otaviojava Jan 4, 2025
e850103
fat: rename and update human repository
otaviojava Jan 4, 2025
f8a20e4
update couchbase properties
otaviojava Jan 4, 2025
04ac9b3
feat: udpate human sample code
otaviojava Jan 4, 2025
15926f5
feat: udpate casandra code smaple
otaviojava Jan 4, 2025
823885e
feat: udpate structure terminology
otaviojava Jan 4, 2025
5385c72
feat: update article instead of mongodb book
otaviojava Jan 4, 2025
1b58ddf
test: udpate mongodb test integration
otaviojava Jan 4, 2025
8ce39ee
feat: update magainze sample code
otaviojava Jan 4, 2025
400f97b
feat: udpate ES database
otaviojava Jan 4, 2025
b50929d
feat: update tests
otaviojava Jan 4, 2025
ad6e269
fat: update structure avoid tck names
otaviojava Jan 4, 2025
e7ed2c7
feat: update test structure
otaviojava Jan 4, 2025
c2a8653
test: update arangodb test
otaviojava Jan 4, 2025
c70be15
test: fix dynamodb test
otaviojava Jan 4, 2025
30b7aea
test: update ES
otaviojava Jan 4, 2025
4009ca8
test: update arangodb
otaviojava Jan 4, 2025
8ac1638
chore: update orientdb version 3.2.36
otaviojava Jan 4, 2025
68c5d8e
chore: update dynamodb
otaviojava Jan 4, 2025
1933e5a
chore: update couchbase
otaviojava Jan 4, 2025
8a854b9
docs: update changelog
otaviojava Jan 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions jnosql-mongodb/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

<properties>
<monbodb.driver>5.2.1</monbodb.driver>
<jakarta.nosql.version>1.0.0-SNAPSHOT</jakarta.nosql.version>
</properties>
<dependencies>
<dependency>
Expand All @@ -44,6 +45,27 @@
<artifactId>mongodb-driver-sync</artifactId>
<version>${monbodb.driver}</version>
</dependency>
<dependency>
<groupId>jakarta.nosql</groupId>
<artifactId>jakarta.nosql-tck</artifactId>
<version>${jakarta.nosql.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<dependenciesToScan>
<dependency>jakarta.nosql:jakarta.nosql-tck</dependency>
</dependenciesToScan>
</configuration>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
import jakarta.nosql.Entity;

@Entity
public record BookOrderItem(@Column Book book, @Column Integer quantity) {
public record BookOrderItem(@Column Magazine magazine, @Column Integer quantity) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@

@EnableAutoWeld
@AddPackages(value = {Database.class, EntityConverter.class, DocumentTemplate.class, MongoDBTemplate.class})
@AddPackages(Book.class)
@AddPackages(Magazine.class)
@AddPackages(Reflections.class)
@AddPackages(Converters.class)
@AddExtensions({EntityMetadataExtension.class,
Expand All @@ -72,14 +72,14 @@ class CustomRepositoryIntegrationTest {

@Inject
@Database(DatabaseType.DOCUMENT)
BookCustomRepository bookCustomRepository;
MagazineCustomRepository magazineCustomRepository;


@BeforeEach
void cleanUp() {
try (MongoClient mongoClient = INSTANCE.mongoClient()) {
MongoCollection<Document> collection = mongoClient.getDatabase(DATABASE_NAME)
.getCollection(Book.class.getSimpleName());
.getCollection(Magazine.class.getSimpleName());
collection.deleteMany(new BsonDocument());
await().atMost(Duration.ofSeconds(2))
.until(() -> collection.find().limit(1).first() == null);
Expand All @@ -88,71 +88,71 @@ void cleanUp() {

@Test
void shouldSave() {
Book book = new Book(randomUUID().toString(), "Effective Java", 1);
assertThat(bookCustomRepository.save(book))
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
assertThat(magazineCustomRepository.save(magazine))
.isNotNull()
.isEqualTo(book);
.isEqualTo(magazine);

assertThat(bookCustomRepository.getById(book.id()))
assertThat(magazineCustomRepository.getById(magazine.id()))
.as("should return the persisted book")
.hasValue(book);
.hasValue(magazine);

Book updated = new Book(book.id(), book.title() + " updated", 2);
Magazine updated = new Magazine(magazine.id(), magazine.title() + " updated", 2);

assertThat(bookCustomRepository.save(updated))
assertThat(magazineCustomRepository.save(updated))
.isNotNull()
.isNotEqualTo(book);
.isNotEqualTo(magazine);

assertThat(bookCustomRepository.getById(book.id()))
assertThat(magazineCustomRepository.getById(magazine.id()))
.as("should return the updated book")
.hasValue(updated);
}

@Test
void shouldSaveAllAndFindByIdIn() {

List<Book> books = List.of(
new Book(randomUUID().toString(), "Java Persistence Layer", 1)
, new Book(randomUUID().toString(), "Effective Java", 3)
, new Book(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Book(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
List<Magazine> magazines = List.of(
new Magazine(randomUUID().toString(), "Java Persistence Layer", 1)
, new Magazine(randomUUID().toString(), "Effective Java", 3)
, new Magazine(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Magazine(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
);

assertThat(bookCustomRepository.saveAll(books))
assertThat(magazineCustomRepository.saveAll(magazines))
.isNotNull()
.containsAll(books);
.containsAll(magazines);

assertThat(bookCustomRepository.findByIdIn(books.stream().map(Book::id).toList()))
assertThat(magazineCustomRepository.findByIdIn(magazines.stream().map(Magazine::id).toList()))
.as("should return the persisted books")
.containsAll(books);
.containsAll(magazines);

}

@Test
void shouldSaveAllAndFindBy() {

Book javaPersistenceLayer = new Book(randomUUID().toString(), "Java Persistence Layer", 1);
Book effectiveJava = new Book(randomUUID().toString(), "Effective Java", 3);
Book jakartaEeCookbook = new Book(randomUUID().toString(), "Jakarta EE Cookbook", 1);
Book masteringTheJavaVirtualMachine = new Book(randomUUID().toString(), "Mastering The Java Virtual Machine", 1);
Magazine javaPersistenceLayer = new Magazine(randomUUID().toString(), "Java Persistence Layer", 1);
Magazine effectiveJava = new Magazine(randomUUID().toString(), "Effective Java", 3);
Magazine jakartaEeCookbook = new Magazine(randomUUID().toString(), "Jakarta EE Cookbook", 1);
Magazine masteringTheJavaVirtualMachine = new Magazine(randomUUID().toString(), "Mastering The Java Virtual Machine", 1);

List<Book> books = List.of(
List<Magazine> magazines = List.of(
javaPersistenceLayer
, effectiveJava
, jakartaEeCookbook
, masteringTheJavaVirtualMachine
);

assertThat(bookCustomRepository.saveAll(books))
assertThat(magazineCustomRepository.saveAll(magazines))
.isNotNull()
.containsAll(books);
.containsAll(magazines);

PageRequest pageRequest = PageRequest.ofSize(2);
Order<Book> orderByTitleAsc = Order.by(Sort.asc("title"));
Order<Magazine> orderByTitleAsc = Order.by(Sort.asc("title"));

Page<Book> page1 = bookCustomRepository.listAll(pageRequest, orderByTitleAsc);
Page<Book> page2 = bookCustomRepository.listAll(page1.nextPageRequest(), orderByTitleAsc);
Page<Book> page3 = bookCustomRepository.listAll(page2.nextPageRequest(), orderByTitleAsc);
Page<Magazine> page1 = magazineCustomRepository.listAll(pageRequest, orderByTitleAsc);
Page<Magazine> page2 = magazineCustomRepository.listAll(page1.nextPageRequest(), orderByTitleAsc);
Page<Magazine> page3 = magazineCustomRepository.listAll(page2.nextPageRequest(), orderByTitleAsc);

assertSoftly(softly -> {

Expand All @@ -177,50 +177,50 @@ void shouldSaveAllAndFindBy() {

@Test
void shouldDelete() {
Book book = new Book(randomUUID().toString(), "Effective Java", 1);
assertThat(bookCustomRepository.save(book))
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
assertThat(magazineCustomRepository.save(magazine))
.isNotNull()
.isEqualTo(book);
.isEqualTo(magazine);

assertThat(bookCustomRepository.getById(book.id()))
assertThat(magazineCustomRepository.getById(magazine.id()))
.isNotNull()
.hasValue(book);
.hasValue(magazine);

bookCustomRepository.delete(book);
magazineCustomRepository.delete(magazine);

assertThat(bookCustomRepository.getById(book.id()))
assertThat(magazineCustomRepository.getById(magazine.id()))
.isNotNull()
.isEmpty();
}

@Test
void shouldDeleteAll() {

List<Book> books = List.of(
new Book(randomUUID().toString(), "Java Persistence Layer", 1)
, new Book(randomUUID().toString(), "Effective Java", 3)
, new Book(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Book(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
List<Magazine> magazines = List.of(
new Magazine(randomUUID().toString(), "Java Persistence Layer", 1)
, new Magazine(randomUUID().toString(), "Effective Java", 3)
, new Magazine(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Magazine(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
);

assertThat(bookCustomRepository.saveAll(books))
assertThat(magazineCustomRepository.saveAll(magazines))
.isNotNull()
.containsAll(books);
.containsAll(magazines);

await().atMost(Duration.ofSeconds(2))
.until(() -> bookCustomRepository.listAll().toList().size() >= books.size());
.until(() -> magazineCustomRepository.listAll().toList().size() >= magazines.size());

assertThat(bookCustomRepository.listAll())
assertThat(magazineCustomRepository.listAll())
.isNotNull()
.containsAll(books);
.containsAll(magazines);

bookCustomRepository.deleteAll();
magazineCustomRepository.deleteAll();

await().atMost(Duration.ofSeconds(2))
.until(() -> bookCustomRepository.listAll().toList().isEmpty());
.until(() -> magazineCustomRepository.listAll().toList().isEmpty());


assertThat(bookCustomRepository.listAll())
assertThat(magazineCustomRepository.listAll())
.isNotNull()
.isEmpty();

Expand All @@ -229,32 +229,32 @@ void shouldDeleteAll() {
@Test
void shouldRemoveAll() {

List<Book> books = List.of(
new Book(randomUUID().toString(), "Java Persistence Layer", 1)
, new Book(randomUUID().toString(), "Effective Java", 3)
, new Book(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Book(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
List<Magazine> magazines = List.of(
new Magazine(randomUUID().toString(), "Java Persistence Layer", 1)
, new Magazine(randomUUID().toString(), "Effective Java", 3)
, new Magazine(randomUUID().toString(), "Jakarta EE Cookbook", 1)
, new Magazine(randomUUID().toString(), "Mastering The Java Virtual Machine", 1)
);

assertThat(bookCustomRepository.saveAll(books))
assertThat(magazineCustomRepository.saveAll(magazines))
.isNotNull()
.containsAll(books);
.containsAll(magazines);

await().atMost(Duration.ofSeconds(2))
.until(() -> bookCustomRepository.listAll().toList().size() >= books.size());
.until(() -> magazineCustomRepository.listAll().toList().size() >= magazines.size());

assertThat(bookCustomRepository.listAll())
assertThat(magazineCustomRepository.listAll())
.isNotNull()
.containsAll(books);
.containsAll(magazines);

bookCustomRepository.removeAll(books);
magazineCustomRepository.removeAll(magazines);

await().atMost(Duration.ofSeconds(2))
.until(() -> bookCustomRepository.listAll()
.filter(books::contains)
.until(() -> magazineCustomRepository.listAll()
.filter(magazines::contains)
.toList().isEmpty());

assertThat(bookCustomRepository.findByIdIn(books.stream().map(Book::id).toList()))
assertThat(magazineCustomRepository.findByIdIn(magazines.stream().map(Magazine::id).toList()))
.isNotNull()
.isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import jakarta.nosql.Id;

@Entity
public record Book(@Id String id, @Column("title") String title, @Column("edition") int edition) {
public record Magazine(@Id String id, @Column("title") String title, @Column("edition") int edition) {


}
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,31 @@
import java.util.stream.Stream;

@Repository
public interface BookCustomRepository {
public interface MagazineCustomRepository {

@Save
Book save(Book book);
Magazine save(Magazine magazine);

@Save
Iterable<Book> saveAll(Iterable<Book> books);
Iterable<Magazine> saveAll(Iterable<Magazine> books);

@Delete
void delete(Book book);
void delete(Magazine magazine);

@Delete
void removeAll(Iterable<Book> books);
void removeAll(Iterable<Magazine> books);

@Find
Optional<Book> getById(@By("id") String id);
Optional<Magazine> getById(@By("id") String id);

@Find
Stream<Book> findByIdIn(Iterable<String> ids);
Stream<Magazine> findByIdIn(Iterable<String> ids);

@Find
Stream<Book> listAll();
Stream<Magazine> listAll();

@Find
Page<Book> listAll(PageRequest pageRequest, Order<Book> sortBy);
Page<Magazine> listAll(PageRequest pageRequest, Order<Magazine> sortBy);

@Query("delete from Book")
void deleteAll();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@
import org.eclipse.jnosql.mapping.NoSQLRepository;

@Repository
public interface BookRepository extends NoSQLRepository<Book, String> {
public interface MagazineRepository extends NoSQLRepository<Magazine, String> {
}
Loading
Loading