KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infoglue > cms > util > AccessConstraintExceptionBuffer


1 /* ===============================================================================
2  *
3  * Part of the InfoGlue Content Management Platform (www.infoglue.org)
4  *
5  * ===============================================================================
6  *
7  * Copyright (C)
8  *
9  * This program is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License version 2, as published by the
11  * Free Software Foundation. See the file LICENSE.html for more information.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
19  * Place, Suite 330 / Boston, MA 02111-1307 / USA.
20  *
21  * ===============================================================================
22  */

23
24 package org.infoglue.cms.util;
25
26 import java.util.Iterator JavaDoc;
27
28 import org.infoglue.cms.exception.AccessConstraintException;
29
30
31 /**
32  * An extension of the ConstraintExceptionBuffer to handle access control.
33  */

34
35 public class AccessConstraintExceptionBuffer extends ConstraintExceptionBuffer
36 {
37   /**
38    * Constructs a ConstraintExceptionBuffer with no exceptions in it.
39    */

40   public AccessConstraintExceptionBuffer() {}
41
42   
43   /**
44    * Adds the specified exception to the exceptions of this buffer.
45    * Any duplicate (ConstraintException.equals()) will be silently discarded.
46    *
47    * @param exception the exception to add (chained exceptions legal).
48    */

49   
50   public final void add(AccessConstraintException exception) {
51     if(exception != null) {
52       // set chained to null but don't mess with the parameter.
53
final String JavaDoc fieldName = exception.getFieldName();
54       final String JavaDoc errorCode = exception.getErrorCode();
55       AccessConstraintException ce = new AccessConstraintException(fieldName, errorCode);
56       this.exceptions.add(ce);
57       add(exception.getChainedException());
58     }
59   }
60   
61   /**
62    * Throws the root exception; if this buffer contains no exceptions, nothing happens.
63    *
64    * @throws org.infoglue.cms.exception.ConstraintException if this buffer contains any exceptions.
65    */

66   public void throwIfNotEmpty() throws AccessConstraintException {
67     if(!isEmpty()) {
68       throw toAccessConstraintException();
69     }
70   }
71
72   /**
73    * Converts the exceptions of this buffer to chained constraint exceptions.
74    *
75    * @return the root exception of the chain.
76    */

77   public AccessConstraintException toAccessConstraintException()
78   {
79     AccessConstraintException rootException = null;
80     try
81     {
82     
83     for(Iterator JavaDoc iterator = this.exceptions.iterator(); iterator.hasNext(); )
84     {
85         AccessConstraintException ce = (AccessConstraintException) iterator.next();
86         ce.setChainedException(rootException);
87         rootException = ce;
88     }
89     }
90     catch(Exception JavaDoc e)
91     {
92         e.printStackTrace();
93     }
94     return rootException;
95   }
96 }
Popular Tags