Skip to content

Commit 459ff20

Browse files
committed
LdapFieldNameTranslator#translateAttributeName now returns a Path
1 parent 334cde5 commit 459ff20

File tree

7 files changed

+59
-50
lines changed

7 files changed

+59
-50
lines changed

lightblue-ldap-common/src/main/java/com/redhat/lightblue/common/ldap/LdapFieldNameTranslator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@ public interface LdapFieldNameTranslator {
3939
* @param attributeName - ldap attribute name
4040
* @return metadata fieldName or the attributeName back at you if no mapping is present.
4141
*/
42-
public String translateAttributeName(String attributeName);
42+
public Path translateAttributeName(String attributeName);
4343

4444
}

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/LdapCRUDController.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,10 @@ public CRUDInsertionResponse insert(CRUDOperationContext ctx,
125125
}
126126
}
127127

128-
JsonNode rootNode = document.getRoot();
129-
130-
String uniqueFieldName = fieldNameTranslator.translateAttributeName(store.getUniqueAttribute());
131-
JsonNode uniqueNode = rootNode.get(uniqueFieldName);
128+
Path uniqueFieldPath = fieldNameTranslator.translateAttributeName(store.getUniqueAttribute());
129+
JsonNode uniqueNode = document.get(uniqueFieldPath);
132130
if(uniqueNode == null){
133-
throw new IllegalArgumentException(uniqueFieldName + " is a required field");
131+
throw new IllegalArgumentException(store.getUniqueAttribute() + " is a required field");
134132
}
135133

136134
String dn = createDN(store, uniqueNode.asText());
@@ -281,18 +279,18 @@ public void beforeUpdateEntityInfo(Metadata m, EntityInfo ei, boolean newEntity)
281279
*/
282280
@Override
283281
public void beforeCreateNewSchema(Metadata m, EntityMetadata md) {
284-
LdapFieldNameTranslator property = getLdapFieldNameTranslator(md);
282+
LdapFieldNameTranslator ldapNameTranslator = getLdapFieldNameTranslator(md);
285283

286284
Fields fields = md.getEntitySchema().getFields();
287-
String dnFieldName = property.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
288-
if(!fields.has(dnFieldName)){
289-
fields.addNew(new SimpleField(dnFieldName, StringType.TYPE));
285+
Path dnFieldPath = ldapNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
286+
if(!fields.has(dnFieldPath.toString())){
287+
fields.addNew(new SimpleField(dnFieldPath.toString(), StringType.TYPE));
290288
}
291289

292-
String objectClassFieldName = property.translateAttributeName(LdapConstant.ATTRIBUTE_OBJECT_CLASS);
293-
if(!fields.has(objectClassFieldName)){
294-
fields.addNew(new ArrayField(objectClassFieldName, new SimpleArrayElement(StringType.TYPE)));
295-
fields.addNew(new SimpleField(LightblueUtil.createArrayCountFieldName(objectClassFieldName), IntegerType.TYPE));
290+
Path objectClassFieldPath = ldapNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_OBJECT_CLASS);
291+
if(!fields.has(objectClassFieldPath.toString())){
292+
fields.addNew(new ArrayField(objectClassFieldPath.toString(), new SimpleArrayElement(StringType.TYPE)));
293+
fields.addNew(new SimpleField(LightblueUtil.createArrayCountFieldName(objectClassFieldPath.toString()), IntegerType.TYPE));
296294
}
297295
}
298296

@@ -435,7 +433,7 @@ private void projectChanges(Projection projection, CRUDOperationContext ctx, Map
435433
),
436434
md);
437435

438-
String dnFieldName = fieldNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
436+
Path dnFieldPath = fieldNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
439437

440438
for(Entry<DocCtx, String> insertedDn : documentToDnMap.entrySet()){
441439
DocCtx document = insertedDn.getKey();
@@ -445,7 +443,7 @@ private void projectChanges(Projection projection, CRUDOperationContext ctx, Map
445443
// If only dn is in the projection, then no need to query LDAP.
446444
if((requiredAttributeNames.size() == 1) && requiredAttributeNames.contains(LdapConstant.ATTRIBUTE_DN)){
447445
ObjectNode node = factory.objectNode();
448-
node.set(dnFieldName, StringType.TYPE.toJson(factory, dn));
446+
node.set(dnFieldPath.toString(), StringType.TYPE.toJson(factory, dn));
449447
projectionResponseJson = new DocCtx(new JsonDoc(node));
450448
}
451449
//TODO: else fetch entity from LDAP and project results.

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/model/TrivialLdapFieldNameTranslator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ public String translateFieldName(Path path) {
3535
}
3636

3737
@Override
38-
public String translateAttributeName(String attributeName) {
39-
return attributeName;
38+
public Path translateAttributeName(String attributeName) {
39+
return new Path(attributeName);
4040
}
4141

4242
}

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/translator/ResultTranslator.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ public class ResultTranslator {
5757
private final JsonNodeFactory factory;
5858
private final EntityMetadata md;
5959
private final LdapFieldNameTranslator fieldNameTranslator;
60-
private final String fieldNameDN;
60+
private final Path dnPath;
6161

6262
public ResultTranslator(JsonNodeFactory factory, EntityMetadata md, LdapFieldNameTranslator fieldNameTranslator){
6363
this.factory = factory;
6464
this.md = md;
6565
this.fieldNameTranslator = fieldNameTranslator;
66-
fieldNameDN = fieldNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
66+
dnPath = fieldNameTranslator.translateAttributeName(LdapConstant.ATTRIBUTE_DN);
6767
}
6868

6969
public DocCtx translate(SearchResultEntry entry){
@@ -72,7 +72,7 @@ public DocCtx translate(SearchResultEntry entry){
7272

7373
if (cursor.firstChild()) {
7474
ObjectNode node = toJson(entry, cursor, fields);
75-
node.set(fieldNameDN, StringType.TYPE.toJson(factory, entry.getDN()));
75+
node.set(dnPath.toString(), StringType.TYPE.toJson(factory, entry.getDN()));
7676
return new DocCtx(new JsonDoc(node));
7777
}
7878

@@ -85,15 +85,14 @@ private ObjectNode toJson(SearchResultEntry entry, FieldCursor fieldCursor, Fiel
8585
String entityName = md.getEntityInfo().getName();
8686

8787
do {
88-
FieldTreeNode field = fieldCursor.getCurrentNode();
89-
String fieldName = field.getName();
88+
Path fieldPath = fieldCursor.getCurrentPath();
9089

91-
if(fieldNameDN.equalsIgnoreCase(fieldName)){
90+
if(dnPath.matches(fieldPath)){
9291
//DN is not handled as a normal attribute, can be skipped.
9392
continue;
9493
}
95-
else if(LightblueUtil.isFieldObjectType(fieldName)){
96-
node.set(fieldName, StringType.TYPE.toJson(factory, entityName));
94+
else if(LightblueUtil.isFieldObjectType(fieldPath.toString())){
95+
node.set(fieldPath.toString(), StringType.TYPE.toJson(factory, entityName));
9796
}
9897
else{
9998
appendToJsonNode(entry, fieldCursor, node, fields);

lightblue-ldap-crud/src/test/java/com/redhat/lightblue/crud/ldap/model/TrivialLdapFieldNameTranslatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void testTranslateFieldName(){
3535
@Test
3636
public void testTranslateAttributeName(){
3737
String attributeName = "fakeAttributeName";
38-
assertEquals(attributeName, new TrivialLdapFieldNameTranslator().translateAttributeName(attributeName));
38+
assertEquals(attributeName, new TrivialLdapFieldNameTranslator().translateAttributeName(attributeName).toString());
3939
}
4040

4141
}

lightblue-ldap-metadata/src/main/java/com/redhat/lightblue/metadata/ldap/model/LdapMetadata.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ public String translateFieldName(Path path){
6161
}
6262

6363
@Override
64-
public String translateAttributeName(String attributeName){
64+
public Path translateAttributeName(String attributeName){
6565
for(Entry<String, String> f2a : fieldsToAttributes.entrySet()){
6666
if(f2a.getValue().equalsIgnoreCase(attributeName)){
67-
return f2a.getKey();
67+
return new Path(f2a.getKey());
6868
}
6969
}
70-
return attributeName;
70+
return new Path(attributeName);
7171
}
7272

7373
/**

lightblue-ldap-metadata/src/test/java/com/redhat/lightblue/metadata/ldap/model/LdapMetadataTest.java

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ public void testTranslateFieldName(){
3636
String fieldName = "fakeFieldName";
3737
String attributeName = "fakeAttributeName";
3838

39-
LdapMetadata property = new LdapMetadata();
40-
property.addFieldToAttribute(fieldName, attributeName);
41-
property.addFieldToAttribute("anotherField", "anotherAttribute");
39+
LdapMetadata metadata = new LdapMetadata();
40+
metadata.addFieldToAttribute(fieldName, attributeName);
41+
metadata.addFieldToAttribute("anotherField", "anotherAttribute");
4242

43-
assertEquals(attributeName, property.translateFieldName(new Path(fieldName)));
43+
assertEquals(attributeName, metadata.translateFieldName(new Path(fieldName)));
4444
}
4545

4646
@Test
4747
public void testTranslateFieldName_WithPath(){
4848
String fieldName = "fakePath.fakeFieldName";
4949
String attributeName = "fakeAttributeName";
5050

51-
LdapMetadata property = new LdapMetadata();
52-
property.addFieldToAttribute(fieldName, attributeName);
51+
LdapMetadata metadata = new LdapMetadata();
52+
metadata.addFieldToAttribute(fieldName, attributeName);
5353

54-
assertEquals(attributeName, property.translateFieldName(new Path(fieldName)));
54+
assertEquals(attributeName, metadata.translateFieldName(new Path(fieldName)));
5555
}
5656

5757
@Test
@@ -60,10 +60,10 @@ public void testTranslateFieldName_WithPath_MatchesOnTail(){
6060
String pathedFieldName = "fakePath." + fieldName;
6161
String attributeName = "fakeAttributeName";
6262

63-
LdapMetadata property = new LdapMetadata();
64-
property.addFieldToAttribute(fieldName, attributeName);
63+
LdapMetadata metadata = new LdapMetadata();
64+
metadata.addFieldToAttribute(fieldName, attributeName);
6565

66-
assertEquals(attributeName, property.translateFieldName(new Path(pathedFieldName)));
66+
assertEquals(attributeName, metadata.translateFieldName(new Path(pathedFieldName)));
6767
}
6868

6969
@Test
@@ -78,29 +78,41 @@ public void testTranslateAttributeName(){
7878
String fieldName = "fakeFieldName";
7979
String attributeName = "fakeAttributeName";
8080

81-
LdapMetadata property = new LdapMetadata();
82-
property.addFieldToAttribute(fieldName, attributeName);
83-
property.addFieldToAttribute("anotherField", "anotherAttribute");
81+
LdapMetadata metadata = new LdapMetadata();
82+
metadata.addFieldToAttribute(fieldName, attributeName);
83+
metadata.addFieldToAttribute("anotherField", "anotherAttribute");
8484

85-
assertEquals(fieldName, property.translateAttributeName(attributeName));
85+
assertEquals(fieldName, metadata.translateAttributeName(attributeName).toString());
86+
}
87+
88+
@Test
89+
public void testTranslateAttributeName_WithPath(){
90+
String fieldName = "somePath.fakeFieldName";
91+
String attributeName = "fakeAttributeName";
92+
93+
LdapMetadata metadata = new LdapMetadata();
94+
metadata.addFieldToAttribute(fieldName, attributeName);
95+
metadata.addFieldToAttribute("anotherField", "anotherAttribute");
96+
97+
assertEquals(fieldName, metadata.translateAttributeName(attributeName).toString());
8698
}
8799

88100
@Test
89101
public void testTranslateAttributeName_ValueNotPresent(){
90102
String attributeName = "fakeAttributeName";
91103

92-
assertEquals(attributeName, new LdapMetadata().translateAttributeName(attributeName));
104+
assertEquals(attributeName, new LdapMetadata().translateAttributeName(attributeName).toString());
93105
}
94106

95107
@Test
96108
public void testGetFieldsToAttributes_AssertImmutable(){
97-
LdapMetadata property = new LdapMetadata();
98-
property.addFieldToAttribute("anotherField", "anotherAttribute");
109+
LdapMetadata metadata = new LdapMetadata();
110+
metadata.addFieldToAttribute("anotherField", "anotherAttribute");
99111

100-
Map<String, String> fieldsToAttributes = property.getFieldsToAttributes();
112+
Map<String, String> fieldsToAttributes = metadata.getFieldsToAttributes();
101113
assertNotNull(fieldsToAttributes);
102-
assertMapEquivalent(fieldsToAttributes, property.getFieldsToAttributes());
103-
assertNotSame(fieldsToAttributes, property.getFieldsToAttributes());
114+
assertMapEquivalent(fieldsToAttributes, metadata.getFieldsToAttributes());
115+
assertNotSame(fieldsToAttributes, metadata.getFieldsToAttributes());
104116
}
105117

106118
}

0 commit comments

Comments
 (0)