[ 
https://issues.apache.org/jira/browse/SLING-5815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15365006#comment-15365006
 ] 

Tommaso Teofili commented on SLING-5815:
----------------------------------------

thanks for the review [~mpetria].

bq. 1. I think the RR should still be part of the signature and not wrapped in 
an object

I think it can be part of the signature, not sure what looks best though, I do 
not have a strong opinion there

{quote}
2. I am a bit concerned about the path expanding that happens when you want to 
pass only simple paths to the serializer. For a request that contains 
+/content/a/.* it will have to traverse the entire subtree and potentially 
create a very big list of paths which will end up in the filter.xml. Maybe we 
can define a export structure that contains the minimized information without 
requiring to traverse the tree before passing it to serializer: an ExportFilter 
that contains a set of TreeFilter, each TreeFilter contains a root path and two 
lists of excluded and included PathFilters. So basically passing down to the 
serializer the responsibility of decoding the filters. We can have an utility 
method (ExportFilter.getCoveredPaths(ResourceResolver) or 
ExporterFilterUtils.getCoveredPaths(ExporterFilter, ResourceResolver)) to 
evaluate the paths, and that can be used by Kryo and Avro.
{quote}

the attached patch is a draft, I'm not planning to commit it as it is; I agree 
that part is not good enough yet. We have the FileVault use case where filters 
are defined as rules and it's FV's responsibility to match them while 
traversing the resource tree, while looking into the other serializers I 
started to think that it shouldn't be the serializer responsibility to decode 
and expand the filters while traversing the hierarchy of resources, the best 
would be if it would just be responsible of transforming a list of paths 
(eventually with some white / black list on properties) into a binary and 
viceversa. On the other hand I agree that the current patch could have problems 
with big subtrees as you'd have a possibly huge list of paths originated after 
having traversed the whole subtree. I agree on the proposal of having an export 
structure which encodes such filters in a way that, together with some utility 
methods, doesn't require serializers' implementors to re-implement such 
expansion logic.
Also note that {{DistributionExportOptions}} and {{DistributionImportOptions}} 
are concrete classes at the moment holding very few information, but I was 
thinking that maybe they could be {{@ProviderType}} interfaces, that can be 
enriched over time without breaking backward compatibility.

> Expose DistributionContentSerializer 
> -------------------------------------
>
>                 Key: SLING-5815
>                 URL: https://issues.apache.org/jira/browse/SLING-5815
>             Project: Sling
>          Issue Type: Improvement
>          Components: Distribution
>            Reporter: Tommaso Teofili
>            Assignee: Tommaso Teofili
>             Fix For: Content Distribution 0.2.0
>
>         Attachments: SLING-5815.0.patch
>
>
> Expose {{DistributionContentSerializer}} API from 
> _org.apache.sling.distribution.core_ in order to allow implementation of 
> custom serialization formats (e.g. Avro and Kryo defined in 
> _org.apache.sling.distribution.extensions_).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to