001 /* 002 * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons-sandbox//contract/src/java/org/apache/commons/contract/constraints/TreeConstraints.java,v 1.1 2004/10/08 09:36:19 dflorey Exp $ 003 * $Revision: 155440 $ 004 * $Date: 2005-02-26 13:18:56 +0000 (Sat, 26 Feb 2005) $ 005 * 006 * ==================================================================== 007 * 008 * Copyright 2004 The Apache Software Foundation 009 * 010 * Licensed under the Apache License, Version 2.0 (the "License"); 011 * you may not use this file except in compliance with the License. 012 * You may obtain a copy of the License at 013 * 014 * http://www.apache.org/licenses/LICENSE-2.0 015 * 016 * Unless required by applicable law or agreed to in writing, software 017 * distributed under the License is distributed on an "AS IS" BASIS, 018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 019 * See the License for the specific language governing permissions and 020 * limitations under the License. 021 * 022 */ 023 024 package org.apache.commons.contract.constraints; 025 026 import org.apache.commons.contract.Context; 027 import org.apache.commons.i18n.bundles.TextBundle; 028 029 /** 030 * The TreeValueDescriptor class 031 * 032 */ 033 public class TreeConstraints implements Constraints { 034 private Constraints entryConstraints; 035 private Constraints arrayConstraints; 036 037 public TreeConstraints() { 038 this.entryConstraints = null; 039 arrayConstraints = new ArrayConstraints(this); 040 } 041 042 public TreeConstraints(Constraints entryValueDescriptor) { 043 this.entryConstraints = entryValueDescriptor; 044 arrayConstraints = new ArrayConstraints(this); 045 } 046 047 public Object cast(Object value, Context context) throws CastException { 048 try { 049 return arrayConstraints.cast(value, context); 050 } catch ( CastException exception ) { 051 return entryConstraints.cast(value, context); 052 } 053 } 054 055 public void validate(Object value, Context context) throws ValidationException { 056 if ( value instanceof Object[]) { 057 arrayConstraints.validate(value, context); 058 } else { 059 entryConstraints.validate(value, context); 060 } 061 } 062 063 public TextBundle verboseConstraints() { 064 return new TextBundle("booleansOnly"); 065 } 066 }