[
https://issues.apache.org/jira/browse/MAILBOX-64?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14899990#comment-14899990
]
ASF GitHub Bot commented on MAILBOX-64:
---------------------------------------
GitHub user chibenwa opened a pull request:
https://github.com/apache/james-mailbox/pull/12
Mailbox 64
RFC 2087 Mailbox Quota APIs and their implementations...
This PR is a rework of what was previously commited on MAILBOX-64, with the
following concepts :
- 1 : Allow custom QUOTA ROOT definition
- 2 : Prefer composition to inheritance
- 3 : Each part can follow different backends
- 4 : No behavioural changes if wanted using "fake" implementations
1 : RFC 2087 manage quotas for mailboxes grouped in QUOTA ROOT. A QUOTA
ROOT might group mailbox the way you want. Default is ( of course ) to group
mailboxes of a user. But you might want to group mailboxes of a departement (
or any other group of people ). API is ere, just extend it ... Note that in
regard of RFC-2087 a mailbox belongs to one and only one quota root.
2 : That is why I introduced the CurrentQuotaManager and MaxQuotaManager
APIs
3 : Coming from point 2, you can easily select ( for instance ) an in
memory cache for current quotas and select a LDAP based max quota manager (
still needs to be implemented ).
4: All implementation available, at some point implies an overhead. It
might be persisting quota uppon events, or recalculating quotas, checking
QuotaManager on COPY or APPEND operations. I thought giving people the choice
to completly drop quota support was a good idea. So I introduced No* classes.
Was I right ?
Available implementations :
- inmemory : Current Quota manager acts like a cache. Unknown quotas need
to be re-calculated . Of course, this is not persistant. Max Quota manager
should be configuered threw JAMES-511 introduced quota.xml config file ( ->
inmemory is not persistant ). In memory implementation is great for a
standalone James server ( where you can afford to re-calculate quotas... )
- cassandra : Data get stored in Cassandra. Slowest performance ( network
calls, and so on ), but it work in a distributed context.
Related to : MPT-26 , PROTOCOLS-108 , JAMES-511 , issues for which I
provide a PR at the same time.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/chibenwa/james-mailbox MAILBOX-64
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/james-mailbox/pull/12.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #12
----
commit fb8cc4f640d5b999ad0c6c6b722eb79fb3192963
Author: benwa <[email protected]>
Date: 2015-09-15T12:58:20Z
MAILBOX-64 Moving Quota related interfaces to a new package
commit 0198a71ddb0481f5e992027a33d778792b7987f3
Author: benwa <[email protected]>
Date: 2015-09-15T13:13:51Z
MAILBOX-64 Modify and extend Quota APIs
commit 236a8018c74085979b7c8a4c87d5be68736eb255
Author: benwa <[email protected]>
Date: 2015-09-15T13:16:43Z
MAILBOX-64 Correct QuotaImpl bug
commit 8f043742abfaeb81413485ffd7f120e739b2ca1c
Author: benwa <[email protected]>
Date: 2015-09-15T13:26:36Z
MAILBOX-64 Enrich QuotaImpl
commit fab95cd18bb6e2a2bd53296d43d3843d73350e36
Author: benwa <[email protected]>
Date: 2015-09-15T13:37:29Z
MAILBOX-64 Introduce a fixed max quota manager
commit c77945d75f4b8faaf61c7fb94900b7ea2bb9dee6
Author: benwa <[email protected]>
Date: 2015-09-15T13:58:58Z
MAILBOX-64 QuotaRoot Store implementation
commit 50ed6079cc2387a3f51e486a757085153c1b539b
Author: benwa <[email protected]>
Date: 2015-09-15T14:01:26Z
MAILBOX-64 QuotaRootResolver and default implementation
commit a6fe8050e976717b38e407311d15e9f47ed32731
Author: benwa <[email protected]>
Date: 2015-09-15T14:07:48Z
MAILBOX-64 Introduce a current quota calculator
commit 93e62ea19fc35cb6779a1b01a143fa060d44f965
Author: benwa <[email protected]>
Date: 2015-09-15T14:09:55Z
MAILBOX-64 Change maven configuration to include Guava and mockito
commit f723165486ff3314b128cbbecba5b397a03715f4
Author: benwa <[email protected]>
Date: 2015-09-15T14:13:29Z
MAILBOX-64 In memory implementation for PerUser max quota management
commit e7172c8c71376010aef7f411ff196cd017ad8ee5
Author: benwa <[email protected]>
Date: 2015-09-15T17:31:56Z
MAILBOX-64 Store QuotaManager implementation
commit 3ec7bbb250b9524b40f4f50993a50a33806e2864
Author: benwa <[email protected]>
Date: 2015-09-15T17:48:44Z
MAILBOX-64 Provide a Listening Quota updater and a fake quota updater
commit 0f21153a9985c129d72dfe2f4d02cb2cb116b936
Author: benwa <[email protected]>
Date: 2015-09-15T22:06:55Z
MAILBOX-64 Memory implementation for CurrentQuotaManager - can be used for
Quota caching
commit 0e563b1b96db31691f9025f87f0107a831d6245f
Author: benwa <[email protected]>
Date: 2015-09-15T22:28:25Z
MAILBOX-64 A fake QuotaManager intended to be used to deactivate Quota
related features
commit 3c0eea36bb2da75fca510315e63fb6e071f6627e
Author: benwa <[email protected]>
Date: 2015-09-15T22:55:59Z
MAILBOX-64 Provide a MaxQuotaManager that only throws
commit 652e10ddfbf6cafd4a885f6a062e2f9430fb56cd
Author: benwa <[email protected]>
Date: 2015-09-16T10:56:14Z
MAILBOX-64 StoreMessageManager should check quotas on append and copy
commands
commit b384904be21c023ada5a0d85c701ed3d760e02ff
Author: benwa <[email protected]>
Date: 2015-09-16T20:59:40Z
MAILBOX-64 Quota integration API and default tests
commit b2bd27643fbb38384824af9dc5d147a718bf8327
Author: benwa <[email protected]>
Date: 2015-09-16T21:00:01Z
MAILBOX-64 Quota integration tests for in memory
commit d465a6d765391b9b230155240542ab71a0766f33
Author: benwa <[email protected]>
Date: 2015-09-16T22:21:32Z
MAILBOX-64 Cassandra stored MaxQuotaManager + test generalization
commit b8fce43267e58c49129768b7213579edf128f6e1
Author: benwa <[email protected]>
Date: 2015-09-16T22:56:01Z
MAILBOX-64 Cassandra stored CurrentQuotaManager
commit 73110843d2fc972a0743f768b3e40b23e6c86023
Author: benwa <[email protected]>
Date: 2015-09-19T23:05:45Z
MAILBOX-64 Spring integration for quotas
----
> Add out-of-the box support for quotas
> -------------------------------------
>
> Key: MAILBOX-64
> URL: https://issues.apache.org/jira/browse/MAILBOX-64
> Project: James Mailbox
> Issue Type: New Feature
> Components: api, store
> Reporter: Norman Maurer
> Assignee: Norman Maurer
> Fix For: 0.3
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]