public Data[] getData(DataRetrievalRequest request,
MessageContext msgContext) throws DataRetrievalException {
Data[] data = null;
String dialect = request.getDialect();
String identifier = request.getIdentifier();
String key = dialect;
ArrayList dataList = new ArrayList();
if (identifier != null) {
key = key + identifier;
if (dataMap.get(key) != null) {
dataList.add(dataMap.get(key));
}
} else {
dataList = getDataList(dialect);
}
AxisDataLocator dataLocator = DataLocatorFactory
.createDataLocator(dialect, (ServiceData[]) dataList.toArray(new ServiceData[0]));
if (dataLocator != null) {
try {
data = dataLocator.getData(request, msgContext);
}
catch (Throwable e) {
log.info("getData request failed for dialect, " + dialect, e);
throw new DataRetrievalException(e);
}
} else {
String message = "Failed to instantiate Data Locator for dialect, " + dialect;
log.info(message);
throw new DataRetrievalException(message);
}
return data;
}
Retrieves and returns data based on the specified request. |