44
44
import com .redhat .lightblue .crud .CRUDUpdateResponse ;
45
45
import com .redhat .lightblue .crud .CrudConstants ;
46
46
import com .redhat .lightblue .crud .DocCtx ;
47
- import com .redhat .lightblue .crud .ldap .model .TrivialLdapFieldNameTranslator ;
48
47
import com .redhat .lightblue .crud .ldap .translator .FilterTranslator ;
49
48
import com .redhat .lightblue .crud .ldap .translator .ResultTranslator ;
50
49
import com .redhat .lightblue .crud .ldap .translator .SortTranslator ;
51
50
import com .redhat .lightblue .eval .FieldAccessRoleEvaluator ;
52
51
import com .redhat .lightblue .eval .Projector ;
53
52
import com .redhat .lightblue .hystrix .ldap .InsertCommand ;
54
- import com .redhat .lightblue .metadata .ArrayField ;
55
53
import com .redhat .lightblue .metadata .DataStore ;
56
- import com .redhat .lightblue .metadata .EntityInfo ;
57
54
import com .redhat .lightblue .metadata .EntityMetadata ;
58
55
import com .redhat .lightblue .metadata .FieldCursor ;
59
- import com .redhat .lightblue .metadata .Fields ;
60
- import com .redhat .lightblue .metadata .Metadata ;
56
+ import com .redhat .lightblue .metadata .MetadataConstants ;
61
57
import com .redhat .lightblue .metadata .MetadataListener ;
62
- import com .redhat .lightblue .metadata .SimpleArrayElement ;
63
- import com .redhat .lightblue .metadata .SimpleField ;
64
- import com .redhat .lightblue .metadata .types .IntegerType ;
65
58
import com .redhat .lightblue .metadata .types .StringType ;
66
59
import com .redhat .lightblue .query .Projection ;
67
60
import com .redhat .lightblue .query .QueryExpression ;
@@ -107,7 +100,7 @@ public CRUDInsertionResponse insert(CRUDOperationContext ctx,
107
100
108
101
EntityMetadata md = ctx .getEntityMetadata (ctx .getEntityName ());
109
102
LdapDataStore store = getLdapDataStore (md );
110
- LdapFieldNameTranslator fieldNameTranslator = getLdapFieldNameTranslator (md );
103
+ LdapFieldNameTranslator fieldNameTranslator = LdapCrudUtil . getLdapFieldNameTranslator (md );
111
104
112
105
FieldAccessRoleEvaluator roles = new FieldAccessRoleEvaluator (md , ctx .getCallerRoles ());
113
106
EntryBuilder entryBuilder = new EntryBuilder (md , fieldNameTranslator );
@@ -128,7 +121,7 @@ public CRUDInsertionResponse insert(CRUDOperationContext ctx,
128
121
Path uniqueFieldPath = fieldNameTranslator .translateAttributeName (store .getUniqueAttribute ());
129
122
JsonNode uniqueNode = document .get (uniqueFieldPath );
130
123
if (uniqueNode == null ){
131
- throw Error .get ("Required Field" , store .getUniqueAttribute ());
124
+ throw Error .get (MetadataConstants . ERR_PARSE_MISSING_ELEMENT , store .getUniqueAttribute ());
132
125
}
133
126
134
127
String dn = createDN (store , uniqueNode .asText ());
@@ -206,7 +199,7 @@ public CRUDFindResponse find(CRUDOperationContext ctx,
206
199
207
200
LDAPConnection connection = getNewLdapConnection (store );
208
201
209
- LdapFieldNameTranslator fieldNameTranslator = getLdapFieldNameTranslator (md );
202
+ LdapFieldNameTranslator fieldNameTranslator = LdapCrudUtil . getLdapFieldNameTranslator (md );
210
203
211
204
try {
212
205
//TODO: Support scopes other than SUB
@@ -265,43 +258,7 @@ public void updatePredefinedFields(CRUDOperationContext ctx, JsonDoc doc) {
265
258
266
259
@ Override
267
260
public MetadataListener getMetadataListener () {
268
- return new MetadataListener () {
269
-
270
- @ Override
271
- public void beforeUpdateEntityInfo (Metadata m , EntityInfo ei , boolean newEntity ) {
272
- //Do Nothing!!
273
- }
274
-
275
- /**
276
- * Ensure that dn and objectClass are on the entity.
277
- */
278
- @ Override
279
- public void beforeCreateNewSchema (Metadata m , EntityMetadata md ) {
280
- LdapFieldNameTranslator ldapNameTranslator = getLdapFieldNameTranslator (md );
281
-
282
- Fields fields = md .getEntitySchema ().getFields ();
283
- Path dnFieldPath = ldapNameTranslator .translateAttributeName (LdapConstant .ATTRIBUTE_DN );
284
- if (!fields .has (dnFieldPath .toString ())){
285
- fields .addNew (new SimpleField (dnFieldPath .toString (), StringType .TYPE ));
286
- }
287
-
288
- Path objectClassFieldPath = ldapNameTranslator .translateAttributeName (LdapConstant .ATTRIBUTE_OBJECT_CLASS );
289
- if (!fields .has (objectClassFieldPath .toString ())){
290
- fields .addNew (new ArrayField (objectClassFieldPath .toString (), new SimpleArrayElement (StringType .TYPE )));
291
- fields .addNew (new SimpleField (LightblueUtil .createArrayCountFieldName (objectClassFieldPath .toString ()), IntegerType .TYPE ));
292
- }
293
- }
294
-
295
- @ Override
296
- public void afterUpdateEntityInfo (Metadata m , EntityInfo ei , boolean newEntity ) {
297
- //Do Nothing!!
298
- }
299
-
300
- @ Override
301
- public void afterCreateNewSchema (Metadata m , EntityMetadata md ) {
302
- //Do Nothing!!
303
- }
304
- };
261
+ return new LdapMetadataListener ();
305
262
}
306
263
307
264
/**
@@ -320,26 +277,6 @@ private LdapDataStore getLdapDataStore(EntityMetadata md){
320
277
return (LdapDataStore ) store ;
321
278
}
322
279
323
- /**
324
- * Shortcut method to get and return the {@link LdapFieldNameTranslator} on the passed
325
- * in {@link EntityMetadata}.
326
- * @param md - {@link EntityMetadata}.
327
- * @return {@link LdapFieldNameTranslator}
328
- * @throws IllegalArgumentException if an invalid object is found.
329
- */
330
- private LdapFieldNameTranslator getLdapFieldNameTranslator (EntityMetadata md ){
331
- Object o = md .getEntityInfo ().getProperties ().get (LdapConstant .BACKEND );
332
-
333
- if (o == null ){
334
- return new TrivialLdapFieldNameTranslator ();
335
- }
336
-
337
- if (!(o instanceof LdapFieldNameTranslator )){
338
- throw new IllegalArgumentException ("Object of type " + o .getClass () + " is not supported." );
339
- }
340
- return (LdapFieldNameTranslator ) o ;
341
- }
342
-
343
280
/**
344
281
* Creates and returns a unique DN.
345
282
* @param store - {@link LdapDataStore} to use as the BaseDN and field that
@@ -418,7 +355,7 @@ private void projectChanges(Projection projection, CRUDOperationContext ctx, Map
418
355
419
356
EntityMetadata md = ctx .getEntityMetadata (ctx .getEntityName ());
420
357
JsonNodeFactory factory = ctx .getFactory ().getNodeFactory ();
421
- LdapFieldNameTranslator fieldNameTranslator = getLdapFieldNameTranslator (md );
358
+ LdapFieldNameTranslator fieldNameTranslator = LdapCrudUtil . getLdapFieldNameTranslator (md );
422
359
423
360
Set <String > requiredAttributeNames = translateFieldNames (fieldNameTranslator , gatherRequiredFields (md , projection , null , null ));
424
361
Projector projector = Projector .getInstance (
0 commit comments