Open Source Repository

Home /ibatis/ibatis-sqlmap-3.0-beta8 | Repository Home



org/apache/ibatis/reflection/wrapper/BaseWrapper.java
package org.apache.ibatis.reflection.wrapper;

import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.ReflectionException;
import org.apache.ibatis.reflection.property.PropertyTokenizer;

import java.util.List;
import java.util.Map;

public abstract class BaseWrapper implements ObjectWrapper {

  protected static final Object[] NO_ARGUMENTS = new Object[0];
  protected MetaObject metaObject;

  protected BaseWrapper(MetaObject metaObject) {
    this.metaObject = metaObject;
  }

  protected Object resolveCollection(PropertyTokenizer prop, Object object) {
    if ("".equals(prop.getName())) {
      return object;
    else {
      return metaObject.getValue(prop.getName());
    }
  }

  protected Object getCollectionValue(PropertyTokenizer prop, Object collection) {
    if (collection instanceof Map) {
      return ((Mapcollection).get(prop.getIndex());
    else {
      int i = Integer.parseInt(prop.getIndex());
      if (collection instanceof List) {
        return ((Listcollection).get(i);
      else if (collection instanceof Object[]) {
        return ((Object[]) collection)[i];
      else if (collection instanceof char[]) {
        return ((char[]) collection)[i];
      else if (collection instanceof boolean[]) {
        return ((boolean[]) collection)[i];
      else if (collection instanceof byte[]) {
        return ((byte[]) collection)[i];
      else if (collection instanceof double[]) {
        return ((double[]) collection)[i];
      else if (collection instanceof float[]) {
        return ((float[]) collection)[i];
      else if (collection instanceof int[]) {
        return ((int[]) collection)[i];
      else if (collection instanceof long[]) {
        return ((long[]) collection)[i];
      else if (collection instanceof short[]) {
        return ((short[]) collection)[i];
      else {
        throw new ReflectionException("The '" + prop.getName() "' property of " + collection + " is not a List or Array.");
      }
    }
  }

  protected void setCollectionValue(PropertyTokenizer prop, Object collection, Object value) {
    if (collection instanceof Map) {
      ((Mapcollection).put(prop.getIndex(), value);
    else {
      int i = Integer.parseInt(prop.getIndex());
      if (collection instanceof List) {
        ((Listcollection).set(i, value);
      else if (collection instanceof Object[]) {
        ((Object[]) collection)[i= value;
      else if (collection instanceof char[]) {
        ((char[]) collection)[i(Charactervalue;
      else if (collection instanceof boolean[]) {
        ((boolean[]) collection)[i(Booleanvalue;
      else if (collection instanceof byte[]) {
        ((byte[]) collection)[i(Bytevalue;
      else if (collection instanceof double[]) {
        ((double[]) collection)[i(Doublevalue;
      else if (collection instanceof float[]) {
        ((float[]) collection)[i(Floatvalue;
      else if (collection instanceof int[]) {
        ((int[]) collection)[i(Integervalue;
      else if (collection instanceof long[]) {
        ((long[]) collection)[i(Longvalue;
      else if (collection instanceof short[]) {
        ((short[]) collection)[i(Shortvalue;
      else {
        throw new ReflectionException("The '" + prop.getName() "' property of " + collection + " is not a List or Array.");
      }
    }
  }

}