• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wistefan / tmforum-api / #62

19 Oct 2023 01:12PM UTC coverage: 68.167% (+0.5%) from 67.631%
#62

push

web-flow
Account management api implementation (#34)

* Creating the directories

* Adding pom

* now adding pom, error on last commit

* Account complete implementation, no testing

* Solving problems with git config

* Adding some left out classes and some tests

* Adding FinancialAccount Integration Test and solving some errors on the main classes

* adding Integration Test and solved errors for Party, Bill, Settlement and Financial Account, and BillFormat

* Adding final integration tests and adapting api to query format

* Fixing Event Subscription

* Cleaning the code from comments

---------

Co-authored-by: MVazquez <marcosvazquezcampos@MacBook-Air-de-Marcos.local>

475 of 475 new or added lines in 32 files covered. (100.0%)

3150 of 4621 relevant lines covered (68.17%)

0.68 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.86
/account/src/main/java/org/fiware/tmforum/account/rest/BillingCycleSpecificationApiController.java
1
package org.fiware.tmforum.account.rest;
2

3
import io.micronaut.http.HttpResponse;
4
import io.micronaut.http.annotation.Controller;
5
import lombok.extern.slf4j.Slf4j;
6
import org.fiware.account.api.BillingCycleSpecificationApi;
7
import org.fiware.account.model.BillingCycleSpecificationCreateVO;
8
import org.fiware.account.model.BillingCycleSpecificationUpdateVO;
9
import org.fiware.account.model.BillingCycleSpecificationVO;
10
import org.fiware.tmforum.common.notification.EventHandler;
11
import org.fiware.tmforum.common.exception.TmForumException;
12
import org.fiware.tmforum.common.exception.TmForumExceptionReason;
13
import org.fiware.tmforum.common.mapping.IdHelper;
14
import org.fiware.tmforum.common.querying.QueryParser;
15
import org.fiware.tmforum.common.repository.TmForumRepository;
16
import org.fiware.tmforum.common.rest.AbstractApiController;
17
import org.fiware.tmforum.common.validation.ReferenceValidationService;
18
import org.fiware.tmforum.common.validation.ReferencedEntity;
19
import org.fiware.tmforum.account.TMForumMapper;
20
import org.fiware.tmforum.account.domain.BillingCycleSpecification;
21
import reactor.core.publisher.Mono;
22

23
import javax.annotation.Nullable;
24
import java.util.ArrayList;
25
import java.util.List;
26
import java.util.UUID;
27

28
@Slf4j
1✔
29
@Controller("${general.basepath:/}")
30
public class BillingCycleSpecificationApiController extends AbstractApiController<BillingCycleSpecification> implements BillingCycleSpecificationApi {
31

32
    private final TMForumMapper tmForumMapper;
33

34
    public BillingCycleSpecificationApiController(QueryParser queryParser, ReferenceValidationService validationService,
35
                                                  TmForumRepository productBillingCycleSpecificationRepository, TMForumMapper tmForumMapper, EventHandler eventHandler) {
36
        super(queryParser, validationService, productBillingCycleSpecificationRepository, eventHandler);
1✔
37
        this.tmForumMapper = tmForumMapper;
1✔
38
    }
1✔
39

40
    @Override
41
    public Mono<HttpResponse<BillingCycleSpecificationVO>> createBillingCycleSpecification(BillingCycleSpecificationCreateVO billingCycleSpecificationVo) {
42
        BillingCycleSpecification billingCycleSpecification = tmForumMapper.map(
1✔
43
                tmForumMapper.map(billingCycleSpecificationVo, IdHelper.toNgsiLd(UUID.randomUUID().toString(), BillingCycleSpecification.TYPE_BILLCL)));
1✔
44

45
        return create(getCheckingMono(billingCycleSpecification), BillingCycleSpecification.class)
1✔
46
                .map(tmForumMapper::map)
1✔
47
                .map(HttpResponse::created);
1✔
48
    }
49

50
    private Mono<BillingCycleSpecification> getCheckingMono(BillingCycleSpecification billingCycleSpecification) {
51
        List<List<? extends ReferencedEntity>> references = new ArrayList<>();
1✔
52
        return getCheckingMono(billingCycleSpecification, references)
1✔
53
                .onErrorMap(throwable -> new TmForumException(
1✔
54
                        String.format("Was not able to create billingCycleSpecification %s", billingCycleSpecification.getId()), throwable,
×
55
                        TmForumExceptionReason.INVALID_RELATIONSHIP));
56
    }
57

58
    @Override
59
    public Mono<HttpResponse<Object>> deleteBillingCycleSpecification(String id) {
60
        return delete(id);
1✔
61
    }
62

63
    @Override
64
    public Mono<HttpResponse<List<BillingCycleSpecificationVO>>> listBillingCycleSpecification(@Nullable String fields, @Nullable Integer offset,
65
                                                           @Nullable Integer limit) {
66
        return list(offset, limit, BillingCycleSpecification.TYPE_BILLCL, BillingCycleSpecification.class)
1✔
67
                .map(categoryStream -> categoryStream.map(tmForumMapper::map).toList())
1✔
68
                .switchIfEmpty(Mono.just(List.of()))
1✔
69
                .map(HttpResponse::ok);
1✔
70
    }
71

72
    @Override
73
    public Mono<HttpResponse<BillingCycleSpecificationVO>> patchBillingCycleSpecification(String id, BillingCycleSpecificationUpdateVO billingCycleSpecificationUpdateVO) {
74
        // non-ngsi-ld ids cannot exist.
75
        if (!IdHelper.isNgsiLdId(id)) {
1✔
76
            throw new TmForumException("Did not receive a valid id, such billingCycleSpecification cannot exist.",
×
77
                    TmForumExceptionReason.NOT_FOUND);
78
        }
79
        BillingCycleSpecification updatedBillingCycleSpecification = tmForumMapper.map(tmForumMapper.map(billingCycleSpecificationUpdateVO, id));
1✔
80

81
        return patch(id, updatedBillingCycleSpecification, getCheckingMono(updatedBillingCycleSpecification), BillingCycleSpecification.class)
1✔
82
                .map(tmForumMapper::map)
1✔
83
                .map(HttpResponse::ok);
1✔
84
    }
85

86
    @Override
87
    public Mono<HttpResponse<BillingCycleSpecificationVO>> retrieveBillingCycleSpecification(String id, @Nullable String fields) {
88
        return retrieve(id, BillingCycleSpecification.class)
1✔
89
                .switchIfEmpty(Mono.error(new TmForumException("No such billingCycleSpecification exists.",
1✔
90
                        TmForumExceptionReason.NOT_FOUND)))
91
                .map(tmForumMapper::map)
1✔
92
                .map(HttpResponse::ok);
1✔
93
    }
94
}
95

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc