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

Bertrand Delacretaz commented on SLING-9871:
--------------------------------------------

bq. If we can assume that we only want dependencies at the ACL level, perhaps 
we can make the language more compact...

My plan would be more to make the fragments thing a "preprocessor" concept and 
process them before parsing repoinit statements, purely at a text level, so 
something like

{code}
FRAGMENT one DEPENDS ON three
some text that's not even valid repoinit statements
create path /one
END FRAGMENT

FRAGMENT two DEPENDS ON three
set ACL for assets-users
allow jcr:read on /conf
end
END FRAGMENT

FRAGMENT three
# just a comment here
END FRAGMENT
{code}

Would result in the following text being passed to the repoinit parser:

{code}
# FRAGMENTS processed in this order: three, one, two
# just a comment here
some text that's not even valid repoinit statements
create path /one
set ACL for assets-users
allow jcr:read on /conf
end
{code}

(which is not even a valid repoinit script but that doesn't matter at the 
FRAGMENTS level)

I think that's the simplest thing to implement and (if [~ashishc] agrees) 
solves the problem, and can apply to any repoinit statements, it's just an 
aggregation thing that's not directly related to the language syntax.

bq. This also has a small advantage of not requiring us to name fragments for 
reordering purposes.

Good point, if we want to make names optional we could also use

{code}
FRAGMENT DEPENDS ON three
{code}

But requiring unique fragment names might make things clearer and 
troubleshooting simpler (see the FRAGMENTS comment in the output above)


> Specifying order of ACEs through repoinit directives
> ----------------------------------------------------
>
>                 Key: SLING-9871
>                 URL: https://issues.apache.org/jira/browse/SLING-9871
>             Project: Sling
>          Issue Type: Improvement
>          Components: Repoinit
>            Reporter: Ashish Chopra
>            Priority: Major
>
> As of writing this, repoinit processor (among other things not relevant to 
> this JIRA) collects {{create path}} statements and {{set ACL}} statements 
> declared in all the feature-models applicable to feature-aggregate under 
> consideration.
> Upon repository initialization, it applies all the {{create path}} 
> statements, followed by all the {{set ACL}} statements. However, the order in 
> which {{set ACL}} statements declared across feature models are applied isn't 
> defined (currently, it seems to be based on feature-model-name, 
> alphabetically ascending).
> This causes issues at times because we want the order of the ACEs to be 
> maintained (e.g., "deny"s for everyone at a given path must be the first ACE, 
> followed by "allow"s for specific, non-system-user principals)
> Repoinit should be able to support this requirement.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to