001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.rules.constraint.property;
017
018 import org.springframework.binding.PropertyAccessStrategy;
019 import org.springframework.rules.constraint.Required;
020
021 /**
022 * Predicate that tests if the specified bean property is "present" - that is,
023 * passes the "Required" test.
024 *
025 * @author Keith Donald
026 * @see Required
027 */
028 public class PropertyPresent extends AbstractPropertyConstraint {
029
030 /**
031 * Constructs a property present predicate for the specified property.
032 *
033 * @param propertyName
034 * The bean property name.
035 */
036 public PropertyPresent(String propertyName) {
037 super(propertyName);
038 }
039
040 protected boolean test(PropertyAccessStrategy domainObjectAccessStrategy) {
041 return Required.instance().test(domainObjectAccessStrategy.getPropertyValue(getPropertyName()));
042 }
043
044 public String toString() {
045 return "required if '" + getPropertyName() + "' present";
046 }
047
048 }