You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2008/06/25 12:37:41 UTC
svn commit: r671500 - in
/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix:
FIXConstants.java FIXTransportSender.java
Author: hiranya
Date: Wed Jun 25 03:37:41 2008
New Revision: 671500
URL: http://svn.apache.org/viewvc?rev=671500&view=rev
Log:
Changes made;
* Introduced a new service parameter for FIX transport (transport.fix.BeginStringValidation)
* Disabled BeginString validation
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXConstants.java
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXTransportSender.java
Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXConstants.java?rev=671500&r1=671499&r2=671500&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXConstants.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXConstants.java Wed Jun 25 03:37:41 2008
@@ -96,4 +96,6 @@
public static final String FIX_RESPONSE_HANDLER_APPROACH = "transport.fix.SendAllToInSequence";
+ public static final String FIX_BEGIN_STRING_VALIDATION = "transport.fix.BeginStringValidation";
+
}
\ No newline at end of file
Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXTransportSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXTransportSender.java?rev=671500&r1=671499&r2=671500&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXTransportSender.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/fix/FIXTransportSender.java Wed Jun 25 03:37:41 2008
@@ -127,13 +127,15 @@
}
}
- private boolean isTargetVald(Map<String, String> fieldValues, SessionID targetSession) {
+ private boolean isTargetVald(Map<String, String> fieldValues, SessionID targetSession,
+ boolean beginStrValidation) {
+
String beginString = fieldValues.get(FIXConstants.BEGIN_STRING);
String deliverToCompID = fieldValues.get(FIXConstants.DELIVER_TO_COMP_ID);
String deliverToSubID = fieldValues.get(FIXConstants.DELIVER_TO_SUB_ID);
String deliverToLocationID = fieldValues.get(FIXConstants.DELIVER_TO_LOCATION_ID);
- if (!targetSession.getBeginString().equals(beginString)) {
+ if (beginStrValidation && !targetSession.getBeginString().equals(beginString)) {
return false;
} else if (!targetSession.getTargetCompID().equals(deliverToCompID)) {
return false;
@@ -267,10 +269,13 @@
String beginString = fieldValues.get(FIXConstants.BEGIN_STRING);
String deliverToCompID = fieldValues.get(FIXConstants.DELIVER_TO_COMP_ID);
+ AxisService service = cfgCtx.getAxisConfiguration().getService(serviceName);
+
//match BeginString values
- if (beginString != null && !beginString.equals(sessionID.getBeginString())) {
- handleException("Cannot forward messages to a session with a different BeginString");
- }
+ if (isValidationOn(service) && beginString != null && !beginString.equals(sessionID.getBeginString())) {
+ handleException("BeginString validation is on. Cannot forward messages to a session" +
+ " with a different BeginString");
+ }
if (deliverToCompID != null) {
//message needs to be delivered
@@ -284,7 +289,6 @@
if (!Session.doesSessionExist(sessionID)) {
//try to create initiator to send the message
- AxisService service = cfgCtx.getAxisConfiguration().getService(serviceName);
sessionFactory.createFIXInitiator(targetEPR, service, sessionID);
}
@@ -318,10 +322,13 @@
String beginString = fieldValues.get(FIXConstants.BEGIN_STRING);
String deliverToCompID = fieldValues.get(FIXConstants.DELIVER_TO_COMP_ID);
+ AxisService service = cfgCtx.getAxisConfiguration().getService(serviceName);
+
//match BeginString values
- if (beginString != null && !beginString.equals(sessionID.getBeginString())) {
- handleException("Cannot forward messages to a session with a different BeginString");
- }
+ if (isValidationOn(service) && beginString != null && !beginString.equals(sessionID.getBeginString())) {
+ handleException("BeginString validation is on. Cannot forward messages to a session" +
+ " with a different BeginString");
+ }
if (deliverToCompID != null) {
//message needs to be delivered to some other party
@@ -329,7 +336,6 @@
handleException("Cannot forward messages that do not have a valid DeliverToCompID field");
} else {
prepareToForwardMessage(fixMessage, fieldValues);
- AxisService service = cfgCtx.getAxisConfiguration().getService(serviceName);
setDeliverToXFields(fixMessage, service);
}
} else {
@@ -365,18 +371,20 @@
Acceptor acceptor = sessionFactory.getAccepter(serviceName);
SessionID sessionID = null;
+ AxisService service = cfgCtx.getAxisConfiguration().getService(serviceName);
+
if (acceptor != null) {
ArrayList<SessionID> sessions = acceptor.getSessions();
if (sessions.size() == 1) {
sessionID = sessions.get(0);
- if (deliverToCompID != null && !isTargetVald(fieldValues, sessionID)) {
+ if (deliverToCompID != null && !isTargetVald(fieldValues, sessionID, isValidationOn(service))) {
sessionID = null;
}
} else if (sessions.size() > 1 && deliverToCompID != null) {
for (int i = 0; i < sessions.size(); i++) {
sessionID = sessions.get(i);
- if (isTargetVald(fieldValues, sessionID)) {
+ if (isTargetVald(fieldValues, sessionID, isValidationOn(service))) {
break;
}
}
@@ -391,6 +399,23 @@
return false;
}
+ /**
+ * Checks whether BeginString validation is on for the specified
+ * service.
+ *
+ * @param service the AxisService of the message
+ * @return a boolean value indicating the validation state
+ */
+ private boolean isValidationOn(AxisService service) {
+ Parameter validationParam = service.getParameter(FIXConstants.FIX_BEGIN_STRING_VALIDATION);
+ if (validationParam != null) {
+ if ("true".equals(validationParam.getValue().toString())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public void logOutIncomingSession(SessionID sessionID) {
messageSender.cleanUpMessages(sessionID.toString());
}