1   /*
2    * Copyright 2007 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
15   */
16  package org.springframework.binding.support;
17  
18  import java.util.HashMap;
19  import java.util.List;
20  import java.util.Map;
21  
22  import org.springframework.binding.PropertyMetadataAccessStrategy;
23  
24  /**
25   * @author Arne Limburg
26   */
27  public class ObjectPropertyAccessStrategyTests extends AbstractPropertyAccessStrategyTests {
28  
29     protected AbstractPropertyAccessStrategy createPropertyAccessStrategy(Object target) {
30         return new ObjectPropertyAccessStrategy(target);
31     }
32  
33      /**
34       * Test the metadata on type/readability/writeability.
35       */
36      public void testMetaData() {
37          PropertyMetadataAccessStrategy mas = pas.getMetadataAccessStrategy();
38  
39          assertPropertyMetadata(mas, "simpleProperty", String.class, true, true);
40          assertPropertyMetadata(mas, "mapProperty", Map.class, true, true);
41          assertPropertyMetadata(mas, "listProperty", List.class, true, true);
42          assertPropertyMetadata(mas, "readOnly", Object.class, true, false);
43          assertPropertyMetadata(mas, "writeOnly", Object.class, false, true);
44  
45          // type/readable/writeable depend not on the property being not null
46          assertPropertyMetadata(mas, "nestedProperty.simpleProperty", String.class, true, true);
47  
48          // test access to map
49          final Map map = new HashMap();
50          testBean.setMapProperty(map);
51          map.put("key", new Integer(1));
52          assertPropertyMetadata(mas, "mapProperty[key]", Object.class, true, true);
53      }
54  }