View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.jxpath.ri.compiler;
19  
20  import org.apache.commons.jxpath.AbstractFactory;
21  import org.apache.commons.jxpath.JXPathContext;
22  import org.apache.commons.jxpath.Pointer;
23  import org.apache.commons.jxpath.TestBean;
24  
25  /**
26   * Test AbstractFactory.
27   */
28  public class VariableFactory extends AbstractFactory {
29  
30      /**
31       */
32      @Override
33      public boolean createObject(final JXPathContext context, final Pointer pointer, final Object parent, final String name, final int index) {
34          switch (name) {
35          case "testArray":
36              ((TestBean[]) parent)[index] = new TestBean();
37              return true;
38          case "stringArray":
39              ((String[]) parent)[index] = "";
40              return true;
41          case "array":
42              ((String[]) parent)[index] = "";
43              return true;
44          default:
45              break;
46          }
47          return false;
48      }
49  
50      /**
51       * Create a new object and set it on the specified variable
52       */
53      @Override
54      public boolean declareVariable(final JXPathContext context, final String name) {
55          switch (name) {
56          case "test":
57              context.getVariables().declareVariable(name, new TestBean());
58              return true;
59          case "testArray":
60              context.getVariables().declareVariable(name, new TestBean[0]);
61              return true;
62          case "stringArray":
63              context.getVariables().declareVariable(name, new String[] { "Value1" });
64              return true;
65          default:
66              break;
67          }
68          context.getVariables().declareVariable(name, null);
69          return true;
70      }
71  }