| /** |
| * 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.geronimo.javamail.store.imap.connection; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.mail.MessagingException; |
| import javax.mail.Quota; |
| |
| /** |
| * Util class to represent a list response from a IMAP server |
| * |
| * @version $Rev$ $Date$ |
| */ |
| |
| public class IMAPQuotaResponse extends IMAPUntaggedResponse { |
| // the returned quota item |
| public Quota quota; |
| |
| /** |
| * Construct a LIST response item. This can be either |
| * a response from a LIST command or an LSUB command, |
| * and will be tagged accordingly. |
| * |
| * @param type The type of resonse (LIST or LSUB). |
| * @param data The raw response data. |
| * @param source The tokenizer source. |
| * |
| * @exception MessagingException |
| */ |
| public IMAPQuotaResponse(byte[] data, IMAPResponseTokenizer source) throws MessagingException { |
| super("QUOTA", data); |
| |
| // first token is the root name, which can be either an atom or a string. |
| String tokenName = source.readString(); |
| |
| // create a quota item for this |
| quota = new Quota(tokenName); |
| |
| source.checkLeftParen(); |
| |
| List resources = new ArrayList(); |
| |
| while (source.notListEnd()) { |
| // quotas are returned as a set of triplets. The first element is the |
| // resource name, followed by the current usage and the limit value. |
| Quota.Resource resource = new Quota.Resource(source.readAtom(), source.readLong(), source.readLong()); |
| resources.add(resource); |
| } |
| |
| quota.resources = (Quota.Resource[])resources.toArray(new Quota.Resource[resources.size()]); |
| } |
| } |
| |