Skip to content

Commit 9789e54

Browse files
committed
fix build
1 parent 6c70386 commit 9789e54

File tree

8 files changed

+67
-15
lines changed

8 files changed

+67
-15
lines changed

.github/workflows/java.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ jobs:
1515
distribution: 'temurin'
1616
cache: maven
1717
- name: Build with Maven
18-
run: sh setup.sh && mvn --batch-mode --quiet package
18+
run: MVN_OPTS="--batch-mode --quiet" sh ./build_all_and_test.sh

build_alL_and_test.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
#!/bin/sh
2-
cd support && mvn -f pom-tiles.xml install && mvn install && cd .. && mvn -T4C clean install
2+
MAVEN_OPTS=${MVN_OPTS:-"-T4C"}
3+
cd support && mvn -f pom-tiles.xml install && mvn install && cd .. && mvn $MAVEN_OPTS clean install
34

client-java-core/src/main/java/io/featurehub/client/BaseClientContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ protected void recordRelativeValuesForUser() {
150150
repository.recordUsageEvent(fillUsageCollection(repository.getUsageProvider().createUsageCollectionEvent()));
151151
}
152152

153-
protected UsageEvent fillUsageCollection(UsageEvent event) {
153+
public <T extends UsageEvent> @NotNull T fillUsageCollection(@NotNull T event) {
154154
event.setUserKey(usageUserKey());
155155

156156
if (event instanceof UsageFeaturesCollection) {
@@ -167,7 +167,7 @@ protected UsageEvent fillUsageCollection(UsageEvent event) {
167167
}
168168

169169
@Override
170-
public void recordUsageEvent(@NotNull UsageEvent event) {
170+
public <T extends UsageEvent> void recordUsageEvent(@NotNull T event) {
171171
repository.recordUsageEvent(fillUsageCollection(event));
172172
}
173173

client-java-core/src/main/java/io/featurehub/client/ClientContext.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,16 @@ public interface ClientContext {
6767
* the current context if possible and add it to the analytics event.
6868
* @param event
6969
*/
70-
void recordUsageEvent(@NotNull UsageEvent event);
70+
<T extends UsageEvent> void recordUsageEvent(@NotNull T event);
71+
72+
/**
73+
* Use this method to set all the fields of your UsageEvent. It will add the user key in,
74+
* collect all feature values (if a UsageFeaturesCollection) and add in the context attributes (if a UsageFeaturesCollectionContext)
75+
* @param event - the vent to fill in
76+
* @return the filled in collection
77+
* @param <T> a type that extends UsageEvent
78+
*/
79+
@NotNull <T extends UsageEvent> T fillUsageCollection(@NotNull T event);
7180

7281
void close();
7382
}

client-java-core/src/main/java/io/featurehub/client/ClientFeatureRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public boolean updateFeature(@NotNull io.featurehub.sse.model.FeatureState featu
317317
key,
318318
key1 -> {
319319
if (hasReceivedInitialState) {
320-
log.error(
320+
log.warn(
321321
"FeatureHub error: application requesting use of invalid key after initialization: `{}`",
322322
key1);
323323
}

client-java-core/src/main/java/io/featurehub/client/EdgeFeatureHubConfig.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ public EdgeFeatureHubConfig(@NotNull String edgeUrl, @NotNull List<String> apiKe
5757

5858
serverEvaluation = !FeatureHubConfig.sdkKeyIsClientSideEvaluated(apiKeys);
5959

60+
// set defaults
61+
if (serverEvaluation) {
62+
rest();
63+
} else {
64+
streaming();
65+
}
66+
6067
if (edgeUrl.endsWith("/")) {
6168
edgeUrl = edgeUrl.substring(0, edgeUrl.length()-1);
6269
}
@@ -102,7 +109,7 @@ public String baseUrl() {
102109
}
103110

104111
/**
105-
* This is only intended to be used for client evaluated contexts, do not use it for server evaluated ones
112+
* This provides an async wait to trigger off the client.
106113
*/
107114
@Override
108115
public Future<ClientContext> init() {

client-java-core/src/main/java/io/featurehub/client/FeatureHubConfig.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,29 @@
77

88
import java.util.Collection;
99
import java.util.List;
10+
import java.util.concurrent.ExecutionException;
1011
import java.util.concurrent.Future;
1112
import java.util.function.Consumer;
1213
import java.util.function.Supplier;
1314

1415
public interface FeatureHubConfig {
16+
17+
/**
18+
* Use environment variables to create a system config.
19+
* @return system config
20+
*/
21+
default FeatureHubConfig envConfig() {
22+
return new EdgeFeatureHubConfig(System.getenv("FEATUREHUB_EDGE_URL"), System.getenv("FEATUREHUB_API_KEY"));
23+
}
24+
25+
/**
26+
* Use system properties to create a system config.
27+
* @return system config
28+
*/
29+
default FeatureHubConfig systemPropertyConfig() {
30+
return new EdgeFeatureHubConfig(System.getProperty("featurehub.edge-url"), System.getProperty("featurehub.api-key"));
31+
}
32+
1533
/**
1634
* What is the fully deconstructed URL for the server?
1735
*/
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
package todo.backend.resources;
22

33
import cd.connect.app.config.DeclaredConfigResolver;
4+
import io.featurehub.client.ClientContext;
45
import io.featurehub.client.ThreadLocalContext;
56
import jakarta.inject.Inject;
67
import jakarta.ws.rs.container.ContainerRequestContext;
78
import jakarta.ws.rs.container.ContainerRequestFilter;
89
import jakarta.ws.rs.container.ContainerResponseContext;
910
import jakarta.ws.rs.container.ContainerResponseFilter;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
1013
import todo.backend.FeatureHub;
1114
import todo.backend.UsageRequestMeasurement;
1215

1316
import java.io.IOException;
1417
import java.util.List;
18+
import java.util.concurrent.ExecutionException;
1519

1620
public class FeatureAnalyticsFilter implements ContainerRequestFilter, ContainerResponseFilter {
1721

1822
private final FeatureHub config;
23+
private static final Logger log = LoggerFactory.getLogger(FeatureAnalyticsFilter.class);
1924

2025
@Inject
2126
public FeatureAnalyticsFilter(FeatureHub config) {
@@ -27,19 +32,31 @@ public FeatureAnalyticsFilter(FeatureHub config) {
2732
public void filter(ContainerRequestContext requestContext) throws IOException {
2833
final long currentTime = System.currentTimeMillis();
2934
requestContext.setProperty("startTime", currentTime);
35+
final List<String> user = requestContext.getUriInfo().getPathParameters().get("user");
36+
if (user != null && !user.isEmpty()) {
37+
try {
38+
requestContext.setProperty("context", config.getConfig().newContext().build().get());
39+
} catch (InterruptedException | ExecutionException e) {
40+
throw new RuntimeException(e);
41+
}
42+
}
3043
}
3144

3245
@Override
3346
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
34-
Long start = (Long)requestContext.getProperty("startTime");
35-
long duration = 0;
36-
if (start != null) {
37-
duration = System.currentTimeMillis() - start;
38-
}
47+
Long start = (Long) requestContext.getProperty("startTime");
48+
ClientContext context = (ClientContext) requestContext.getProperty("context");
49+
50+
if (start != null && context != null) {
51+
long duration = System.currentTimeMillis() - start;
52+
53+
final List<String> matchedURIs = requestContext.getUriInfo().getMatchedURIs();
3954

40-
final List<String> matchedURIs = requestContext.getUriInfo().getMatchedURIs();
41-
if (!matchedURIs.isEmpty()) {
42-
config.getConfig().recordUsageEvent(new UsageRequestMeasurement(duration, matchedURIs.get(0)));
55+
if (!matchedURIs.isEmpty()) {
56+
context.recordUsageEvent(new UsageRequestMeasurement(duration, matchedURIs.get(0)));
57+
}
58+
} else {
59+
log.error("There was not start time {} and context {}", start, context);
4360
}
4461
}
4562
}

0 commit comments

Comments
 (0)