You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2005/12/16 18:18:08 UTC
svn commit: r357187 [23/25] - in
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: ./
addressing/ client/ client/async/ context/ deployment/ deployment/listener/
deployment/repository/util/ deployment/scheduler/ deployment/util/
descript...
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/local/LocalTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/local/LocalTransportSender.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/local/LocalTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/local/LocalTransportSender.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.local;
@@ -27,31 +28,34 @@
import java.io.InputStream;
import java.io.OutputStream;
-
public class LocalTransportSender extends AbstractTransportSender {
private ByteArrayOutputStream out;
private ByteArrayOutputStream response;
public LocalTransportSender() {
+ }
+ public void cleanUp(MessageContext msgContext) throws AxisFault {
}
- public OutputStream startSendWithToAddress(MessageContext msgContext,
- OutputStream out) throws AxisFault {
- return out;
+ public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+ OutputStream out)
+ throws AxisFault {
+ throw new UnsupportedOperationException();
}
- public void finalizeSendWithToAddress(MessageContext msgContext,
- OutputStream out)
+ public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
throws AxisFault {
try {
InputStream in = new ByteArrayInputStream(this.out.toByteArray());
+
response = new ByteArrayOutputStream();
+
LocalTransportReceiver localTransportReceiver = new LocalTransportReceiver(this);
+
localTransportReceiver.processMessage(in, msgContext.getTo());
in.close();
out.close();
-
in = new ByteArrayInputStream(response.toByteArray());
msgContext.setProperty(MessageContext.TRANSPORT_IN, in);
} catch (IOException e) {
@@ -59,35 +63,32 @@
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
* @see org.apache.axis2.transport.AbstractTransportSender#openTheConnection(org.apache.axis2.addressing.EndpointReference)
*/
- protected OutputStream openTheConnection(EndpointReference epr,
- MessageContext msgContext) throws AxisFault {
- //out = new PipedOutputStream();
+ protected OutputStream openTheConnection(EndpointReference epr, MessageContext msgContext)
+ throws AxisFault {
+
+ // out = new PipedOutputStream();
out = new ByteArrayOutputStream();
+
return out;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
* @see org.apache.axis2.transport.AbstractTransportSender#startSendWithOutputStreamFromIncomingConnection(org.apache.axis2.context.MessageContext, java.io.Writer)
*/
- public OutputStream startSendWithOutputStreamFromIncomingConnection(
- MessageContext msgContext,
- OutputStream out)
+ public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+ OutputStream out)
throws AxisFault {
throw new UnsupportedOperationException();
-
}
- public void finalizeSendWithOutputStreamFromIncomingConnection(
- MessageContext msgContext, OutputStream out)
+ public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)
throws AxisFault {
- throw new UnsupportedOperationException();
-
- }
-
- public void cleanUp(MessageContext msgContext) throws AxisFault {
+ return out;
}
OutputStream getResponse() {
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EMailSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EMailSender.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EMailSender.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EMailSender.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail;
@@ -32,49 +33,78 @@
import java.util.Properties;
public class EMailSender {
- private String user;
private String host;
- private String smtpPort;
private String password;
+ private String smtpPort;
+ private String user;
- public EMailSender(String user,
- String host,
- String smtpPort,
- String password) {
+ public EMailSender(String user, String host, String smtpPort, String password) {
this.user = user;
this.host = host;
this.smtpPort = smtpPort;
this.password = password;
}
- public void send(String subject, String targetEmail, String message, String charSet) throws AxisFault {
+ public static void main(String[] args) throws Exception {
+ String user = "hemapani";
+ String host = "127.0.0.1";
+ String smtpPort = "25";
+ String password = "hemapani";
+ EMailSender sender = new EMailSender(user, host, smtpPort, password);
+
+ sender.send("Testing mail sending", "hemapani@127.0.0.1", "Hellp, testing",
+ MailSrvConstants.DEFAULT_CHAR_SET);
+
+ EmailReceiver receiver = new EmailReceiver(user, host, "110", password);
+
+ receiver.connect();
+
+ Message[] msgs = receiver.receive();
+
+ if (msgs != null) {
+ for (int i = 0; i < msgs.length; i++) {
+ MimeMessage msg = (MimeMessage) msgs[i];
+
+ if (msg != null) {
+ }
+
+ msg.setFlag(Flags.Flag.DELETED, true);
+ }
+ }
+
+ receiver.disconnect();
+ }
+
+ public void send(String subject, String targetEmail, String message, String charSet)
+ throws AxisFault {
try {
- final PasswordAuthentication authentication =
- new PasswordAuthentication(user, password);
+ final PasswordAuthentication authentication = new PasswordAuthentication(user,
+ password);
Properties props = new Properties();
+
props.put("mail.user", user);
props.put("mail.host", host);
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", smtpPort);
+
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return authentication;
}
});
-
MimeMessage msg = new MimeMessage(session);
+
msg.setFrom(new InternetAddress((user)));
- msg.addRecipient(Message.RecipientType.TO,
- new InternetAddress(targetEmail));
+ msg.addRecipient(Message.RecipientType.TO, new InternetAddress(targetEmail));
msg.setSubject(subject);
- if (charSet == null){
+ if (charSet == null) {
charSet = MailSrvConstants.DEFAULT_CHAR_SET;
}
- msg.addHeaderLine("Content-Type: " + MailSrvConstants.DEFAULT_CONTENT_TYPE + "; charset=" + charSet);
-
+ msg.addHeaderLine("Content-Type: " + MailSrvConstants.DEFAULT_CONTENT_TYPE
+ + "; charset=" + charSet);
msg.setText(message);
msg.setHeader("Content-Transfer-Encoding", MailSrvConstants.DEFAULT_CHAR_SET_ENCODING);
Transport.send(msg);
@@ -83,36 +113,5 @@
} catch (MessagingException e) {
throw new AxisFault(e);
}
- }
-
- public static void main(String[] args) throws Exception {
-
- String user = "hemapani";
- String host = "127.0.0.1";
- String smtpPort = "25";
- String password = "hemapani";
- EMailSender sender = new EMailSender(user, host, smtpPort, password);
-
- sender.send("Testing mail sending",
- "hemapani@127.0.0.1",
- "Hellp, testing", MailSrvConstants.DEFAULT_CHAR_SET);
-
- EmailReceiver receiver = new EmailReceiver(user,
- host,
- "110",
- password);
- receiver.connect();
- Message[] msgs = receiver.receive();
- if (msgs != null) {
- for (int i = 0; i < msgs.length; i++) {
- MimeMessage msg = (MimeMessage) msgs[i];
- if (msg != null) {
- }
- msg.setFlag(Flags.Flag.DELETED, true);
- }
-
- }
- receiver.disconnect();
-
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EmailReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EmailReceiver.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EmailReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/EmailReceiver.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail;
@@ -30,49 +31,49 @@
import java.util.Properties;
public class EmailReceiver {
-
- private String user;
private String host;
- private String popPort;
+ private Folder inbox;
private String password;
+ private String popPort;
private Store store;
- private Folder inbox;
+ private String user;
- public EmailReceiver(
- String user,
- String host,
- String popPort,
- String password)
- throws AxisFault {
+ public EmailReceiver(String user, String host, String popPort, String password)
+ throws AxisFault {
this.user = user;
this.host = host;
this.popPort = popPort;
this.password = password;
+
if (this.user == null) {
- throw new AxisFault(Messages.getMessage("canNotBeNull","User"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "User"));
}
+
if (this.host == null) {
- throw new AxisFault(Messages.getMessage("canNotBeNull","Host"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Host"));
}
+
if (this.popPort == null) {
- throw new AxisFault(Messages.getMessage("canNotBeNull","port"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "port"));
}
+
if (this.password == null) {
- throw new AxisFault(Messages.getMessage("canNotBeNull","Password"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Password"));
}
-
}
public void connect() throws AxisFault {
try {
- final PasswordAuthentication authentication =
- new PasswordAuthentication(user, password);
+ final PasswordAuthentication authentication = new PasswordAuthentication(user,
+ password);
Properties props = new Properties();
+
props.put("mail.user", user);
props.put("mail.host", host);
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
props.put("mail.pop3.port", popPort);
+
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return authentication;
@@ -81,15 +82,15 @@
store = session.getStore();
store.connect();
+
Folder root = store.getDefaultFolder();
- inbox = root.getFolder("inbox");
+ inbox = root.getFolder("inbox");
} catch (NoSuchProviderException e) {
throw new AxisFault(e);
} catch (MessagingException e) {
throw new AxisFault(e);
}
-
}
public void disconnect() throws AxisFault {
@@ -104,20 +105,19 @@
public Message[] receive() throws AxisFault {
try {
inbox.open(Folder.READ_WRITE);
- Message[] msgs = inbox.getMessages();
+ Message[] msgs = inbox.getMessages();
int numMessages = msgs.length;
+
if (msgs.length == 0) {
return null;
} else {
return msgs;
}
-
} catch (NoSuchProviderException e) {
throw new AxisFault(e);
} catch (MessagingException e) {
throw new AxisFault(e);
}
}
-
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailClient.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailClient.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailClient.java Fri Dec 16 09:13:57 2005
@@ -16,17 +16,14 @@
import java.io.IOException;
import java.util.Properties;
-public class MailClient
- extends Authenticator {
+public class MailClient extends Authenticator {
public static final int SHOW_MESSAGES = 1;
public static final int CLEAR_MESSAGES = 2;
- public static final int SHOW_AND_CLEAR =
- SHOW_MESSAGES + CLEAR_MESSAGES;
-
+ public static final int SHOW_AND_CLEAR = SHOW_MESSAGES + CLEAR_MESSAGES;
+ private Log log = LogFactory.getLog(getClass());
+ protected PasswordAuthentication authentication;
protected String from;
protected Session session;
- protected PasswordAuthentication authentication;
- private Log log = LogFactory.getLog(getClass());
public MailClient(String user, String host) {
this(user, host, user, false);
@@ -36,73 +33,92 @@
this(user, host, password, false);
}
- public MailClient(String user,
- String host,
- String password,
- boolean debug) {
+ public MailClient(String user, String host, String password, boolean debug) {
from = user + '@' + host;
authentication = new PasswordAuthentication(user, password);
+
Properties props = new Properties();
+
props.put("mail.user", user);
props.put("mail.host", host);
- props.put("mail.debug", debug ? "true" : "false");
+ props.put("mail.debug", debug
+ ? "true"
+ : "false");
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
session = Session.getInstance(props, this);
}
- public PasswordAuthentication getPasswordAuthentication() {
- return authentication;
- }
+ public int checkInbox(int mode) throws MessagingException, IOException {
+ int numMessages = 0;
- public void sendMessage(String to,
- String subject,
- String content,
- String soapAction)
- throws MessagingException {
- log.info("SENDING message from " + from + " to " + to);
- MimeMessage msg = new MimeMessage(session);
- msg.setHeader("transport.mail.soapaction", soapAction);
- msg.addRecipients(Message.RecipientType.TO, to);
- msg.setSubject(subject);
- msg.setText(content);
- Transport.send(msg);
- }
+ if (mode == 0) {
+ return 0;
+ }
- public int checkInbox(int mode)
- throws MessagingException, IOException {
- int numMessages = 0;
- if (mode == 0) return 0;
boolean show = (mode & SHOW_MESSAGES) > 0;
boolean clear = (mode & CLEAR_MESSAGES) > 0;
- String action =
- (show ? "Show" : "") +
- (show && clear ? " and " : "") +
- (clear ? "Clear" : "");
+ String action = (show
+ ? "Show"
+ : "") + ((show && clear)
+ ? " and "
+ : "") + (clear
+ ? "Clear"
+ : "");
+
log.info(action + " INBOX for " + from);
+
Store store = session.getStore();
+
store.connect();
+
Folder root = store.getDefaultFolder();
Folder inbox = root.getFolder("inbox");
+
inbox.open(Folder.READ_WRITE);
+
Message[] msgs = inbox.getMessages();
+
numMessages = msgs.length;
- if (msgs.length == 0 && show) {
+
+ if ((msgs.length == 0) && show) {
log.info("No messages in inbox");
}
+
for (int i = 0; i < msgs.length; i++) {
MimeMessage msg = (MimeMessage) msgs[i];
+
if (show) {
log.info(" From: " + msg.getFrom()[0]);
log.info(" Subject: " + msg.getSubject());
log.info(" Content: " + msg.getContent());
}
+
if (clear) {
msg.setFlag(Flags.Flag.DELETED, true);
}
}
+
inbox.close(true);
store.close();
+
return numMessages;
+ }
+
+ public void sendMessage(String to, String subject, String content, String soapAction)
+ throws MessagingException {
+ log.info("SENDING message from " + from + " to " + to);
+
+ MimeMessage msg = new MimeMessage(session);
+
+ msg.setHeader("transport.mail.soapaction", soapAction);
+ msg.addRecipients(Message.RecipientType.TO, to);
+ msg.setSubject(subject);
+ msg.setText(content);
+ Transport.send(msg);
+ }
+
+ public PasswordAuthentication getPasswordAuthentication() {
+ return authentication;
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailTransportSender.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailTransportSender.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail;
@@ -30,53 +31,61 @@
import java.io.OutputStream;
public class MailTransportSender extends AbstractTransportSender {
- private String host;
- private String user;
- private String password;
private String smtpPort = "25";
-
private ByteArrayOutputStream byteArrayOutputStream;
+ private String host;
+ private String password;
+ private String user;
public MailTransportSender() {
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.apache.axis2.transport.TransportSender#cleanUp()
+ */
+ public void cleanUp(MessageContext msgContext) throws AxisFault {
+
+ // TODO Auto-generated method stub
}
- public void finalizeSendWithToAddress(
- MessageContext msgContext,
- OutputStream out)
- throws AxisFault {
+ public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+ OutputStream out)
+ throws AxisFault {
+ }
+
+ public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
+ throws AxisFault {
try {
TransportOutDescription transportOut = msgContext.getTransportOut();
+
user =
- Utils.getParameterValue(
- transportOut.getParameter(MailSrvConstants.SMTP_USER));
+ Utils.getParameterValue(transportOut.getParameter(MailSrvConstants.SMTP_USER));
host =
- Utils.getParameterValue(
- transportOut.getParameter(MailSrvConstants.SMTP_HOST));
+ Utils.getParameterValue(transportOut.getParameter(MailSrvConstants.SMTP_HOST));
password =
- Utils.getParameterValue(
- transportOut.getParameter(MailSrvConstants.SMTP_PASSWORD));
+ Utils.getParameterValue(transportOut.getParameter(MailSrvConstants.SMTP_PASSWORD));
smtpPort =
- Utils.getParameterValue(
- transportOut.getParameter(MailSrvConstants.SMTP_PORT));
- if (user != null
- && host != null
- && password != null
- && smtpPort != null) {
- EMailSender sender =
- new EMailSender(user, host, smtpPort, password);
+ Utils.getParameterValue(transportOut.getParameter(MailSrvConstants.SMTP_PORT));
- //TODO this is just a temporary hack, fix this to use input streams
+ if ((user != null) && (host != null) && (password != null) && (smtpPort != null)) {
+ EMailSender sender = new EMailSender(user, host, smtpPort, password);
+ // TODO this is just a temporary hack, fix this to use input streams
String eprAddress = msgContext.getTo().getAddress();
+
// In mail char set is what is being used. Charset encoding is not what is expected here.
- String charSet = (String)msgContext.getProperty(MessageContext.CHARACTER_SET_ENCODING);
- if (charSet == null){
+ String charSet =
+ (String) msgContext.getProperty(MessageContext.CHARACTER_SET_ENCODING);
+
+ if (charSet == null) {
charSet = MailSrvConstants.DEFAULT_CHAR_SET;
}
+
int index = eprAddress.indexOf('/');
String subject = "";
String email = null;
+
if (index >= 0) {
subject = eprAddress.substring(index + 1);
email = eprAddress.substring(0, index);
@@ -84,67 +93,40 @@
email = eprAddress;
}
- sender.send(
- subject,
- email,
- new String(byteArrayOutputStream.toByteArray()), charSet);
+ sender.send(subject, email, new String(byteArrayOutputStream.toByteArray()),
+ charSet);
} else {
if (user == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "User"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "User"));
} else if (smtpPort == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "smtpPort"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "smtpPort"));
} else if (host == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "Host"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Host"));
} else if (password == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "password"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "password"));
}
}
} catch (IOException e) {
throw new AxisFault(e);
}
-
}
- public OutputStream startSendWithToAddress(
- MessageContext msgContext,
- OutputStream out)
- throws AxisFault {
- return out;
- }
-
- protected OutputStream openTheConnection(
- EndpointReference epr,
- MessageContext msgContext)
- throws AxisFault {
+ protected OutputStream openTheConnection(EndpointReference epr, MessageContext msgContext)
+ throws AxisFault {
byteArrayOutputStream = new ByteArrayOutputStream();
+
return byteArrayOutputStream;
}
- //Output Stream based cases are not supported
- public OutputStream startSendWithOutputStreamFromIncomingConnection(
- MessageContext msgContext,
- OutputStream out)
- throws AxisFault {
+ // Output Stream based cases are not supported
+ public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+ OutputStream out)
+ throws AxisFault {
throw new UnsupportedOperationException();
-
}
- public void finalizeSendWithOutputStreamFromIncomingConnection(
- MessageContext msgContext,
- OutputStream out)
- throws AxisFault {
- }
-
- /* (non-Javadoc)
- * @see org.apache.axis2.transport.TransportSender#cleanUp()
- */
- public void cleanUp(MessageContext msgContext) throws AxisFault {
- // TODO Auto-generated method stub
-
+ public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)
+ throws AxisFault {
+ return out;
}
-
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailWorker.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailWorker.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/MailWorker.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail;
@@ -46,16 +47,11 @@
public class MailWorker implements Runnable {
protected static Log log = LogFactory.getLog(MailWorker.class.getName());
-
private String contentType = "text/xml";
-
private ConfigurationContext reg = null;
-
- private MimeMessage mimeMessage;
-
private Properties prop = new Properties();
-
private Session session = Session.getDefaultInstance(prop, null);
+ private MimeMessage mimeMessage;
/**
* Constructor for MailWorker
@@ -74,78 +70,91 @@
public void run() {
AxisEngine engine = new AxisEngine(reg);
MessageContext msgContext = null;
+
// create and initialize a message context
try {
TransportInDescription transportIn =
- reg.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_MAIL));
+ reg.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_MAIL));
TransportOutDescription transportOut =
- reg.getAxisConfiguration().getTransportOut(new QName(Constants.TRANSPORT_MAIL));
- if (transportIn != null && transportOut != null) {
- //create Message Context
+ reg.getAxisConfiguration().getTransportOut(new QName(Constants.TRANSPORT_MAIL));
+
+ if ((transportIn != null) && (transportOut != null)) {
+
+ // create Message Context
msgContext = new MessageContext(reg, transportIn, transportOut);
msgContext.setServerSide(true);
msgContext.setProperty(MailSrvConstants.CONTENT_TYPE, mimeMessage.getContentType());
- msgContext.setProperty(MessageContext.CHARACTER_SET_ENCODING, mimeMessage.getEncoding());
+ msgContext.setProperty(MessageContext.CHARACTER_SET_ENCODING,
+ mimeMessage.getEncoding());
String soapAction = getMailHeader(MailSrvConstants.HEADER_SOAP_ACTION);
+
msgContext.setWSAAction(soapAction);
msgContext.setSoapAction(soapAction);
- //TODO add the transport Headers to the Message Context
-
- //Create Mail EPR, EPR is constructed using the format, foo@bar/axis2/services/echo and is constructed
- //using the <to-email-address>/<email-subject>
+ // TODO add the transport Headers to the Message Context
+ // Create Mail EPR, EPR is constructed using the format, foo@bar/axis2/services/echo and is constructed
+ // using the <to-email-address>/<email-subject>
InternetAddress[] recepainets = (InternetAddress[]) mimeMessage.getAllRecipients();
- if (recepainets != null && recepainets.length > 0) {
+
+ if ((recepainets != null) && (recepainets.length > 0)) {
String emailAddress = recepainets[0].getAddress();
String emailSubject = mimeMessage.getSubject();
- EndpointReference to =
- new EndpointReference(emailAddress + "/" + (emailSubject != null ? emailSubject : ""));
+ EndpointReference to = new EndpointReference(emailAddress + "/"
+ + ((emailSubject != null)
+ ? emailSubject
+ : ""));
} else {
throw new AxisFault(Messages.getMessage("noRecep4Email"));
}
- //try to assume the reply to value
+
+ // try to assume the reply to value
InternetAddress[] replyToAs = (InternetAddress[]) mimeMessage.getAllRecipients();
- if (replyToAs != null && replyToAs.length > 0) {
+
+ if ((replyToAs != null) && (replyToAs.length > 0)) {
String replyTo = replyToAs[0].getAddress();
+
if (replyTo != null) {
- msgContext.setReplyTo(
- new EndpointReference(replyTo));
+ msgContext.setReplyTo(new EndpointReference(replyTo));
}
}
- //Create the SOAP Message
- //TODO This can we written better way, to use the streams better
+ // Create the SOAP Message
+ // TODO This can we written better way, to use the streams better
String message = mimeMessage.getContent().toString();
- ByteArrayInputStream bais = new ByteArrayInputStream(message.getBytes());
- XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(bais);
-
+ ByteArrayInputStream bais =
+ new ByteArrayInputStream(message.getBytes());
+ XMLStreamReader reader =
+ XMLInputFactory.newInstance().createXMLStreamReader(bais);
String soapNamespaceURI = "";
- if(mimeMessage.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1){
- soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
- }else if(mimeMessage.getContentType().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1){
- soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+ if (mimeMessage.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE)
+ > -1) {
+ soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+ } else if (mimeMessage.getContentType().indexOf(
+ SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+ soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
}
StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
-
SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+
msgContext.setEnvelope(envelope);
+
if (envelope.getBody().hasFault()) {
engine.receiveFault(msgContext);
} else {
engine.receive(msgContext);
}
} else {
- throw new AxisFault(Messages.getMessage("unknownTransport",Constants.TRANSPORT_MAIL));
+ throw new AxisFault(Messages.getMessage("unknownTransport",
+ Constants.TRANSPORT_MAIL));
}
-
} catch (Exception e) {
try {
-
if (msgContext != null) {
MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+
engine.sendFault(faultContext);
} else {
log.error(e);
@@ -156,10 +165,10 @@
}
/*
- *
+ *
* This part is ignored for the time being. CT 07-Feb-2005.
- *
- * if (msgContext.getProperty(MessageContext.QUIT_REQUESTED) != null) { //
+ *
+ * if (msgContext.getProperty(MessageContext.QUIT_REQUESTED) != null) { /
* why then, quit! try { server.stop(); } catch (Exception e) { } }
*/
}
@@ -167,6 +176,7 @@
private String getMailHeader(String headerName) throws AxisFault {
try {
String values[] = mimeMessage.getHeader(headerName);
+
if (values != null) {
return values[0];
} else {
@@ -175,7 +185,5 @@
} catch (MessagingException e) {
throw new AxisFault(e);
}
-
}
-
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/SimpleMailListener.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/SimpleMailListener.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/SimpleMailListener.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/SimpleMailListener.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail;
@@ -45,46 +46,51 @@
* TODO ISSUES -- 1. Message.getMessage -- All messages are hardcoded in the
* code till a replacement or a working verion of this is put into Axis 2. When
* internationalization work is done this can be fixed. CT 15-Feb-2005
- *
+ *
*/
-
public class SimpleMailListener extends TransportListener implements Runnable {
+ protected static Log log = LogFactory.getLog(SimpleMailListener.class.getName());
- protected static Log log =
- LogFactory.getLog(SimpleMailListener.class.getName());
+ // Are we doing threads?
+ private static boolean doThreads = true;
+ private ConfigurationContext configurationContext = null;
+ // are we stopped?
+ // latch to true if stop() is called
+ private boolean stopped = false;
private String host;
-
- private String port;
-
- private String user;
-
private String password;
-
- private ConfigurationContext configurationContext = null;
-
+ private String port;
private String replyTo;
+ private String user;
public SimpleMailListener() {
}
- public SimpleMailListener(
- String host,
- String port,
- String userid,
- String password,
- String dir) {
+ public SimpleMailListener(String host, String port, String userid, String password,
+ ConfigurationContext er) {
+ this.host = host;
+ this.port = port;
+ this.user = userid;
+ this.password = password;
+ this.configurationContext = er;
+ }
+
+ public SimpleMailListener(String host, String port, String userid, String password,
+ String dir) {
this.host = host;
this.port = port;
this.user = userid;
this.password = password;
+
try {
- ConfigurationContextFactory builder =
- new ConfigurationContextFactory();
+ ConfigurationContextFactory builder = new ConfigurationContextFactory();
+
configurationContext = builder.buildConfigurationContext(dir);
} catch (Exception e) {
log.info(e.getMessage());
}
+
try {
log.info("Sleeping for a bit to let the engine start up.");
Thread.sleep(2000);
@@ -93,93 +99,134 @@
}
}
- public SimpleMailListener(
- String host,
- String port,
- String userid,
- String password,
- ConfigurationContext er) {
- this.host = host;
- this.port = port;
- this.user = userid;
- this.password = password;
- this.configurationContext = er;
- }
+ /*
+ * (non-Javadoc)
+ * @see org.apache.axis2.transport.TransportListener#init(org.apache.axis2.context.ConfigurationContext, org.apache.axis2.description.TransportInDescription)
+ */
+ public void init(ConfigurationContext configurationContext, TransportInDescription transportIn)
+ throws AxisFault {
+ this.configurationContext = configurationContext;
+ user =
+ Utils.getParameterValue(transportIn.getParameter(MailSrvConstants.POP3_USER));
+ host =
+ Utils.getParameterValue(transportIn.getParameter(MailSrvConstants.POP3_HOST));
+ password =
+ Utils.getParameterValue(transportIn.getParameter(MailSrvConstants.POP3_PASSWORD));
+ port = Utils.getParameterValue(transportIn.getParameter(MailSrvConstants.POP3_PORT));
+ replyTo = Utils.getParameterValue(transportIn.getParameter(MailSrvConstants.RAPLY_TO));
- // Are we doing threads?
- private static boolean doThreads = true;
+ if ((user == null) || (host == null) || (password == null) || (port == null)) {
+ if (this.user == null) {
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "User"));
+ }
- public void setDoThreads(boolean value) {
- doThreads = value;
- }
+ if (this.host == null) {
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Host"));
+ }
- public boolean getDoThreads() {
- return doThreads;
+ if (this.port == null) {
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Port"));
+ }
+
+ if (this.password == null) {
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Password"));
+ }
+ ;
+ }
}
- // are we stopped?
- // latch to true if stop() is called
- private boolean stopped = false;
+ /**
+ * Server process.
+ */
+ public static void main(String args[]) throws AxisFault {
+ if (args.length != 1) {
+ log.info("java SimpleMailListener <repository>");
+ } else {
+ ConfigurationContextFactory builder = new ConfigurationContextFactory();
+ ConfigurationContext configurationContext =
+ builder.buildConfigurationContext(args[0]);
+ SimpleMailListener sas = new SimpleMailListener();
+ TransportInDescription transportIn =
+ configurationContext.getAxisConfiguration().getTransportIn(
+ new QName(Constants.TRANSPORT_MAIL));
+
+ if (transportIn != null) {
+ sas.init(configurationContext, transportIn);
+ log.info("Starting the SimpleMailListener with repository "
+ + new File(args[0]).getAbsolutePath());
+ sas.start();
+ } else {
+ log.info(
+ "Startup failed, mail transport not configured, Configure the mail trnasport in the axis2.xml file");
+ }
+ }
+ }
/**
* Accept requests from a given TCP port and send them through the Axis
* engine for processing.
*/
public void run() {
+
// log.info(Message.getMessage("start00", "SimpleMailListner", host + ":" +
// port)); TODO Issue #1 CT 07-Feb-2005.
// Accept and process requests from the socket
if (!stopped) {
- String logMessage =
- "Mail listner is being setup to listen to the address "
- + user
- + "@"
- + host
- + " On port "
- + port;
+ String logMessage = "Mail listner is being setup to listen to the address " + user
+ + "@" + host + " On port " + port;
+
log.info(logMessage);
}
+
while (!stopped) {
try {
+ EmailReceiver receiver = new EmailReceiver(user, host, port, password);
- EmailReceiver receiver =
- new EmailReceiver(user, host, port, password);
receiver.connect();
+
Message[] msgs = receiver.receive();
- if (msgs != null && msgs.length > 0) {
+ if ((msgs != null) && (msgs.length > 0)) {
log.info(msgs.length + " Message Found");
+
for (int i = 0; i < msgs.length; i++) {
MimeMessage msg = (MimeMessage) msgs[i];
+
if (msg != null) {
- MailWorker worker =
- new MailWorker(msg, configurationContext);
+ MailWorker worker = new MailWorker(msg, configurationContext);
+
worker.run();
}
+
msg.setFlag(Flags.Flag.DELETED, true);
}
-
}
receiver.disconnect();
- //Waiting for 3 seconds.
- Thread.sleep(3000);
+ // Waiting for 3 seconds.
+ Thread.sleep(3000);
} catch (Exception e) {
- //log.debug(Messages.getMessage("exception00"), e); TODO Issue
+
+ // log.debug(Messages.getMessage("exception00"), e); TODO Issue
// #1 CT 07-Feb-2005.
- log.debug(
- "An error occured when running the mail listner."
- + e.getMessage(),
- e);
+ log.debug("An error occured when running the mail listner." + e.getMessage(), e);
+
break;
}
}
log.info("Mail listner has been stoped.");
- //log.info(Messages.getMessage("quit00", "SimpleMailListner")); TODO Issue #1
+
+ // log.info(Messages.getMessage("quit00", "SimpleMailListner")); TODO Issue #1
// CT 07-Feb-2005.
+ }
+ /**
+ * Start this server as a NON-daemon.
+ */
+ public void start() throws AxisFault {
+ start(false);
}
/**
@@ -193,126 +240,59 @@
if (this.user == null) {
throw new AxisFault(Messages.getMessage("canNotBeNull", "User"));
}
+
if (this.host == null) {
throw new AxisFault(Messages.getMessage("canNotBeNull", "Host"));
}
+
if (this.port == null) {
throw new AxisFault(Messages.getMessage("canNotBeNull", "Port"));
}
+
if (this.password == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "Password"));
+ throw new AxisFault(Messages.getMessage("canNotBeNull", "Password"));
}
if (doThreads) {
- this.configurationContext.getThreadPool().execute(this);
+ this.configurationContext.getThreadPool().execute(this);
} else {
run();
}
}
/**
- * Start this server as a NON-daemon.
- */
- public void start() throws AxisFault {
- start(false);
- }
-
- /**
* Stop this server.
* <p/>
* This will interrupt any pending accept().
*/
public void stop() {
+
/*
* Close the server socket cleanly, but avoid fresh accepts while the
* socket is closing.
*/
stopped = true;
- //log.info(Messages.getMessage("quit00", "SimpleMailListner")); TODO Issue #1
+
+ // log.info(Messages.getMessage("quit00", "SimpleMailListner")); TODO Issue #1
// CT 07-Feb-2005.
log.info("Quiting the mail listner");
}
- /**
- * Server process.
- */
- public static void main(String args[]) throws AxisFault {
- if (args.length != 1) {
- log.info("java SimpleMailListener <repository>");
- } else {
- ConfigurationContextFactory builder =
- new ConfigurationContextFactory();
- ConfigurationContext configurationContext =
- builder.buildConfigurationContext(args[0]);
- SimpleMailListener sas = new SimpleMailListener();
- TransportInDescription transportIn =
- configurationContext.getAxisConfiguration().getTransportIn(
- new QName(Constants.TRANSPORT_MAIL));
- if (transportIn != null) {
- sas.init(configurationContext, transportIn);
- log.info(
- "Starting the SimpleMailListener with repository "
- + new File(args[0]).getAbsolutePath());
- sas.start();
- } else {
- log.info(
- "Startup failed, mail transport not configured, Configure the mail trnasport in the axis2.xml file");
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.axis2.transport.TransportListener#init(org.apache.axis2.context.ConfigurationContext, org.apache.axis2.description.TransportInDescription)
- */
- public void init(
- ConfigurationContext configurationContext,
- TransportInDescription transportIn)
- throws AxisFault {
- this.configurationContext = configurationContext;
-
- user =
- Utils.getParameterValue(
- transportIn.getParameter(MailSrvConstants.POP3_USER));
- host =
- Utils.getParameterValue(
- transportIn.getParameter(MailSrvConstants.POP3_HOST));
- password =
- Utils.getParameterValue(
- transportIn.getParameter(MailSrvConstants.POP3_PASSWORD));
- port =
- Utils.getParameterValue(
- transportIn.getParameter(MailSrvConstants.POP3_PORT));
- replyTo =
- Utils.getParameterValue(
- transportIn.getParameter(MailSrvConstants.RAPLY_TO));
- if (user == null || host == null || password == null || port == null) {
- if (this.user == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "User"));
- }
- if (this.host == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "Host"));
- }
- if (this.port == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "Port"));
- }
- if (this.password == null) {
- throw new AxisFault(
- Messages.getMessage("canNotBeNull", "Password"));
- };
- }
-
+ public boolean getDoThreads() {
+ return doThreads;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
* @see org.apache.axis2.transport.TransportListener#replyToEPR(java.lang.String)
*/
public EndpointReference getReplyToEPR(String serviceName) throws AxisFault {
+
// TODO Auto-generated method stub
return new EndpointReference(replyTo + "/services/" + serviceName);
}
-}
\ No newline at end of file
+ public void setDoThreads(boolean value) {
+ doThreads = value;
+ }
+}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailAddress.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailAddress.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailAddress.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailAddress.java Fri Dec 16 09:13:57 2005
@@ -17,11 +17,11 @@
return this.mailAddy.equals(addr);
}
- public String getType() {
- return "text/plain";
- }
-
public String toString() {
return this.mailAddy;
}
-}
\ No newline at end of file
+
+ public String getType() {
+ return "text/plain";
+ }
+}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailServer.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailServer.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailServer.java Fri Dec 16 09:13:57 2005
@@ -8,41 +8,52 @@
import org.apache.commons.logging.LogFactory;
public class MailServer {
+ protected static Log log =
+ LogFactory.getLog(SimpleMailListener.class.getName());
Storage st = null;
+ public ConfigurationContext configurationContext = null;
+ private POP3Server pop3Server;
private SMTPServer smtpServer;
- private POP3Server pop3Server;
- public ConfigurationContext configurationContext = null;
+ public MailServer(int popPort, int smtpPort) throws AxisFault {
+ st = new Storage();
- protected static Log log = LogFactory.getLog(SimpleMailListener.class
- .getName());
+ // Start up the two servers and lets have some fun. - CT
+ smtpServer = new SMTPServer(st, smtpPort);
+ smtpServer.start();
+ pop3Server = new POP3Server(st, popPort);
+ pop3Server.start();
+ }
+
+ public MailServer(ConfigurationContext configurationContext, int popPort, int smtpPort)
+ throws AxisFault {
+ this.configurationContext = configurationContext;
- public MailServer(String dir, int popPort, int smtpPort) throws AxisFault {
- try {
- ConfigurationContextFactory builder = new ConfigurationContextFactory();
- configurationContext = builder.buildConfigurationContext(dir);
- } catch (Exception e) {
- log.error(e);
- }
try {
log.info("Sleeping for a bit to let the engine start up.");
Thread.sleep(2000);
} catch (InterruptedException e1) {
log.error(e1);
}
+
st = new Storage();
+
// Start up the two servers and lets have some fun. - CT
- smtpServer = new SMTPServer(st, configurationContext,
- smtpPort);
+ smtpServer = new SMTPServer(st, configurationContext, smtpPort);
smtpServer.start();
pop3Server = new POP3Server(st, popPort);
pop3Server.start();
-
}
- public MailServer(ConfigurationContext configurationContext, int popPort,
- int smtpPort) throws AxisFault {
- this.configurationContext = configurationContext;
+ public MailServer(String dir, int popPort, int smtpPort) throws AxisFault {
+ try {
+ ConfigurationContextFactory builder = new ConfigurationContextFactory();
+
+ configurationContext = builder.buildConfigurationContext(dir);
+ } catch (Exception e) {
+ log.error(e);
+ }
+
try {
log.info("Sleeping for a bit to let the engine start up.");
Thread.sleep(2000);
@@ -51,37 +62,24 @@
}
st = new Storage();
- // Start up the two servers and lets have some fun. - CT
- smtpServer = new SMTPServer(st, configurationContext,
- smtpPort);
- smtpServer.start();
- pop3Server = new POP3Server(st, popPort);
- pop3Server.start();
- }
- public MailServer(int popPort, int smtpPort) throws AxisFault {
- st = new Storage();
// Start up the two servers and lets have some fun. - CT
- smtpServer = new SMTPServer(st, smtpPort);
+ smtpServer = new SMTPServer(st, configurationContext, smtpPort);
smtpServer.start();
pop3Server = new POP3Server(st, popPort);
pop3Server.start();
}
-
- public void stop() throws AxisFault{
- smtpServer.stopServer();
- pop3Server.stopServer();
- }
- public static void main(String args[]){
+ public static void main(String args[]) {
int smtpPost = MailSrvConstants.SMTP_SERVER_PORT;
int popPort = MailSrvConstants.POP_SERVER_PORT;
+
if (args.length == 2) {
try {
smtpPost = Integer.parseInt(args[0]);
popPort = Integer.parseInt(args[1]);
} catch (NumberFormatException e1) {
- log.info("Error in parsing the custom ports.");
+ log.info("Error in parsing the custom ports.");
}
} else {
log.info("Usage MailServer <SMTP_PORT> <POP_PORT>");
@@ -93,5 +91,10 @@
} catch (AxisFault e) {
log.info(e.getMessage());
}
+ }
+
+ public void stop() throws AxisFault {
+ smtpServer.stopServer();
+ pop3Server.stopServer();
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSorter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSorter.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSorter.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSorter.java Fri Dec 16 09:13:57 2005
@@ -30,17 +30,19 @@
* and the receive method is called.
*/
public class MailSorter {
+ protected static Log log = LogFactory.getLog(MailSorter.class.getName());
Storage st = null;
private ArrayList sUsers = new ArrayList();
+
// Special users. They are hard coded for the time being to axis2-server@localhost and axis2-server@127.0.0.1
private ConfigurationContext configurationContext = null;
- protected static Log log = LogFactory.getLog(MailSorter.class.getName());
private boolean actAsMailet = false;
public MailSorter(Storage st, ConfigurationContext configurationContext) {
this.st = st;
sUsers.add("axis2-server@localhost");
sUsers.add("axis2-server@127.0.0.1");
+
if (configurationContext == null) {
actAsMailet = false;
} else {
@@ -49,40 +51,34 @@
}
}
- public void sort(String user, MimeMessage msg) {
- if (actAsMailet) {
- if (sUsers.contains(user)) {
- processMail(configurationContext, msg);
- } else {
- st.addMail(user, msg);
- }
- } else {
- st.addMail(user, msg);
- }
-
- }
-
public void processMail(ConfigurationContext confContext, MimeMessage mimeMessage) {
+
// create an Axis server
AxisEngine engine = new AxisEngine(confContext);
MessageContext msgContext = null;
+
// create and initialize a message context
try {
msgContext =
new MessageContext(confContext,
- confContext.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_MAIL)),
- confContext.getAxisConfiguration().getTransportOut(new QName(Constants.TRANSPORT_MAIL)));
+ confContext.getAxisConfiguration()
+ .getTransportIn(new QName(Constants
+ .TRANSPORT_MAIL)), confContext.getAxisConfiguration()
+ .getTransportOut(new QName(Constants
+ .TRANSPORT_MAIL)));
msgContext.setServerSide(true);
-
msgContext.setProperty(MailSrvConstants.CONTENT_TYPE, mimeMessage.getContentType());
- msgContext.setWSAAction(getMailHeader(MailSrvConstants.HEADER_SOAP_ACTION, mimeMessage));
+ msgContext.setWSAAction(getMailHeader(MailSrvConstants.HEADER_SOAP_ACTION,
+ mimeMessage));
String serviceURL = mimeMessage.getSubject();
+
if (serviceURL == null) {
serviceURL = "";
}
String replyTo = ((InternetAddress) mimeMessage.getReplyTo()[0]).getAddress();
+
if (replyTo != null) {
msgContext.setReplyTo(new EndpointReference(replyTo));
}
@@ -95,21 +91,26 @@
// add the SOAPEnvelope
String message = mimeMessage.getContent().toString();
+
log.info("message[" + message + "]");
- ByteArrayInputStream bais = new ByteArrayInputStream(message.getBytes());
- XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(bais);
+ ByteArrayInputStream bais = new ByteArrayInputStream(message.getBytes());
+ XMLStreamReader reader =
+ XMLInputFactory.newInstance().createXMLStreamReader(bais);
String soapNamespaceURI = "";
+
if (mimeMessage.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
- } else if (mimeMessage.getContentType().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+ } else if (mimeMessage.getContentType().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE)
+ > -1) {
soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
-
}
- StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
+ StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+
msgContext.setEnvelope(envelope);
+
if (envelope.getBody().hasFault()) {
engine.receiveFault(msgContext);
} else {
@@ -119,6 +120,7 @@
try {
if (msgContext != null) {
MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+
engine.sendFault(faultContext);
}
} catch (Exception e1) {
@@ -127,9 +129,22 @@
}
}
+ public void sort(String user, MimeMessage msg) {
+ if (actAsMailet) {
+ if (sUsers.contains(user)) {
+ processMail(configurationContext, msg);
+ } else {
+ st.addMail(user, msg);
+ }
+ } else {
+ st.addMail(user, msg);
+ }
+ }
+
private String getMailHeader(String headerName, MimeMessage mimeMessage) throws AxisFault {
try {
String values[] = mimeMessage.getHeader(headerName);
+
if (values != null) {
return values[0];
} else {
@@ -138,6 +153,5 @@
} catch (MessagingException e) {
throw new AxisFault(e);
}
-
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSrvConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSrvConstants.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSrvConstants.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/MailSrvConstants.java Fri Dec 16 09:13:57 2005
@@ -1,64 +1,52 @@
/*
- * Created on Jan 28, 2005
- *
- * TODO To change the template for this generated file go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
+* Created on Jan 28, 2005
+*
+* TODO To change the template for this generated file go to Window -
+* Preferences - Java - Code Style - Code Templates
+*/
package org.apache.axis2.transport.mail.server;
public class MailSrvConstants {
public final static String FROM_ADDRESS = "transport.mail.from";
-
public final static String TO_ADDRESS = "transport.mail.to";
-
public final static String SUBJECT = "transport.mail.subject";
-
-
- public final static String POP3_HOST = "transport.mail.pop3.host";
- public final static String POP3_USER = "transport.mail.pop3.user";
- public final static String POP3_PASSWORD = "transport.mail.pop3.password";
- public final static String POP3_PORT = "transport.mail.pop3.port";
-
- public final static String RAPLY_TO = "transport.mail.replyToAddress";
- public final static String HEADER_SOAP_ACTION = "transport.mail.soapaction";
-
- public final static String CONTENT_TYPE = "transport.mail.contenttype";
-
- public final static String CONTENT_LOCAION = "transport.mail.contentlocation";
-
-
- public final static String SMTP_HOST = "transport.mail.smtp.host";
public final static String SMTP_USER = "transport.mail.smtp.user";
- public final static String SMTP_PASSWORD = "transport.mail.smtp.password";
- public final static String SMTP_PORT = "transport.mail.smtp.port";
-
- public final static String DEFAULT_CHAR_SET = "us-ascii";
- public final static String DEFAULT_CHAR_SET_ENCODING = "7bit";
- public final static String DEFAULT_CONTENT_TYPE = "text/xml";
-
public final static int SMTP_SERVER_PORT = (1024 + 25);
+ public final static String SMTP_PORT = "transport.mail.smtp.port";
+ public final static String SMTP_PASSWORD = "transport.mail.smtp.password";
+ public final static String SMTP_HOST = "transport.mail.smtp.host";
public final static String SERVER_DOMAIN = "localhost";
+ public final static String RCPT_OK = "250 OK performed command RCPT";
+ public final static String RCPT_ERROR = "550 Unknown recipient";
+ public final static String RAPLY_TO = "transport.mail.replyToAddress";
public final static int POP_SERVER_PORT = (1024 + 110);
-
- public final static String COMMAND_UNKNOWN = "550 Unknown command";
- public final static String COMMAND_EXIT = "EXIT";
+ public final static String POP3_USER = "transport.mail.pop3.user";
+ public final static String POP3_PORT = "transport.mail.pop3.port";
+ public final static String POP3_PASSWORD = "transport.mail.pop3.password";
+ public final static String POP3_HOST = "transport.mail.pop3.host";
+ public final static String OK = "+OK ";
public final static String MAIL_OK = "250 OK performed command MAIL";
public final static String MAIL_ERROR = "550 Error processign MAIL command";
- public final static String RCPT_OK = "250 OK performed command RCPT";
- public final static String RCPT_ERROR = "550 Unknown recipient";
+ public final static String HELO_REPLY = "250 OK";
+ public final static String HEADER_SOAP_ACTION = "transport.mail.soapaction";
+ public final static String ERR = "-ERR ";
+ public final static String DEFAULT_CONTENT_TYPE = "text/xml";
+ public final static String DEFAULT_CHAR_SET_ENCODING = "7bit";
+ public final static String DEFAULT_CHAR_SET = "us-ascii";
public final static String DATA_START_SUCCESS = "354 OK Ready for data";
public final static String DATA_END_SUCCESS = "250 OK finished adding data";
+ public final static String CONTENT_TYPE = "transport.mail.contenttype";
+ public final static String CONTENT_LOCAION = "transport.mail.contentlocation";
+ public final static String COMMAND_UNKNOWN = "550 Unknown command";
public final static String COMMAND_TRANSMISSION_END = "221 Closing SMTP service.";
- public final static String HELO_REPLY = "250 OK";
- public final static String OK = "+OK ";
- public final static String ERR = "-ERR ";
+ public final static String COMMAND_EXIT = "EXIT";
public final static String USER = "USER";
- public final static String PASS = "PASS";
public final static String STAT = "STAT";
- public final static String LIST = "LIST";
- public final static String RETR = "RETR";
- public final static String DELE = "DELE";
- public final static String NOOP = "NOOP";
public final static String RSET = "RSET";
+ public final static String RETR = "RETR";
public final static String QUIT = "QUIT";
+ public final static String PASS = "PASS";
+ public final static String NOOP = "NOOP";
+ public final static String LIST = "LIST";
+ public final static String DELE = "DELE";
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Server.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Server.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Server.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Server.java Fri Dec 16 09:13:57 2005
@@ -10,12 +10,13 @@
public class POP3Server extends Thread {
protected static Log log = LogFactory.getLog(POP3Server.class.getName());
- private ServerSocket serverSocket;
private Storage st = null;
private boolean running = false;
+ private ServerSocket serverSocket;
public POP3Server(Storage st, int port) throws AxisFault {
this.st = st;
+
try {
synchronized (this) {
running = true;
@@ -32,6 +33,7 @@
try {
Socket socket = serverSocket.accept();
POP3Worker thread = new POP3Worker(socket, st);
+
thread.start();
} catch (Exception e) {
log.error(e);
@@ -45,9 +47,8 @@
running = false;
serverSocket.close();
}
-
} catch (IOException e) {
throw new AxisFault(e);
}
}
-}
\ No newline at end of file
+}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Worker.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Worker.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Worker.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/mail/server/POP3Worker.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.apache.axis2.transport.mail.server;
@@ -31,112 +32,92 @@
import java.util.StringTokenizer;
public class POP3Worker extends Thread {
+ protected static Log log = LogFactory.getLog(POP3Server.class.getName());
+ boolean doneProcess = false;
+ int numDeleted = 0; // This is a small hack to get the deleting working with the ArrayList. To keep it simple.
+ ArrayList messages = new ArrayList();
private Socket socket;
private Storage st;
- boolean doneProcess = false;
- protected static Log log = LogFactory.getLog(POP3Server.class.getName());
- int numDeleted = 0; //This is a small hack to get the deleting working with the ArrayList. To keep it simple.
public POP3Worker(Socket socket, Storage st) {
this.socket = socket;
this.st = st;
}
- public void run() {
- try {
- InputStream inputStream = socket.getInputStream();
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(inputStream));
-
- PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),
- true);
-
- printWriter.println(MailSrvConstants.OK + " POP3 server ready");
- String s;
- String ps; //ProcessedString
- while (!doneProcess) {
- s = bufferedReader.readLine();
- processInput(s, printWriter);
- }
- socket.close();
- } catch (Exception e) {
- log.error(e);
- }
-
- }
-
- ArrayList messages = new ArrayList();
-
private void processInput(String input, PrintWriter printWriter) {
int listLen = (MailSrvConstants.LIST + " ").length();
byte[] CR_LF = new byte[]{0x0D, 0x0A};
byte[] CR_LF_DOT_CR_LF = new byte[]{0x0D, 0x0A, '.', 0x0D, 0x0A};
String user = "";
+
if (input == null) {
- this.doneProcess = true; // This should not be happening
+ this.doneProcess = true; // This should not be happening
} else {
ArrayList tokens = new ArrayList();
StringTokenizer stk = new StringTokenizer(input);
+
while (stk.hasMoreTokens()) {
tokens.add(stk.nextToken());
}
+
if (tokens.get(0).equals(MailSrvConstants.USER)) {
user = (String) tokens.get(1);
messages = st.popUserMails(user);
printWriter.println(MailSrvConstants.OK);
} else if (tokens.get(0).equals(MailSrvConstants.PASS)) {
- printWriter.println(MailSrvConstants.OK); // Passwords are not checked.
+ printWriter.println(MailSrvConstants.OK); // Passwords are not checked.
} else if (input.equals(MailSrvConstants.QUIT)) {
- printWriter.println(
- MailSrvConstants.OK + "POP3 server signing off");
+ printWriter.println(MailSrvConstants.OK + "POP3 server signing off");
doneProcess = true;
} else if (input.equals(MailSrvConstants.STAT)) {
- printWriter.println(MailSrvConstants.OK + messages.size() + " 1"); // We take the maildrop size as one.
- } else if (tokens.get(0).equals(MailSrvConstants.LIST)) { // scan listing
+ printWriter.println(MailSrvConstants.OK + messages.size() + " 1"); // We take the maildrop size as one.
+ } else if (tokens.get(0).equals(MailSrvConstants.LIST)) { // scan listing
if (tokens.size() > 1) {
try {
int optArg = Integer.parseInt((String) tokens.get(1));
int messageArrayIndex = optArg - 1;
- if ((messageArrayIndex < messages.size()) &&
- (messageArrayIndex >= 0)) { // that is OK careful with numbering
- printWriter.println(
- MailSrvConstants.OK + messageArrayIndex + 1 +
- " 120"); // Mail size of 120 is just some number.
+
+ if ((messageArrayIndex < messages.size()) && (messageArrayIndex >= 0))
+ { // that is OK careful with numbering
+ printWriter.println(MailSrvConstants.OK + messageArrayIndex + 1
+ + " 120"); // Mail size of 120 is just some number.
} else {
- printWriter.println(
- MailSrvConstants.ERR +
- "no such message, only " +
- (messages.size() + 1) +
- " messages in maildrop");
+ printWriter.println(MailSrvConstants.ERR + "no such message, only "
+ + (messages.size() + 1) + " messages in maildrop");
}
} catch (NumberFormatException e) {
log.info(e.getMessage());
- printWriter.println(
- MailSrvConstants.ERR +
- "problem passing the index. Index submited was " +
- tokens.get(1));
+ printWriter.println(MailSrvConstants.ERR
+ + "problem passing the index. Index submited was "
+ + tokens.get(1));
}
} else {
printWriter.println(MailSrvConstants.OK + messages.size());
+
for (int i = 0; i < messages.size(); i++) {
int messageIndex = i + 1;
- printWriter.println(messageIndex + " 120"); // List out all the messages with a message size octet of 120
+
+ printWriter.println(messageIndex + " 120"); // List out all the messages with a message size octet of 120
}
+
printWriter.println(".");
}
} else if (tokens.get(0).equals(MailSrvConstants.RETR)) {
String i = (String) tokens.get(1);
+
try {
int index = Integer.parseInt(i);
+
printWriter.println(MailSrvConstants.OK);
+
MimeMessage m = (MimeMessage) messages.get(index - 1);
m.writeTo(socket.getOutputStream());
- //System.out.println("\n\n\n\n ========This is the mail========");
- //m.writeTo(System.out);//socket.getOutputStream());
- //System.out.println("\n\n\n\n ========This is the mail========");
- socket.getOutputStream().write(CR_LF_DOT_CR_LF);// This is a bit of a hack to get it working. Have to find a bette way to handle this.
+ // System.out.println("\n\n\n\n ========This is the mail========");
+ // m.writeTo(System.out);//socket.getOutputStream());
+ // System.out.println("\n\n\n\n ========This is the mail========");
+ socket.getOutputStream().write(CR_LF_DOT_CR_LF); // This is a bit of a hack to get it working. Have to find a bette way to handle this.
socket.getOutputStream().flush();
} catch (NumberFormatException e) {
printWriter.println(MailSrvConstants.ERR);
@@ -147,8 +128,10 @@
}
} else if (tokens.get(0).equals(MailSrvConstants.DELE)) {
String smIndex = (String) tokens.get(1);
+
try {
- int mIndex = Integer.parseInt(smIndex) - 1 - numDeleted; // When one mail is deleted the index of the other mails will reduce. Asumed that the delete will occure from bottom up.
+ int mIndex = Integer.parseInt(smIndex) - 1 - numDeleted; // When one mail is deleted the index of the other mails will reduce. Asumed that the delete will occure from bottom up.
+
if ((mIndex >= 0) && (mIndex < messages.size())) {
messages.remove(mIndex);
numDeleted++;
@@ -159,12 +142,34 @@
} catch (NumberFormatException e) {
printWriter.println(MailSrvConstants.ERR);
}
- } else if (tokens.get(0).equals(MailSrvConstants.NOOP) ||
- tokens.get(0).equals(MailSrvConstants.RSET)) {
+ } else if (tokens.get(0).equals(MailSrvConstants.NOOP)
+ || tokens.get(0).equals(MailSrvConstants.RSET)) {
printWriter.println(MailSrvConstants.OK);
} else {
printWriter.println(MailSrvConstants.ERR);
}
+ }
+ }
+
+ public void run() {
+ try {
+ InputStream inputStream = socket.getInputStream();
+ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+ PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
+
+ printWriter.println(MailSrvConstants.OK + " POP3 server ready");
+
+ String s;
+ String ps; // ProcessedString
+
+ while (!doneProcess) {
+ s = bufferedReader.readLine();
+ processInput(s, printWriter);
+ }
+
+ socket.close();
+ } catch (Exception e) {
+ log.error(e);
}
}
}