Hi!

The Converter service does a lot of introspection and parsing of the DTO data 
structure. In many cases, a DTO is a very simple object structure. However, it 
can also be a very complex structure, too.

According to my understanding of the objectives of the Converter, one important 
goal is to be able to persist data. The idea is that the DTO describes the 
data, the whole data, and nothing but the data, so help me Uncle. Thus, it is 
the ideal way to ship the state of the system off to PersistenceLand.

I can buy into this vision.

If we do buy into this vision, then we may be missing out on a few great 
opportunities here. When data gets persisted, we often need to understand the 
relationships between the embedded objects. Or, we may want to be able to 
create an index on the data. These are a few of the reasons why we would want 
to have some kind of x-ray vision on the data structure. Since we already go 
through all the trouble of parsing the data structure in order to convert it, 
and since this is ~95% of the work, it would be really nice to provide access 
to this information in order to easily link in services that require this 
intimate knowledge. Otherwise, all the parsing would have to be done over and 
over again for each service.

I believe that it would only take a few methods to be able to leverage all the 
parsing work done by the Converter. I can think of:

  DataTree Converter.toTree(DTO dto); // DataTre gives a tree view of the 
structure
  Object tree.valueAt(DTO dto, String path); // Dot-separated path value within 
the tree structure
  void tree.set(DTO dto, String path, Object value); // Set the value at the 
given location in the tree structure
  void process(DTO dto, Consumer<?> function); // Visit each node for some kind 
of processing

Those are just some examples. Perhaps a new API would be necessary, but my main 
point here is that since we are going through all this work of implementing a 
parser, this is the IDEAL time to create this type of view on the data.


wdyt?

I can explain further the idea if you like. For now, I just wanted to get a 
quick feedback to see if there is any openness to this kind of thing.


=David


  

Reply via email to