This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit e7a03c47fc777ab419f645bad370b6a37eaa33da Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Tue Sep 10 10:22:37 2019 +0700 JAMES-2703 Remove AbstractQuotaMatcher --- .../transport/matchers/AbstractQuotaMatcher.java | 168 --------------------- 1 file changed, 168 deletions(-) diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/AbstractQuotaMatcher.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/AbstractQuotaMatcher.java deleted file mode 100755 index 9ea2ad4..0000000 --- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/AbstractQuotaMatcher.java +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.transport.matchers; - -import java.util.ArrayList; -import java.util.Collection; - -import javax.mail.MessagingException; - -import org.apache.james.core.MailAddress; -import org.apache.james.core.MaybeSender; -import org.apache.mailet.Experimental; -import org.apache.mailet.Mail; -import org.apache.mailet.base.GenericMatcher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * <P>Abstract matcher checking whether a recipient has exceeded a maximum allowed quota.</P> - * <P>"Quota" at this level is an abstraction whose specific interpretation - * will be done by subclasses.</P> - * <P>Although extending GenericMatcher, its logic is recipient oriented.</P> - * - * @version CVS $Revision$ $Date$ - * @since 2.2.0 - * - * @deprecated JAMES-2703 This class is deprecated and will be removed straight after upcoming James 3.4.0 release - * - * Please use IsOverQuota which relies on mailbox quota apis and avoids scanning - */ -@Experimental -@Deprecated -public abstract class AbstractQuotaMatcher extends GenericMatcher { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractQuotaMatcher.class); - - /** - * Standard matcher entrypoint. - * First of all, checks the sender using {@link #isSenderChecked}. - * Then, for each recipient checks it using {@link #isRecipientChecked} and - * {@link #isOverQuota}. - * - * @throws MessagingException if either <CODE>isSenderChecked</CODE> or isRecipientChecked throw an exception - */ - @Override - public final Collection<MailAddress> match(Mail mail) throws MessagingException { - Collection<MailAddress> matching = null; - if (isSenderChecked(mail.getMaybeSender())) { - matching = new ArrayList<>(); - for (MailAddress recipient : mail.getRecipients()) { - if (isRecipientChecked(recipient) && isOverQuota(recipient, mail)) { - matching.add(recipient); - } - } - } - return matching; - } - - /** - * Does the quota check. - * Checks if {@link #getQuota} < {@link #getUsed} for a recipient. - * Catches any throwable returning false, and so should any override do. - * - * @param address the recipient addresss to check - * @param mail the mail involved in the check - * @return true if over quota - */ - protected boolean isOverQuota(MailAddress address, Mail mail) { - try { - boolean over = getQuota(address, mail) < getUsed(address, mail); - if (over) { - LOGGER.info("{} is over quota.", address); - } - return over; - } catch (Throwable e) { - LOGGER.error("Exception checking quota for: {}", address, e); - return false; - } - } - - /** - * Checks the sender. - * The default behaviour is to check that the sender <I>is not</I> null nor the local postmaster. - * If a subclass overrides this method it should "and" <CODE>super.isSenderChecked</CODE> - * to its check. - * - * @param sender the sender to check - */ - private boolean isSenderChecked(MaybeSender sender) { - return sender.asOptional() - .filter(mailAddress -> !isPostmaster(mailAddress)) - .isPresent(); - } - - private boolean isPostmaster(MailAddress mailAddress) { - return getMailetContext().getPostmaster().equals(mailAddress); - } - - /** - * Checks the recipient. - * The default behaviour is to check that the recipient <I>is not</I> the local postmaster. - * If a subclass overrides this method it should "and" <CODE>super.isRecipientChecked</CODE> - * to its check. - * - * @param recipient the recipient to check - */ - protected boolean isRecipientChecked(MailAddress recipient) throws MessagingException { - return !(isPostmaster(recipient)); - } - - /** - * Gets the quota to check against. - * - * @param address the address holding the quota if applicable - * @param mail the mail involved if needed - */ - protected abstract long getQuota(MailAddress address, Mail mail) throws MessagingException; - - /** - * Gets the used amount to check against the quota. - * - * @param address the address involved - * @param mail the mail involved if needed - */ - protected abstract long getUsed(MailAddress address, Mail mail) throws MessagingException; - - /** - * Utility method that parses an amount string. - * You can use 'k' and 'm' as optional postfixes to the amount (both upper and lowercase). - * In other words, "1m" is the same as writing "1024k", which is the same as - * "1048576". - * - * @param amount the amount string to parse - */ - protected long parseQuota(String amount) throws MessagingException { - long quota; - try { - if (amount.endsWith("k")) { - amount = amount.substring(0, amount.length() - 1); - quota = Long.parseLong(amount) * 1024; - } else if (amount.endsWith("m")) { - amount = amount.substring(0, amount.length() - 1); - quota = Long.parseLong(amount) * 1024 * 1024; - } else { - quota = Long.parseLong(amount); - } - return quota; - } catch (Exception e) { - throw new MessagingException("Exception parsing quota", e); - } - } -} --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org