import java.util.regex.Pattern;
-public class Processer implements Runnable {
+public class Processer implements Runnable, ResultNotify {
private Socket client;
//Conform status.
private final int R502CommandNotImplemented = 502;
//SMTP command
- private final String COMMAND_RCPT_TO = "RCPT TO:";
- private final String COMMAND_DATA = "DATA";
- private final String COMMAND_RESET = "RSET";
- private final String COMMAND_TURN = "TURN";
+ private final String COMMAND_RCPT_TO = "RCPT TO:"; // NOI18N
+ private final String COMMAND_DATA = "DATA"; // NOI18N
+ private final String COMMAND_RESET = "RSET"; // NOI18N
+ private final String COMMAND_TURN = "TURN"; // NOI18N
//private final String COMMAND_NOOP = "NOOP";
//private final String COMAMND_QUIT = "QUIT";
BufferedReader clientReader;
PrintWriter clientWriter;
+ Socket server = null;
+
try {
//Connect to SMTP Server host
String servername = ApplicationProperties.getSmtpServerHost();
int serverport = ApplicationProperties.getSmtpServerPort();
//Connection to true SMTP server.
- Socket server = new Socket(servername, serverport);
+ server = new Socket(servername, serverport);
serverInput = server.getInputStream();
serverOutput = server.getOutputStream();
clientInput = client.getInputStream();
server.getInputStream()));
serverWriter = new PrintWriter(new SmtpBufferedWriter(
new OutputStreamWriter(server.getOutputStream(),
- "ISO-8859-1")), true);
+ "ISO-8859-1")), true); // NOI18N
clientReader = new BufferedReader(new InputStreamReader(
client.getInputStream()));
clientWriter = new PrintWriter(new SmtpBufferedWriter(
new OutputStreamWriter(client.getOutputStream(),
- "ISO-8859-1")), true);
+ "ISO-8859-1")), true); // NOI18N
smtpStart(serverReader, clientWriter, clientReader, serverWriter);
//forServerThread.start();
////Use this ThreadforClientThread.run();
server.close();
+ server = null;
client.close();
+ client = null;
} catch (IOException e) {
- System.err.println("Execption occurred in Processer.");
- e.printStackTrace();
+ String errorMessage = java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Execption_occurred_at_starting_SMTP_thread.");
+ System.err.println(errorMessage);
+ new MessageDialogUI(errorMessage, e, MessageDialogUI.ERROR_MODE);
+ } catch (RuntimeException runEx) {
+ new MessageDialogUI(java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Runtime_Exception_occurred_in_SMTP_parse"),
+ runEx, MessageDialogUI.ERROR_MODE);
+ } finally {
+ //for failsafe Socket close.
+ if (server != null) {
+ try {
+ server.close();
+ } catch (IOException ioEx ) {
+ //IGNORE close Exception
+ }
+ }
+ if (client != null) {
+ try {
+ client.close();
+ } catch (IOException ioEx ) {
+ //IGNORE close Exception
+ }
+ }
+ //LDAP Connection close.
+ LDAPSearch.close();
}
}
line = clientReader.readLine();
serverWriter.println(line);
- if (line.equals(".")) {
+ if (line.equals(".")) { // NOI18N
break; //end of mail dara.
}
}
while (true) {
line = clientReader.readLine();
+ if (line == null) {
+ //Finish client stream.
+ System.err.println("Client disconnected.");
+ break; //force disconnect.
+ }
+
if (isRcptTo(line)) {
//stored To: address.
toList.add(formatToAddress(line));
}
//checkout toList
- new ToListDialog(this, toList);
+ new ToListUI(this, toList);
while (result == RESULT_UNKNOWN) {
try {
wait();
}
} catch (InterruptedException e) {
- System.err.println("Dialg wait interrupted");
+ System.err.println("Confirm dialog wait interrupted");
e.printStackTrace();
}
}
- if (result == RESULT_NG) {
+ if (result != RESULT_OK ) {
System.out.println("CANCEL sending mail.");
serverWriter.println(COMMAND_RESET);
line = serverReader.readLine(); //Server MUST retrun "250 OK"
break; // client read while(true);
}
+ if (line == null ) {
+ break;
+ }
serverWriter.println(line);
System.out.println(line);
}
}
} catch (IOException e) {
- e.printStackTrace();
+ String errorMessage = java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Error_occurred_in_SMTP_parse.");
+ System.err.println(errorMessage);
+ new MessageDialogUI(errorMessage, e, MessageDialogUI.ERROR_MODE);
+ } catch (RuntimeException runEx) {
+ new MessageDialogUI(java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Runtime_Exception_occurred_in_SMTP_parse"),
+ runEx, MessageDialogUI.ERROR_MODE);
}
System.out.println("End of Session.");
//Splitting Mail address.
String str = line.substring(COMMAND_RCPT_TO.length() + 1);
- Pattern pattern = Pattern.compile("[< >]+");
+ Pattern pattern = Pattern.compile("[< >]+"); // NOI18N
String[] address = pattern.split(str); // 0<1>2 3
int i;
for (i = 0; i < address.length; i++) {
- if (!address[i].equals("")) {
+ if (!address[i].equals("")) { // NOI18N
break;
}
}
//Search LDAP
- str = address[i] + " " + LDAPSearch.search(address[i]);
+ str = address[i] + " " + LDAPSearch.search(address[i]); // NOI18N
return str;
}
}