Skip to content

Commit 06319e8

Browse files
committed
feat: update hazelcast api to key-value repository
Signed-off-by: Otavio Santana <[email protected]>
1 parent 2044e13 commit 06319e8

File tree

3 files changed

+34
-20
lines changed

3 files changed

+34
-20
lines changed

jnosql-hazelcast/src/main/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryBean.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@
1414
*/
1515
package org.eclipse.jnosql.databases.hazelcast.mapping;
1616

17-
import jakarta.data.repository.PageableRepository;
1817
import jakarta.enterprise.context.spi.CreationalContext;
1918
import jakarta.enterprise.inject.Default;
2019
import jakarta.enterprise.util.AnnotationLiteral;
21-
import org.eclipse.jnosql.mapping.keyvalue.query.KeyValueRepositoryProducer;
2220
import org.eclipse.jnosql.mapping.core.spi.AbstractBean;
21+
import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
2322

2423
import java.lang.annotation.Annotation;
2524
import java.lang.reflect.Proxy;
@@ -28,16 +27,16 @@
2827
import java.util.Set;
2928

3029

31-
class HazelcastRepositoryBean extends AbstractBean<HazelcastRepository> {
30+
class HazelcastRepositoryBean<T, K> extends AbstractBean<HazelcastRepository<T, K>> {
3231

33-
private final Class type;
32+
private final Class<T> type;
3433

3534
private final Set<Type> types;
3635

3736
private final Set<Annotation> qualifiers = Collections.singleton(new AnnotationLiteral<Default>() {
3837
});
3938

40-
HazelcastRepositoryBean(Class type) {
39+
HazelcastRepositoryBean(Class<T> type) {
4140
this.type = type;
4241
this.types = Collections.singleton(type);
4342
}
@@ -48,13 +47,13 @@ public Class<?> getBeanClass() {
4847
}
4948

5049

50+
@SuppressWarnings("rawtypes")
5151
@Override
52-
public HazelcastRepository create(CreationalContext<HazelcastRepository> creationalContext) {
52+
public HazelcastRepository<T, K> create(CreationalContext<HazelcastRepository<T, K>> creationalContext) {
5353
HazelcastTemplate template = getInstance(HazelcastTemplate.class);
54+
EntitiesMetadata entitiesMetadata = getInstance(EntitiesMetadata.class);
5455

55-
KeyValueRepositoryProducer producer = getInstance(KeyValueRepositoryProducer.class);
56-
PageableRepository<?, ?> repository = producer.get((Class<PageableRepository<Object, Object>>) type, template);
57-
HazelcastRepositoryProxy handler = new HazelcastRepositoryProxy(template, type, repository);
56+
HazelcastRepositoryProxy<T, K> handler = new HazelcastRepositoryProxy<>(template, type, entitiesMetadata);
5857
return (HazelcastRepository) Proxy.newProxyInstance(type.getClassLoader(),
5958
new Class[]{type},
6059
handler);

jnosql-hazelcast/src/main/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxy.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
*/
1515
package org.eclipse.jnosql.databases.hazelcast.mapping;
1616

17-
import jakarta.data.repository.PageableRepository;
1817
import jakarta.nosql.keyvalue.KeyValueTemplate;
18+
import org.eclipse.jnosql.mapping.core.query.AbstractRepository;
1919
import org.eclipse.jnosql.mapping.keyvalue.query.AbstractKeyValueRepositoryProxy;
2020
import org.eclipse.jnosql.mapping.core.repository.DynamicReturn;
21+
import org.eclipse.jnosql.mapping.keyvalue.query.DefaultKeyValueRepository;
22+
import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
23+
import org.eclipse.jnosql.mapping.metadata.EntityMetadata;
2124

2225
import java.lang.reflect.Method;
2326
import java.lang.reflect.ParameterizedType;
@@ -31,33 +34,37 @@ class HazelcastRepositoryProxy<T, K> extends AbstractKeyValueRepositoryProxy<T,
3134

3235
private final HazelcastTemplate template;
3336

34-
private final PageableRepository<?, ?> repository;
37+
private final AbstractRepository<T, K> repository;
3538

3639
private final Class<T> typeClass;
3740

3841
private final Class<?> repositoryType;
3942

43+
private final EntityMetadata metadata;
4044

41-
HazelcastRepositoryProxy(HazelcastTemplate template, Class<?> repositoryType, PageableRepository<?, ?> repository) {
45+
46+
47+
HazelcastRepositoryProxy(HazelcastTemplate template, Class<?> repositoryType, EntitiesMetadata entitiesMetadata) {
4248
this.template = template;
4349
this.typeClass = Class.class.cast(ParameterizedType.class.cast(repositoryType.getGenericInterfaces()[0])
4450
.getActualTypeArguments()[0]);
45-
this.repository = repository;
51+
this.metadata = entitiesMetadata.get(typeClass);
52+
this.repository = DefaultKeyValueRepository.of(template, metadata);
4653
this.repositoryType = repositoryType;
4754
}
4855

4956
@Override
50-
protected PageableRepository getRepository() {
57+
protected AbstractRepository<T, K> repository() {
5158
return repository;
5259
}
5360

5461
@Override
55-
protected KeyValueTemplate getTemplate() {
62+
protected KeyValueTemplate template() {
5663
return template;
5764
}
5865

5966
@Override
60-
protected Class<T> getType() {
67+
protected Class<T> type() {
6168
return typeClass;
6269
}
6370

@@ -66,6 +73,11 @@ protected Class<?> repositoryType() {
6673
return repositoryType;
6774
}
6875

76+
@Override
77+
protected EntityMetadata entityMetadata() {
78+
return metadata;
79+
}
80+
6981
@Override
7082
public Object invoke(Object instance, Method method, Object[] args) throws Throwable {
7183

jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxyTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@
1414
*/
1515
package org.eclipse.jnosql.databases.hazelcast.mapping;
1616

17-
import jakarta.data.repository.PageableRepository;
17+
import jakarta.inject.Inject;
1818
import org.eclipse.jnosql.mapping.core.Converters;
1919
import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
2020
import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
21+
import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
2122
import org.eclipse.jnosql.mapping.reflection.Reflections;
2223
import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension;
2324
import org.jboss.weld.junit5.auto.AddExtensions;
@@ -60,8 +61,10 @@ public class HazelcastRepositoryProxyTest {
6061
@Mock
6162
private HazelcastTemplate template;
6263

63-
@Mock
64-
private PageableRepository<?, ?> repository;
64+
65+
@Inject
66+
private EntitiesMetadata entitiesMetadata;
67+
6568
private PersonRepository personRepository;
6669

6770

@@ -72,7 +75,7 @@ public void setUp() {
7275
Collection<Object> people = asList(new Person("Poliana", 25), new Person("Otavio", 28));
7376

7477
when(template.sql(anyString())).thenReturn(people);
75-
HazelcastRepositoryProxy handler = new HazelcastRepositoryProxy<>(template, PersonRepository.class, repository);
78+
HazelcastRepositoryProxy handler = new HazelcastRepositoryProxy<>(template, PersonRepository.class, entitiesMetadata);
7679

7780
when(template.sql(anyString(), any(Map.class))).thenReturn(people);
7881

0 commit comments

Comments
 (0)