Skip to content

Commit f787db5

Browse files
authored
Merge pull request #35 from SAP/tenantid
Refactor Http Header Handling
2 parents dadb1d0 + 7aeb9c7 commit f787db5

File tree

39 files changed

+820
-503
lines changed

39 files changed

+820
-503
lines changed

cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/HttpHeaders.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/LogContext.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ public class LogContext {
3333
}
3434
};
3535

36-
public static final String HTTP_HEADER_CORRELATION_ID = HttpHeaders.CORRELATION_ID;
37-
public static final String HTTP_HEADER_TENANT_ID = HttpHeaders.TENANT_ID;
38-
39-
public static void loadContextFields(boolean override) {
36+
public static void loadContextFields(boolean override) {
4037
/*
4138
* -- do bootstrap, either enforced or because map is empty
4239
*/

cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/LogContextAdapter.java

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.sap.hcp.cf.logging.common.request;
2+
3+
import java.util.List;
4+
5+
public interface HttpHeader {
6+
7+
boolean isPropagated();
8+
9+
String getName();
10+
11+
String getField();
12+
13+
List<HttpHeader> getAliases();
14+
15+
String getFieldValue();
16+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.sap.hcp.cf.logging.common.request;
2+
3+
import static java.util.Arrays.asList;
4+
import static java.util.Collections.unmodifiableList;
5+
6+
import java.util.ArrayList;
7+
import java.util.Collections;
8+
import java.util.List;
9+
10+
import com.sap.hcp.cf.logging.common.Defaults;
11+
import com.sap.hcp.cf.logging.common.Fields;
12+
import com.sap.hcp.cf.logging.common.LogContext;
13+
14+
public enum HttpHeaders implements HttpHeader {
15+
16+
CONTENT_LENGTH("content-length"), CONTENT_TYPE("content-type"), REFERER("referer"), X_FORWARDED_FOR(
17+
"x-forwarded-for"), X_VCAP_REQUEST_ID("x-vcap-request-id"), CORRELATION_ID("X-CorrelationID",
18+
Fields.CORRELATION_ID, true, X_VCAP_REQUEST_ID), TENANT_ID("tenantid", Fields.TENANT_ID, true);
19+
20+
private HttpHeaders(String name) {
21+
this(name, null, false);
22+
}
23+
24+
private HttpHeaders(String name, String field, boolean isPropagated, HttpHeaders... aliases) {
25+
this.name = name;
26+
this.field = field;
27+
this.isPropagated = isPropagated;
28+
this.aliases = unmodifiableList(asList(aliases));
29+
}
30+
31+
private String name;
32+
private String field;
33+
private boolean isPropagated;
34+
private List<HttpHeader> aliases;
35+
36+
@Override
37+
public boolean isPropagated() {
38+
return isPropagated;
39+
}
40+
41+
@Override
42+
public String getName() {
43+
return name;
44+
}
45+
46+
@Override
47+
public String getField() {
48+
return field;
49+
}
50+
51+
@Override
52+
public String getFieldValue() {
53+
return field != null ? LogContext.get(field) : Defaults.UNKNOWN;
54+
}
55+
56+
@Override
57+
public List<HttpHeader> getAliases() {
58+
return aliases;
59+
}
60+
61+
public static List<HttpHeaders> propagated() {
62+
return LazyPropagatedHeaderHolder.PROPAGATED;
63+
}
64+
65+
private static class LazyPropagatedHeaderHolder {
66+
public static final List<HttpHeaders> PROPAGATED = createPropagated();
67+
68+
private static List<HttpHeaders> createPropagated() {
69+
List<HttpHeaders> propagated = new ArrayList<>();
70+
for (HttpHeaders current : values()) {
71+
if (current.isPropagated()) {
72+
propagated.add(current);
73+
}
74+
}
75+
return Collections.unmodifiableList(propagated);
76+
}
77+
}
78+
}

cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/RequestRecord.java renamed to cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/request/RequestRecord.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sap.hcp.cf.logging.common;
1+
package com.sap.hcp.cf.logging.common.request;
22

33
import java.util.HashMap;
44
import java.util.HashSet;
@@ -11,6 +11,14 @@
1111
import com.fasterxml.jackson.jr.ob.JSON;
1212
import com.fasterxml.jackson.jr.ob.JSONComposer;
1313
import com.fasterxml.jackson.jr.ob.comp.ObjectComposer;
14+
import com.sap.hcp.cf.logging.common.DateTimeValue;
15+
import com.sap.hcp.cf.logging.common.Defaults;
16+
import com.sap.hcp.cf.logging.common.DoubleValue;
17+
import com.sap.hcp.cf.logging.common.Fields;
18+
import com.sap.hcp.cf.logging.common.LogContext;
19+
import com.sap.hcp.cf.logging.common.LongValue;
20+
import com.sap.hcp.cf.logging.common.StringValue;
21+
import com.sap.hcp.cf.logging.common.Value;
1422

1523
/**
1624
* A <i>request record</i> keeping track of all fields defined for a request

cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/RequestRecordBuilder.java renamed to cf-java-logging-support-core/src/main/java/com/sap/hcp/cf/logging/common/request/RequestRecordBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package com.sap.hcp.cf.logging.common;
1+
package com.sap.hcp.cf.logging.common.request;
22

3-
import com.sap.hcp.cf.logging.common.RequestRecord.Direction;
3+
import com.sap.hcp.cf.logging.common.Defaults;
4+
import com.sap.hcp.cf.logging.common.Value;
5+
import com.sap.hcp.cf.logging.common.request.RequestRecord.Direction;
46

57
public class RequestRecordBuilder {
68

cf-java-logging-support-core/src/test/java/com/sap/hcp/cf/logging/common/RequestRecordBuilderTest.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

cf-java-logging-support-core/src/test/java/com/sap/hcp/cf/logging/common/converter/TestJsonMessageConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import org.junit.Test;
77

8-
import com.sap.hcp.cf.logging.common.RequestRecord;
8+
import com.sap.hcp.cf.logging.common.request.RequestRecord;
99

1010
public class TestJsonMessageConverter extends AbstractConverterTest {
1111

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.sap.hcp.cf.logging.common.request;
2+
3+
import static org.hamcrest.Matchers.containsInAnyOrder;
4+
import static org.hamcrest.Matchers.empty;
5+
import static org.hamcrest.Matchers.equalTo;
6+
import static org.hamcrest.Matchers.is;
7+
import static org.hamcrest.Matchers.nullValue;
8+
import static org.junit.Assert.assertThat;
9+
10+
import org.junit.Test;
11+
12+
import com.sap.hcp.cf.logging.common.Defaults;
13+
import com.sap.hcp.cf.logging.common.Fields;
14+
15+
public class HttpHeadersTest {
16+
17+
@Test
18+
public void hasCorrectNumberOfTypes() throws Exception {
19+
assertThat(HttpHeaders.values().length, is(equalTo(7)));
20+
}
21+
22+
@Test
23+
public void hasCorrectNames() throws Exception {
24+
assertThat(HttpHeaders.CONTENT_LENGTH.getName(), is("content-length"));
25+
assertThat(HttpHeaders.CONTENT_TYPE.getName(), is("content-type"));
26+
assertThat(HttpHeaders.CORRELATION_ID.getName(), is("X-CorrelationID"));
27+
assertThat(HttpHeaders.REFERER.getName(), is("referer"));
28+
assertThat(HttpHeaders.TENANT_ID.getName(), is("tenantid"));
29+
assertThat(HttpHeaders.X_FORWARDED_FOR.getName(), is("x-forwarded-for"));
30+
assertThat(HttpHeaders.X_VCAP_REQUEST_ID.getName(), is("x-vcap-request-id"));
31+
}
32+
33+
@Test
34+
public void hasCorrectFields() throws Exception {
35+
assertThat(HttpHeaders.CONTENT_LENGTH.getField(), is(nullValue()));
36+
assertThat(HttpHeaders.CONTENT_TYPE.getField(), is(nullValue()));
37+
assertThat(HttpHeaders.CORRELATION_ID.getField(), is(Fields.CORRELATION_ID));
38+
assertThat(HttpHeaders.REFERER.getField(), is(nullValue()));
39+
assertThat(HttpHeaders.TENANT_ID.getField(), is(Fields.TENANT_ID));
40+
assertThat(HttpHeaders.X_FORWARDED_FOR.getField(), is(nullValue()));
41+
assertThat(HttpHeaders.X_VCAP_REQUEST_ID.getField(), is(nullValue()));
42+
}
43+
44+
@Test
45+
public void defaultFieldValueIsUnknownWithoutConfiguredField() throws Exception {
46+
assertThat(HttpHeaders.CONTENT_LENGTH.getFieldValue(), is(Defaults.UNKNOWN));
47+
assertThat(HttpHeaders.CONTENT_TYPE.getFieldValue(), is(Defaults.UNKNOWN));
48+
assertThat(HttpHeaders.REFERER.getFieldValue(), is(Defaults.UNKNOWN));
49+
assertThat(HttpHeaders.X_FORWARDED_FOR.getFieldValue(), is(Defaults.UNKNOWN));
50+
assertThat(HttpHeaders.X_VCAP_REQUEST_ID.getFieldValue(), is(Defaults.UNKNOWN));
51+
}
52+
53+
@Test
54+
public void hasCorrectAliases() throws Exception {
55+
assertThat(HttpHeaders.CONTENT_LENGTH.getAliases(), is(empty()));
56+
assertThat(HttpHeaders.CONTENT_TYPE.getAliases(), is(empty()));
57+
assertThat(HttpHeaders.CORRELATION_ID.getAliases(), containsInAnyOrder(HttpHeaders.X_VCAP_REQUEST_ID));
58+
assertThat(HttpHeaders.REFERER.getAliases(), is(empty()));
59+
assertThat(HttpHeaders.TENANT_ID.getAliases(), is(empty()));
60+
assertThat(HttpHeaders.X_FORWARDED_FOR.getAliases(), is(empty()));
61+
assertThat(HttpHeaders.X_VCAP_REQUEST_ID.getAliases(), is(empty()));
62+
}
63+
64+
@Test
65+
public void propagatesCorrectHeaders() throws Exception {
66+
assertThat(HttpHeaders.propagated(), containsInAnyOrder(HttpHeaders.CORRELATION_ID, HttpHeaders.TENANT_ID));
67+
}
68+
69+
}

0 commit comments

Comments
 (0)