1 /* 2 * ModeShape (http://www.modeshape.org) 3 * See the COPYRIGHT.txt file distributed with this work for information 4 * regarding copyright ownership. Some portions may be licensed 5 * to Red Hat, Inc. under one or more contributor license agreements. 6 * See the AUTHORS.txt file in the distribution for a full listing of 7 * individual contributors. 8 * 9 * ModeShape is free software. Unless otherwise indicated, all code in ModeShape 10 * is licensed to you under the terms of the GNU Lesser General Public License as 11 * published by the Free Software Foundation; either version 2.1 of 12 * the License, or (at your option) any later version. 13 * 14 * ModeShape is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * Lesser General Public License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public 20 * License along with this software; if not, write to the Free 21 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 22 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 23 */ 24 package org.modeshape.common.collection; 25 26 import java.util.LinkedList; 27 import java.util.List; 28 import net.jcip.annotations.NotThreadSafe; 29 30 /** 31 * A simple {@link Problems} collection. The problems will be {@link #iterator() returned} in the order in which they were 32 * encountered (although this cannot be guaranteed in contexts involving multiple threads or processes). 33 */ 34 @NotThreadSafe 35 public class SimpleProblems extends AbstractProblems { 36 private static final long serialVersionUID = 1L; 37 38 private List<Problem> problems; 39 40 /** 41 * {@inheritDoc} 42 * 43 * @see org.modeshape.common.collection.AbstractProblems#addProblem(Problem) 44 */ 45 @Override 46 protected void addProblem( Problem problem ) { 47 if (problem == null) return; 48 if (problems == null) problems = new LinkedList<Problem>(); 49 problems.add(problem); 50 } 51 52 /** 53 * {@inheritDoc} 54 * 55 * @see org.modeshape.common.collection.AbstractProblems#getProblems() 56 */ 57 @Override 58 protected List<Problem> getProblems() { 59 return this.problems != null ? problems : EMPTY_PROBLEMS; 60 } 61 62 /** 63 * {@inheritDoc} 64 * 65 * @see org.modeshape.common.collection.Problems#addAll(java.lang.Iterable) 66 */ 67 public void addAll( Iterable<Problem> problems ) { 68 if (problems != null) { 69 if (problems == this) return; 70 if (this.problems == null) this.problems = new LinkedList<Problem>(); 71 for (Problem problem : problems) { 72 this.problems.add(problem); 73 } 74 } 75 } 76 }