Author: azeez
Date: Mon Jan 14 01:36:23 2008
New Revision: 12197

Log:

Optimized the code which keeps track of the latest message sequence for each 
operation



Added:
   
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/MaxTracedMessageSequenceDO.java
Modified:
   trunk/wsas/java/modules/core/conf/hibernate/wso2wsas.hbm.xml
   
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dao/MessageDAO.java

Modified: trunk/wsas/java/modules/core/conf/hibernate/wso2wsas.hbm.xml
==============================================================================
--- trunk/wsas/java/modules/core/conf/hibernate/wso2wsas.hbm.xml        
(original)
+++ trunk/wsas/java/modules/core/conf/hibernate/wso2wsas.hbm.xml        Mon Jan 
14 01:36:23 2008
@@ -171,6 +171,22 @@
     </class>
 
     <!-- #################################################### -->
+    <!-- ### MaxTracedMessageSequenceDO   (max_msg_seq_t) ### -->
+    <!-- #################################################### -->
+    <class 
name="org.wso2.wsas.persistence.dataobject.MaxTracedMessageSequenceDO"
+           table="max_msg_seq_t">
+        <id name="id" column="c_id">
+            <generator class="native"/>
+        </id>
+        <property name="lastUpdatedTime" type="timestamp" 
column="c_last_updated" not-null="true"/>
+
+        <property name="serviceName" column="c_svc_name" not-null="true"/>
+        <property name="serviceVersion" column="c_svc_version" 
not-null="true"/>
+        <property name="operationName" column="c_op_name" not-null="true"/>
+        <property name="sequenceId" column="c_seq_id" not-null="true"/>
+    </class>
+
+    <!-- #################################################### -->
     <!-- ##### OperationParameterDO   (operation_parameter_t) ##### -->
     <!-- #################################################### -->
     <class name="org.wso2.wsas.persistence.dataobject.OperationParameterDO"

Modified: 
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dao/MessageDAO.java
==============================================================================
--- 
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dao/MessageDAO.java  
    (original)
+++ 
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dao/MessageDAO.java  
    Mon Jan 14 01:36:23 2008
@@ -23,6 +23,7 @@
 import org.wso2.wsas.persistence.dataobject.MessageDO;
 import org.wso2.wsas.persistence.dataobject.OperationDO;
 import org.wso2.wsas.persistence.dataobject.ServiceDO;
+import org.wso2.wsas.persistence.dataobject.MaxTracedMessageSequenceDO;
 import org.wso2.wsas.util.HibernateConfig;
 
 import java.util.List;
@@ -41,17 +42,18 @@
                                                    String serviceVersion,
                                                    String operationName) {
 
-        String query = "select max(msg.sequence) from MessageDO as msg " +
-                       "inner join msg.operationDO op " +
-                       "where op.service.serviceIdentifierDO.serviceId='" + 
serviceId +
-                       "' and op.service.serviceIdentifierDO.version='" + 
serviceVersion +
-                       "' and op.name='" + operationName + "'";
+        String query = "select sequenceId from MaxTracedMessageSequenceDO as 
msgSeq " +
+                       "where msgSeq.serviceName='" + serviceId +
+                       "' and msgSeq.serviceVersion='" + serviceVersion +
+                       "' and msgSeq.operationName='" + operationName + "'";
         Session session = hbConfig.currentSession();
         Transaction tx = session.beginTransaction();
 
         long maxSeq = -1;
         try {
-            Long seq = (Long) session.createQuery(query).uniqueResult();
+            Object msg = session.createQuery(query).uniqueResult();
+            System.out.println("####### MAX SEQ MSG=" + msg);
+            Long seq = (Long) msg;
             if (seq != null) {
                 maxSeq = seq.longValue();
             }
@@ -76,6 +78,10 @@
                        "inner join op.service as s where 
s.serviceIdentifierDO.serviceId='" + serviceId +
                        "' and s.serviceIdentifierDO.version='" + 
serviceVersion +
                        "' and op.name='" + operationName + "'";
+        String query2 = "from MaxTracedMessageSequenceDO as msgSeq " +
+                        "where msgSeq.serviceName='" + serviceId +
+                        "' and msgSeq.serviceVersion='" + serviceVersion +
+                        "' and msgSeq.operationName='" + operationName + "'";
         Session session = hbConfig.currentSession();
         Transaction tx = session.beginTransaction();
         try {
@@ -87,6 +93,20 @@
                 session.save(operationDO);
             }
             message.setOperationDO(operationDO);
+
+            MaxTracedMessageSequenceDO maxMsgSeq =
+                    (MaxTracedMessageSequenceDO) 
session.createQuery(query2).uniqueResult();
+            if (maxMsgSeq == null) {
+                maxMsgSeq = new MaxTracedMessageSequenceDO(serviceId,
+                                                           serviceVersion,
+                                                           operationName,
+                                                           1 );
+                maxMsgSeq.setSequenceId(message.getSequence());
+                session.save(maxMsgSeq);
+            } else {
+                maxMsgSeq.setSequenceId(message.getSequence());
+                session.update(maxMsgSeq);
+            }
             session.save(message);
             tx.commit();
         } catch (Throwable e) {

Added: 
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/MaxTracedMessageSequenceDO.java
==============================================================================
--- (empty file)
+++ 
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/MaxTracedMessageSequenceDO.java
       Mon Jan 14 01:36:23 2008
@@ -0,0 +1,71 @@
+/*                                                                             
+ * Copyright 2004,2005 The Apache Software Foundation.                         
+ *                                                                             
+ * Licensed under the Apache License, Version 2.0 (the "License");             
+ * you may not use this file except in compliance with the License.            
+ * You may obtain a copy of the License at                                     
+ *                                                                             
+ *      http://www.apache.org/licenses/LICENSE-2.0                             
+ *                                                                             
+ * Unless required by applicable law or agreed to in writing, software         
+ * distributed under the License is distributed on an "AS IS" BASIS,           
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.    
+ * See the License for the specific language governing permissions and         
+ * limitations under the License.                                              
+ */
+package org.wso2.wsas.persistence.dataobject;
+
+/**
+ * This DO keeps track of the maximum sequence of the traced message of each 
service operation
+ */
+public class MaxTracedMessageSequenceDO extends AbstractDataObject{
+    private String serviceName;
+    private String serviceVersion;
+    private String operationName;
+    private long sequenceId;
+
+    public MaxTracedMessageSequenceDO(String serviceName,
+                                      String serviceVersion,
+                                      String operationName,
+                                      long sequenceId) {
+        this.serviceName = serviceName;
+        this.serviceVersion = serviceVersion;
+        this.operationName = operationName;
+        this.sequenceId = sequenceId;
+    }
+
+    public MaxTracedMessageSequenceDO() {
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getServiceVersion() {
+        return serviceVersion;
+    }
+
+    public void setServiceVersion(String serviceVersion) {
+        this.serviceVersion = serviceVersion;
+    }
+
+    public String getOperationName() {
+        return operationName;
+    }
+
+    public void setOperationName(String operationName) {
+        this.operationName = operationName;
+    }
+
+    public long getSequenceId() {
+        return sequenceId;
+    }
+
+    public void setSequenceId(long sequenceId) {
+        this.sequenceId = sequenceId;
+    }
+}

_______________________________________________
Wsas-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev

Reply via email to