Reputation: 5830
I want to access variables sTerminalId
& sTransactionId
in Class ServerThread
public class ServerThread extends Thread {
/* Some Code Omitted Here */
public void run() {
String sDataFromPOS="";
//Get Some Value in sDataFromPOS
byte[] bSendToPOS = SAXHandler.ParseXMLToString(sDataFromPOS.toString().substring(2));
}
}
public class SAXHandler extends DefaultHandler {
static String sTerminalId = "";
static String sTransactionId = "";
public static byte[] ParseXMLToString(String sXMLData) throws Throwable {
/* Do Some Operation on String sXMLData & extarct value of sTerminalId & sTransactionId*/
}
}
What i tried is
SAXHandler.sTerminalId
Will get me value but only for one run if run it again it gives me previous value. is there any alternative ? i am dealing with sensitive data so dont want to mess my code
Upvotes: 0
Views: 4701
Reputation: 10907
Reinitialize your variable again before processing... like
public static byte[] ParseXMLToString(String sXMLData) throws Throwable {
sTerminalId = "";
sTransactionId = "";
}
Upvotes: 0
Reputation: 2437
This is why statics are bad. Make the variables instance variables and create a new object instance for each run (let's ignore encapsulation for simplicity):
public class ServerThread extends Thread {
public void run() {
String sDataFromPOS="";
//Get Some Value in sDataFromPOS
SAXHandler handler = new SAXHandler();
byte[] bSendToPOS = handler.parseXMLToString(sDataFromPOS.toString().substring(2));
handler.sTerminalId .... // access instance variables
}
}
public class SAXHandler extends DefaultHandler {
String sTerminalId = "";
String sTransactionId = "";
public byte[] parseXMLToString(String sXMLData) throws Throwable {
/* Do Some Operation on String sXMLData & extarct value of sTerminalId & sTransactionId*/
}
}
Upvotes: 5