Skip to content

Commit 2e5660c

Browse files
authored
fix(examples): improve logging and setup logic in examples (#316)
Signed-off-by: Scott Hamrick <2623452+cshamrick@users.noreply.github.com>
1 parent a1af6ee commit 2e5660c

File tree

10 files changed

+483
-160
lines changed

10 files changed

+483
-160
lines changed

.github/workflows/checks.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,20 @@ jobs:
4242
revert
4343
# Scopes include:
4444
# - ci: anything related to ci
45-
# - cmdline: changes to @opentdf/ctl
45+
# - cmdline: changes to cmdline
4646
# - docs: anything related solely to documentation
4747
# - main: bot generated commits
48-
# - sdk: changes to @opentdf/sdk (was lib)
48+
# - sdk: changes to sdk
4949
# - tests: test only changes
50+
# - examples: examples only changes
5051
scopes: |
5152
ci
5253
cmdline
5354
docs
5455
main
5556
sdk
5657
tests
58+
examples
5759
5860
mavenverify:
5961
runs-on: ubuntu-latest
Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,80 @@
11
package io.opentdf.platform;
2+
23
import com.connectrpc.ResponseMessageKt;
3-
import io.opentdf.platform.policy.Attribute;
44
import io.opentdf.platform.policy.AttributeRuleTypeEnum;
5+
import io.opentdf.platform.policy.Namespace;
56
import io.opentdf.platform.policy.attributes.CreateAttributeRequest;
67
import io.opentdf.platform.policy.attributes.CreateAttributeResponse;
8+
import io.opentdf.platform.policy.namespaces.GetNamespaceRequest;
79
import io.opentdf.platform.sdk.*;
10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
812

913
import java.util.Collections;
10-
import java.util.concurrent.ExecutionException;
1114

1215
import java.util.Arrays;
16+
import java.util.Objects;
1317

1418
public class CreateAttribute {
15-
public static void main(String[] args) {
1619

17-
String clientId = "opentdf";
18-
String clientSecret = "secret";
19-
String platformEndpoint = "localhost:8080";
20+
private static final Logger logger = LogManager.getLogger(CreateAttribute.class);
21+
22+
public static void main(String[] args) {
23+
24+
String clientId = "opentdf";
25+
String clientSecret = "secret";
26+
String platformEndpoint = "localhost:8080";
27+
String namespaceName = "opentdf.io";
28+
29+
SDKBuilder builder = new SDKBuilder();
2030

21-
SDKBuilder builder = new SDKBuilder();
22-
SDK sdk = builder.platformEndpoint(platformEndpoint)
23-
.clientSecret(clientId, clientSecret).useInsecurePlaintextConnection(true)
24-
.build();
31+
try (SDK sdk =
32+
builder
33+
.platformEndpoint(platformEndpoint)
34+
.clientSecret(clientId, clientSecret)
35+
.useInsecurePlaintextConnection(true)
36+
.build()) {
2537

26-
CreateAttributeRequest request = CreateAttributeRequest.newBuilder()
27-
.setNamespaceId("877990d1-609b-42ab-a273-4253b8b321eb")
28-
.setName("test")
29-
.setRule(AttributeRuleTypeEnum.forNumber(AttributeRuleTypeEnum.ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF_VALUE))
30-
.addAllValues(Arrays.asList("test1", "test2")).build();
38+
Namespace namespace =
39+
ResponseMessageKt.getOrThrow(
40+
sdk.getServices()
41+
.namespaces()
42+
.getNamespaceBlocking(
43+
GetNamespaceRequest.newBuilder()
44+
.setFqn("https://" + namespaceName)
45+
.build(),
46+
Collections.emptyMap())
47+
.execute())
48+
.getNamespace();
3149

32-
CreateAttributeResponse resp = ResponseMessageKt.getOrThrow(sdk.getServices().attributes().createAttributeBlocking(request, Collections.emptyMap()).execute());
50+
CreateAttributeRequest createAttributeRequest =
51+
CreateAttributeRequest.newBuilder()
52+
.setNamespaceId(namespace.getId())
53+
.setName("test-attribute")
54+
.setRule(
55+
AttributeRuleTypeEnum.forNumber(
56+
AttributeRuleTypeEnum.ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF_VALUE))
57+
.addAllValues(Arrays.asList("test1", "test2"))
58+
.build();
3359

34-
Attribute attribute = resp.getAttribute();
60+
CreateAttributeResponse createAttributeResponse =
61+
ResponseMessageKt.getOrThrow(
62+
sdk.getServices()
63+
.attributes()
64+
.createAttributeBlocking(createAttributeRequest, Collections.emptyMap())
65+
.execute());
3566

67+
logger.info(
68+
"Successfully created attribute with ID: {}",
69+
createAttributeResponse.getAttribute().getId());
70+
} catch (Exception e) {
71+
if (Objects.equals(e.getMessage(), "resource not found")) {
72+
logger.error("Namespace '{}' not found", namespaceName, e);
73+
} else if (Objects.equals(e.getMessage(), "resource unique field violation")) {
74+
logger.error("Attribute already exists", e);
75+
} else {
76+
logger.error("Failed to create attribute", e);
77+
}
3678
}
79+
}
3780
}
Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,55 @@
11
package io.opentdf.platform;
2+
23
import com.connectrpc.ResponseMessageKt;
34
import io.opentdf.platform.policy.namespaces.CreateNamespaceRequest;
45
import io.opentdf.platform.policy.namespaces.CreateNamespaceResponse;
56
import io.opentdf.platform.sdk.*;
7+
import org.apache.logging.log4j.LogManager;
8+
import org.apache.logging.log4j.Logger;
69

710
import java.util.Collections;
8-
import java.util.concurrent.ExecutionException;
11+
import java.util.Objects;
912

1013
public class CreateNamespace {
11-
public static void main(String[] args) {
1214

13-
String clientId = "opentdf";
14-
String clientSecret = "secret";
15-
String platformEndpoint = "localhost:8080";
15+
private static final Logger logger = LogManager.getLogger(CreateNamespace.class);
16+
17+
public static void main(String[] args) {
18+
19+
String clientId = "opentdf";
20+
String clientSecret = "secret";
21+
String platformEndpoint = "localhost:8080";
22+
String namespaceName = "opentdf.io";
23+
24+
SDKBuilder builder = new SDKBuilder();
25+
26+
try (SDK sdk =
27+
builder
28+
.platformEndpoint(platformEndpoint)
29+
.clientSecret(clientId, clientSecret)
30+
.useInsecurePlaintextConnection(true)
31+
.build()) {
1632

17-
SDKBuilder builder = new SDKBuilder();
18-
SDK sdk = builder.platformEndpoint(platformEndpoint)
19-
.clientSecret(clientId, clientSecret).useInsecurePlaintextConnection(true)
20-
.build();
33+
CreateNamespaceRequest createNamespaceRequest =
34+
CreateNamespaceRequest.newBuilder().setName(namespaceName).build();
2135

22-
CreateNamespaceRequest request = CreateNamespaceRequest.newBuilder().setName("mynamespace.com").build();
36+
CreateNamespaceResponse createNamespaceResponse =
37+
ResponseMessageKt.getOrThrow(
38+
sdk.getServices()
39+
.namespaces()
40+
.createNamespaceBlocking(createNamespaceRequest, Collections.emptyMap())
41+
.execute());
2342

24-
CreateNamespaceResponse resp = ResponseMessageKt.getOrThrow(sdk.getServices().namespaces().createNamespaceBlocking(request, Collections.emptyMap()).execute());
43+
logger.info(
44+
"Successfully created namespace with ID: {}",
45+
createNamespaceResponse.getNamespace().getId());
2546

26-
System.out.println(resp.getNamespace().getName());
27-
47+
} catch (Exception e) {
48+
if (Objects.equals(e.getMessage(), "resource unique field violation")) {
49+
logger.error("Namespace '{}' already exists", namespaceName, e);
50+
} else {
51+
logger.error("Failed to create namespace", e);
52+
}
2853
}
54+
}
2955
}
Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package io.opentdf.platform;
2+
23
import com.connectrpc.ResponseMessageKt;
34
import io.opentdf.platform.policy.Condition;
45
import io.opentdf.platform.policy.ConditionBooleanTypeEnum;
@@ -10,40 +11,64 @@
1011
import io.opentdf.platform.policy.subjectmapping.CreateSubjectConditionSetResponse;
1112
import io.opentdf.platform.policy.subjectmapping.SubjectConditionSetCreate;
1213
import io.opentdf.platform.sdk.*;
14+
import org.apache.logging.log4j.LogManager;
15+
import org.apache.logging.log4j.Logger;
1316

1417
import java.util.Collections;
15-
import java.util.concurrent.ExecutionException;
16-
1718

1819
public class CreateSubjectConditionSet {
19-
public static void main(String[] args) {
2020

21-
String clientId = "opentdf";
22-
String clientSecret = "secret";
23-
String platformEndpoint = "localhost:8080";
21+
private static final Logger logger = LogManager.getLogger(CreateSubjectConditionSet.class);
22+
23+
public static void main(String[] args) {
24+
25+
String clientId = "opentdf";
26+
String clientSecret = "secret";
27+
String platformEndpoint = "localhost:8080";
28+
29+
SDKBuilder builder = new SDKBuilder();
30+
31+
try (SDK sdk =
32+
builder
33+
.platformEndpoint(platformEndpoint)
34+
.clientSecret(clientId, clientSecret)
35+
.useInsecurePlaintextConnection(true)
36+
.build()) {
2437

25-
SDKBuilder builder = new SDKBuilder();
26-
SDK sdk = builder.platformEndpoint(platformEndpoint)
27-
.clientSecret(clientId, clientSecret).useInsecurePlaintextConnection(true)
28-
.build();
38+
SubjectSet.Builder subjectSetBuilder =
39+
SubjectSet.newBuilder()
40+
.addConditionGroups(
41+
ConditionGroup.newBuilder()
42+
.setBooleanOperator(ConditionBooleanTypeEnum.CONDITION_BOOLEAN_TYPE_ENUM_AND)
43+
.addConditions(
44+
Condition.newBuilder()
45+
.setSubjectExternalSelectorValue(".myfield")
46+
.setOperator(
47+
SubjectMappingOperatorEnum.SUBJECT_MAPPING_OPERATOR_ENUM_IN)
48+
.addSubjectExternalValues("myvalue")));
2949

30-
var subjectset = SubjectSet.newBuilder().addConditionGroups(ConditionGroup.newBuilder()
31-
.setBooleanOperator(ConditionBooleanTypeEnum.CONDITION_BOOLEAN_TYPE_ENUM_AND)
32-
.addConditions(Condition.newBuilder()
33-
.setSubjectExternalSelectorValue(".myfield")
34-
.setOperator(SubjectMappingOperatorEnum.SUBJECT_MAPPING_OPERATOR_ENUM_IN)
35-
.addSubjectExternalValues("myvalue")
36-
));
50+
CreateSubjectConditionSetRequest createSubjectConditionSetRequest =
51+
CreateSubjectConditionSetRequest.newBuilder()
52+
.setSubjectConditionSet(
53+
SubjectConditionSetCreate.newBuilder().addSubjectSets(subjectSetBuilder))
54+
.build();
3755

38-
CreateSubjectConditionSetRequest request = CreateSubjectConditionSetRequest.newBuilder()
39-
.setSubjectConditionSet(
40-
SubjectConditionSetCreate.newBuilder().addSubjectSets(subjectset))
41-
.build();
56+
CreateSubjectConditionSetResponse createSubjectConditionSetResponse =
57+
ResponseMessageKt.getOrThrow(
58+
sdk.getServices()
59+
.subjectMappings()
60+
.createSubjectConditionSetBlocking(
61+
createSubjectConditionSetRequest, Collections.emptyMap())
62+
.execute());
4263

43-
CreateSubjectConditionSetResponse resp = ResponseMessageKt.getOrThrow(sdk.getServices().subjectMappings().createSubjectConditionSetBlocking(request, Collections.emptyMap()).execute());
64+
SubjectConditionSet subjectConditionSet =
65+
createSubjectConditionSetResponse.getSubjectConditionSet();
4466

45-
SubjectConditionSet scs = resp.getSubjectConditionSet();
67+
logger.info(
68+
"Successfully created subject condition set with ID: {}", subjectConditionSet.getId());
4669

47-
System.out.println(scs.getId());
70+
} catch (Exception e) {
71+
logger.error("Failed to create subject condition set", e);
4872
}
73+
}
4974
}

0 commit comments

Comments
 (0)