Skip to content

Commit 33d85a7

Browse files
Mortega5wistefan
andauthored
Add all-in-one Docker image for TM Forum APIs (#129)
* move clock bean to ClockFactory in common module * move ObjectMapperBeanEventListener to its own class instead of defining it as a static class in the Application.java file * refactor controllers to support all-in-one api configuration * unify EventMapper using a ModuleEventMapper interface * move logback.xml to common module to avoid duplication across modules * remove logback internal logs * feat(module): add all-in-one Docker image to deploy all tm forum APIs in a single container --------- Co-authored-by: Stefan Wiedemann <wistefan@googlemail.com>
1 parent 1bd2d41 commit 33d85a7

File tree

149 files changed

+1285
-891
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

149 files changed

+1285
-891
lines changed

account/src/main/java/org/fiware/tmforum/account/AccountEventMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.fiware.tmforum.common.exception.TmForumException;
77
import org.fiware.tmforum.common.exception.TmForumExceptionReason;
88
import org.fiware.tmforum.common.mapping.EventMapping;
9-
import org.fiware.tmforum.common.notification.EventMapper;
9+
import org.fiware.tmforum.common.notification.ModuleEventMapper;
1010

1111
import javax.inject.Singleton;
1212
import java.util.Map;
@@ -15,7 +15,7 @@
1515

1616
@RequiredArgsConstructor
1717
@Singleton
18-
public class AccountEventMapper implements EventMapper {
18+
public class AccountEventMapper implements ModuleEventMapper {
1919

2020
private final TMForumMapper tmForumMapper;
2121

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
1-
package org.fiware.tmforum.account;
1+
package org.fiware.tmforum.account;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.fasterxml.jackson.databind.module.SimpleModule;
5-
import io.micronaut.context.annotation.Bean;
6-
import io.micronaut.context.annotation.Factory;
7-
import io.micronaut.context.event.BeanCreatedEvent;
8-
import io.micronaut.context.event.BeanCreatedEventListener;
9-
import io.micronaut.runtime.Micronaut;
10-
import lombok.RequiredArgsConstructor;
11-
import org.fiware.account.model.*;
12-
import org.fiware.tmforum.common.mapping.FieldCleaningSerializer;
13-
14-
import javax.inject.Singleton;
15-
import java.time.Clock;
3+
import io.micronaut.context.annotation.Factory;
4+
import io.micronaut.runtime.Micronaut;
165

176
/**
187
* Base application as starting point
@@ -24,33 +13,4 @@ public static void main(String[] args) {
2413
Micronaut.run(Application.class, args);
2514
}
2615

27-
@Bean
28-
public Clock clock() {
29-
return Clock.systemUTC();
30-
}
31-
32-
@Singleton
33-
@RequiredArgsConstructor
34-
static class ObjectMapperBeanEventListener implements BeanCreatedEventListener<ObjectMapper> {
35-
36-
@Override
37-
public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) {
38-
39-
final ObjectMapper objectMapper = event.getBean();
40-
SimpleModule fieldParamModule = new SimpleModule();
41-
// we need to register per class, in order to use the generic serializer
42-
fieldParamModule.addSerializer(BillFormatVO.class, new FieldCleaningSerializer<>());
43-
fieldParamModule.addSerializer(BillingAccountVO.class, new FieldCleaningSerializer<>());
44-
fieldParamModule.addSerializer(BillingCycleSpecificationVO.class, new FieldCleaningSerializer<>());
45-
fieldParamModule.addSerializer(BillPresentationMediaVO.class, new FieldCleaningSerializer<>());
46-
fieldParamModule.addSerializer(FinancialAccountVO.class, new FieldCleaningSerializer<>());
47-
fieldParamModule.addSerializer(PartyAccountVO.class, new FieldCleaningSerializer<>());
48-
fieldParamModule.addSerializer(SettlementAccountVO.class, new FieldCleaningSerializer<>());
49-
fieldParamModule.addSerializer(BillStructureVO.class, new FieldCleaningSerializer<>());
50-
//fieldParamModule.addSerializer(BillingCycleSpecificationRefOrValueVO.class, new FieldCleaningSerializer<>());
51-
objectMapper.registerModule(fieldParamModule);
52-
return objectMapper;
53-
54-
}
55-
}
5616
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.fiware.tmforum.account.bean;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.module.SimpleModule;
5+
import io.micronaut.context.event.BeanCreatedEvent;
6+
import io.micronaut.context.event.BeanCreatedEventListener;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.fiware.account.model.BillFormatVO;
10+
import org.fiware.account.model.BillPresentationMediaVO;
11+
import org.fiware.account.model.BillStructureVO;
12+
import org.fiware.account.model.BillingAccountVO;
13+
import org.fiware.account.model.BillingCycleSpecificationVO;
14+
import org.fiware.account.model.FinancialAccountVO;
15+
import org.fiware.account.model.PartyAccountVO;
16+
import org.fiware.account.model.SettlementAccountVO;
17+
import org.fiware.tmforum.common.mapping.FieldCleaningSerializer;
18+
19+
import javax.inject.Singleton;
20+
21+
@Singleton
22+
@RequiredArgsConstructor
23+
@Slf4j
24+
public class ObjectMapperBeanEventListener implements BeanCreatedEventListener<ObjectMapper> {
25+
26+
@Override
27+
public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) {
28+
log.debug("Add FieldCleaningSerializer to Account VOs");
29+
final ObjectMapper objectMapper = event.getBean();
30+
SimpleModule fieldParamModule = new SimpleModule();
31+
// we need to register per class, in order to use the generic serializer
32+
fieldParamModule.addSerializer(BillFormatVO.class, new FieldCleaningSerializer<>());
33+
fieldParamModule.addSerializer(BillingAccountVO.class, new FieldCleaningSerializer<>());
34+
fieldParamModule.addSerializer(BillingCycleSpecificationVO.class, new FieldCleaningSerializer<>());
35+
fieldParamModule.addSerializer(BillPresentationMediaVO.class, new FieldCleaningSerializer<>());
36+
fieldParamModule.addSerializer(FinancialAccountVO.class, new FieldCleaningSerializer<>());
37+
fieldParamModule.addSerializer(PartyAccountVO.class, new FieldCleaningSerializer<>());
38+
fieldParamModule.addSerializer(SettlementAccountVO.class, new FieldCleaningSerializer<>());
39+
fieldParamModule.addSerializer(BillStructureVO.class, new FieldCleaningSerializer<>());
40+
//fieldParamModule.addSerializer(BillingCycleSpecificationRefOrValueVO.class, new FieldCleaningSerializer<>());
41+
objectMapper.registerModule(fieldParamModule);
42+
return objectMapper;
43+
}
44+
}

account/src/main/java/org/fiware/tmforum/account/rest/BillFormatApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.UUID;
2727

2828
@Slf4j
29-
@Controller("${general.basepath:/}")
29+
@Controller("${api.account.basepath:/}")
3030
public class BillFormatApiController extends AbstractApiController<BillFormat> implements BillFormatApi {
3131

3232
private final TMForumMapper tmForumMapper;

account/src/main/java/org/fiware/tmforum/account/rest/BillPresentationMediaApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.UUID;
2727

2828
@Slf4j
29-
@Controller("${general.basepath:/}")
29+
@Controller("${api.account.basepath:/}")
3030
public class BillPresentationMediaApiController extends AbstractApiController<BillPresentationMedia> implements BillPresentationMediaApi {
3131

3232
private final TMForumMapper tmForumMapper;

account/src/main/java/org/fiware/tmforum/account/rest/BillingAccountApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.UUID;
2828

2929
@Slf4j
30-
@Controller("${general.basepath:/}")
30+
@Controller("${api.account.basepath:/}")
3131
public class BillingAccountApiController extends AbstractApiController<BillingAccount> implements BillingAccountApi {
3232

3333
private final TMForumMapper tmForumMapper;

account/src/main/java/org/fiware/tmforum/account/rest/BillingCycleSpecificationApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.UUID;
2727

2828
@Slf4j
29-
@Controller("${general.basepath:/}")
29+
@Controller("${api.account.basepath:/}")
3030
public class BillingCycleSpecificationApiController extends AbstractApiController<BillingCycleSpecification> implements BillingCycleSpecificationApi {
3131

3232
private final TMForumMapper tmForumMapper;

account/src/main/java/org/fiware/tmforum/account/rest/EventSubscriptionApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import static org.fiware.tmforum.common.notification.EventConstants.*;
3131

3232
@Slf4j
33-
@Controller("${general.basepath:/}")
33+
@Controller("${api.account.basepath:/}")
3434
public class EventSubscriptionApiController extends AbstractSubscriptionApiController implements EventsSubscriptionApi {
3535
private final TMForumMapper tmForumMapper;
3636
private static final Map<String, String> EVENT_GROUP_TO_ENTITY_NAME_MAPPING = Map.ofEntries(

account/src/main/java/org/fiware/tmforum/account/rest/FinancialAccountApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.UUID;
2727

2828
@Slf4j
29-
@Controller("${general.basepath:/}")
29+
@Controller("${api.account.basepath:/}")
3030
public class FinancialAccountApiController extends AbstractApiController<FinancialAccount> implements FinancialAccountApi {
3131

3232
private final TMForumMapper tmForumMapper;

account/src/main/java/org/fiware/tmforum/account/rest/PartyAccountApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.UUID;
2828

2929
@Slf4j
30-
@Controller("${general.basepath:/}")
30+
@Controller("${api.account.basepath:/}")
3131
public class PartyAccountApiController extends AbstractApiController<PartyAccount> implements PartyAccountApi {
3232

3333
private final TMForumMapper tmForumMapper;

0 commit comments

Comments
 (0)