[ 
https://issues.apache.org/jira/browse/JAMES-4190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier resolved JAMES-4190.
---------------------------------
    Fix Version/s: 3.9.0
       Resolution: Done

Was done by https://github.com/apache/james-project/pull/2975

> Read only Mailbox annotation
> ----------------------------
>
>                 Key: JAMES-4190
>                 URL: https://issues.apache.org/jira/browse/JAMES-4190
>             Project: James Server
>          Issue Type: Improvement
>          Components: IMAPServer, mailbox
>            Reporter: Benoit Tellier
>            Priority: Major
>             Fix For: 3.9.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> ## Why
> As an extension writer I need to expose server side computed metadata and I 
> do not want IMAP clients to mess up with this.
> Propose a modular way to define read only annotation from the IMAP client
> ## What                                                                       
>                                                                               
>                                                  
>    
> Some metadata entries are computed server-side and must be exposed to clients 
> as read-only: GETMETADATA must return them, but SETMETADATA must respond NO 
> with an appropriate error message. Currently    
> nothing prevents a client from overwriting any annotation. A modular 
> extension point is needed so that any module (quota, ACL, vendor extensions…) 
> can declare which annotation keys it owns and are not
> client-writable.
> ## How
> Introduce a `ReadOnlyAnnotationPredicate` interface with a single method 
> `boolean isReadOnly(MailboxAnnotationKey key).` Modules register 
> implementations via Guice multibinding. A composite
> AggregatedReadOnlyAnnotationPredicate ORs all registered predicates together 
> and is injected into StoreMailboxAnnotationManager. In 
> updateAnnotationsReactive(), before canInsertOrUpdate, each incoming
> annotation key is tested — a match throws AnnotationException("annotation is 
> read-only: <key>"), which SetMetadataProcessor already maps to an IMAP NO 
> response. Server-side writers bypass this by
> calling AnnotationMapper directly, which is intentional.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to