You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2009/10/23 11:56:53 UTC
svn commit: r828980 [4/10] - in /james/hupa/trunk:
client/src/main/java/org/apache/hupa/client/
client/src/main/java/org/apache/hupa/client/bundles/
client/src/main/java/org/apache/hupa/client/dnd/
client/src/main/java/org/apache/hupa/client/gin/ clien...
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/IMAPTreeItem.java Fri Oct 23 09:56:45 2009
@@ -23,136 +23,136 @@
import org.apache.hupa.widgets.event.EditEvent;
import org.apache.hupa.widgets.ui.EditableTreeItem;
-public class IMAPTreeItem extends EditableTreeItem {
- protected String oldFullName;
- protected String oldName;
-
- public IMAPTreeItem(IMAPFolder folder) {
- setUserObject(folder);
- setFolderText(folder);
- }
-
- @Override
- public void setSelected(boolean selected) {
- super.setSelected(selected);
- if (isSelected()) {
- getWidget().addStyleName("hupa-IMAPFolder-selected");
- } else {
- getWidget().removeStyleName("hupa-IMAPFolder-selected");
- }
- }
-
- /**
- * Decrease the unseen messagecount of this folder
- */
- public void decreaseUnseenMessageCount() {
- descreaseUnseenMessageCount(1);
- }
-
- public void setUnseenMessageCount(int cound) {
- IMAPFolder folder = (IMAPFolder) getUserObject();
- int count = folder.getUnseeMessageCount();
- folder.setUnseenMessageCount(count);
- setFolderText(folder);
-
- }
-
-
- /**
- * Decrease the unseen messagecount of this folder
- *
- * @param decreaseCount
- */
- public void descreaseUnseenMessageCount(int decreaseCount) {
- IMAPFolder folder = (IMAPFolder) getUserObject();
- int count = folder.getUnseeMessageCount();
- if (count > 0) {
- count = count - decreaseCount;
- if (count < 0) {
- count = 0;
- }
- folder.setUnseenMessageCount(count);
- setFolderText(folder);
- }
- }
- /**
- * Increase the unseen messagecount of this folder
- *
- * @param increaseCount
- */
- public void increaseUnseenMessageCount() {
- increaseUnseenMessageCount(1);
- }
-
- /**
- * Increase the unseen messagecount of this folder
- *
- */
- public void increaseUnseenMessageCount( int increaseCount) {
- IMAPFolder folder = (IMAPFolder) getUserObject();
- int count = folder.getUnseeMessageCount();
- count = count+ increaseCount;
- folder.setUnseenMessageCount(count);
- setFolderText(folder);
- }
-
- private void setFolderText(IMAPFolder folder) {
- setText(getFolderName(folder));
- }
-
- /**
- * Return the folder name to display in the TreeItem for the given IMAPFolder
- *
- * @param folder
- * @return name
- */
- private String getFolderName(IMAPFolder folder) {
- return folder.getName() + " ("+folder.getUnseeMessageCount()+")";
- }
-
- @Override
- public void setUserObject(Object obj) {
- if ((obj instanceof IMAPFolder) == false) {
- throw new IllegalArgumentException("UserObject needs to be an instance of IMAPFolder");
- }
- setFolderText((IMAPFolder)obj);
-
- super.setUserObject(obj);
- }
-
- @Override
- public void startEdit() {
- IMAPFolder folder = (IMAPFolder) getUserObject();
- oldFullName = folder.getFullName();
- oldName = folder.getName();
- showEditBox(oldName);
- manager.fireEvent(new EditEvent(EditEvent.EventType.Start,oldFullName,null));
- }
-
- @Override
- public void cancelEdit() {
- IMAPFolder folder = ((IMAPFolder) getUserObject());
- folder.setFullName(oldFullName);
- showItem(getFolderName(folder));
-
- manager.fireEvent(new EditEvent(EditEvent.EventType.Cancel,oldFullName,null));
-
- }
-
- @Override
- public void stopEdit() {
- if (editBox.getText().length() < 1) {
- // Empty folder name is not allowed!
- cancelEdit();
- } else {
- String newFolderName = editBox.getText();
- String newFullFolderName = oldFullName.substring(0, oldFullName.length() - oldName.length()) + newFolderName;
- IMAPFolder folder = ((IMAPFolder) getUserObject());
- folder.setFullName(newFullFolderName);
- showItem(getFolderName(folder));
+public class IMAPTreeItem extends EditableTreeItem {
+ protected String oldFullName;
+ protected String oldName;
+
+ public IMAPTreeItem(IMAPFolder folder) {
+ setUserObject(folder);
+ setFolderText(folder);
+ }
+
+ @Override
+ public void setSelected(boolean selected) {
+ super.setSelected(selected);
+ if (isSelected()) {
+ getWidget().addStyleName("hupa-IMAPFolder-selected");
+ } else {
+ getWidget().removeStyleName("hupa-IMAPFolder-selected");
+ }
+ }
+
+ /**
+ * Decrease the unseen messagecount of this folder
+ */
+ public void decreaseUnseenMessageCount() {
+ descreaseUnseenMessageCount(1);
+ }
+
+ public void setUnseenMessageCount(int cound) {
+ IMAPFolder folder = (IMAPFolder) getUserObject();
+ int count = folder.getUnseeMessageCount();
+ folder.setUnseenMessageCount(count);
+ setFolderText(folder);
+
+ }
+
+
+ /**
+ * Decrease the unseen messagecount of this folder
+ *
+ * @param decreaseCount
+ */
+ public void descreaseUnseenMessageCount(int decreaseCount) {
+ IMAPFolder folder = (IMAPFolder) getUserObject();
+ int count = folder.getUnseeMessageCount();
+ if (count > 0) {
+ count = count - decreaseCount;
+ if (count < 0) {
+ count = 0;
+ }
+ folder.setUnseenMessageCount(count);
+ setFolderText(folder);
+ }
+ }
+ /**
+ * Increase the unseen messagecount of this folder
+ *
+ * @param increaseCount
+ */
+ public void increaseUnseenMessageCount() {
+ increaseUnseenMessageCount(1);
+ }
+
+ /**
+ * Increase the unseen messagecount of this folder
+ *
+ */
+ public void increaseUnseenMessageCount( int increaseCount) {
+ IMAPFolder folder = (IMAPFolder) getUserObject();
+ int count = folder.getUnseeMessageCount();
+ count = count+ increaseCount;
+ folder.setUnseenMessageCount(count);
+ setFolderText(folder);
+ }
+
+ private void setFolderText(IMAPFolder folder) {
+ setText(getFolderName(folder));
+ }
+
+ /**
+ * Return the folder name to display in the TreeItem for the given IMAPFolder
+ *
+ * @param folder
+ * @return name
+ */
+ private String getFolderName(IMAPFolder folder) {
+ return folder.getName() + " ("+folder.getUnseeMessageCount()+")";
+ }
+
+ @Override
+ public void setUserObject(Object obj) {
+ if ((obj instanceof IMAPFolder) == false) {
+ throw new IllegalArgumentException("UserObject needs to be an instance of IMAPFolder");
+ }
+ setFolderText((IMAPFolder)obj);
+
+ super.setUserObject(obj);
+ }
+
+ @Override
+ public void startEdit() {
+ IMAPFolder folder = (IMAPFolder) getUserObject();
+ oldFullName = folder.getFullName();
+ oldName = folder.getName();
+ showEditBox(oldName);
+ manager.fireEvent(new EditEvent(EditEvent.EventType.Start,oldFullName,null));
+ }
+
+ @Override
+ public void cancelEdit() {
+ IMAPFolder folder = ((IMAPFolder) getUserObject());
+ folder.setFullName(oldFullName);
+ showItem(getFolderName(folder));
+
+ manager.fireEvent(new EditEvent(EditEvent.EventType.Cancel,oldFullName,null));
+
+ }
+
+ @Override
+ public void stopEdit() {
+ if (editBox.getText().length() < 1) {
+ // Empty folder name is not allowed!
+ cancelEdit();
+ } else {
+ String newFolderName = editBox.getText();
+ String newFullFolderName = oldFullName.substring(0, oldFullName.length() - oldName.length()) + newFolderName;
+ IMAPFolder folder = ((IMAPFolder) getUserObject());
+ folder.setFullName(newFullFolderName);
+ showItem(getFolderName(folder));
- manager.fireEvent(new EditEvent(EditEvent.EventType.Stop,oldFullName,newFullFolderName));
- }
+ manager.fireEvent(new EditEvent(EditEvent.EventType.Stop,oldFullName,newFullFolderName));
+ }
- }
+ }
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/Loading.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/Loading.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/Loading.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/Loading.java Fri Oct 23 09:56:45 2009
@@ -30,28 +30,28 @@
import com.google.gwt.user.client.ui.SimplePanel;
public class Loading extends Composite{
- private HupaConstants constants = GWT.create(HupaConstants.class);
- private SimplePanel sPanel = new SimplePanel();
- private HorizontalPanel panel = new HorizontalPanel();
- public Loading(boolean small) {
- panel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
- panel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
- panel.add(new Image(GWT.getModuleBaseURL() + "../images/ajax-loader.gif"));
- if (small == false) {
- panel.add(new Label(" " + constants.loading()));
- }
-
- initWidget(sPanel);
- }
-
- public void show() {
- sPanel.clear();
- sPanel.add(panel);
- }
-
- public void hide() {
- sPanel.clear();
- sPanel.add(new HTML(" "));
- }
+ private HupaConstants constants = GWT.create(HupaConstants.class);
+ private SimplePanel sPanel = new SimplePanel();
+ private HorizontalPanel panel = new HorizontalPanel();
+ public Loading(boolean small) {
+ panel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
+ panel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
+ panel.add(new Image(GWT.getModuleBaseURL() + "../images/ajax-loader.gif"));
+ if (small == false) {
+ panel.add(new Label(" " + constants.loading()));
+ }
+
+ initWidget(sPanel);
+ }
+
+ public void show() {
+ sPanel.clear();
+ sPanel.add(panel);
+ }
+
+ public void hide() {
+ sPanel.clear();
+ sPanel.add(new HTML(" "));
+ }
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyButton.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyButton.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyButton.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyButton.java Fri Oct 23 09:56:45 2009
@@ -24,11 +24,11 @@
public class MyButton extends Button implements HasEnable{
- public MyButton(String sendButton) {
- super(sendButton);
- }
+ public MyButton(String sendButton) {
+ super(sendButton);
+ }
- public MyButton() {
- super();
- }
+ public MyButton() {
+ super();
+ }
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java Fri Oct 23 09:56:45 2009
@@ -3,5 +3,5 @@
import com.google.gwt.user.client.ui.DialogBox;
public class MyDialogBox extends DialogBox implements HasDialog{
-
+
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/PagingOptions.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/PagingOptions.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/PagingOptions.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/PagingOptions.java Fri Oct 23 09:56:45 2009
@@ -41,185 +41,185 @@
import com.google.gwt.user.client.ui.SimplePanel;
public class PagingOptions extends Composite {
- private HupaConstants constants = GWT.create(HupaConstants.class);
-
- private HorizontalPanel pagingPanel = new HorizontalPanel();
- private EnableHyperlink firstLink = new EnableHyperlink("<< " + constants.pageFirst(),"");
- private EnableHyperlink prevLink = new EnableHyperlink("< " + constants.pagePrev(),"");
- private EnableHyperlink lastLink = new EnableHyperlink(constants.pageLast() + " >>","");
- private EnableHyperlink nextLink = new EnableHyperlink(constants.pageNext() + " >","");
- private Label text = new Label();
- private int currentPage = 1;
- private Loading loading = new Loading(true);
- private SimplePanel panel = new SimplePanel();
-
- public PagingOptions(final PagingScrollTable<?> table) {
- pagingPanel.setSpacing(3);
-
- pagingPanel.add(panel);
- pagingPanel.add(firstLink);
- pagingPanel.add(prevLink);
- pagingPanel.add(nextLink);
- pagingPanel.add(lastLink);
- loading.hide();
- panel.setWidget(text);
- panel.setWidth("100px");
- pagingPanel.setCellHorizontalAlignment(panel, HorizontalPanel.ALIGN_CENTER);
- firstLink.setEnabled(false);
- prevLink.setEnabled(false);
- lastLink.setEnabled(false);
- nextLink.setEnabled(false);
-
- table.addPageCountChangeHandler(new PageCountChangeHandler() {
-
- public void onPageCountChange(PageCountChangeEvent event) {
- int startCount = currentPage * table.getPageSize();
-
- if (currentPage == 0) {
- startCount = 0;
- }
-
- int endCount = startCount + table.getPageSize();
-
- int rows = table.getTableModel().getRowCount();
- updateControl(startCount, endCount, rows);
- }
-
- });
-
-
- table.addPageChangeHandler(new PageChangeHandler() {
-
- public void onPageChange(PageChangeEvent event) {
- loading(true);
-
- currentPage = event.getNewPage();
- int startCount = currentPage * table.getPageSize();
-
- if (currentPage == 0) {
- startCount = 0;
- }
-
- int endCount = startCount + table.getPageSize();
- int rows = table.getTableModel().getRowCount();
-
-
- updateControl(startCount, endCount, rows);
- }
- });
-
- table.addPageLoadHandler(new PageLoadHandler() {
-
- public void onPageLoad(PageLoadEvent event) {
- loading(false);
- }
-
- });
-
- table.addPagingFailureHandler(new PagingFailureHandler() {
-
- public void onPagingFailure(PagingFailureEvent event) {
- loading(false);
- }
-
- });
-
- firstLink.addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- table.gotoFirstPage();
- }
-
- });
-
- prevLink.addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- table.gotoPreviousPage();
- }
-
- });
-
- nextLink.addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- table.gotoNextPage();
- }
-
- });
-
- lastLink.addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- table.gotoLastPage();
- }
-
- });
- initWidget(pagingPanel);
- }
-
- private void loading(boolean isLoading) {
- if (isLoading) {
- loading.show();
- panel.setWidget(loading);
- } else {
- loading.hide();
- panel.setWidget(text);
- }
-
- }
- private void updateControl(int startCount, int endCount, int rows) {
- if (rows == TableModel.UNKNOWN_ROW_COUNT) {
- startCount = 0;
- endCount = 0;
- rows = 0;
- }
-
- if (rows < endCount) {
- endCount = rows;
- }
-
- if (endCount == 0) {
- startCount = 0;
- }
-
- if (startCount <= 0) {
- firstLink.setEnabled(false);
- prevLink.setEnabled(false);
- } else {
- firstLink.setEnabled(true);
- prevLink.setEnabled(true);
- }
-
- if (rows > endCount) {
- lastLink.setEnabled(true);
- nextLink.setEnabled(true);
- } else {
- lastLink.setEnabled(false);
- nextLink.setEnabled(false);
- }
- text.setText(startCount + " - " + endCount + " of " + rows);
-
- }
- public void reset() {
- currentPage = 0;
- text.setText("0 - 0 of 0");
- }
-
- public EnableHyperlink getFirstLink() {
- return firstLink;
- }
-
- public EnableHyperlink getPrevLink() {
- return prevLink;
- }
-
- public EnableHyperlink getNextLink() {
- return nextLink;
- }
-
- public EnableHyperlink getLastLink() {
- return lastLink;
- }
+ private HupaConstants constants = GWT.create(HupaConstants.class);
+
+ private HorizontalPanel pagingPanel = new HorizontalPanel();
+ private EnableHyperlink firstLink = new EnableHyperlink("<< " + constants.pageFirst(),"");
+ private EnableHyperlink prevLink = new EnableHyperlink("< " + constants.pagePrev(),"");
+ private EnableHyperlink lastLink = new EnableHyperlink(constants.pageLast() + " >>","");
+ private EnableHyperlink nextLink = new EnableHyperlink(constants.pageNext() + " >","");
+ private Label text = new Label();
+ private int currentPage = 1;
+ private Loading loading = new Loading(true);
+ private SimplePanel panel = new SimplePanel();
+
+ public PagingOptions(final PagingScrollTable<?> table) {
+ pagingPanel.setSpacing(3);
+
+ pagingPanel.add(panel);
+ pagingPanel.add(firstLink);
+ pagingPanel.add(prevLink);
+ pagingPanel.add(nextLink);
+ pagingPanel.add(lastLink);
+ loading.hide();
+ panel.setWidget(text);
+ panel.setWidth("100px");
+ pagingPanel.setCellHorizontalAlignment(panel, HorizontalPanel.ALIGN_CENTER);
+ firstLink.setEnabled(false);
+ prevLink.setEnabled(false);
+ lastLink.setEnabled(false);
+ nextLink.setEnabled(false);
+
+ table.addPageCountChangeHandler(new PageCountChangeHandler() {
+
+ public void onPageCountChange(PageCountChangeEvent event) {
+ int startCount = currentPage * table.getPageSize();
+
+ if (currentPage == 0) {
+ startCount = 0;
+ }
+
+ int endCount = startCount + table.getPageSize();
+
+ int rows = table.getTableModel().getRowCount();
+ updateControl(startCount, endCount, rows);
+ }
+
+ });
+
+
+ table.addPageChangeHandler(new PageChangeHandler() {
+
+ public void onPageChange(PageChangeEvent event) {
+ loading(true);
+
+ currentPage = event.getNewPage();
+ int startCount = currentPage * table.getPageSize();
+
+ if (currentPage == 0) {
+ startCount = 0;
+ }
+
+ int endCount = startCount + table.getPageSize();
+ int rows = table.getTableModel().getRowCount();
+
+
+ updateControl(startCount, endCount, rows);
+ }
+ });
+
+ table.addPageLoadHandler(new PageLoadHandler() {
+
+ public void onPageLoad(PageLoadEvent event) {
+ loading(false);
+ }
+
+ });
+
+ table.addPagingFailureHandler(new PagingFailureHandler() {
+
+ public void onPagingFailure(PagingFailureEvent event) {
+ loading(false);
+ }
+
+ });
+
+ firstLink.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ table.gotoFirstPage();
+ }
+
+ });
+
+ prevLink.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ table.gotoPreviousPage();
+ }
+
+ });
+
+ nextLink.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ table.gotoNextPage();
+ }
+
+ });
+
+ lastLink.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ table.gotoLastPage();
+ }
+
+ });
+ initWidget(pagingPanel);
+ }
+
+ private void loading(boolean isLoading) {
+ if (isLoading) {
+ loading.show();
+ panel.setWidget(loading);
+ } else {
+ loading.hide();
+ panel.setWidget(text);
+ }
+
+ }
+ private void updateControl(int startCount, int endCount, int rows) {
+ if (rows == TableModel.UNKNOWN_ROW_COUNT) {
+ startCount = 0;
+ endCount = 0;
+ rows = 0;
+ }
+
+ if (rows < endCount) {
+ endCount = rows;
+ }
+
+ if (endCount == 0) {
+ startCount = 0;
+ }
+
+ if (startCount <= 0) {
+ firstLink.setEnabled(false);
+ prevLink.setEnabled(false);
+ } else {
+ firstLink.setEnabled(true);
+ prevLink.setEnabled(true);
+ }
+
+ if (rows > endCount) {
+ lastLink.setEnabled(true);
+ nextLink.setEnabled(true);
+ } else {
+ lastLink.setEnabled(false);
+ nextLink.setEnabled(false);
+ }
+ text.setText(startCount + " - " + endCount + " of " + rows);
+
+ }
+ public void reset() {
+ currentPage = 0;
+ text.setText("0 - 0 of 0");
+ }
+
+ public EnableHyperlink getFirstLink() {
+ return firstLink;
+ }
+
+ public EnableHyperlink getPrevLink() {
+ return prevLink;
+ }
+
+ public EnableHyperlink getNextLink() {
+ return nextLink;
+ }
+
+ public EnableHyperlink getLastLink() {
+ return lastLink;
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeIMAPStore.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeIMAPStore.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeIMAPStore.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeIMAPStore.java Fri Oct 23 09:56:45 2009
@@ -35,102 +35,102 @@
// TODO: implement full set of methods
public class DemoModeIMAPStore extends IMAPStore {
-
- public static final String DEMO_MODE_DEFAULT_FOLDER = "/";
- public static final String DEMO_MODE_INBOX_FOLDER = "Demo-Inbox";
- public static final String DEMO_MODE_SENT_FOLDER = "Demo-Sent";
- public static final String DEMO_MODE_TRASH_FOLDER = "Demo-Trash";
-
-
- static final URLName demoUrl = new URLName(null, InMemoryIMAPStoreCache.DEMO_MODE, 143, null, null, null);
- static final HashMap<String, Folder> folders = new HashMap<String, Folder>();
-
- public DemoModeIMAPStore(Session session) {
- super(session, demoUrl);
- }
-
- @Override
- public boolean isConnected() {
- return true;
- }
-
- @Override
- public void idle() throws MessagingException {
- }
-
- @Override
- public Folder getFolder(String name) throws MessagingException {
- Folder ret = folders.get(name) != null ? folders.get(name) : new DemoModeIMAPFolder(name, this) {};
- folders.put(name, ret);
- return ret;
- }
-
- @Override
- public Folder getDefaultFolder() throws MessagingException {
- return getFolder(DEMO_MODE_DEFAULT_FOLDER);
- }
-
- private class DemoModeIMAPFolder extends IMAPFolder {
- String fullName = null;
- IMAPStore store = null;
- Vector<Message> messages = new Vector<Message>();
-
- DemoModeIMAPFolder(String fullName, IMAPStore store) {
- super(fullName, '/', store);
- this.fullName = fullName;
- this.store = store;
- }
-
- @Override
- public void open(int mode) throws MessagingException {
- }
-
- @Override
- public int getMessageCount() throws MessagingException {
- return messages.size();
- }
-
- @Override
- public int getUnreadMessageCount() throws MessagingException {
- return 0;
- }
-
- @Override
- public boolean delete(boolean recurse) throws MessagingException {
- return true;
- }
-
- @Override
- public Folder[] list(String pattern) throws MessagingException {
- if (DEMO_MODE_DEFAULT_FOLDER.equals(fullName)) {
- return new Folder[] {
- store.getFolder(DEMO_MODE_INBOX_FOLDER),
- store.getFolder(DEMO_MODE_SENT_FOLDER),
- store.getFolder(DEMO_MODE_TRASH_FOLDER)
- };
- }
- return new Folder[0];
- }
-
- @Override
- public boolean create(int type) throws MessagingException {
- return true;
- }
-
- @Override
- public boolean exists() throws MessagingException {
- return true;
- }
-
- @Override
- public void appendMessages(Message[] msgs) {
- messages.addAll(Arrays.asList(msgs));
- }
-
- @Override
- public void close(boolean expunge) throws MessagingException {
- }
-
- }
+
+ public static final String DEMO_MODE_DEFAULT_FOLDER = "/";
+ public static final String DEMO_MODE_INBOX_FOLDER = "Demo-Inbox";
+ public static final String DEMO_MODE_SENT_FOLDER = "Demo-Sent";
+ public static final String DEMO_MODE_TRASH_FOLDER = "Demo-Trash";
+
+
+ static final URLName demoUrl = new URLName(null, InMemoryIMAPStoreCache.DEMO_MODE, 143, null, null, null);
+ static final HashMap<String, Folder> folders = new HashMap<String, Folder>();
+
+ public DemoModeIMAPStore(Session session) {
+ super(session, demoUrl);
+ }
+
+ @Override
+ public boolean isConnected() {
+ return true;
+ }
+
+ @Override
+ public void idle() throws MessagingException {
+ }
+
+ @Override
+ public Folder getFolder(String name) throws MessagingException {
+ Folder ret = folders.get(name) != null ? folders.get(name) : new DemoModeIMAPFolder(name, this) {};
+ folders.put(name, ret);
+ return ret;
+ }
+
+ @Override
+ public Folder getDefaultFolder() throws MessagingException {
+ return getFolder(DEMO_MODE_DEFAULT_FOLDER);
+ }
+
+ private class DemoModeIMAPFolder extends IMAPFolder {
+ String fullName = null;
+ IMAPStore store = null;
+ Vector<Message> messages = new Vector<Message>();
+
+ DemoModeIMAPFolder(String fullName, IMAPStore store) {
+ super(fullName, '/', store);
+ this.fullName = fullName;
+ this.store = store;
+ }
+
+ @Override
+ public void open(int mode) throws MessagingException {
+ }
+
+ @Override
+ public int getMessageCount() throws MessagingException {
+ return messages.size();
+ }
+
+ @Override
+ public int getUnreadMessageCount() throws MessagingException {
+ return 0;
+ }
+
+ @Override
+ public boolean delete(boolean recurse) throws MessagingException {
+ return true;
+ }
+
+ @Override
+ public Folder[] list(String pattern) throws MessagingException {
+ if (DEMO_MODE_DEFAULT_FOLDER.equals(fullName)) {
+ return new Folder[] {
+ store.getFolder(DEMO_MODE_INBOX_FOLDER),
+ store.getFolder(DEMO_MODE_SENT_FOLDER),
+ store.getFolder(DEMO_MODE_TRASH_FOLDER)
+ };
+ }
+ return new Folder[0];
+ }
+
+ @Override
+ public boolean create(int type) throws MessagingException {
+ return true;
+ }
+
+ @Override
+ public boolean exists() throws MessagingException {
+ return true;
+ }
+
+ @Override
+ public void appendMessages(Message[] msgs) {
+ messages.addAll(Arrays.asList(msgs));
+ }
+
+ @Override
+ public void close(boolean expunge) throws MessagingException {
+ }
+
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeSMTPTransport.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeSMTPTransport.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeSMTPTransport.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/DemoModeSMTPTransport.java Fri Oct 23 09:56:45 2009
@@ -29,18 +29,18 @@
public class DemoModeSMTPTransport extends Transport {
- static final URLName demoUrl = new URLName(null, InMemoryIMAPStoreCache.DEMO_MODE, 143, null, null, null);
-
- public DemoModeSMTPTransport(Session session) {
- super(session, demoUrl);
- }
+ static final URLName demoUrl = new URLName(null, InMemoryIMAPStoreCache.DEMO_MODE, 143, null, null, null);
+
+ public DemoModeSMTPTransport(Session session) {
+ super(session, demoUrl);
+ }
- @Override
+ @Override
public void sendMessage(Message msg, Address[] addresses) throws MessagingException {
}
@Override
public void connect(String host, int port, String user, String password) throws MessagingException {
}
-
+
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/FileItemRegistry.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/FileItemRegistry.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/FileItemRegistry.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/FileItemRegistry.java Fri Oct 23 09:56:45 2009
@@ -30,43 +30,43 @@
public class FileItemRegistry {
- public Map<String,FileItem> map = new HashMap<String, FileItem>();
- private Log logger;
-
- @Inject
- public FileItemRegistry(Log logger) {
- this.logger = logger;
- }
-
- public void add(FileItem item) {
- logger.debug("Store item " + item.getName() + " with name " + item.getFieldName());
- map.put(item.getFieldName(), item);
- }
-
- public void remove(String name) {
- remove(get(name));
- }
-
- public void remove(FileItem item) {
- if (item != null) {
- logger.debug("Remove item " + item.getName() + " with name " + item.getFieldName());
- map.remove(item);
- // Remove temporary stuff
- item.delete();
- }
- }
-
- public void clear() {
- for (Entry<String,FileItem> e: map.entrySet())
- remove(e.getValue());
- }
-
- public FileItem get(String name) {
- logger.debug("Retrieve item " + name + " isNull=" + (map.get(name) == null));
- return map.get(name);
- }
-
- public int size() {
- return map.size();
- }
+ public Map<String,FileItem> map = new HashMap<String, FileItem>();
+ private Log logger;
+
+ @Inject
+ public FileItemRegistry(Log logger) {
+ this.logger = logger;
+ }
+
+ public void add(FileItem item) {
+ logger.debug("Store item " + item.getName() + " with name " + item.getFieldName());
+ map.put(item.getFieldName(), item);
+ }
+
+ public void remove(String name) {
+ remove(get(name));
+ }
+
+ public void remove(FileItem item) {
+ if (item != null) {
+ logger.debug("Remove item " + item.getName() + " with name " + item.getFieldName());
+ map.remove(item);
+ // Remove temporary stuff
+ item.delete();
+ }
+ }
+
+ public void clear() {
+ for (Entry<String,FileItem> e: map.entrySet())
+ remove(e.getValue());
+ }
+
+ public FileItem get(String name) {
+ logger.debug("Retrieve item " + name + " isNull=" + (map.get(name) == null));
+ return map.get(name);
+ }
+
+ public int size() {
+ return map.size();
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/IMAPStoreCache.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/IMAPStoreCache.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/IMAPStoreCache.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/IMAPStoreCache.java Fri Oct 23 09:56:45 2009
@@ -26,8 +26,8 @@
import com.sun.mail.imap.IMAPStore;
public interface IMAPStoreCache {
- public IMAPStore get(User user) throws MessagingException;
- public IMAPStore get(String username,String password) throws MessagingException;
- public void delete(User user);
- public void delete(String username);
+ public IMAPStore get(User user) throws MessagingException;
+ public IMAPStore get(String username,String password) throws MessagingException;
+ public void delete(User user);
+ public void delete(String username);
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java Fri Oct 23 09:56:45 2009
@@ -39,140 +39,140 @@
@Singleton
public class InMemoryIMAPStoreCache implements IMAPStoreCache{
- public static final String DEMO_MODE = "demo-mode";
-
- private Properties props = new Properties();
- private Session session;
- protected Log logger;
- private final Map<String,CachedIMAPStore> pool = new HashMap<String ,CachedIMAPStore>();
- private String address;
- private int port;
- private boolean useSSL = false;
-
- @Inject
- public InMemoryIMAPStoreCache(Log logger,@Named("IMAPServerAddress") String address, @Named("IMAPServerPort") int port, @Named("IMAPS") boolean useSSL,Provider<Session> sessionProvider) {
- this.logger = logger;
- this.address = address;
- this.port = port;
- this.useSSL = useSSL;
-
+ public static final String DEMO_MODE = "demo-mode";
+
+ private Properties props = new Properties();
+ private Session session;
+ protected Log logger;
+ private final Map<String,CachedIMAPStore> pool = new HashMap<String ,CachedIMAPStore>();
+ private String address;
+ private int port;
+ private boolean useSSL = false;
+
+ @Inject
+ public InMemoryIMAPStoreCache(Log logger,@Named("IMAPServerAddress") String address, @Named("IMAPServerPort") int port, @Named("IMAPS") boolean useSSL,Provider<Session> sessionProvider) {
+ this.logger = logger;
+ this.address = address;
+ this.port = port;
+ this.useSSL = useSSL;
+
props.setProperty("mail.mime.decodetext.strict", "false");
if (useSSL) {
- props.setProperty("mail.store.protocol", "imaps");
+ props.setProperty("mail.store.protocol", "imaps");
}
session = sessionProvider.get();
System.setProperty("mail.mime.decodetext.strict", "false");
- }
-
+ }
+
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.server.IMAPStoreCache#get(org.apache.hupa.shared.data.User)
- */
- public IMAPStore get(User user) throws MessagingException {
- return get(user.getName(),user.getPassword());
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.server.IMAPStoreCache#get(java.lang.String, java.lang.String)
- */
- public IMAPStore get(String username, String password) throws MessagingException {
- CachedIMAPStore cstore = pool.get(username);
- if (cstore == null) {
- logger.debug("No cached store found for user " +username);
- cstore = createCachedIMAPStore();
- } else {
- if (cstore.isExpired() == false) {
- try {
- cstore.validate();
- } catch (MessagingException e) {
- cstore = createCachedIMAPStore();
- }
- } else {
- pool.remove(username);
- try {
- if (cstore != null) cstore.getStore().close();
- } catch (MessagingException e) {
- // ignore on close
- }
- cstore = createCachedIMAPStore();
- }
- }
-
- if (cstore.getStore().isConnected() == false) {
- try {
- cstore.getStore().connect(address, port, username, password);
- } catch (MessagingException e) {
- throw (e);
- }
- }
- pool.put(username, cstore);
- return cstore.getStore();
- }
-
- private CachedIMAPStore createCachedIMAPStore() throws NoSuchProviderException {
- CachedIMAPStore cstore;
- if (DEMO_MODE.equals(this.address)) {
- cstore = new CachedIMAPStore(new DemoModeIMAPStore(session), 300);
- } else if (useSSL) {
- cstore = new CachedIMAPStore((IMAPStore)session.getStore("imaps"),300);
- } else {
- cstore = new CachedIMAPStore((IMAPStore)session.getStore("imap"),300);
- }
- return cstore;
- }
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.server.IMAPStoreCache#delete(org.apache.hupa.shared.data.User)
- */
- public synchronized void delete(User user) {
- delete(user.getName());
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.server.IMAPStoreCache#delete(java.lang.String)
- */
- public synchronized void delete(String username) {
- CachedIMAPStore cstore = pool.get(username);
- if (cstore != null && cstore.getStore().isConnected()) {
- try {
- cstore.getStore().close();
- } catch (MessagingException e) {
- // Ignore on close
- }
- }
- pool.remove(username);
- }
-
- private final class CachedIMAPStore {
- private long validUntil;
- private int validForMillis;
- private IMAPStore store;
-
- public CachedIMAPStore(IMAPStore store, int validForSeconds) {
- this.store = store;
- this.validForMillis = validForSeconds * 1000;
- this.validUntil = System.currentTimeMillis() + validForMillis;
- }
-
- public boolean isExpired() {
- if (validUntil > System.currentTimeMillis() && store.isConnected()) {
- return false;
- }
- return true;
- }
-
- public void validate() throws MessagingException {
- store.idle();
- validUntil = System.currentTimeMillis() + validForMillis;
- }
-
- public IMAPStore getStore() {
- return store;
- }
- }
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.server.IMAPStoreCache#get(org.apache.hupa.shared.data.User)
+ */
+ public IMAPStore get(User user) throws MessagingException {
+ return get(user.getName(),user.getPassword());
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.server.IMAPStoreCache#get(java.lang.String, java.lang.String)
+ */
+ public IMAPStore get(String username, String password) throws MessagingException {
+ CachedIMAPStore cstore = pool.get(username);
+ if (cstore == null) {
+ logger.debug("No cached store found for user " +username);
+ cstore = createCachedIMAPStore();
+ } else {
+ if (cstore.isExpired() == false) {
+ try {
+ cstore.validate();
+ } catch (MessagingException e) {
+ cstore = createCachedIMAPStore();
+ }
+ } else {
+ pool.remove(username);
+ try {
+ if (cstore != null) cstore.getStore().close();
+ } catch (MessagingException e) {
+ // ignore on close
+ }
+ cstore = createCachedIMAPStore();
+ }
+ }
+
+ if (cstore.getStore().isConnected() == false) {
+ try {
+ cstore.getStore().connect(address, port, username, password);
+ } catch (MessagingException e) {
+ throw (e);
+ }
+ }
+ pool.put(username, cstore);
+ return cstore.getStore();
+ }
+
+ private CachedIMAPStore createCachedIMAPStore() throws NoSuchProviderException {
+ CachedIMAPStore cstore;
+ if (DEMO_MODE.equals(this.address)) {
+ cstore = new CachedIMAPStore(new DemoModeIMAPStore(session), 300);
+ } else if (useSSL) {
+ cstore = new CachedIMAPStore((IMAPStore)session.getStore("imaps"),300);
+ } else {
+ cstore = new CachedIMAPStore((IMAPStore)session.getStore("imap"),300);
+ }
+ return cstore;
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.server.IMAPStoreCache#delete(org.apache.hupa.shared.data.User)
+ */
+ public synchronized void delete(User user) {
+ delete(user.getName());
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.server.IMAPStoreCache#delete(java.lang.String)
+ */
+ public synchronized void delete(String username) {
+ CachedIMAPStore cstore = pool.get(username);
+ if (cstore != null && cstore.getStore().isConnected()) {
+ try {
+ cstore.getStore().close();
+ } catch (MessagingException e) {
+ // Ignore on close
+ }
+ }
+ pool.remove(username);
+ }
+
+ private final class CachedIMAPStore {
+ private long validUntil;
+ private int validForMillis;
+ private IMAPStore store;
+
+ public CachedIMAPStore(IMAPStore store, int validForSeconds) {
+ this.store = store;
+ this.validForMillis = validForSeconds * 1000;
+ this.validUntil = System.currentTimeMillis() + validForMillis;
+ }
+
+ public boolean isExpired() {
+ if (validUntil > System.currentTimeMillis() && store.isConnected()) {
+ return false;
+ }
+ return true;
+ }
+
+ public void validate() throws MessagingException {
+ store.idle();
+ validUntil = System.currentTimeMillis() + validForMillis;
+ }
+
+ public IMAPStore getStore() {
+ return store;
+ }
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DefaultUserSettingsProvider.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DefaultUserSettingsProvider.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DefaultUserSettingsProvider.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DefaultUserSettingsProvider.java Fri Oct 23 09:56:45 2009
@@ -26,30 +26,30 @@
import com.google.inject.name.Named;
public class DefaultUserSettingsProvider implements Provider<Settings> {
- private String inboxFolder;
- private String sentFolder;
- private String trashFolder;
- private int postCount;
+ private String inboxFolder;
+ private String sentFolder;
+ private String trashFolder;
+ private int postCount;
- @Inject
- public DefaultUserSettingsProvider(@Named("DefaultInboxFolder") String inboxFolder, @Named("DefaultSentFolder") String sentFolder, @Named("DefaultTrashFolder") String trashFolder, @Named("PostFetchMessageCount") int postCount) {
- this.inboxFolder = inboxFolder;
- this.sentFolder = sentFolder;
- this.trashFolder = trashFolder;
- this.postCount = postCount;
- }
-
- /*
- * (non-Javadoc)
- * @see com.google.inject.Provider#get()
- */
- public Settings get() {
- Settings settings = new Settings();
- settings.setInboxFolderName(inboxFolder);
- settings.setSentFolderName(sentFolder);
- settings.setTrashFolderName(trashFolder);
- settings.setPostFetchMessageCount(postCount);
- return settings;
- }
+ @Inject
+ public DefaultUserSettingsProvider(@Named("DefaultInboxFolder") String inboxFolder, @Named("DefaultSentFolder") String sentFolder, @Named("DefaultTrashFolder") String trashFolder, @Named("PostFetchMessageCount") int postCount) {
+ this.inboxFolder = inboxFolder;
+ this.sentFolder = sentFolder;
+ this.trashFolder = trashFolder;
+ this.postCount = postCount;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.google.inject.Provider#get()
+ */
+ public Settings get() {
+ Settings settings = new Settings();
+ settings.setInboxFolderName(inboxFolder);
+ settings.setSentFolderName(sentFolder);
+ settings.setTrashFolderName(trashFolder);
+ settings.setPostFetchMessageCount(postCount);
+ return settings;
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DispatchServletModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DispatchServletModule.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DispatchServletModule.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/DispatchServletModule.java Fri Oct 23 09:56:45 2009
@@ -30,11 +30,11 @@
public class DispatchServletModule extends ServletModule{
- @Override
- public void configureServlets() {
- serve("/hupa/dispatch").with(DispatchServiceServlet.class );
- serve("/hupa/downloadAttachmentServlet").with(DownloadAttachmentServlet.class);
- serve("/hupa/uploadAttachmentServlet").with(UploadAttachmentServlet.class);
- serve("/hupa/messageSourceServlet").with(MessageSourceServlet.class);
- }
+ @Override
+ public void configureServlets() {
+ serve("/hupa/dispatch").with(DispatchServiceServlet.class );
+ serve("/hupa/downloadAttachmentServlet").with(DownloadAttachmentServlet.class);
+ serve("/hupa/uploadAttachmentServlet").with(UploadAttachmentServlet.class);
+ serve("/hupa/messageSourceServlet").with(MessageSourceServlet.class);
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/LogProvider.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/LogProvider.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/LogProvider.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/LogProvider.java Fri Oct 23 09:56:45 2009
@@ -29,8 +29,8 @@
@Singleton
public class LogProvider implements Provider<Log>{
- public Log get() {
- return new Log4JLogger("HupaLogger");
- }
+ public Log get() {
+ return new Log4JLogger("HupaLogger");
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java Fri Oct 23 09:56:45 2009
@@ -35,22 +35,22 @@
*/
public class MyGuiceServletConfig extends GuiceServletContextListener{
- private ServletContext context;
- @Override
- public void contextDestroyed(ServletContextEvent servletContextEvent) {
- context = null;
- super.contextDestroyed(servletContextEvent);
- }
+ private ServletContext context;
+ @Override
+ public void contextDestroyed(ServletContextEvent servletContextEvent) {
+ context = null;
+ super.contextDestroyed(servletContextEvent);
+ }
- @Override
- public void contextInitialized(ServletContextEvent servletContextEvent) {
- context = servletContextEvent.getServletContext();
- super.contextInitialized(servletContextEvent);
- }
+ @Override
+ public void contextInitialized(ServletContextEvent servletContextEvent) {
+ context = servletContextEvent.getServletContext();
+ super.contextInitialized(servletContextEvent);
+ }
- @Override
- protected Injector getInjector() {
- return Guice.createInjector(new ServerModul(context.getRealPath("/")),new DispatchServletModule());
- }
+ @Override
+ protected Injector getInjector() {
+ return Guice.createInjector(new ServerModul(context.getRealPath("/")),new DispatchServletModule());
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java Fri Oct 23 09:56:45 2009
@@ -67,114 +67,114 @@
*/
public class ServerModul extends ActionHandlerModule {
- public static final String SYS_PROP_CONFIG_FILE = "hupa.config.file";
+ public static final String SYS_PROP_CONFIG_FILE = "hupa.config.file";
- public static final String[] CONFIG_PROPERTIES = {
- System.getenv("HOME") + "/.hupa/config.properties",
- "/etc/default/hupa", "config.properties" };
- public static final String CONF_DIR = "WEB-INF" + File.separator + "conf" + File.separator;
-
- private String configDir;
-
- public ServerModul(String rootPath) {
- configDir = rootPath + File.separator + CONF_DIR;
- }
-
- @Override
- protected void configureHandlers() {
- bindHandler(CheckSessionHandler.class);
- bindHandler(LoginUserHandler.class);
- bindHandler(FetchFoldersHandler.class);
- bindHandler(FetchMessagesHandler.class);
- bindHandler(FetchRecentMessagesHandler.class);
- bindHandler(LogoutUserHandler.class);
- bindHandler(GetMessageDetailsHandler.class);
- bindHandler(DeleteMessageByUidHandler.class);
- bindHandler(DeleteAllMessagesHandler.class);
- bindHandler(SendMessageHandler.class);
- bindHandler(ReplyMessageHandler.class);
- bindHandler(ForwardMessageHandler.class);
- bindHandler(NoopHandler.class);
- bindHandler(MoveMessageHandler.class);
- bindHandler(RenameFolderHandler.class);
- bindHandler(DeleteFolderHandler.class);
- bindHandler(CreateFolderHandler.class);
- bindHandler(TagMessagesHandler.class);
- bindHandler(GetRawMessageHandler.class);
- bindHandler(SetFlagsHandler.class);
- bind(FileItemRegistry.class).in(Singleton.class);
- bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class).in(
- Singleton.class);
- bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
- bind(Settings.class).toProvider(DefaultUserSettingsProvider.class).in(
- Singleton.class);
- bind(DownloadAttachmentServlet.class).in(Singleton.class);
- bind(UploadAttachmentServlet.class).in(Singleton.class);
- bind(MessageSourceServlet.class).in(Singleton.class);
- bind(Session.class).toProvider(SessionProvider.class);
-
- Properties properties;
- try {
- // Bind addresses and ports for imap and smtp
- properties = loadProperties();
- // Configure default parameters for Hupa in demo mode
- if (properties.get("IMAPServerAddress").equals(InMemoryIMAPStoreCache.DEMO_MODE)) {
- properties.put("DefaultInboxFolder", DemoModeIMAPStore.DEMO_MODE_INBOX_FOLDER);
- properties.put("DefaultTrashFolder", DemoModeIMAPStore.DEMO_MODE_TRASH_FOLDER);
- properties.put("DefaultSentFolder", DemoModeIMAPStore.DEMO_MODE_SENT_FOLDER);
- }
- Names.bindProperties(binder(), properties);
- } catch (Exception e) {
- throw new RuntimeException("Unable to to configure hupa server," +
- "\nmake sure that you have a valid /etc/default/hupa file" +
- "\nor the web container has been started with the appropriate parameter:" +
- " -Dhupa.config.file=your_hupa_properties_file", e);
- }
- }
-
- protected Properties loadProperties() throws Exception {
- Properties properties = null;
-
- String fileName = System.getProperty(SYS_PROP_CONFIG_FILE);
- if (fileName != null) {
- properties = loadProperties(fileName);
- }
-
- if (properties == null) {
- for (String name : CONFIG_PROPERTIES) {
-
- properties = loadProperties(name);
- if (properties != null)
- break;
- }
- }
-
- return properties;
- }
-
- protected Properties loadProperties(String name) {
-
- if (name == null)
- return null;
-
- Properties properties = null;
- File file = new File(name);
-
- // check if the file is absolute. If not prefix it with the default config dir
- if (file.isAbsolute() == false) {
- file = new File(configDir + File.separator + file.getName());
- }
- if (file.exists()) {
- try {
- properties = new Properties();
- properties.load(new FileInputStream(file));
- } catch (Exception e) {
- properties = null;
- e.printStackTrace();
- }
- }
+ public static final String[] CONFIG_PROPERTIES = {
+ System.getenv("HOME") + "/.hupa/config.properties",
+ "/etc/default/hupa", "config.properties" };
+ public static final String CONF_DIR = "WEB-INF" + File.separator + "conf" + File.separator;
+
+ private String configDir;
+
+ public ServerModul(String rootPath) {
+ configDir = rootPath + File.separator + CONF_DIR;
+ }
+
+ @Override
+ protected void configureHandlers() {
+ bindHandler(CheckSessionHandler.class);
+ bindHandler(LoginUserHandler.class);
+ bindHandler(FetchFoldersHandler.class);
+ bindHandler(FetchMessagesHandler.class);
+ bindHandler(FetchRecentMessagesHandler.class);
+ bindHandler(LogoutUserHandler.class);
+ bindHandler(GetMessageDetailsHandler.class);
+ bindHandler(DeleteMessageByUidHandler.class);
+ bindHandler(DeleteAllMessagesHandler.class);
+ bindHandler(SendMessageHandler.class);
+ bindHandler(ReplyMessageHandler.class);
+ bindHandler(ForwardMessageHandler.class);
+ bindHandler(NoopHandler.class);
+ bindHandler(MoveMessageHandler.class);
+ bindHandler(RenameFolderHandler.class);
+ bindHandler(DeleteFolderHandler.class);
+ bindHandler(CreateFolderHandler.class);
+ bindHandler(TagMessagesHandler.class);
+ bindHandler(GetRawMessageHandler.class);
+ bindHandler(SetFlagsHandler.class);
+ bind(FileItemRegistry.class).in(Singleton.class);
+ bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class).in(
+ Singleton.class);
+ bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
+ bind(Settings.class).toProvider(DefaultUserSettingsProvider.class).in(
+ Singleton.class);
+ bind(DownloadAttachmentServlet.class).in(Singleton.class);
+ bind(UploadAttachmentServlet.class).in(Singleton.class);
+ bind(MessageSourceServlet.class).in(Singleton.class);
+ bind(Session.class).toProvider(SessionProvider.class);
+
+ Properties properties;
+ try {
+ // Bind addresses and ports for imap and smtp
+ properties = loadProperties();
+ // Configure default parameters for Hupa in demo mode
+ if (properties.get("IMAPServerAddress").equals(InMemoryIMAPStoreCache.DEMO_MODE)) {
+ properties.put("DefaultInboxFolder", DemoModeIMAPStore.DEMO_MODE_INBOX_FOLDER);
+ properties.put("DefaultTrashFolder", DemoModeIMAPStore.DEMO_MODE_TRASH_FOLDER);
+ properties.put("DefaultSentFolder", DemoModeIMAPStore.DEMO_MODE_SENT_FOLDER);
+ }
+ Names.bindProperties(binder(), properties);
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to to configure hupa server," +
+ "\nmake sure that you have a valid /etc/default/hupa file" +
+ "\nor the web container has been started with the appropriate parameter:" +
+ " -Dhupa.config.file=your_hupa_properties_file", e);
+ }
+ }
+
+ protected Properties loadProperties() throws Exception {
+ Properties properties = null;
+
+ String fileName = System.getProperty(SYS_PROP_CONFIG_FILE);
+ if (fileName != null) {
+ properties = loadProperties(fileName);
+ }
+
+ if (properties == null) {
+ for (String name : CONFIG_PROPERTIES) {
+
+ properties = loadProperties(name);
+ if (properties != null)
+ break;
+ }
+ }
+
+ return properties;
+ }
+
+ protected Properties loadProperties(String name) {
+
+ if (name == null)
+ return null;
+
+ Properties properties = null;
+ File file = new File(name);
+
+ // check if the file is absolute. If not prefix it with the default config dir
+ if (file.isAbsolute() == false) {
+ file = new File(configDir + File.separator + file.getName());
+ }
+ if (file.exists()) {
+ try {
+ properties = new Properties();
+ properties.load(new FileInputStream(file));
+ } catch (Exception e) {
+ properties = null;
+ e.printStackTrace();
+ }
+ }
- return properties;
- }
+ return properties;
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/SessionProvider.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/SessionProvider.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/SessionProvider.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/SessionProvider.java Fri Oct 23 09:56:45 2009
@@ -27,8 +27,8 @@
public class SessionProvider implements Provider<Session>{
- public Session get() {
- Session session = Session.getDefaultInstance(new Properties(), null);
- return session;
- }
+ public Session get() {
+ Session session = Session.getDefaultInstance(new Properties(), null);
+ return session;
+ }
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java Fri Oct 23 09:56:45 2009
@@ -43,81 +43,81 @@
* @param <Action>
*/
public abstract class AbstractDeleteMessageHandler<Action extends DeleteMessage>
- extends AbstractSessionHandler<Action, DeleteMessageResult> {
+ extends AbstractSessionHandler<Action, DeleteMessageResult> {
- @Inject
- public AbstractDeleteMessageHandler(IMAPStoreCache cache, Log logger,
- Provider<HttpSession> sessionProvider) {
- super(cache, logger, sessionProvider);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
- */
- public DeleteMessageResult executeInternal(Action action,
- ExecutionContext context) throws ActionException {
- org.apache.hupa.shared.data.IMAPFolder folder = action.getFolder();
- User user = getUser();
- try {
- IMAPStore store = cache.get(user);
- com.sun.mail.imap.IMAPFolder f = (com.sun.mail.imap.IMAPFolder) store
- .getFolder(folder.getFullName());
- // check if the folder is open, if not open it "rw"
- if (f.isOpen() == false) {
- f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
- }
-
- Message[] mArray = getMessagesToDelete(action);
-
- // check if the delete was triggered not in the trash folder
- if (folder.getFullName().equalsIgnoreCase(
- user.getSettings().getTrashFolderName()) == false) {
- com.sun.mail.imap.IMAPFolder trashFolder = (com.sun.mail.imap.IMAPFolder) store
- .getFolder(user.getSettings().getTrashFolderName());
-
- boolean trashFound = false;
- // if the trash folder does not exist we create it
- if (trashFolder.exists() == false) {
- trashFound = trashFolder
- .create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
- } else {
- trashFound = true;
- }
-
- // Check if we are able to copy the messages to the trash folder
- if (trashFound) {
- // copy the messages to the trashfolder
- f.copyMessages(mArray, trashFolder);
- }
- }
-
-
- // delete the messages from the folder
- f.setFlags(mArray, new Flags(Flags.Flag.DELETED), true);
-
- try {
- f.expunge(mArray);
- f.close(false);
- } catch (MessagingException e) {
- // prolly UID expunge is not supported
- f.close(true);
- }
- return new DeleteMessageResult(user, folder, mArray.length);
-
- } catch (MessagingException e) {
- logger.error("Error while deleting messages for user " + user
- + " in folder" + action.getFolder(), e);
- throw new ActionException("Error while deleting messages");
- }
- }
-
- /**
- * Return an array holding all messages which should get deleted by the given action
- *
- * @param action
- * @return messages
- * @throws ActionException
- */
- protected abstract Message[] getMessagesToDelete(Action action) throws ActionException;
+ @Inject
+ public AbstractDeleteMessageHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+ */
+ public DeleteMessageResult executeInternal(Action action,
+ ExecutionContext context) throws ActionException {
+ org.apache.hupa.shared.data.IMAPFolder folder = action.getFolder();
+ User user = getUser();
+ try {
+ IMAPStore store = cache.get(user);
+ com.sun.mail.imap.IMAPFolder f = (com.sun.mail.imap.IMAPFolder) store
+ .getFolder(folder.getFullName());
+ // check if the folder is open, if not open it "rw"
+ if (f.isOpen() == false) {
+ f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
+ }
+
+ Message[] mArray = getMessagesToDelete(action);
+
+ // check if the delete was triggered not in the trash folder
+ if (folder.getFullName().equalsIgnoreCase(
+ user.getSettings().getTrashFolderName()) == false) {
+ com.sun.mail.imap.IMAPFolder trashFolder = (com.sun.mail.imap.IMAPFolder) store
+ .getFolder(user.getSettings().getTrashFolderName());
+
+ boolean trashFound = false;
+ // if the trash folder does not exist we create it
+ if (trashFolder.exists() == false) {
+ trashFound = trashFolder
+ .create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
+ } else {
+ trashFound = true;
+ }
+
+ // Check if we are able to copy the messages to the trash folder
+ if (trashFound) {
+ // copy the messages to the trashfolder
+ f.copyMessages(mArray, trashFolder);
+ }
+ }
+
+
+ // delete the messages from the folder
+ f.setFlags(mArray, new Flags(Flags.Flag.DELETED), true);
+
+ try {
+ f.expunge(mArray);
+ f.close(false);
+ } catch (MessagingException e) {
+ // prolly UID expunge is not supported
+ f.close(true);
+ }
+ return new DeleteMessageResult(user, folder, mArray.length);
+
+ } catch (MessagingException e) {
+ logger.error("Error while deleting messages for user " + user
+ + " in folder" + action.getFolder(), e);
+ throw new ActionException("Error while deleting messages");
+ }
+ }
+
+ /**
+ * Return an array holding all messages which should get deleted by the given action
+ *
+ * @param action
+ * @return messages
+ * @throws ActionException
+ */
+ protected abstract Message[] getMessagesToDelete(Action action) throws ActionException;
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java Fri Oct 23 09:56:45 2009
@@ -50,167 +50,167 @@
public abstract class AbstractFetchMessagesHandler <A extends FetchMessages> extends AbstractSessionHandler<A, FetchMessagesResult>{
- public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger,
- Provider<HttpSession> sessionProvider) {
- super(cache, logger, sessionProvider);
- }
-
- @Override
- protected FetchMessagesResult executeInternal(A action,
- ExecutionContext context) throws ActionException {
- User user = getUser();
- IMAPFolder folder = action.getFolder();
- com.sun.mail.imap.IMAPFolder f = null;
- try {
- IMAPStore store = cache.get(user);
- int start = action.getStart();
- int offset = action.getOffset();
-
- f = (com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
-
- // check if the folder is open, if not open it read only
- if (f.isOpen() == false) {
- f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
- }
-
- int exists = f.getMessageCount();
-
- // if the folder is empty we have no need to process
- if (exists == 0) {
- return new FetchMessagesResult(new ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists,0);
- }
-
- Message[] messages = getMessagesToConvert(f,action);
-
- return new FetchMessagesResult(convert(action, f, messages),start,offset,exists,f.getUnreadMessageCount());
-
- } catch (Exception e) {
- logger.error("Error while fetching headers for user " + user.getName() + " in folder " + folder,e);
- throw new ActionException(
- "Error while fetching headers for user " + user.getName() + " in folder " + folder);
-
- } finally {
- if (f != null && f.isOpen()) {
- try {
- f.close(false);
- } catch (MessagingException e) {
- // we don't care to much about an exception on close here...
- }
- }
- }
- }
-
- protected abstract Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException;
-
- protected ArrayList<org.apache.hupa.shared.data.Message> convert(FetchMessages action, com.sun.mail.imap.IMAPFolder f, Message[] messages) throws MessagingException {
- ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
- // Setup fetchprofile to limit the stuff which is fetched
- FetchProfile fp = new FetchProfile();
+ public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ @Override
+ protected FetchMessagesResult executeInternal(A action,
+ ExecutionContext context) throws ActionException {
+ User user = getUser();
+ IMAPFolder folder = action.getFolder();
+ com.sun.mail.imap.IMAPFolder f = null;
+ try {
+ IMAPStore store = cache.get(user);
+ int start = action.getStart();
+ int offset = action.getOffset();
+
+ f = (com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
+
+ // check if the folder is open, if not open it read only
+ if (f.isOpen() == false) {
+ f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
+ }
+
+ int exists = f.getMessageCount();
+
+ // if the folder is empty we have no need to process
+ if (exists == 0) {
+ return new FetchMessagesResult(new ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists,0);
+ }
+
+ Message[] messages = getMessagesToConvert(f,action);
+
+ return new FetchMessagesResult(convert(action, f, messages),start,offset,exists,f.getUnreadMessageCount());
+
+ } catch (Exception e) {
+ logger.error("Error while fetching headers for user " + user.getName() + " in folder " + folder,e);
+ throw new ActionException(
+ "Error while fetching headers for user " + user.getName() + " in folder " + folder);
+
+ } finally {
+ if (f != null && f.isOpen()) {
+ try {
+ f.close(false);
+ } catch (MessagingException e) {
+ // we don't care to much about an exception on close here...
+ }
+ }
+ }
+ }
+
+ protected abstract Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException;
+
+ protected ArrayList<org.apache.hupa.shared.data.Message> convert(FetchMessages action, com.sun.mail.imap.IMAPFolder f, Message[] messages) throws MessagingException {
+ ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
+ // Setup fetchprofile to limit the stuff which is fetched
+ FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add(FetchProfile.Item.CONTENT_INFO);
f.fetch(messages, fp);
// loop over the fetched messages
- for (int i = 0; i < messages.length; i++) {
- org.apache.hupa.shared.data.Message msg = new org.apache.hupa.shared.data.Message();
- Message m = messages[i];
- String from = null;
- if (m.getFrom() != null && m.getFrom().length >0 ) {
- from = m.getFrom()[0].toString().trim();
- try {
- from = MimeUtility.decodeText(from);
- } catch (UnsupportedEncodingException e) {
- logger.debug("Unable to decode from " + from, e);
- }
- }
- msg.setFrom(from);
-
- ArrayList<String> to = new ArrayList<String>();
- // Add to addresses
- Address[] toArray = m.getRecipients(RecipientType.TO);
- if (toArray != null) {
- for (int b =0; b < toArray.length;b++) {
- to.add(toArray[b].toString());
- }
- }
- msg.setTo(to);
-
- // Check if a subject exist and if so decode it
- String subject = m.getSubject();
- if (subject != null) {
- try {
- subject = MimeUtility.decodeText(subject);
- } catch (UnsupportedEncodingException e) {
- logger.debug("Unable to decode subject " + subject, e);
- }
- }
- msg.setSubject(subject);
-
- // Add cc addresses
- Address[] ccArray = m.getRecipients(RecipientType.CC);
- ArrayList<String> cc = new ArrayList<String>();
-
- if (ccArray != null) {
- for (int b =0; b < ccArray.length;b++) {
- cc.add(ccArray[b].toString());
- }
- }
- msg.setCc(cc);
-
- msg.setReceivedDate(m.getReceivedDate());
-
- // Add flags
- ArrayList<IMAPFlag> iFlags = JavamailUtil.convert(m.getFlags());
-
-
- ArrayList<Tag> tags = new ArrayList<Tag>();
- String[] userFlags = m.getFlags().getUserFlags();
- for (int a = 0; a < userFlags.length;a++) {
- String flag = userFlags[a];
- if (flag.startsWith(Tag.PREFIX)) {
- tags.add(new Tag(flag.substring(Tag.PREFIX.length())));
- }
- }
-
- msg.setUid(f.getUID(m));
- msg.setFlags(iFlags);
- msg.setTags(tags);
- msg.setHasAttachments(hasAttachment(m));
-
- mList.add(0, msg);
- if (i > action.getOffset()) {
- break;
- }
- }
- return mList;
- }
-
- private boolean hasAttachment(Message message) throws MessagingException {
- if (message.getContentType().startsWith("multipart/")) {
- try {
- Object content;
-
- content = message.getContent();
-
- if (content instanceof Multipart) {
- Multipart mp = (Multipart) content;
- if (mp.getCount() > 1) {
- for (int i = 0; i < mp.getCount(); i++) {
- String disp = mp.getBodyPart(i).getDisposition();
- if (disp != null
- && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
- return true;
- }
- }
- }
-
- }
- } catch (IOException e) {
- logger.error("Error while get content of message " + message.getMessageNumber());
- }
-
- }
- return false;
- }
+ for (int i = 0; i < messages.length; i++) {
+ org.apache.hupa.shared.data.Message msg = new org.apache.hupa.shared.data.Message();
+ Message m = messages[i];
+ String from = null;
+ if (m.getFrom() != null && m.getFrom().length >0 ) {
+ from = m.getFrom()[0].toString().trim();
+ try {
+ from = MimeUtility.decodeText(from);
+ } catch (UnsupportedEncodingException e) {
+ logger.debug("Unable to decode from " + from, e);
+ }
+ }
+ msg.setFrom(from);
+
+ ArrayList<String> to = new ArrayList<String>();
+ // Add to addresses
+ Address[] toArray = m.getRecipients(RecipientType.TO);
+ if (toArray != null) {
+ for (int b =0; b < toArray.length;b++) {
+ to.add(toArray[b].toString());
+ }
+ }
+ msg.setTo(to);
+
+ // Check if a subject exist and if so decode it
+ String subject = m.getSubject();
+ if (subject != null) {
+ try {
+ subject = MimeUtility.decodeText(subject);
+ } catch (UnsupportedEncodingException e) {
+ logger.debug("Unable to decode subject " + subject, e);
+ }
+ }
+ msg.setSubject(subject);
+
+ // Add cc addresses
+ Address[] ccArray = m.getRecipients(RecipientType.CC);
+ ArrayList<String> cc = new ArrayList<String>();
+
+ if (ccArray != null) {
+ for (int b =0; b < ccArray.length;b++) {
+ cc.add(ccArray[b].toString());
+ }
+ }
+ msg.setCc(cc);
+
+ msg.setReceivedDate(m.getReceivedDate());
+
+ // Add flags
+ ArrayList<IMAPFlag> iFlags = JavamailUtil.convert(m.getFlags());
+
+
+ ArrayList<Tag> tags = new ArrayList<Tag>();
+ String[] userFlags = m.getFlags().getUserFlags();
+ for (int a = 0; a < userFlags.length;a++) {
+ String flag = userFlags[a];
+ if (flag.startsWith(Tag.PREFIX)) {
+ tags.add(new Tag(flag.substring(Tag.PREFIX.length())));
+ }
+ }
+
+ msg.setUid(f.getUID(m));
+ msg.setFlags(iFlags);
+ msg.setTags(tags);
+ msg.setHasAttachments(hasAttachment(m));
+
+ mList.add(0, msg);
+ if (i > action.getOffset()) {
+ break;
+ }
+ }
+ return mList;
+ }
+
+ private boolean hasAttachment(Message message) throws MessagingException {
+ if (message.getContentType().startsWith("multipart/")) {
+ try {
+ Object content;
+
+ content = message.getContent();
+
+ if (content instanceof Multipart) {
+ Multipart mp = (Multipart) content;
+ if (mp.getCount() > 1) {
+ for (int i = 0; i < mp.getCount(); i++) {
+ String disp = mp.getBodyPart(i).getDisposition();
+ if (disp != null
+ && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
+ return true;
+ }
+ }
+ }
+
+ }
+ } catch (IOException e) {
+ logger.error("Error while get content of message " + message.getMessageNumber());
+ }
+
+ }
+ return false;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org