diff --git a/README.md b/README.md
index 49e8a1db..011b059f 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,38 @@
# spring-integration
+
+## TODO
+
+### Search
+
+- [ ] Implement findByXXXX methods for RediSearch indexed models
+- [ ] Handle model return values for Query and Aggregations (add more tests)
+
+### Probabilistic Data Structures
+
+- [ ] Implement Bloom methods for Repositories
+- [ ] Review other PDS use cases
+
+### Rate Limiting
+
+- [ ] Design Rate Limiting Annotation for Controller?
+- [ ] Determine 3rd party dependencies for Rate Limiting
+
+### Session Management
+
+- [ ] Research if this is already in Spring @Session
+
+### Graph
+
+- [ ] Basic annotations
+
+### Time Series Research
+
+- [ ] Research APIs - Databases
+
+### AI Use Cases
+
+- [ ] Research use cases
+
+### Leaderboards
+
+- [ ] See https://github.com/agoragames/leaderboard
diff --git a/redis-spring-modules/pom.xml b/redis-spring-modules/pom.xml
index f3720c86..4fef7ae0 100644
--- a/redis-spring-modules/pom.xml
+++ b/redis-spring-modules/pom.xml
@@ -5,7 +5,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.redislabs.spring
+ com.redis.spring
redis-spring-modules
1.0-SNAPSHOT
jar
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/RedisJSONKeyValueAdapter.java b/redis-spring-modules/src/main/java/com/redis/spring/RedisJSONKeyValueAdapter.java
similarity index 97%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/RedisJSONKeyValueAdapter.java
rename to redis-spring-modules/src/main/java/com/redis/spring/RedisJSONKeyValueAdapter.java
index c17a9f40..4a238e6e 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/RedisJSONKeyValueAdapter.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/RedisJSONKeyValueAdapter.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring;
+package com.redis.spring;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisKeyValueAdapter;
@@ -7,7 +7,7 @@
import org.springframework.data.redis.core.mapping.RedisMappingContext;
import org.springframework.lang.Nullable;
-import com.redislabs.spring.ops.json.JSONOperations;
+import com.redis.spring.ops.json.JSONOperations;
public class RedisJSONKeyValueAdapter extends RedisKeyValueAdapter {
private JSONOperations> redisJSONOperations;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/RedisModulesConfiguration.java b/redis-spring-modules/src/main/java/com/redis/spring/RedisModulesConfiguration.java
similarity index 90%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/RedisModulesConfiguration.java
rename to redis-spring-modules/src/main/java/com/redis/spring/RedisModulesConfiguration.java
index 9371c33b..7c74025d 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/RedisModulesConfiguration.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/RedisModulesConfiguration.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring;
+package com.redis.spring;
import java.util.ArrayList;
import java.util.List;
@@ -25,15 +25,15 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.mapping.RedisMappingContext;
-import com.redislabs.spring.annotations.Bloom;
-import com.redislabs.spring.annotations.Document;
-import com.redislabs.spring.annotations.TagIndexed;
-import com.redislabs.spring.annotations.TextIndexed;
-import com.redislabs.spring.client.RedisModulesClient;
-import com.redislabs.spring.ops.RedisModulesOperations;
-import com.redislabs.spring.ops.json.JSONOperations;
-import com.redislabs.spring.ops.pds.BloomOperations;
-import com.redislabs.spring.ops.search.SearchOperations;
+import com.redis.spring.annotations.Bloom;
+import com.redis.spring.annotations.Document;
+import com.redis.spring.annotations.TagIndexed;
+import com.redis.spring.annotations.TextIndexed;
+import com.redis.spring.client.RedisModulesClient;
+import com.redis.spring.ops.RedisModulesOperations;
+import com.redis.spring.ops.json.JSONOperations;
+import com.redis.spring.ops.pds.BloomOperations;
+import com.redis.spring.ops.search.SearchOperations;
import io.redisearch.FieldName;
import io.redisearch.Schema;
@@ -46,7 +46,7 @@
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(RedisProperties.class)
@EnableAspectJAutoProxy
-@ComponentScan("com.redislabs.spring.bloom")
+@ComponentScan("com.redis.spring.bloom")
public class RedisModulesConfiguration extends CachingConfigurerSupport {
@Bean(name = "redisModulesClient")
@@ -63,7 +63,7 @@ RedisModulesClient redisModulesClient(JedisConnectionFactory jedisConnectionFact
JSONOperations> redisJSONOperations(RedisModulesOperations, ?> redisModulesOperations) {
return redisModulesOperations.opsForJSON();
}
-
+
@Bean(name = "redisBloomOperations")
BloomOperations> redisBloomOperations(RedisModulesOperations, ?> redisModulesOperations) {
return redisModulesOperations.opsForBloom();
@@ -94,7 +94,7 @@ public RedisKeyValueTemplate getRedisJSONKeyValueTemplate(RedisOperations, ?>
@EventListener(ContextRefreshedEvent.class)
public void ensureIndexesAreCreated(ContextRefreshedEvent cre) {
System.out.println(">>>> On ContextRefreshedEvent ... Creating Indexes......");
-
+
ApplicationContext ac = cre.getApplicationContext();
@SuppressWarnings("unchecked")
RedisModulesOperations rmo = (RedisModulesOperations) ac.getBean("redisModulesOperations");
@@ -102,13 +102,13 @@ public void ensureIndexesAreCreated(ContextRefreshedEvent cre) {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new AnnotationTypeFilter(Document.class));
for (BeanDefinition beanDef : provider
- .findCandidateComponents("com.redislabs.spring.annotations.document.fixtures")) {
+ .findCandidateComponents("com.redis.spring.annotations.document.fixtures")) {
try {
Class> cl = Class.forName(beanDef.getBeanClassName());
//Document document = cl.getAnnotation(Document.class);
System.out.printf(">>>> Found @Document annotated class: %s\n", cl.getSimpleName());
-
-
+
+
List fields = new ArrayList();
for (java.lang.reflect.Field field : cl.getDeclaredFields()) {
System.out.println(">>>> Inspecting field " + field.getName());
@@ -116,31 +116,31 @@ public void ensureIndexesAreCreated(ContextRefreshedEvent cre) {
if (field.isAnnotationPresent(TextIndexed.class)) {
System.out.println(">>>>>> FOUND TextIndexed on " + field.getName());
TextIndexed ti = field.getAnnotation(TextIndexed.class);
-
+
FieldName fieldName = FieldName.of("$." + field.getName());
if (!ObjectUtils.isEmpty(ti.alias())) {
fieldName = fieldName.as(ti.alias());
}
String phonetic = ObjectUtils.isEmpty(ti.phonetic()) ? null : ti.phonetic();
TextField tf = new TextField(fieldName, ti.weight(), ti.sortable(), ti.nostem(), ti.noindex(), phonetic);
-
+
fields.add(tf);
}
// Tag
if (field.isAnnotationPresent(TagIndexed.class)) {
System.out.println(">>>>>> FOUND TagIndexed on " + field.getName());
TagIndexed ti = field.getAnnotation(TagIndexed.class);
-
+
FieldName fieldName = FieldName.of("$." + field.getName() + "[*]");
if (!ObjectUtils.isEmpty(ti.alias())) {
fieldName = fieldName.as(ti.alias());
}
Field tf = new Field(fieldName, FieldType.Tag, ti.sortable(), ti.noindex());
-
+
fields.add(tf);
}
}
-
+
if (!fields.isEmpty()) {
Schema schema = new Schema();
SearchOperations opsForSearch = rmo.opsForSearch(cl.getSimpleName() + "Idx");
@@ -157,7 +157,7 @@ public void ensureIndexesAreCreated(ContextRefreshedEvent cre) {
}
}
-
+
@EventListener(ContextRefreshedEvent.class)
public void processBloom(ContextRefreshedEvent cre) {
System.out.println(">>>> On ContextRefreshedEvent ... Processing Bloom annotations......");
@@ -169,7 +169,7 @@ public void processBloom(ContextRefreshedEvent cre) {
provider.addIncludeFilter(new AnnotationTypeFilter(Document.class));
provider.addIncludeFilter(new AnnotationTypeFilter(RedisHash.class));
for (BeanDefinition beanDef : provider
- .findCandidateComponents("com.redislabs.spring.annotations.bloom.fixtures")) {
+ .findCandidateComponents("com.redis.spring.annotations.bloom.fixtures")) {
try {
Class> cl = Class.forName(beanDef.getBeanClassName());
System.out.printf(">>>> Found @RedisHash / @Document annotated class: %s\n", cl.getSimpleName());
@@ -190,5 +190,5 @@ public void processBloom(ContextRefreshedEvent cre) {
}
}
}
-
+
}
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Aggregation.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Aggregation.java
similarity index 90%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Aggregation.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/Aggregation.java
index 43705ef2..26f12fc0 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Aggregation.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Aggregation.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Bloom.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Bloom.java
similarity index 90%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Bloom.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/Bloom.java
index 7b66852d..127630b2 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Bloom.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Bloom.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Document.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Document.java
similarity index 92%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Document.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/Document.java
index 5ab63442..63e39ac3 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Document.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Document.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/EnableRedisDocumentRepositories.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/EnableRedisDocumentRepositories.java
similarity index 94%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/EnableRedisDocumentRepositories.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/EnableRedisDocumentRepositories.java
index 294287c2..79963b3d 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/EnableRedisDocumentRepositories.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/EnableRedisDocumentRepositories.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
@@ -24,10 +24,10 @@
import org.springframework.data.repository.query.QueryLookupStrategy;
import org.springframework.data.repository.query.QueryLookupStrategy.Key;
-import com.redislabs.spring.repository.configuration.RedisJSONRepositoriesRegistrar;
-import com.redislabs.spring.repository.query.RediSearchQuery;
-import com.redislabs.spring.repository.query.RediSearchQueryCreator;
-import com.redislabs.spring.repository.support.RedisDocumentRepositoryFactoryBean;
+import com.redis.spring.repository.configuration.RedisJSONRepositoriesRegistrar;
+import com.redis.spring.repository.query.RediSearchQuery;
+import com.redis.spring.repository.query.RediSearchQueryCreator;
+import com.redis.spring.repository.support.RedisDocumentRepositoryFactoryBean;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/GeoIndexed.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/GeoIndexed.java
similarity index 93%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/GeoIndexed.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/GeoIndexed.java
index acb6e4a6..84442092 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/GeoIndexed.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/GeoIndexed.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/NumericIndexed.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/NumericIndexed.java
similarity index 93%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/NumericIndexed.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/NumericIndexed.java
index 30fba801..bcec803d 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/NumericIndexed.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/NumericIndexed.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Query.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Query.java
similarity index 94%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Query.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/Query.java
index 43382d37..3fbc4bd0 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/Query.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/Query.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TagIndexed.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/TagIndexed.java
similarity index 93%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TagIndexed.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/TagIndexed.java
index 965a887b..58a2f566 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TagIndexed.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/TagIndexed.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TextIndexed.java b/redis-spring-modules/src/main/java/com/redis/spring/annotations/TextIndexed.java
similarity index 94%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TextIndexed.java
rename to redis-spring-modules/src/main/java/com/redis/spring/annotations/TextIndexed.java
index e1bc56e4..2b6bda6b 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/annotations/TextIndexed.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/annotations/TextIndexed.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.annotations;
+package com.redis.spring.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/redis-spring-modules/src/main/java/com/redislabs/spring/bloom/BloomAspect.java b/redis-spring-modules/src/main/java/com/redis/spring/bloom/BloomAspect.java
similarity index 81%
rename from redis-spring-modules/src/main/java/com/redislabs/spring/bloom/BloomAspect.java
rename to redis-spring-modules/src/main/java/com/redis/spring/bloom/BloomAspect.java
index 50289512..897aa945 100644
--- a/redis-spring-modules/src/main/java/com/redislabs/spring/bloom/BloomAspect.java
+++ b/redis-spring-modules/src/main/java/com/redis/spring/bloom/BloomAspect.java
@@ -1,4 +1,4 @@
-package com.redislabs.spring.bloom;
+package com.redis.spring.bloom;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
@@ -14,8 +14,8 @@
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
-import com.redislabs.spring.annotations.Bloom;
-import com.redislabs.spring.ops.pds.BloomOperations;
+import com.redis.spring.annotations.Bloom;
+import com.redis.spring.ops.pds.BloomOperations;
@Aspect
@Component
@@ -24,55 +24,51 @@ public class BloomAspect implements Ordered {
public BloomAspect(BloomOperations ops) {
this.ops = ops;
- System.out.println(">>>> IN BloomAspect constructor...");
}
@Pointcut("execution(public * org.springframework.data.repository.CrudRepository+.save(..))")
public void inCrudRepositorySave() {}
- @Pointcut("execution(public * com.redislabs.spring.repository.RedisDocumentRepository+.save(..))")
+ @Pointcut("execution(public * com.redis.spring.repository.RedisDocumentRepository+.save(..))")
public void inRedisDocumentRepositorySave() {}
@Pointcut("inCrudRepositorySave() || inRedisDocumentRepositorySave()")
private void inSaveOperation() {}
@AfterReturning("inSaveOperation() && args(entity,..)")
- public void addToBloom(JoinPoint jp, Object entity) {
- System.out.println(">>>> IN addToBloom");
+ public void addToBloom(JoinPoint jp, Object entity) {
for (Field field : entity.getClass().getDeclaredFields()) {
if (field.isAnnotationPresent(Bloom.class)) {
Bloom bloom = field.getAnnotation(Bloom.class);
String filterName = !ObjectUtils.isEmpty(bloom.name()) ? bloom.name() : String.format("bf:%s:%s", entity.getClass().getSimpleName(), field.getName());
try {
- PropertyDescriptor pd = new PropertyDescriptor(field.getName(), entity.getClass());
+ PropertyDescriptor pd = new PropertyDescriptor(field.getName(), entity.getClass());
ops.add(filterName, pd.getReadMethod().invoke(entity).toString());
} catch (IllegalArgumentException | IllegalAccessException | IntrospectionException | InvocationTargetException e) {
e.printStackTrace();
}
-
}
}
}
-
+
@Pointcut("execution(public * org.springframework.data.repository.CrudRepository+.saveAll(..))")
public void inCrudRepositorySaveAll() {}
- @Pointcut("execution(public * com.redislabs.spring.repository.RedisDocumentRepository+.saveAll(..))")
+ @Pointcut("execution(public * com.redis.spring.repository.RedisDocumentRepository+.saveAll(..))")
public void inRedisDocumentRepositorySaveAll() {}
@Pointcut("inCrudRepositorySaveAll() || inRedisDocumentRepositorySaveAll()")
private void inSaveAllOperation() {}
-
+
@AfterReturning("inSaveAllOperation() && args(entities,..)")
public void addAllToBloom(JoinPoint jp, List