View Javadoc

    1   /**
    2    * Copyright (c) 2008-2011, http://www.snakeyaml.org
    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
    17  package org.yaml.snakeyaml.introspector;
    18
    19  import java.lang.reflect.Field;
    20
    21  import org.yaml.snakeyaml.error.YAMLException;
    22
    23  public class FieldProperty extends GenericProperty {
    24      private final Field field;
    25
    26      public FieldProperty(Field field) {
    27          super(field.getName(), field.getType(), field.getGenericType());
    28          this.field = field;
    29          field.setAccessible(true);
    30      }
    31
    32      @Override
    33      public void set(Object object, Object value) throws Exception {
    34          field.set(object, value);
    35      }
    36
    37      @Override
    38      public Object get(Object object) {
    39          try {
    40              return field.get(object);
    41          } catch (Exception e) {
    42              throw new YAMLException("Unable to access field " + field.getName() + " on object "
    43                      + object + " : " + e);
    44          }
    45      }
    46  }