    1   /*
    2    * Copyright 1999-2004 The Apache Software Foundation
    3    *
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of 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,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  package org.apache.commons.jxpath;
    17
    18  import java.util.ArrayList;
    19  import java.util.HashMap;
    20  import java.util.HashSet;
    21  import java.util.List;
    22  import java.util.Map;
    23  import java.util.Set;
    24
    25  import org.apache.commons.jxpath.util.ValueUtils;
    26
    27  /***
    28   * General purpose test bean for JUnit tests for the "jxpath" component.
    29   *
    30   * @author Dmitri Plotnikov
    31   * @version $Revision: 1.8 $ $Date: 2004/02/29 14:17:40 $
    32   */
    33  public class TestBean {
    34
    35      // ------------------------------------------------------------- Properties
    36
    37      /***
    38       * An array of nested java beans.
    39       */
    40      private NestedTestBean[] beans;
    41      {
    42          beans = new NestedTestBean[2];
    43          beans[0] = new NestedTestBean("Name 1");
    44          beans[1] = new NestedTestBean("Name 2");
    45          beans[1].setInt(3);
    46      }
    47
    48      public NestedTestBean[] getBeans() {
    49          return beans;
    50      }
    51
    52      public void setBeans(NestedTestBean[] beans) {
    53          this.beans = beans;
    54      }
    55
    56      /***
    57       * A boolean property.
    58       */
    59      private boolean bool = false;
    60      public boolean getBoolean() {
    61          return bool;
    62      }
    63
    64      public void setBoolean(boolean bool) {
    65          this.bool = bool;
    66      }
    67
    68      private int integer = 1;
    69      /***
    70       * A read-only integer property
    71       */
    72      public int getInt() {
    73          return integer;
    74      }
    75
    76      public void setInt(int integer) {
    77          this.integer = integer;
    78      }
    79
    80      /***
    81       * A read-only array of integers
    82       */
    83      private int[] array = { 1, 2, 3, 4 };
    84      public int[] getIntegers() {
    85          return array;
    86      }
    87
    88      public int getIntegers(int index) {
    89          return array[index];
    90      }
    91
    92      public void setIntegers(int index, int value) {
    93          if (index >= array.length) {
    94              array = (int[]) ValueUtils.expandCollection(array, index + 1);
    95          }
    96          array[index] = value;
    97      }
    98
    99      /***
    100      * A heterogeneous list: String, Integer, NestedTestBean
    101      */
    102     private ArrayList list;
    103     public List getList() {
    104         if (list == null) {
    105             list = new ArrayList();
    106             list.add("String 3");
    107             list.add(new Integer(3));
    108             list.add(new NestedTestBean("Name 3"));
    109         }
    110         return list;
    111     }
    112
    113     /***
    114      * A Map
    115      */
    116     private HashMap map;
    117     {
    118         map = new HashMap();
    119         map.put("Key1", "Value 1");
    120         map.put("Key2", new NestedTestBean("Name 6"));
    121     }
    122
    123     public Map getMap() {
    124         return map;
    125     }
    126
    127     public void setMap(Map map) {
    128         this.map = (HashMap) map;
    129     }
    130
    131     /***
    132      * A nested read-only java bean
    133      */
    134     private NestedTestBean nestedBean = new NestedTestBean("Name 0");
    135     public NestedTestBean getNestedBean() {
    136         return nestedBean;
    137     }
    138
    139     public void setNestedBean(NestedTestBean bean) {
    140         this.nestedBean = bean;
    141     }
    142
    143     private NestedTestBean object = new NestedTestBean("Name 5");
    144
    145     /***
    146      * Returns a NestedTestBean: testing recognition of generic objects
    147      */
    148     public Object getObject() {
    149         return object;
    150     }
    151
    152     /***
    153      * Returns an array of ints: testing recognition of generic objects
    154      */
    155     public Object getObjects() {
    156         return getIntegers();
    157     }
    158
    159     /***
    160      * A heterogeneous set: String, Integer, NestedTestBean
    161      */
    162     private HashSet set;
    163     public Set getSet() {
    164         if (set == null) {
    165             set = new HashSet();
    166             set.add("String 4");
    167             set.add(new Integer(4));
    168             set.add(new NestedTestBean("Name 4"));
    169         }
    170         return set;
    171     }
    172
    173     public String toString() {
    174         return "ROOT";
    175     }
    176 }