Author: sumedha
Date: Sun Jan  6 02:56:49 2008
New Revision: 11883

Log:

Database connection should not close, when inside a call-query call

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  
    Sun Jan  6 02:56:49 2008
@@ -100,16 +100,16 @@
                HashMap inputs = new HashMap();
                for (Iterator iter = inputMessage.getChildElements(); 
iter.hasNext();) {
                        OMElement element = (OMElement) iter.next();
-                       inputs.put(element.getLocalName(), element.getText());
+                       inputs.put(element.getLocalName().toLowerCase(), 
element.getText());
                }
 
                OMElement callQueryElement =
                        operationElement.getFirstChildWithName(new 
QName("call-query"));
-               return getRDBMSResult(callQueryElement, axisService, inputs);
+               return getRDBMSResult(callQueryElement, axisService, 
inputs,false);
        }
 
        private static OMElement getRDBMSResult(OMElement callQueryElement, 
AxisService axisService,
-                       HashMap inputs) {
+                       HashMap inputs,boolean callFromNestedQuery) {
                OMElement resultElement = null;
                OMElement queryElement ;
                try {
@@ -145,9 +145,9 @@
                                        if(inOutType == null){
                                                inOutType = "IN";
                                        }
-                                       params.put(paramName, sqlType);
-                                       paramOrder.put(new Integer(position + 
1), paramName);
-                                       paramType.put(paramName, inOutType);
+                                       params.put(paramName.toLowerCase(), 
sqlType);
+                                       paramOrder.put(new Integer(position + 
1), paramName.toLowerCase());
+                                       paramType.put(paramName.toLowerCase(), 
inOutType);
                                        position++;                             
        
                                //}
                        }
@@ -160,13 +160,13 @@
 
                        if (firstPartOfSQL.equalsIgnoreCase("SELECT")) {
                                resultElement =
-                                       getSelectResult(queryElement, inputs, 
params, paramOrder,paramType, axisService, false);
+                                       getSelectResult(queryElement, inputs, 
params, paramOrder,paramType, axisService, false,callFromNestedQuery);
 
                        } else if (firstPartOfSQL.equalsIgnoreCase("INSERT")
                                        || 
firstPartOfSQL.equalsIgnoreCase("UPDATE")
                                        || 
firstPartOfSQL.equalsIgnoreCase("DELETE")
                                        || 
firstPartOfSQL.equalsIgnoreCase("CREATE")) {
-                               resultElement = getSelectResult(queryElement, 
inputs, params, paramOrder,paramType, axisService, true);
+                               resultElement = getSelectResult(queryElement, 
inputs, params, paramOrder,paramType, axisService, true,callFromNestedQuery);
 
                        }else {
                                //This can be a stored procedure call
@@ -367,7 +367,7 @@
                                                } 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);
+                                                       OMElement rowElement = 
getRDBMSResult(element, axisService, elementValues,true);
                                                        
row.addChild(rowElement);
                                                }
                                        }
@@ -486,7 +486,8 @@
        
        
        private static OMElement getSelectResult(OMElement queryElement, 
HashMap inputValues,
-                       HashMap params, HashMap paramOrder,HashMap paramType, 
AxisService axisService, boolean isDML)
+                       HashMap params, HashMap paramOrder,HashMap paramType, 
AxisService axisService, boolean isDML
+                       ,boolean callFromNestedQuery)
        throws AxisFault {
                OMElement resultElement = null;
                Connection conn = null;
@@ -495,6 +496,8 @@
                OMNamespace omNs = null;
                Result resultObj = null;
                String columnDefalut = null;
+
+ 
                
                String sqlQuery = queryElement.getFirstChildWithName(new 
QName("sql")).getText();
                try {
@@ -607,9 +610,9 @@
                                                                
row.addAttribute(displayTagName, elementValue, omNs);
                                                        }
                                                } else if 
(resultObj.getElementLocalNames()[a].equals("call-query")) {
-                               //OMElement element = (OMElement) 
elements.next();                                                  
+                               //OMElement element = (OMElement) 
elements.next();
                                                    OMElement element = 
(OMElement)tmpElementsArrayList.get(a);
-                                                       OMElement rowElement = 
getRDBMSResult(element, axisService, elementValues);
+                                                       OMElement rowElement = 
getRDBMSResult(element, axisService, elementValues,true);
                                                        
row.addChild(rowElement);
                                                }
                                        }
@@ -627,7 +630,7 @@
                
                finally {
                        try {
-                               if (conn != null) {
+                               if (conn != null && !callFromNestedQuery) {
                                        conn.commit();
                                        conn.close();
                                }
@@ -1185,7 +1188,7 @@
                        paramName = (String) paramOrder.get(new Integer(i + 1));
                        sqlType = (String) params.get(paramName);
                        paramType = (String)paramTypes.get(paramName);
-                       value = (String) inputs.get(paramName.toLowerCase());
+                       value = (String) inputs.get(paramName);
                        log.debug("Param name : "+paramName
                                +" SQL Type : "+sqlType
                                +" Value : "+value);

_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev

Reply via email to