View Javadoc

1   /**
2    * Copyright 2011-2013 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
14   */
15  
16  package org.kuali.mobility.security.authz.expression;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  
21  import org.kuali.mobility.security.user.api.User;
22  
23  public class OrExpression implements NonLeafExpression {
24  
25  	private static final long serialVersionUID = -375075043935425839L;
26  
27  	private List<Expression> children;
28  
29  	public OrExpression() {
30  		children = new ArrayList<Expression>();
31  	}
32  
33  	public boolean evaluate(User user) {
34  		for (Expression child : children) {
35  			if (child.evaluate(user)) {
36  				return true;
37  			}
38  		}
39  		return false;
40  	}
41  
42  	public void addChild(Expression expression) {
43  		children.add(expression);
44  	}
45  
46  	private Object readResolve() {
47  		if (children == null) {
48  			children = new ArrayList<Expression>();
49  		}
50  		return this;
51  	}
52  	
53  	@Override
54  	public boolean equals(Object obj) {
55  		if (obj instanceof OrExpression) {
56  			OrExpression other = (OrExpression)obj;
57  			return children.equals(other.children);
58  		}
59  		return false;
60  	}
61  	
62  	public List<Expression> getChildren() {
63  		return children;
64  	}
65  	
66  }