This sounds good. We can revisit these things later - have some neat ideas around this but we've not the bandwidth to handle them. This is a great intermediate solution for the time being.
considering the problem we might face if we allow all modifications in the schema, I would suggest we implement only a partial support for modification in the server.
First, we will have a dual mode for the SchemaManager :
- strict, used in the server
- relaxed, used in studio and in the API
If the Schema is in strict mode :
- Add operations will be allowed for AT, C, MR, N, OC, S and SC
- Move operations will be allowed for AT, C, MR, N, OC, S and SC
- Enabling schemas will be allowed
- All other operations will be rejected (any operation done on DCR, DSR, NF and MRU, all deletes, renaming, modifications, disabling a schema)
- We can't have two SchemaObject with the same OID in a specific registry
If the Schema is in relaxed mode :
- all the operations will be allowed
- we will be able to inject more than one object in a specific registry with the same OID
Is that OK ?
PS: We also need to add some listeners in the SchemaManager, Schema and SchemaObject.