blob: 8ea5698d5a3c15ccd70071410750b4abf4699064 [file] [log] [blame]
/**
* 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: 594520 $ $Date: 2007-11-13 07:57:39 -0500 (Tue, 13 Nov 2007) $
*/
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()]);
}
}