1d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/**************************************************************** 2d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Licensed to the Apache Software Foundation (ASF) under one * 3d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * or more contributor license agreements. See the NOTICE file * 4d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * distributed with this work for additional information * 5d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * regarding copyright ownership. The ASF licenses this file * 6d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * to you under the Apache License, Version 2.0 (the * 7d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "License"); you may not use this file except in compliance * 8d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * with the License. You may obtain a copy of the License at * 9d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * * 10d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * http://www.apache.org/licenses/LICENSE-2.0 * 11d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * * 12d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Unless required by applicable law or agreed to in writing, * 13d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * software distributed under the License is distributed on an * 14d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 15d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * KIND, either express or implied. See the License for the * 16d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * specific language governing permissions and limitations * 17d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * under the License. * 18d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen ****************************************************************/ 19d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 20d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpackage org.apache.james.mime4j.field; 21d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 22d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen//BEGIN android-changed: Stubbing out logging 23d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.Log; 24d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.LogFactory; 25d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen//END android-changed 26d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.field.address.AddressList; 27d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.field.address.Mailbox; 28d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.field.address.MailboxList; 29d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport org.apache.james.mime4j.field.address.parser.ParseException; 30d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 31d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpublic class MailboxField extends Field { 32d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen private final Mailbox mailbox; 33d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen private final ParseException parseException; 34d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 35d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen protected MailboxField(final String name, final String body, final String raw, final Mailbox mailbox, final ParseException parseException) { 36d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen super(name, body, raw); 37d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen this.mailbox = mailbox; 38d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen this.parseException = parseException; 39d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 40d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 41d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public Mailbox getMailbox() { 42d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen return mailbox; 43d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 44d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 45d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public ParseException getParseException() { 46d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen return parseException; 47d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 48d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 49d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public static class Parser implements FieldParser { 50d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen private static Log log = LogFactory.getLog(Parser.class); 51d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 52d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public Field parse(final String name, final String body, final String raw) { 53d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen Mailbox mailbox = null; 54d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen ParseException parseException = null; 55d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen try { 56d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen MailboxList mailboxList = AddressList.parse(body).flatten(); 57d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen if (mailboxList.size() > 0) { 58d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen mailbox = mailboxList.get(0); 59d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 60d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 61d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen catch (ParseException e) { 62d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen if (log.isDebugEnabled()) { 63d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen log.debug("Parsing value '" + body + "': "+ e.getMessage()); 64d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 65d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen parseException = e; 66d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 67d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen return new MailboxField(name, body, raw, mailbox, parseException); 68d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 69d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 70d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen} 71