Skip to content

Commit 42ffd99

Browse files
committed
fixup: slowly migrating to a good state
Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>
1 parent 422997a commit 42ffd99

File tree

71 files changed

+1489
-4560
lines changed

Some content is hidden

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

71 files changed

+1489
-4560
lines changed
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
package dev.openfeature.api;
2+
3+
import java.util.List;
4+
import java.util.Objects;
5+
6+
/**
7+
* Event details delivered to event handlers, including provider context.
8+
* This represents the "event details" structure defined in the OpenFeature specification.
9+
* Contains all provider event details plus required provider identification.
10+
*/
11+
class DefaultEventDetails implements EventDetails {
12+
/** The name of the provider that generated this event (required by OpenFeature spec). */
13+
private final String providerName;
14+
15+
/** The domain associated with this event (may be null for global providers). */
16+
private final String domain;
17+
18+
/** The provider event details containing the actual event information. */
19+
private final ProviderEventDetails providerEventDetails;
20+
21+
/**
22+
* Constructs an EventDetails with the specified provider context and event details.
23+
*
24+
* @param providerName the name of the provider that generated this event (required)
25+
* @param domain the domain associated with this event (may be null)
26+
* @param providerEventDetails the provider event details (required)
27+
*/
28+
DefaultEventDetails(String providerName, String domain, ProviderEventDetails providerEventDetails) {
29+
this.providerName =
30+
Objects.requireNonNull(providerName, "providerName is required by OpenFeature specification");
31+
this.domain = domain;
32+
this.providerEventDetails = Objects.requireNonNull(providerEventDetails, "providerEventDetails cannot be null");
33+
}
34+
35+
@Override
36+
public String getProviderName() {
37+
return providerName;
38+
}
39+
40+
@Override
41+
public String getDomain() {
42+
return domain;
43+
}
44+
45+
/**
46+
* Gets the underlying provider event details.
47+
*
48+
* @return the provider event details
49+
*/
50+
public ProviderEventDetails getProviderEventDetails() {
51+
return providerEventDetails;
52+
}
53+
54+
// Delegation methods implementing EventDetailsInterface
55+
56+
@Override
57+
public List<String> getFlagsChanged() {
58+
return providerEventDetails.getFlagsChanged();
59+
}
60+
61+
@Override
62+
public String getMessage() {
63+
return providerEventDetails.getMessage();
64+
}
65+
66+
@Override
67+
public Metadata getEventMetadata() {
68+
return providerEventDetails.getEventMetadata();
69+
}
70+
71+
@Override
72+
public ErrorCode getErrorCode() {
73+
return providerEventDetails.getErrorCode();
74+
}
75+
76+
public static Builder builder() {
77+
return new Builder();
78+
}
79+
80+
@Override
81+
public boolean equals(Object obj) {
82+
if (this == obj) {
83+
return true;
84+
}
85+
if (obj == null || getClass() != obj.getClass()) {
86+
return false;
87+
}
88+
DefaultEventDetails that = (DefaultEventDetails) obj;
89+
return Objects.equals(providerName, that.providerName)
90+
&& Objects.equals(domain, that.domain)
91+
&& Objects.equals(providerEventDetails, that.providerEventDetails);
92+
}
93+
94+
@Override
95+
public int hashCode() {
96+
return Objects.hash(providerName, domain, providerEventDetails);
97+
}
98+
99+
@Override
100+
public String toString() {
101+
return "EventDetails{" + "providerName='"
102+
+ providerName + '\'' + ", domain='"
103+
+ domain + '\'' + ", providerEventDetails="
104+
+ providerEventDetails + '}';
105+
}
106+
107+
/**
108+
* Builder class for creating instances of EventDetails.
109+
*/
110+
public static class Builder {
111+
private String providerName;
112+
private String domain;
113+
private ProviderEventDetails providerEventDetails;
114+
115+
private Builder() {}
116+
117+
public Builder providerName(String providerName) {
118+
this.providerName = providerName;
119+
return this;
120+
}
121+
122+
public Builder domain(String domain) {
123+
this.domain = domain;
124+
return this;
125+
}
126+
127+
public Builder providerEventDetails(ProviderEventDetails providerEventDetails) {
128+
this.providerEventDetails = providerEventDetails;
129+
return this;
130+
}
131+
132+
/**
133+
* Builds an EventDetails instance with the configured parameters.
134+
*
135+
* @return a new EventDetails instance
136+
*/
137+
public DefaultEventDetails build() {
138+
if (providerEventDetails == null) {
139+
providerEventDetails = ProviderEventDetails.EMPTY;
140+
}
141+
return new DefaultEventDetails(providerName, domain, providerEventDetails);
142+
}
143+
}
144+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package dev.openfeature.api;
2+
3+
import java.util.List;
4+
import java.util.Objects;
5+
6+
/**
7+
* Details of a provider event, as emitted by providers.
8+
* This represents the "provider event details" structure defined in the OpenFeature specification.
9+
* Providers emit these events, which are then enriched by the SDK with provider context.
10+
*/
11+
class DefaultProviderEventDetails implements ProviderEventDetails {
12+
private final List<String> flagsChanged;
13+
private final String message;
14+
private final Metadata eventMetadata;
15+
private final ErrorCode errorCode;
16+
17+
/**
18+
* Creates an empty ProviderEventDetails for backwards compatibility.
19+
*/
20+
DefaultProviderEventDetails() {
21+
this(null, null, null, null);
22+
}
23+
24+
/**
25+
* Constructs a ProviderEventDetails with the specified parameters.
26+
*
27+
* @param flagsChanged list of flags that changed (may be null)
28+
* @param message message describing the event (should be populated for PROVIDER_ERROR events)
29+
* @param eventMetadata metadata associated with the event (may be null)
30+
* @param errorCode error code (should be populated for PROVIDER_ERROR events)
31+
*/
32+
DefaultProviderEventDetails(
33+
List<String> flagsChanged, String message, Metadata eventMetadata, ErrorCode errorCode) {
34+
this.flagsChanged = flagsChanged != null ? List.copyOf(flagsChanged) : null;
35+
this.message = message;
36+
this.eventMetadata = eventMetadata;
37+
this.errorCode = errorCode;
38+
}
39+
40+
public List<String> getFlagsChanged() {
41+
return flagsChanged;
42+
}
43+
44+
public String getMessage() {
45+
return message;
46+
}
47+
48+
public Metadata getEventMetadata() {
49+
return eventMetadata;
50+
}
51+
52+
public ErrorCode getErrorCode() {
53+
return errorCode;
54+
}
55+
56+
@Override
57+
public boolean equals(Object obj) {
58+
if (this == obj) {
59+
return true;
60+
}
61+
if (obj == null || getClass() != obj.getClass()) {
62+
return false;
63+
}
64+
DefaultProviderEventDetails that = (DefaultProviderEventDetails) obj;
65+
return Objects.equals(flagsChanged, that.flagsChanged)
66+
&& Objects.equals(message, that.message)
67+
&& Objects.equals(eventMetadata, that.eventMetadata)
68+
&& errorCode == that.errorCode;
69+
}
70+
71+
@Override
72+
public int hashCode() {
73+
return Objects.hash(flagsChanged, message, eventMetadata, errorCode);
74+
}
75+
76+
@Override
77+
public String toString() {
78+
return "ProviderEventDetails{" + "flagsChanged="
79+
+ flagsChanged + ", message='"
80+
+ message + '\'' + ", eventMetadata="
81+
+ eventMetadata + ", errorCode="
82+
+ errorCode + '}';
83+
}
84+
}

0 commit comments

Comments
 (0)