View Javadoc
1   /*
2    * Copyright 2004-2025 the original author or authors.
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    *    https://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 com.ibatis.sqlmap.engine.type;
17  
18  import java.sql.CallableStatement;
19  import java.sql.PreparedStatement;
20  import java.sql.ResultSet;
21  import java.sql.SQLException;
22  
23  /**
24   * Implementation of TypeHandler for dealing with unknown types.
25   */
26  public class UnknownTypeHandler extends BaseTypeHandler implements TypeHandler {
27  
28    /** The factory. */
29    private TypeHandlerFactory factory;
30  
31    /**
32     * Constructor to create via a factory.
33     *
34     * @param factory
35     *          - the factory to associate this with
36     */
37    public UnknownTypeHandler(TypeHandlerFactory factory) {
38      this.factory = factory;
39    }
40  
41    @Override
42    public void setParameter(PreparedStatement ps, int i, Object parameter, String jdbcType) throws SQLException {
43      Class searchClass = parameter.getClass();
44      if (searchClass == null) {
45        searchClass = parameter.getClass();
46      }
47      TypeHandler handler = factory.getTypeHandler(searchClass, jdbcType);
48      handler.setParameter(ps, i, parameter, jdbcType);
49    }
50  
51    @Override
52    public Object getResult(ResultSet rs, String columnName) throws SQLException {
53      Object object = rs.getObject(columnName);
54      if (rs.wasNull()) {
55        return null;
56      }
57      return object;
58    }
59  
60    @Override
61    public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
62      Object object = rs.getObject(columnIndex);
63      if (rs.wasNull()) {
64        return null;
65      }
66      return object;
67    }
68  
69    @Override
70    public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
71      Object object = cs.getObject(columnIndex);
72      if (cs.wasNull()) {
73        return null;
74      }
75      return object;
76    }
77  
78    @Override
79    public Object valueOf(String s) {
80      return s;
81    }
82  
83    @Override
84    public boolean equals(Object object, String string) {
85      if (object == null || string == null) {
86        return object == string;
87      }
88      TypeHandler handler = factory.getTypeHandler(object.getClass());
89      Object castedObject = handler.valueOf(string);
90      return object.equals(castedObject);
91    }
92  
93  }