Author: sumedha
Date: Mon Jan 7 04:09:48 2008
New Revision: 11961
Log:
element & attribute support, prevented db connection close when calling nested
queries.
Modified:
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
Modified:
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
==============================================================================
---
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
(original)
+++
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
Mon Jan 7 04:09:48 2008
@@ -171,7 +171,7 @@
}else {
//This can be a stored procedure call
resultElement =
- getStoredProcedureResult(queryElement,
inputs, params, paramOrder,paramType, axisService);
+ getStoredProcedureResult(queryElement,
inputs, params, paramOrder,paramType, axisService,callFromNestedQuery);
}
} catch (Exception e) {
@@ -250,7 +250,8 @@
}
private static OMElement getStoredProcedureResult(OMElement
queryElement,HashMap inputValues,
- HashMap params, HashMap paramOrder,HashMap paramType,
AxisService axisService)
+ HashMap params, HashMap paramOrder,HashMap paramType,
AxisService axisService
+ ,boolean callFromNestedQuery)
throws AxisFault{
OMElement resultElement = null;
Connection conn = null;
@@ -283,8 +284,7 @@
}
- //check for out parameters
-
+ //check for out parameters
OMElement result =
queryElement.getFirstChildWithName(new QName("result"));
Query query = new
Query(queryElement.getChildrenWithName(new QName("param")));
Result resultObj = new Result(result);
@@ -328,20 +328,17 @@
boolean useAsParamToNextQuery = false;
for(int a=0;a <
resultObj.getDisplayColumnNames().length;a++){
- //OMElement element =
(OMElement) elements.next();
- if
(resultObj.getElementLocalNames()[a].equals("element")) {
- //String displayTagName
= element.getAttributeValue(new QName("name"));
+ //can be one of
'element','attribute','text','link' or 'header'
+ String outPutElementType =
resultObj.getElementLocalNames()[a];
+
+ if
(outPutElementType.equals("element")
+ ||
outPutElementType.equals("attribute")) {
String displayTagName =
resultObj.getDisplayColumnNames()[a];
- //String
resultSetFieldName = element.getAttributeValue(new QName("column"));
String resultSetFieldName =
resultObj.getResultSetColumnNames()[a];
// This means,the
parameter is not part of the
// resultset. i.e. it
is being passed from user's
- // parameters.
-
- //TODO **********
-
-
+ // parameters.
if
(useAsParamToNextQuery) {
elementValue =
(String) params.get(resultSetFieldName);
@@ -355,15 +352,14 @@
elementValue = setOutparameterValue(cs, query,resultSetFieldName);
}
- if (columnDefalut ==
null || columnDefalut.equals("element")) {
+ if
(outPutElementType.equals("element")) {
OMElement
rowElement = fac.createOMElement(displayTagName, omNs);
rowElement.addChild(fac.createOMText(rowElement, elementValue));
row.addChild(rowElement);
- } else if
(columnDefalut.equals("attribute")) {
+ } else if
(outPutElementType.equals("attribute")) {
row.addAttribute(displayTagName, elementValue, omNs);
}
} else if
(resultObj.getElementLocalNames()[a].equals("call-query")) {
- //OMElement element = (OMElement)
elements.next();
OMElement element =
(OMElement)tmpElementsArrayList.get(a);
OMElement rowElement =
getRDBMSResult(element, axisService, elementValues,true);
row.addChild(rowElement);
@@ -422,7 +418,7 @@
finally {
try {
- if (conn != null) {
+ if (conn != null && !callFromNestedQuery) {
conn.commit();
conn.close();
}
@@ -493,7 +489,7 @@
OMFactory fac = null;
OMNamespace omNs = null;
Result resultObj = null;
- String columnDefalut = null;
+ String columnDefault = null;
@@ -528,11 +524,15 @@
//TODO : need to define a way to get values
automatically
//getDefaultValuesForResultsWrapper(wrapperElementName,rowElementName);
// check ??
- columnDefalut = result.getAttributeValue(new
QName("columnDefault"));
+ columnDefault = result.getAttributeValue(new
QName("columnDefault"));
fac = OMAbstractFactory.getOMFactory();
- omNs =
fac.createOMNamespace(axisService.getTargetNamespace(), "data");
+ String resultElementNS =
result.getAttributeValue(new QName("defaultNamespace"));
+
+ //omNs =
fac.createOMNamespace(axisService.getTargetNamespace(), "data");
+ omNs = fac.createOMNamespace(resultElementNS,
"data");
//OMNamespace omNs = fac.createOMNamespace("",
"data");
resultElement =
fac.createOMElement(resultObj.getResultWrapper(), omNs);
+ //resultElement =
fac.createOMElement(resultObj.getResultWrapper(),null);
}
_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev