Skip to content
This repository was archived by the owner on Mar 11, 2022. It is now read-only.

Commit 8d4b09a

Browse files
committed
Merge with wip-di-support
1 parent 5cbdcea commit 8d4b09a

40 files changed

+71
-1484
lines changed

README.md

+10-304
Large diffs are not rendered by default.

cloudstate-springboot-starter/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@
9999
</plugin>
100100
</plugins>
101101
</build>
102-
</project>
102+
</project>

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/CloudstateContext.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
@Retention(RetentionPolicy.RUNTIME)
99
@Target({ElementType.FIELD, ElementType.METHOD})
10-
public @interface CloudstateContext {}
10+
public @interface CloudstateContext {}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/autoconfigure/CloudstateAutoConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ public CloudState cloudState(CloudstateEntityScan entityScan) throws Exception {
3636
return new CloudState();
3737
}
3838

39-
}
39+
}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/autoconfigure/CloudstateBeanInitialization.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ public void onApplicationEvent(ContextRefreshedEvent event) throws Exception {
4242
log.error("Failure on Cloudstate Server startup", ex);
4343
return Done.done();
4444
}).thenAccept(done -> {
45-
Duration timeElapsed = Duration.between(start, Instant.now());
46-
log.debug("Cloudstate Server keep alived for {}", timeElapsed);
47-
});
45+
Duration timeElapsed = Duration.between(start, Instant.now());
46+
log.debug("Cloudstate Server keep alived for {}", timeElapsed);
47+
});
4848
}
4949

50-
}
50+
}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/autoconfigure/CloudstateProperties.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ public String getUserFunctionPackageName() {
3535
public void setUserFunctionPackageName(String userFunctionPackageName) {
3636
this.userFunctionPackageName = userFunctionPackageName;
3737
}
38-
}
38+
}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/internal/BaseEntitySupportFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ public Object create(EntityContext entityContext) {
3030
public Class<?> entityClass() {
3131
return entity.getEntityClass();
3232
}
33-
}
33+
}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/internal/CloudstateEntityScan.java

+39-67
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@
2929
import java.util.stream.Stream;
3030

3131
public final class CloudstateEntityScan implements EntityScan {
32-
private static final Logger log = LoggerFactory.getLogger(CloudstateEntityScan.class);
32+
Logger log = LoggerFactory.getLogger(CloudstateEntityScan.class);
3333

3434
private final ApplicationContext context;
3535
private final CloudstateProperties properties;
3636
private final ClassGraph classGraph;
37-
private List<Entity> entities;
3837

3938
public CloudstateProperties getProperties() {
4039
return properties;
@@ -64,10 +63,6 @@ public CloudstateEntityScan(ApplicationContext context, final CloudstateProperti
6463
}
6564

6665
public List<Entity> findEntities() {
67-
if(Objects.nonNull(entities) && !entities.isEmpty()) {
68-
return entities;
69-
}
70-
7166
Instant now = Instant.now();
7267
List<Entity> crdtEntities = getCrdtDescriptors();
7368
List<Entity> eventSourcedEntities = getEventSourcedDescriptors();
@@ -77,10 +72,8 @@ public List<Entity> findEntities() {
7772
log.warn("No declared descriptor");
7873
}
7974

80-
entities = Stream.concat(crdtEntities.stream(), eventSourcedEntities.stream())
75+
return Stream.concat(crdtEntities.stream(), eventSourcedEntities.stream())
8176
.collect(Collectors.toList());
82-
83-
return entities;
8477
}
8578

8679
private List<Entity> getCrdtDescriptors() {
@@ -92,11 +85,10 @@ private List<Entity> getEventSourcedDescriptors() {
9285
}
9386

9487
private List<Class<?>> getClassAnnotationWith(Class<? extends Annotation> annotationType) {
95-
if ( Objects.nonNull(this.properties) && Objects.nonNull(properties.getUserFunctionPackageName()) ) {
96-
log.debug("Scanner set for {}", properties.getUserFunctionPackageName());
88+
if ( Objects.nonNull(properties.getUserFunctionPackageName()) ) {
9789
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
9890
scanner.addIncludeFilter(new AnnotationTypeFilter(annotationType));
99-
Set<BeanDefinition> definitions = scanner.findCandidateComponents(this.properties.getUserFunctionPackageName());
91+
Set<BeanDefinition> definitions = scanner.findCandidateComponents(properties.getUserFunctionPackageName());
10092

10193
return definitions.stream()
10294
.map(getBeanDefinitionClass())
@@ -136,34 +128,34 @@ private String decaptalized(String string) {
136128

137129
private List<Entity> getEntities(Class<? extends Annotation> annotationType) {
138130
final List<Class<?>> eventSourcedEntities = getClassAnnotationWith(annotationType);
139-
return eventSourcedEntities.stream()
140-
.map(this::apply)
141-
.collect(Collectors.toList());
142-
}
143-
144-
private Entity apply(Class<?> entity) {
145-
Descriptors.ServiceDescriptor descriptor = null;
146-
Descriptors.FileDescriptor[] additionalDescriptors = null;
147131

148-
if (isaBeanDescriptorsType()) {
149-
// Then verify if descriptor already declared with bean
150-
descriptor = tryGetServiceDescriptor(entity, descriptor);
132+
return eventSourcedEntities.stream().map(entity -> {
133+
Descriptors.ServiceDescriptor descriptor = null;
134+
Descriptors.FileDescriptor[] additionalDescriptors = null;
151135

152-
// Then verify if descriptor already declared with bean
153-
additionalDescriptors = tryGetFileDescriptors(entity, additionalDescriptors);
136+
for (Method method: entity.getDeclaredMethods()) {
154137

155-
} else {
156-
157-
for (Method method : entity.getDeclaredMethods()) {
158-
159-
if (method.isAnnotationPresent(EntityServiceDescriptor.class)) {
138+
if (method.isAnnotationPresent(EntityServiceDescriptor.class)){
160139
try {
161140
method.setAccessible(true);
162141
descriptor = ((Descriptors.ServiceDescriptor)
163142
method.invoke(null, null));
164143
} catch (IllegalAccessException | InvocationTargetException e) {
165144
log.error("Failure on load ServiceDescriptor", e);
166145
}
146+
} else {
147+
// Then verify if descriptor already declared with bean
148+
try{
149+
String serviceDescriptorBeanName = decaptalized(entity.getSimpleName() + "ServiceDescriptor");
150+
log.trace("Trying bind the ServiceDescriptor {}", serviceDescriptorBeanName);
151+
descriptor = (Descriptors.ServiceDescriptor) this.context
152+
.getBean(serviceDescriptorBeanName);
153+
} catch (Exception nbde) {
154+
if (nbde instanceof NoSuchBeanDefinitionException) {
155+
log.trace("No ServiceDescriptor Found");
156+
}
157+
}
158+
167159
}
168160

169161
if (method.isAnnotationPresent(EntityAdditionaDescriptors.class)) {
@@ -173,46 +165,26 @@ private Entity apply(Class<?> entity) {
173165
} catch (IllegalAccessException | InvocationTargetException e) {
174166
log.error("Failure on load AdditionalDescriptors", e);
175167
}
176-
}
177-
}
178-
}
179-
180-
Entity entityType = new Entity(EntityType.EventSourced, entity, descriptor, additionalDescriptors);
181-
log.debug("Registering Entity -> {}", entityType);
182-
return entityType;
183-
}
184-
185-
private Descriptors.FileDescriptor[] tryGetFileDescriptors(Class<?> entity, Descriptors.FileDescriptor[] additionalDescriptors) {
186-
try {
187-
String fileDescriptorBeanName = decaptalized(entity.getSimpleName() + "FileDescriptors");
188-
log.trace("Trying bind the ServiceDescriptor {}", fileDescriptorBeanName);
189-
additionalDescriptors = (Descriptors.FileDescriptor[]) this.context
190-
.getBean(fileDescriptorBeanName);
191-
}catch (Exception nbde) {
192-
if (nbde instanceof NoSuchBeanDefinitionException) {
193-
log.trace("No FileDescriptor Found");
194-
}
195-
}
196-
return additionalDescriptors;
197-
}
168+
} else {
169+
// Then verify if descriptor already declared with bean
170+
try {
171+
String fileDescriptorBeanName = decaptalized(entity.getSimpleName() + "FileDescriptors");
172+
log.trace("Trying bind the ServiceDescriptor {}", fileDescriptorBeanName);
173+
additionalDescriptors = (Descriptors.FileDescriptor[]) this.context
174+
.getBean(fileDescriptorBeanName);
175+
}catch (Exception nbde) {
176+
if (nbde instanceof NoSuchBeanDefinitionException) {
177+
log.trace("No FileDescriptor Found");
178+
}
179+
}
198180

199-
private Descriptors.ServiceDescriptor tryGetServiceDescriptor(Class<?> entity, Descriptors.ServiceDescriptor descriptor) {
200-
try{
201-
String serviceDescriptorBeanName = decaptalized(entity.getSimpleName() + "ServiceDescriptor");
202-
log.trace("Trying bind the ServiceDescriptor {}", serviceDescriptorBeanName);
203-
descriptor = (Descriptors.ServiceDescriptor) this.context
204-
.getBean(serviceDescriptorBeanName);
205-
} catch (Exception nbde) {
206-
if (nbde instanceof NoSuchBeanDefinitionException) {
207-
log.trace("No ServiceDescriptor Found");
181+
}
208182
}
209-
}
210-
return descriptor;
211-
}
212183

213-
private boolean isaBeanDescriptorsType() {
214-
return Objects.nonNull(properties.getUserFunctionPackageName()) &&
215-
!properties.getUserFunctionPackageName().isEmpty();
184+
Entity entityType = new Entity(EntityType.EventSourced, entity, descriptor, additionalDescriptors);
185+
log.debug("Registering Entity -> {}", entityType);
186+
return entityType;
187+
}).collect(Collectors.toList());
216188
}
217189

218190
final class EmptyCLass {}

cloudstate-springboot-starter/src/main/java/io/cloudstate/springboot/starter/internal/CloudstateUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,4 +172,4 @@ private static void setEnv(Map<String, String> newenv) throws Exception {
172172
}
173173
}
174174

175-
}
175+
}

cloudstate-springboot-starter/src/main/resources/application.yml

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,5 @@ logging:
66

77
io:
88
cloudstate:
9-
auto-register: true
10-
auto-startup: true
11-
user-function-port: 8080
129
user-function-interface: "localhost"
13-
user-function-package-name: "io.cloudstate.springboot.example"
10+
user-function-port: 8080

cloudstate-springboot-starter/src/test/java/io/cloudstate/springboot/starter/ContextLoaderTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ public class ContextLoaderTest {
2121
public void cloudstate_NotBeNull(){
2222
assertNotNull(cloudState);
2323
}
24-
}
24+
}

cloudstate-springboot-starter/src/test/java/io/cloudstate/springboot/starter/internal/CloudstateEntityScanTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ public void findEntities_NotBeEmpty(){
3434
assertFalse(entities.isEmpty());
3535
assertEquals(2, entities.size());
3636
}
37-
}
37+
}

cloudstate-springboot-starter/src/test/resources/application.yml

-11
This file was deleted.
-174 KB
Binary file not shown.

docs/img/cloudstate-cli-boot-perf.png

-80.1 KB
Binary file not shown.

docs/img/cloudstate-gatling.png

-203 KB
Binary file not shown.
-110 KB
Binary file not shown.
-117 KB
Binary file not shown.

docs/img/cloudstate-user-perf-ok.png

-128 KB
Binary file not shown.

docs/img/docker-stats.png

-35.5 KB
Binary file not shown.

docs/img/gatlin-perf-2.png

-111 KB
Binary file not shown.

docs/img/gatling-perf-1.png

-128 KB
Binary file not shown.

docs/img/gatling-perf-3.png

-127 KB
Binary file not shown.

docs/img/gatling-perf-4.png

-105 KB
Binary file not shown.

docs/img/proxy-cpu.png

-144 KB
Binary file not shown.

docs/img/proxy-memory.png

-108 KB
Binary file not shown.

0 commit comments

Comments
 (0)