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