1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.synchronoss.cpo.jdbc;
22
23 import org.slf4j.*;
24 import org.synchronoss.cpo.CpoException;
25 import org.synchronoss.cpo.helper.ExceptionHelper;
26 import org.synchronoss.cpo.meta.domain.CpoAttribute;
27
28 import java.lang.reflect.InvocationTargetException;
29 import java.sql.ResultSet;
30
31
32
33
34
35 public class ResultSetCpoData extends AbstractJdbcCpoData {
36
37 private static final Logger logger = LoggerFactory.getLogger(CallableStatementCpoData.class);
38 private ResultSet rs = null;
39
40 public ResultSetCpoData(ResultSet rs, CpoAttribute cpoAttribute, int index) {
41 super(cpoAttribute, index);
42 this.rs = rs;
43 }
44
45 @Override
46 public Object invokeGetter() throws CpoException {
47 Object javaObject;
48 JavaSqlMethod<?> javaSqlMethod = JavaSqlMethods.getJavaSqlMethod(getDataGetterReturnType());
49 if (javaSqlMethod == null) {
50 throw new CpoException("Error Retrieveing Jdbc Method for type: " + getDataGetterReturnType().getName());
51 }
52
53 try {
54
55 javaObject = transformIn(javaSqlMethod.getRsGetter().invoke(rs, getIndex()));
56 } catch (IllegalAccessException iae) {
57 logger.debug("Error Invoking ResultSet Method: " + ExceptionHelper.getLocalizedMessage(iae));
58 throw new CpoException(iae);
59 } catch (InvocationTargetException ite) {
60 logger.debug("Error Invoking ResultSet Method: " + ExceptionHelper.getLocalizedMessage(ite));
61 throw new CpoException(ite.getCause());
62 }
63
64 return javaObject;
65 }
66
67 }