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

leeonky / test-charm-java / 390

18 Oct 2025 04:40PM UTC coverage: 75.298% (+0.01%) from 75.288%
390

push

circleci

leeonky
refactor

8 of 8 new or added lines in 5 files covered. (100.0%)

19 existing lines in 8 files now uncovered.

8895 of 11813 relevant lines covered (75.3%)

0.75 hits per line

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

37.04
/bean-util/src/main/java/com/github/leeonky/util/Property.java
1
package com.github.leeonky.util;
2

3
import java.util.Arrays;
4
import java.util.List;
5

6
import static java.util.stream.Collectors.toList;
7

8
public interface Property<T> {
9
    static List<Object> toChainNodes(String chain) {
10
        return Arrays.stream(chain.split("[\\[\\].]")).filter(s -> !s.isEmpty()).map(s -> {
1✔
11
            try {
12
                return Integer.valueOf(s);
1✔
13
            } catch (Exception ignore) {
1✔
14
                return s;
1✔
15
            }
16
        }).collect(toList());
1✔
17
    }
18

19
    String getName();
20

21
    BeanClass<T> getBeanType();
22

23
    PropertyReader<T> getReader();
24

25
    PropertyWriter<T> getWriter();
26

27
    @SuppressWarnings("unchecked")
28
    default <P> BeanClass<P> getReaderType() {
29
        return (BeanClass<P>) getReader().getType();
1✔
30
    }
31

32
    @SuppressWarnings("unchecked")
33
    default <P> BeanClass<P> getWriterType() {
34
        return (BeanClass<P>) getWriter().getType();
1✔
35
    }
36

37
    default Property<T> setValue(T instance, Object value) {
38
        getWriter().setValue(instance, value);
1✔
39
        return this;
1✔
40
    }
41

42
    @SuppressWarnings("unchecked")
43
    default <P> P getValue(T instance) {
44
        return (P) getReader().getValue(instance);
1✔
45
    }
46

47
    default Property<T> decorateReaderType(BeanClass<?> newType) {
48
        PropertyReader<T> reader = getReader();
×
49
        if (reader.getType().equals(newType))
×
50
            return this;
×
51
        Class<?> type = reader.getOriginType().getType();
×
52
        if (newType.isInheritedFrom(type))
×
53
            return new PropertyDecorator<T>(this) {
×
54
                @Override
55
                public PropertyReader<T> getReader() {
56
                    return reader.decorateType(newType);
×
57
                }
58
            };
59
        throw new IllegalStateException("Type " + newType.getType() + " is not inherited from " + type);
×
60
    }
61

62
    default Property<T> decorateWriterType(BeanClass<?> newType) {
63
        PropertyWriter<T> writer = getWriter();
×
64
        if (writer.getType().equals(newType))
×
65
            return this;
×
66
        Class<?> type = writer.getOriginType().getType();
×
67
        if (newType.isInheritedFrom(type))
×
68
            return new PropertyDecorator<T>(this) {
×
69
                @Override
70
                public PropertyWriter<T> getWriter() {
71
                    return writer.decorateType(newType);
×
72
                }
73
            };
74
        throw new IllegalStateException("Type " + newType.getType() + " is not inherited from " + type);
×
75
    }
76

77
    default Property<T> decorateType(BeanClass<?> newType) {
UNCOV
78
        return decorateWriterType(newType).decorateReaderType(newType);
×
79
    }
80
}
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

© 2026 Coveralls, Inc