use of jp.ossc.nimbus.beans.dataset.RecordList in project nimbus by nimbus-org.
the class DatabaseHostResolverService method reloadHostMap.
public void reloadHostMap() throws Exception {
hostMap.clear();
RecordList result = (RecordList) persistentManager.loadQuery(connectionFactory.getConnection(), selectSql, null, new RecordList());
for (int i = 0; i < result.size(); i++) {
Record record = (Record) result.get(i);
try {
InetAddress inetAddress = InetAddress.getByName(record.getStringProperty(1));
hostMap.put(record.getStringProperty(0), inetAddress);
} catch (UnknownHostException e) {
throw new IllegalArgumentException(e);
}
}
}
use of jp.ossc.nimbus.beans.dataset.RecordList in project nimbus by nimbus-org.
the class DefaultPersistentManagerService method fillOutput.
private Object fillOutput(ResultSet resultSet, Object output, Map outputMapping, boolean isCursor) throws PersistentException {
if (output == null) {
if (isCursor) {
output = new LinkedHashMap();
} else {
output = new ArrayList();
}
}
try {
final ResultSetMetaData metadata = resultSet.getMetaData();
final int colCount = metadata.getColumnCount();
boolean isOutputMappingFromMetaData = false;
if (outputMapping == null && (output instanceof RecordList || output instanceof Record || !(output instanceof List))) {
outputMapping = new LinkedHashMap();
for (int i = 1; i <= colCount; i++) {
outputMapping.put(metadata.getColumnName(i), metadata.getColumnName(i).toUpperCase());
}
isOutputMappingFromMetaData = true;
}
if (output instanceof DataSet) {
final Set headerSet = new LinkedHashSet();
final Map recordListMap = new LinkedHashMap();
final Map recordListPropMap = new LinkedHashMap();
Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
final Property prop = propertyAccess.getProperty((String) entry.getValue());
if (prop instanceof NestedProperty) {
Object obj = ((NestedProperty) prop).getThisProperty().getProperty(output);
if (obj instanceof RecordList) {
recordListMap.put(entry.getKey(), (RecordList) obj);
recordListPropMap.put(entry.getKey(), ((NestedProperty) prop).getNestedProperty());
} else {
headerSet.add(entry.getKey());
}
} else {
throw new PersistentException("Output bean fill error.");
}
}
final Map recordMap = new HashMap();
while (true) {
if (!isCursor) {
if (!resultSet.next()) {
break;
}
}
if (headerSet.size() != 0) {
itr = headerSet.iterator();
while (itr.hasNext()) {
final String columnName = (String) itr.next();
setValue(output, (String) outputMapping.get(columnName), resultSet, columnName, isOutputMappingFromMetaData);
}
headerSet.clear();
}
recordMap.clear();
itr = recordListMap.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
final RecordList list = (RecordList) entry.getValue();
Record record = (Record) recordMap.get(list);
if (record == null) {
record = list.createRecord();
recordMap.put(list, record);
list.addRecord(record);
}
Property prop = (Property) recordListPropMap.get(entry.getKey());
prop.setProperty(record, getValue(record, prop, resultSet, (String) entry.getKey()));
}
if (isCursor) {
break;
}
}
return output;
} else if (output instanceof RecordList) {
RecordList list = (RecordList) output;
if (list.getSchema() == null) {
list.setSchema(createSchema(metadata));
}
while (true) {
if (!isCursor) {
if (!resultSet.next()) {
break;
}
}
final Record record = list.createRecord();
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
}
list.addRecord(record);
if (isCursor) {
break;
}
}
return list;
} else if (output instanceof List) {
List list = (List) output;
while (true) {
if (!isCursor) {
if (!resultSet.next()) {
break;
}
}
final Map record = new LinkedHashMap();
for (int i = 1; i <= colCount; i++) {
record.put(metadata.getColumnName(i), resultSet.getObject(i));
}
list.add(record);
if (isCursor) {
break;
}
}
return list;
} else if (output instanceof Class) {
final Class outputClass = (Class) output;
if (Record.class.isAssignableFrom(outputClass)) {
if (!isCursor) {
if (!resultSet.next()) {
return null;
}
}
Record record = null;
try {
record = (Record) outputClass.newInstance();
if (record.getSchema() == null) {
record.setSchema(createSchema(metadata));
}
} catch (InstantiationException e) {
throw new PersistentException("Output bean instantiate error.", e);
} catch (IllegalAccessException e) {
throw new PersistentException("Output bean instantiate error.", e);
}
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
}
return record;
} else if (RecordList.class.isAssignableFrom(outputClass)) {
RecordList list = null;
try {
list = (RecordList) outputClass.newInstance();
if (list.getSchema() == null) {
list.setSchema(createSchema(metadata));
}
} catch (InstantiationException e) {
throw new PersistentException("Output bean instantiate error.", e);
} catch (IllegalAccessException e) {
throw new PersistentException("Output bean instantiate error.", e);
}
while (true) {
if (!isCursor) {
if (!resultSet.next()) {
break;
}
}
final Record record = list.createRecord();
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
}
list.addRecord(record);
if (isCursor) {
break;
}
}
return list;
} else if (outputClass.isArray()) {
List list = new ArrayList();
while (true) {
Object bean = fillOutput(resultSet, outputClass.getComponentType(), outputMapping, isCursor);
if (bean == null && (resultSet.isAfterLast() || resultSet.getRow() == 0)) {
break;
}
list.add(bean);
if (isCursor) {
break;
}
}
return listToArray(list, outputClass.getComponentType());
} else if (String.class.equals(outputClass) || outputClass.isPrimitive() || Number.class.isAssignableFrom(outputClass)) {
if (!isCursor) {
if (!resultSet.next()) {
return null;
}
}
return getValue(outputClass, resultSet, 1);
} else {
if (isCursor) {
Object bean = null;
try {
bean = outputClass.newInstance();
} catch (InstantiationException e) {
throw new PersistentException("Output bean instantiate error.", e);
} catch (IllegalAccessException e) {
throw new PersistentException("Output bean instantiate error.", e);
}
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
setValue(bean, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
}
return bean;
} else {
final List list = new ArrayList();
while (resultSet.next()) {
Object bean = null;
try {
bean = outputClass.newInstance();
} catch (InstantiationException e) {
if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
return getValue(outputClass, resultSet, 1);
}
throw new PersistentException("Output bean instantiate error.", e);
} catch (IllegalAccessException e) {
if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
return getValue(outputClass, resultSet, 1);
}
throw new PersistentException("Output bean instantiate error.", e);
}
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
try {
setValue(bean, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
} catch (PersistentException e) {
if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
return getValue(outputClass, resultSet, 1);
}
throw e;
}
}
list.add(bean);
}
return list;
}
}
} else {
if (!isCursor) {
if (!resultSet.next()) {
return null;
}
}
if (output instanceof Record) {
Record record = (Record) output;
if (record.getSchema() == null) {
record.setSchema(createSchema(metadata));
}
}
final Iterator itr = outputMapping.entrySet().iterator();
while (itr.hasNext()) {
final Map.Entry entry = (Map.Entry) itr.next();
setValue(output, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
}
return output;
}
} catch (IllegalArgumentException e) {
throw new PersistentException("Output bean fill error.", e);
} catch (NoSuchPropertyException e) {
throw new PersistentException("Output bean fill error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Output bean fill error.", e.getTargetException());
} catch (SQLException e) {
throw new PersistentException("Output bean fill error.", e);
}
}
use of jp.ossc.nimbus.beans.dataset.RecordList in project nimbus by nimbus-org.
the class DefaultPersistentManagerService method persistQueryInternal.
private int persistQueryInternal(String sql, PreparedStatement statement, Object input, List inputProps, boolean isBatch) throws PersistentException {
if (input instanceof DataSet) {
if (inputProps == null) {
throw new PersistentException("Input bean get error.");
}
final List beans = new ArrayList();
final List properties = new ArrayList();
int count = -1;
try {
final Iterator itr = inputProps.iterator();
while (itr.hasNext()) {
final Object propStr = itr.next();
final Property prop = propertyAccess.getProperty(propStr.toString());
if (prop instanceof NestedProperty) {
Object obj = ((NestedProperty) prop).getThisProperty().getProperty(input);
if (obj instanceof RecordList) {
final int size = ((RecordList) obj).size();
if (count == -1) {
count = size;
} else if (count != size) {
throw new PersistentException("Input bean get error.");
}
}
beans.add(obj);
properties.add(((NestedProperty) prop).getNestedProperty());
} else {
throw new PersistentException("Input bean get error.");
}
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
if (count == 0) {
return 0;
}
if (count == -1) {
try {
for (int i = 0, imax = beans.size(); i < imax; i++) {
Object param = ((Property) properties.get(i)).getProperty(beans.get(i));
setObject(statement, i + 1, param);
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
try {
if (isBatch) {
statement.addBatch();
return -1;
} else {
return statement.executeUpdate();
}
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
} else {
for (int i = 0; i < count; i++) {
try {
for (int j = 0, jmax = beans.size(); j < jmax; j++) {
Object bean = beans.get(j);
if (bean instanceof RecordList) {
bean = ((RecordList) bean).get(i);
}
Object param = ((Property) properties.get(j)).getProperty(bean);
setObject(statement, j + 1, param);
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
try {
statement.addBatch();
} catch (SQLException e) {
throw new PersistentException("SQL add batch error : " + sql, e);
}
}
if (isBatch) {
return -1;
} else {
int[] updateCounts = null;
try {
updateCounts = statement.executeBatch();
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
int result = 0;
for (int i = 0; i < updateCounts.length; i++) {
if (updateCounts[i] > 0) {
result += updateCounts[i];
}
}
if (result == 0) {
try {
result = statement.getUpdateCount();
} catch (SQLException e) {
}
}
return result;
}
}
} else if ((input instanceof List) || (input != null && input.getClass().isArray())) {
List list = null;
if (input instanceof List) {
list = (List) input;
} else {
list = (List) Arrays.asList((Object[]) input);
}
if (inputProps != null) {
if (list.size() == 0) {
return 0;
}
for (int j = 0, jmax = list.size(); j < jmax; j++) {
Object bean = list.get(j);
try {
for (int i = 0, imax = inputProps.size(); i < imax; i++) {
Object param = propertyAccess.get(bean, inputProps.get(i).toString());
setObject(statement, i + 1, param);
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
try {
statement.addBatch();
} catch (SQLException e) {
throw new PersistentException("SQL add batch error : " + sql, e);
}
}
if (isBatch) {
return -1;
} else {
int[] updateCounts = null;
try {
updateCounts = statement.executeBatch();
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
int result = 0;
for (int i = 0; i < updateCounts.length; i++) {
if (updateCounts[i] > 0) {
result += updateCounts[i];
}
}
if (result == 0) {
try {
result = statement.getUpdateCount();
} catch (SQLException e) {
}
}
return result;
}
} else {
if (list.size() == 0) {
return 0;
}
int result = 0;
for (int i = 0, imax = list.size(); i < imax; i++) {
Object bean = list.get(i);
if (bean instanceof Map) {
try {
Iterator propItr = ((Map) bean).keySet().iterator();
int j = 0;
while (propItr.hasNext()) {
Object param = propertyAccess.get(bean, propItr.next().toString());
setObject(statement, ++j, param);
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
try {
statement.addBatch();
} catch (SQLException e) {
throw new PersistentException("SQL add batch error : " + sql, e);
}
if (i == imax - 1) {
if (isBatch) {
result = -1;
} else {
int updateCount = 0;
int[] updateCounts = null;
try {
updateCounts = statement.executeBatch();
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
for (int j = 0; j < updateCounts.length; j++) {
if (updateCounts[j] > 0) {
updateCount += updateCounts[j];
}
}
if (updateCount == 0) {
try {
updateCount = statement.getUpdateCount();
} catch (SQLException e) {
}
}
result = updateCount;
}
}
} else {
setObject(statement, i + 1, bean);
if (i == imax - 1) {
if (isBatch) {
try {
statement.addBatch();
} catch (SQLException e) {
throw new PersistentException("SQL add batch error : " + sql, e);
}
result = -1;
} else {
try {
result = statement.executeUpdate();
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
}
}
}
}
return result;
}
} else {
try {
if (input != null) {
if (inputProps != null) {
for (int i = 0, imax = inputProps.size(); i < imax; i++) {
Object param = propertyAccess.get(input, inputProps.get(i).toString());
setObject(statement, i + 1, param);
}
} else {
if (input instanceof Map) {
Iterator propItr = ((Map) input).keySet().iterator();
int i = 0;
while (propItr.hasNext()) {
Object param = propertyAccess.get(input, propItr.next().toString());
setObject(statement, ++i, param);
}
} else {
setObject(statement, 1, input);
}
}
} else {
if (inputProps != null) {
for (int i = 0, imax = inputProps.size(); i < imax; i++) {
setObject(statement, i + 1, null);
}
} else {
int parameterCount = 0;
try {
ParameterMetaData paramMetaData = statement.getParameterMetaData();
parameterCount = paramMetaData.getParameterCount();
} catch (SQLException e) {
throw new PersistentException("Illegal sql : " + sql, e);
} catch (IncompatibleClassChangeError e) {
}
if (parameterCount != 0) {
setObject(statement, 1, input);
}
}
}
} catch (NoSuchPropertyException e) {
throw new PersistentException("Input bean get error.", e);
} catch (InvocationTargetException e) {
throw new PersistentException("Input bean get error.", e.getTargetException());
}
if (isBatch) {
try {
statement.addBatch();
} catch (SQLException e) {
throw new PersistentException("SQL add batch error : " + sql, e);
}
return -1;
} else {
try {
return statement.executeUpdate();
} catch (SQLException e) {
throw new PersistentException("SQL execute error : " + sql, e);
}
}
}
}
use of jp.ossc.nimbus.beans.dataset.RecordList in project nimbus by nimbus-org.
the class DatabaseSharedContextKeyDistributorService method startService.
public void startService() throws Exception {
if (connectionFactoryServiceName != null) {
connectionFactory = (ConnectionFactory) ServiceManagerFactory.getServiceObject(connectionFactoryServiceName);
}
if (connectionFactory == null) {
throw new IllegalArgumentException("ConnectionFactory is null.");
}
if (persistentManagerServiceName != null) {
persistentManager = (PersistentManager) ServiceManagerFactory.getServiceObject(persistentManagerServiceName);
}
if (persistentManager == null) {
throw new IllegalArgumentException("PersistentManager is null.");
}
Connection con = null;
try {
con = connectionFactory.getConnection();
List keyList = null;
if (databaseRecord == null) {
if (keyClass == null) {
keyList = new RecordList();
}
} else {
keyList = new RecordList(null, databaseRecord.getRecordSchema());
}
Object[] keys = null;
if (keyList == null) {
keys = (Object[]) persistentManager.loadQuery(con, keySelectQuery, null, Array.newInstance(keyClass, 0).getClass());
} else {
persistentManager.loadQuery(con, keySelectQuery, null, keyList);
keys = keyList.toArray();
}
if (keys == null || keys.length == 0) {
throw new IllegalArgumentException("Not found key record. keySelectQuery=" + keySelectQuery);
}
Map tmpKeyIndexMap = new HashMap();
if (keyList == null) {
for (int i = 0; i < keys.length; i++) {
tmpKeyIndexMap.put(keys[i], new Integer(i));
}
} else {
PropertyAccess propertyAccess = new PropertyAccess();
for (int i = 0; i < keys.length; i++) {
Object key = null;
if (keyClass == null) {
key = propertyAccess.get(keys[i], keyPropertyName);
} else {
key = keyClass.newInstance();
for (Iterator itr = keyPropertyMappings.entrySet().iterator(); itr.hasNext(); ) {
Map.Entry propMapping = (Map.Entry) itr.next();
propertyAccess.set(key, (String) propMapping.getValue(), propertyAccess.get(keys[i], (String) propMapping.getKey()));
}
}
tmpKeyIndexMap.put(key, new Integer(i));
}
}
keyIndexMap = tmpKeyIndexMap;
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
}
}
}
}
use of jp.ossc.nimbus.beans.dataset.RecordList in project nimbus by nimbus-org.
the class DataSetServletRequestParameterConverter method convert.
/**
* 指定されたオブジェクトを変換する。<p>
*
* @param obj 変換対象のオブジェクト
* @return 変換後のオブジェクト
* @exception ConvertException 変換に失敗した場合
*/
public Object convert(Object obj) throws ConvertException {
if (!(obj instanceof ServletRequest)) {
return null;
}
ServletRequest request = (ServletRequest) obj;
final Map paramMap = request.getParameterMap();
if (paramMap == null || paramMap.size() == 0) {
return null;
}
String defaultDsName = request.getParameter(dataSetParameterName);
if ((defaultDsName == null || defaultDsName.length() == 0) && request instanceof HttpServletRequest) {
HttpServletRequest httpReq = (HttpServletRequest) request;
String path = httpReq.getServletPath();
if (httpReq.getPathInfo() != null) {
path = path + httpReq.getPathInfo();
}
if (path != null) {
int index = path.lastIndexOf('.');
if (index != -1) {
path = path.substring(0, index);
}
defaultDsName = dataSetPathPrefix + path;
}
}
final Map currentDsMap = new HashMap();
final Iterator entries = paramMap.entrySet().iterator();
while (entries.hasNext()) {
final Map.Entry entry = (Map.Entry) entries.next();
final String key = (String) entry.getKey();
final int index = key.indexOf(datasetDelimiter);
if (index == -1 || index == key.length() - 1) {
continue;
}
String dsName = null;
if (index == 0) {
dsName = defaultDsName;
} else {
dsName = key.substring(0, index);
}
if (dsName == null) {
continue;
}
DataSet ds = (DataSet) currentDsMap.get(dsName);
if (ds == null) {
if (dataSetMap.containsKey(dsName)) {
ds = ((DataSet) dataSetMap.get(dsName)).cloneSchema();
} else if (beanFlowInvokerFactory != null && beanFlowInvokerFactory.containsFlow(dsName)) {
final BeanFlowInvoker beanFlowInvoker = beanFlowInvokerFactory.createFlow(dsName);
Object ret = null;
try {
ret = beanFlowInvoker.invokeFlow(null);
} catch (Exception e) {
throw new ConvertException("Exception occured in BeanFlow '" + dsName + "'", e);
}
if (!(ret instanceof DataSet)) {
throw new ConvertException("Result of BeanFlow '" + dsName + "' is not DataSet.");
}
ds = (DataSet) ret;
} else {
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Unknown DataSet : " + dsName);
}
}
currentDsMap.put(dsName, ds);
}
final String propStr = key.substring(index + 1);
Property prop = (Property) propertyCache.get(propStr);
if (prop == null) {
try {
prop = PropertyFactory.createProperty(propStr);
if (isIgnoreUnknownParameter) {
prop.setIgnoreNullProperty(true);
}
} catch (IllegalArgumentException e) {
throw new ConvertException("Parameter '" + key + "' is illegal.", e);
}
Property old = (Property) propertyCache.putIfAbsent(propStr, prop);
if (old != null) {
prop = old;
}
}
final String[] vals = (String[]) entry.getValue();
try {
if (prop instanceof NestedProperty) {
Property thisProp = ((NestedProperty) prop).getThisProperty();
if (thisProp instanceof NestedProperty) {
Property nestedProp = ((NestedProperty) prop).getNestedProperty();
Property nestedProp2 = ((NestedProperty) thisProp).getNestedProperty();
if (nestedProp2 instanceof IndexedProperty) {
Property thisProp2 = ((NestedProperty) thisProp).getThisProperty();
Object thisObj = thisProp2.getProperty(ds);
if (thisObj == null) {
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.");
}
}
if (thisObj instanceof RecordList) {
setRecordListProperty((RecordList) thisObj, nestedProp.getPropertyName(), ((IndexedProperty) nestedProp2).getIndex(), vals);
} else {
// ありえない
prop.setProperty(ds, vals[vals.length - 1]);
}
} else {
Object thisObj = thisProp.getProperty(ds);
if (thisObj == null) {
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.");
}
}
if (thisObj instanceof RecordList) {
setRecordListProperty((RecordList) thisObj, nestedProp.getPropertyName(), vals);
} else if (thisObj instanceof Record) {
setRecordProperty((Record) thisObj, nestedProp.getPropertyName(), nestedProp.getPropertyType(thisObj), vals);
} else {
nestedProp.setProperty(thisObj, vals[vals.length - 1]);
}
}
} else {
Object thisObj = thisProp.getProperty(ds);
if (thisObj == null) {
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.");
}
}
Property nestedProp = ((NestedProperty) prop).getNestedProperty();
if (thisObj instanceof RecordList) {
setRecordListProperty((RecordList) thisObj, nestedProp.getPropertyName(), vals);
} else if (thisObj instanceof Record) {
setRecordProperty((Record) thisObj, nestedProp.getPropertyName(), nestedProp.getPropertyType(thisObj), vals);
} else {
nestedProp.setProperty(thisObj, vals[vals.length - 1]);
}
}
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.");
}
} catch (PropertySetException e) {
Throwable cause = e.getCause();
if (cause instanceof ConvertException) {
throw (ConvertException) cause;
}
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.", e);
}
} catch (NoSuchPropertyException e) {
if (isIgnoreUnknownParameter) {
continue;
} else {
throw new ConvertException("Parameter '" + key + "' is illegal.", e);
}
} catch (InvocationTargetException e) {
throw new ConvertException("Parameter '" + key + "' is illegal.", e.getTargetException());
}
}
if (currentDsMap.size() == 0) {
return null;
} else if (currentDsMap.size() == 1) {
return currentDsMap.values().iterator().next();
} else {
return currentDsMap;
}
}
Aggregations