Author: snoopdave
Date: Thu Jan 19 08:02:06 2006
New Revision: 370513

URL: http://svn.apache.org/viewcvs?rev=370513&view=rev
Log:
Fixes ROL-1002 better error reporting in send trackback

Modified:
    
incubator/roller/trunk/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java

Modified: 
incubator/roller/trunk/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java?rev=370513&r1=370512&r2=370513&view=diff
==============================================================================
--- 
incubator/roller/trunk/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java
 (original)
+++ 
incubator/roller/trunk/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java
 Thu Jan 19 08:02:06 2006
@@ -73,189 +73,161 @@
  *
  * @struts.action name="weblogEntryFormEx" path="/editor/weblog"
  *     scope="request" parameter="method"
- *  
+ *
  * @struts.action-forward name="weblogEdit.page" path=".WeblogEdit"
  * @struts.action-forward name="weblogEntryRemove.page" 
path=".WeblogEntryRemove"
  */
-public final class WeblogEntryFormAction extends DispatchAction
-{
+public final class WeblogEntryFormAction extends DispatchAction {
     private static Log mLogger =
-        LogFactory.getFactory().getInstance(WeblogEntryFormAction.class);
+            LogFactory.getFactory().getInstance(WeblogEntryFormAction.class);
     
     //-----------------------------------------------------------------------
     /**
      * Allow user to create a new weblog entry.
      */
     public ActionForward create(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         ActionForward forward = mapping.findForward("weblogEdit.page");
-        try
-        {
+        try {
             RollerSession rses = RollerSession.getRollerSession(request);
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
-            if (rreq.getWebsite() != null 
-                    && rses.isUserAuthorized(rreq.getWebsite()))
-            {
-                WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm; 
+            if (rreq.getWebsite() != null
+                    && rses.isUserAuthorized(rreq.getWebsite())) {
+                WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
                 form.initNew(request, response);
                 form.setCreatorId(rses.getAuthenticatedUser().getId());
-                form.setWebsiteId(rreq.getWebsite().getId()); 
+                form.setWebsiteId(rreq.getWebsite().getId());
                 
form.setAllowComments(rreq.getWebsite().getDefaultAllowComments());
                 form.setCommentDays(new 
Integer(rreq.getWebsite().getDefaultCommentDays()));
                 
                 request.setAttribute("model",
                         new WeblogEntryPageModel(request, response, mapping,
-                                (WeblogEntryFormEx)actionForm,
-                                WeblogEntryPageModel.EDIT_MODE));
-            }
-            else
-            {
+                        (WeblogEntryFormEx)actionForm,
+                        WeblogEntryPageModel.EDIT_MODE));
+            } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             request.getSession().getServletContext().log("ERROR",e);
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     //-----------------------------------------------------------------------
     /**
      * Allow user to edit a weblog entry.
      */
     public ActionForward edit(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         ActionForward forward = mapping.findForward("weblogEdit.page");
-        try
-        {
+        try {
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
             RollerSession rses = RollerSession.getRollerSession(request);
             WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
-            WeblogEntryData entry = rreq.getWeblogEntry();           
+            WeblogEntryData entry = rreq.getWeblogEntry();
             WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
-            if (entry == null && form.getId() != null)
-            {
+            if (entry == null && form.getId() != null) {
                 entry = wmgr.retrieveWeblogEntry(form.getId());
             }
-            if (entry == null)
-            {   
+            if (entry == null) {
                 ResourceBundle resources = ResourceBundle.getBundle(
-                    "ApplicationResources", request.getLocale());
-                request.setAttribute("javax.servlet.error.message", 
-                    resources.getString("weblogEntry.notFound"));  
+                        "ApplicationResources", request.getLocale());
+                request.setAttribute("javax.servlet.error.message",
+                        resources.getString("weblogEntry.notFound"));
                 forward = mapping.findForward("error");
-            }                
-            else if (rses.isUserAuthorizedToAuthor(entry.getWebsite()) 
-              || (rses.isUserAuthorized(entry.getWebsite()) && 
!entry.isPublished()))
-            {
+            } else if (rses.isUserAuthorizedToAuthor(entry.getWebsite())
+            || (rses.isUserAuthorized(entry.getWebsite()) && 
!entry.isPublished())) {
                 form.copyFrom(entry, request.getLocale());
                 WeblogEntryPageModel pageModel = new WeblogEntryPageModel(
-                    request, response, mapping, form, 
+                        request, response, mapping, form,
                         WeblogEntryPageModel.EDIT_MODE);
                 pageModel.setWebsite(entry.getWebsite());
                 request.setAttribute("model", pageModel);
-            }
-            else
-            {
+            } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             request.getSession().getServletContext().log("ERROR",e);
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     //-----------------------------------------------------------------------
     public ActionForward preview(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {   
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         // we need to save any new entries before Previewing
         WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
-        if (form.getId() == null) 
-        {
+        if (form.getId() == null) {
             save(mapping, actionForm, request, response);
         }
-        return display(WeblogEntryPageModel.PREVIEW_MODE, 
-                    mapping, actionForm, request, response);
+        return display(WeblogEntryPageModel.PREVIEW_MODE,
+                mapping, actionForm, request, response);
     }
-
+    
     //-----------------------------------------------------------------------
     public ActionForward returnToEditMode(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
-        return display(WeblogEntryPageModel.EDIT_MODE, 
-                    mapping, actionForm, request, response);
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
+        return display(WeblogEntryPageModel.EDIT_MODE,
+                mapping, actionForm, request, response);
     }
-
+    
     //-----------------------------------------------------------------------
     private ActionForward display(
-        WeblogEntryPageModel.PageMode mode,
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            WeblogEntryPageModel.PageMode mode,
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         ActionForward forward = mapping.findForward("weblogEdit.page");
-        try
-        {
+        try {
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
-            RollerSession rollerSession = 
-              RollerSession.getRollerSession(request);
+            RollerSession rollerSession =
+                    RollerSession.getRollerSession(request);
             WeblogEntryPageModel pageModel = new WeblogEntryPageModel(
-              request, response, mapping, (WeblogEntryFormEx)actionForm, mode);
+                    request, response, mapping, (WeblogEntryFormEx)actionForm, 
mode);
             if (rollerSession.isUserAuthorizedToAuthor(
-                    pageModel.getWeblogEntry().getWebsite()))
-            {
-                request.setAttribute("model", pageModel);                   
-            }
-            else
-            {
+                    pageModel.getWeblogEntry().getWebsite())) {
+                request.setAttribute("model", pageModel);
+            } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             request.getSession().getServletContext().log("ERROR",e);
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     //-----------------------------------------------------------------------
     /**
-     * Saves weblog entry and flushes page cache so that new entry will appear 
+     * Saves weblog entry and flushes page cache so that new entry will appear
      * on users weblog page.
      */
     public ActionForward save(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         
         ActionForward forward = mapping.findForward("weblogEdit.page");
         ActionMessages uiMessages = new ActionMessages();
@@ -269,22 +241,22 @@
             WebsiteData       site = 
userMgr.retrieveWebsite(form.getWebsiteId());
             WeblogEntryData  entry = null;
             
-            if ( rses.isUserAuthorizedToAuthor(site) 
-                 || (rses.isUserAuthorized(site) 
-                    && !form.getStatus().equals(WeblogEntryData.PUBLISHED) )) 
{ 
+            if ( rses.isUserAuthorizedToAuthor(site)
+            || (rses.isUserAuthorized(site)
+            && !form.getStatus().equals(WeblogEntryData.PUBLISHED) )) {
                 
                 ActionErrors errors = validateEntry(null, form);
                 if (errors.size() > 0) {
                     saveErrors(request, errors);
                     request.setAttribute("model",
-                        new WeblogEntryPageModel(request, response, mapping,
-                                (WeblogEntryFormEx)actionForm,
-                                WeblogEntryPageModel.EDIT_MODE));
-                    return forward;                    
+                            new WeblogEntryPageModel(request, response, 
mapping,
+                            (WeblogEntryFormEx)actionForm,
+                            WeblogEntryPageModel.EDIT_MODE));
+                    return forward;
                 }
                 
                 if (form.getId() == null || form.getId().trim().length()==0) {
-                    entry = new WeblogEntryData();  
+                    entry = new WeblogEntryData();
                     entry.setCreator(ud);
                     entry.setWebsite( site );
                 } else {
@@ -311,27 +283,27 @@
                 
                 mLogger.debug("copying submitted form data to entry object");
                 form.copyTo(entry, 
request.getLocale(),request.getParameterMap());
-
+                
                 // Fetch MediaCast content type and length
                 mLogger.debug("Checking MediaCast attributes");
                 if (!checkMediaCast(entry, uiMessages)) {
-                   mLogger.debug("Invalid MediaCast attributes");
+                    mLogger.debug("Invalid MediaCast attributes");
                 } else {
-                   mLogger.debug("Validated MediaCast attributes");
+                    mLogger.debug("Validated MediaCast attributes");
                 }
-
+                
                 // Store value object (creates new or updates existing)
                 entry.setUpdateTime(new Timestamp(new Date().getTime()));
                 mLogger.debug("Saving entry");
                 entry.save();
                 RollerFactory.getRoller().commit();
-
+                
                 mLogger.debug("Populating form");
                 form.copyFrom(entry, request.getLocale());
-                               
+                
                 request.setAttribute(
                         RollerRequest.WEBLOGENTRYID_KEY, entry.getId());
-                 
+                
                 // Reindex entry, flush caches, etc.
                 reindexEntry(RollerFactory.getRoller(), entry);
                 mLogger.debug("Removing from cache");
@@ -347,43 +319,41 @@
                 // Load up request with data for view
                 request.setAttribute("model",
                         new WeblogEntryPageModel(request, response, mapping,
-                                (WeblogEntryFormEx)actionForm,
-                                WeblogEntryPageModel.EDIT_MODE));
+                        (WeblogEntryFormEx)actionForm,
+                        WeblogEntryPageModel.EDIT_MODE));
                 
-                if (!rses.isUserAuthorizedToAuthor(site) && 
+                if (!rses.isUserAuthorizedToAuthor(site) &&
                         rses.isUserAuthorized(site) && entry.isPending()) {
                     // implies that entry just changed to pending
                     notifyWebsiteAuthorsOfPendingEntry(request, entry);
                     uiMessages.add(null,
-                        new ActionMessage("weblogEdit.submittedForReview"));
+                            new 
ActionMessage("weblogEdit.submittedForReview"));
                     
                     // so clear entry from editor
                     actionForm = new WeblogEntryFormEx();
                     request.setAttribute(mapping.getName(), actionForm);
                     forward = create(mapping, actionForm, request, response);
                 } else {
-                    uiMessages.add(null, 
-                        new ActionMessage("weblogEdit.changesSaved"));
+                    uiMessages.add(null,
+                            new ActionMessage("weblogEdit.changesSaved"));
                 }
-                saveMessages(request, uiMessages);               
+                saveMessages(request, uiMessages);
                 mLogger.debug("operation complete");
                 
             } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (RollerPermissionsException e) {
+        } catch (RollerPermissionsException e) {
             ActionErrors errors = new ActionErrors();
             errors.add(null, new ActionError("error.permissions.deniedSave"));
             saveErrors(request, errors);
             forward = mapping.findForward("access-denied");
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     /**
      * Inform authors and admins of entry's website that entry is pending.
      * @param entry
@@ -391,18 +361,15 @@
      * @throws MalformedURLException
      */
     private void notifyWebsiteAuthorsOfPendingEntry(
-            HttpServletRequest request, WeblogEntryData entry) 
-    {
-        try
-        {
+            HttpServletRequest request, WeblogEntryData entry) {
+        try {
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
             javax.naming.Context ctx = (javax.naming.Context)
-                new InitialContext().lookup("java:comp/env");
-            Session mailSession = 
-                (Session)ctx.lookup("mail/Session");
-            if (mailSession != null)
-            {
+            new InitialContext().lookup("java:comp/env");
+            Session mailSession =
+                    (Session)ctx.lookup("mail/Session");
+            if (mailSession != null) {
                 String userName = entry.getCreator().getUserName();
                 String from = entry.getCreator().getEmailAddress();
                 String cc[] = new String[] {from};
@@ -413,18 +380,16 @@
                 
                 // list of enabled website authors and admins
                 ArrayList reviewers = new ArrayList();
-                List websiteUsers = 
+                List websiteUsers =
                         umgr.getUsers(entry.getWebsite(), Boolean.TRUE);
                 
                 // build list of reviewers (website users with author 
permission)
                 Iterator websiteUserIter = websiteUsers.iterator();
-                while (websiteUserIter.hasNext())
-                {
+                while (websiteUserIter.hasNext()) {
                     UserData websiteUser = (UserData)websiteUserIter.next();
                     if (entry.getWebsite().hasUserPermissions(
                             websiteUser, PermissionsData.AUTHOR)
-                         && websiteUser.getEmailAddress() != null) 
-                    {
+                            && websiteUser.getEmailAddress() != null) {
                         reviewers.add(websiteUser.getEmailAddress());
                     }
                 }
@@ -433,125 +398,99 @@
                 // Figure URL to entry edit page
                 RollerContext rc = RollerContext.getRollerContext();
                 String rootURL = rc.getAbsoluteContextUrl(request);
-                if (rootURL == null || rootURL.trim().length()==0)
-                {
-                    rootURL = RequestUtils.serverURL(request) 
-                                  + request.getContextPath();
-                }               
-                String editURL = rootURL 
-                    + "/editor/weblog.do?method=edit&entryid=" + entry.getId();
+                if (rootURL == null || rootURL.trim().length()==0) {
+                    rootURL = RequestUtils.serverURL(request)
+                    + request.getContextPath();
+                }
+                String editURL = rootURL
+                        + "/editor/weblog.do?method=edit&entryid=" + 
entry.getId();
                 
                 ResourceBundle resources = ResourceBundle.getBundle(
-                    "ApplicationResources", request.getLocale());
+                        "ApplicationResources", request.getLocale());
                 StringBuffer sb = new StringBuffer();
                 sb.append(
-                    MessageFormat.format(
+                        MessageFormat.format(
                         resources.getString("weblogEntry.pendingEntrySubject"),
                         new Object[] {
-                            entry.getWebsite().getName(), 
-                            entry.getWebsite().getHandle()
+                    entry.getWebsite().getName(),
+                    entry.getWebsite().getHandle()
                 }));
                 subject = sb.toString();
                 sb = new StringBuffer();
                 sb.append(
-                    MessageFormat.format(
+                        MessageFormat.format(
                         resources.getString("weblogEntry.pendingEntryContent"),
                         new Object[] { userName, userName, editURL })
-                );
+                        );
                 content = sb.toString();
                 MailUtil.sendTextMessage(
                         mailSession, from, to, cc, bcc, subject, content);
             }
-        }
-        catch (NamingException e)
-        {
+        } catch (NamingException e) {
             mLogger.error("ERROR: Notification email(s) not sent, "
                     + "Roller's mail session not properly configured");
-        }
-        catch (MessagingException e)
-        {
+        } catch (MessagingException e) {
             mLogger.error("ERROR: Notification email(s) not sent, "
                     + "due to Roller configuration or mail server problem.");
-        }
-        catch (MalformedURLException e)
-        {
+        } catch (MalformedURLException e) {
             mLogger.error("ERROR: Notification email(s) not sent, "
                     + "Roller site URL is malformed?");
-        }
-        catch (RollerException e)
-        {
+        } catch (RollerException e) {
             throw new RuntimeException(
                     "FATAL ERROR: unable to find Roller object");
         }
     }
-
-    private boolean checkMediaCast(WeblogEntryData entry, ActionMessages 
uiMessages)
-    {
+    
+    private boolean checkMediaCast(WeblogEntryData entry, ActionMessages 
uiMessages) {
         boolean valid = false;
         String url = entry.findEntryAttribute("att_mediacast_url");
         boolean empty = (url == null) || (url.trim().length() == 0);
-        if (!empty)
-        {
+        if (!empty) {
             // fetch MediaCast content type and length
             valid = false;
-            try
-            {
+            try {
                 mLogger.debug("Sending HTTP HEAD");
                 HttpURLConnection con = (HttpURLConnection)
-                    new URL(url).openConnection();
+                new URL(url).openConnection();
                 mLogger.debug("Getting response code");
                 con.setRequestMethod("HEAD");
-                if (con.getResponseCode() != 200) 
-                {
+                if (con.getResponseCode() != 200) {
                     mLogger.debug("Response code indicates error");
                     mLogger.error("ERROR " + con.getResponseCode() + " return 
from MediaCast URL");
                     uiMessages.add(null,new 
ActionMessage("weblogEdit.mediaCastResponseError"));
-                }
-                else if (con.getContentType()==null || 
con.getContentLength()==-1)
-                {
+                } else if (con.getContentType()==null || 
con.getContentLength()==-1) {
                     mLogger.debug("Content type + (" + con.getContentType()  + 
" is null or content length (" +
                             con.getContentLength() + ") is -1 
(indeterminate).");
                     uiMessages.add(null,new 
ActionMessage("weblogEdit.mediaCastLacksContentTypeOrLength"));
-                }
-                else
-                {
+                } else {
                     if (mLogger.isDebugEnabled()) {
                         mLogger.debug("Got good response: Content type " +
                                 con.getContentType() + " [length = " + 
con.getContentLength() + "]" );
                     }
                     entry.putEntryAttribute(
-                        "att_mediacast_type", con.getContentType());
+                            "att_mediacast_type", con.getContentType());
                     entry.putEntryAttribute(
-                        "att_mediacast_length", ""+con.getContentLength());
+                            "att_mediacast_length", ""+con.getContentLength());
                     valid = true;
                 }
-            }
-            catch (MalformedURLException mfue) {
+            } catch (MalformedURLException mfue) {
                 mLogger.debug("Malformed MediaCast url: " + url);
                 uiMessages.add(null, new 
ActionMessage("weblogEdit.mediaCastUrlMalformed"));
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 mLogger.error("ERROR while checking MediaCast URL: " + url + 
": " + e.getMessage());
                 uiMessages.add(null, new 
ActionMessage("weblogEdit.mediaCastFailedFetchingInfo"));
             }
-        }
-        else 
-        {
+        } else {
             mLogger.debug("No MediaCast specified, but that is OK");
             valid = true;
         }
-        if (!valid || empty)
-        {
+        if (!valid || empty) {
             mLogger.debug("Removing MediaCast attributes");
-            try 
-            {
+            try {
                 entry.removeEntryAttribute("att_mediacast_url");
                 entry.removeEntryAttribute("att_mediacast_type");
                 entry.removeEntryAttribute("att_mediacast_length");
-            }
-            catch (RollerException e) 
-            {
+            } catch (RollerException e) {
                 mLogger.error("ERROR removing invalid MediaCast attributes");
             }
         }
@@ -559,105 +498,90 @@
         return valid;
     }
     
-
+    
     //-----------------------------------------------------------------------
     /**
      * Responds to request to remove weblog entry. Forwards user to page
      * that presents the 'are you sure?' question.
      */
     public ActionForward removeOk(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         ActionForward forward = mapping.findForward("weblogEntryRemove.page");
-        try
-        {
+        try {
             Roller roller = RollerFactory.getRoller();
             WeblogEntryFormEx wf = (WeblogEntryFormEx)actionForm;
-            WeblogEntryData wd = 
-                roller.getWeblogManager().retrieveWeblogEntry(wf.getId());
-            RollerSession rses = 
-                RollerSession.getRollerSession(request);
-            if (     rses.isUserAuthorizedToAuthor(wd.getWebsite()) 
-                 || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) )
-            {
+            WeblogEntryData wd =
+                    roller.getWeblogManager().retrieveWeblogEntry(wf.getId());
+            RollerSession rses =
+                    RollerSession.getRollerSession(request);
+            if (     rses.isUserAuthorizedToAuthor(wd.getWebsite())
+            || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) ) {
                 wf.copyFrom(wd, request.getLocale());
-                if (wd == null || wd.getId() == null)
-                {
+                if (wd == null || wd.getId() == null) {
                     ResourceBundle resources = ResourceBundle.getBundle(
-                        "ApplicationResources", request.getLocale());
-                    request.setAttribute("javax.servlet.error.message", 
-                        resources.getString("weblogEntry.notFound"));  
+                            "ApplicationResources", request.getLocale());
+                    request.setAttribute("javax.servlet.error.message",
+                            resources.getString("weblogEntry.notFound"));
                     forward = mapping.findForward("error");
                 }
-            }
-            else
-            {
+            } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     //-----------------------------------------------------------------------
     /**
      * Responds to request from the 'are you sure you want to remove?' page.
      * Removes the specified weblog entry and flushes the cache.
      */
     public ActionForward remove(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
-        try
-        {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
+        try {
             WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
-            WeblogEntryData wd = 
-                mgr.retrieveWeblogEntry(request.getParameter("id"));
-            RollerSession rses = 
-                RollerSession.getRollerSession(request);
-            if (     rses.isUserAuthorizedToAuthor(wd.getWebsite()) 
-                 || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) )
-            {
+            WeblogEntryData wd =
+                    mgr.retrieveWeblogEntry(request.getParameter("id"));
+            RollerSession rses =
+                    RollerSession.getRollerSession(request);
+            if (     rses.isUserAuthorizedToAuthor(wd.getWebsite())
+            || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) ) {
                 // Flush the page cache
                 //PageCacheFilter.removeFromCache(request, wd.getWebsite());
                 //CacheManager.invalidate(wd);
                 
-                               // remove the index for it
+                // remove the index for it
                 wd.setStatus(WeblogEntryData.DRAFT);
-                       reindexEntry(RollerFactory.getRoller(), wd);
-
+                reindexEntry(RollerFactory.getRoller(), wd);
+                
                 // remove entry itself
                 wd.remove();
                 RollerFactory.getRoller().commit();
-
-                               // flush caches
+                
+                // flush caches
                 //PageCacheFilter.removeFromCache(request, wd.getWebsite());
                 CacheManager.invalidate(wd);
                 
                 ActionMessages uiMessages = new ActionMessages();
-                uiMessages.add(null, 
-                    new ActionMessage("weblogEdit.entryRemoved"));
+                uiMessages.add(null,
+                        new ActionMessage("weblogEdit.entryRemoved"));
                 saveMessages(request, uiMessages);
                 
                 RollerRequest.getRollerRequest().setWebsite(wd.getWebsite());
-            }
-            else
-            {
+            } else {
                 return mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServletException(e);
         }
         
@@ -666,35 +590,31 @@
         request.setAttribute(mapping.getName(), actionForm);
         return create(mapping, actionForm, request, response);
     }
-
+    
     //-----------------------------------------------------------------------
     public ActionForward correctSpelling(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
-        try
-        {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
+        try {
             WeblogEntryFormEx wf = (WeblogEntryFormEx)actionForm;
             UserManager umgr = RollerFactory.getRoller().getUserManager();
             WebsiteData site = umgr.retrieveWebsite(wf.getWebsiteId());
-            RollerSession rses = 
-                RollerSession.getRollerSession(request);
-            if (rses.isUserAuthorizedToAuthor(site))
-            {
+            RollerSession rses =
+                    RollerSession.getRollerSession(request);
+            if (rses.isUserAuthorizedToAuthor(site)) {
                 HttpSession session = request.getSession(true);
                 // misspelt words have been submitted
                 if (wf.getReplacementWords() != null &&
-                    wf.getReplacementWords().length > 0)
-                {
+                        wf.getReplacementWords().length > 0) {
                     // replace misspelt words with chosen replacement
                     String[] replacementWords = wf.getReplacementWords();
                     StringBuffer entryText = new StringBuffer(wf.getText());
-
+                    
                     ArrayList events =
-                        (ArrayList) session.getAttribute("spellCheckEvents");
+                            (ArrayList) 
session.getAttribute("spellCheckEvents");
                     SpellCheckEvent event = null;
                     String oldWord = null;
                     String newWord = null;
@@ -702,275 +622,255 @@
                     int end = -1;
                     int count = replacementWords.length;
                     for(ListIterator it=events.listIterator(events.size());
-                        it.hasPrevious();)
-                    {
+                    it.hasPrevious();) {
                         event = (SpellCheckEvent)it.previous();
                         oldWord = event.getInvalidWord();
                         newWord = replacementWords[ --count ];
-                        if (!oldWord.equals(newWord))
-                        {
+                        if (!oldWord.equals(newWord)) {
                             start = event.getWordContextPosition();
                             end = start + oldWord.length();
                             entryText.replace( start, end, newWord );
                         }
                     }
                     wf.setText( entryText.toString() );
-
+                    
                     return save(mapping, wf, request, response);
-                }
-                else 
-                {
-                    return display(WeblogEntryPageModel.EDIT_MODE, 
-                                mapping, actionForm, request, response);
+                } else {
+                    return display(WeblogEntryPageModel.EDIT_MODE,
+                            mapping, actionForm, request, response);
                 }
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServletException(e);
         }
         return mapping.findForward("access-denied");
-    }    
+    }
     
     //-----------------------------------------------------------------------
     public ActionForward spellCheck(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         ActionForward forward = mapping.findForward("weblogEdit.page");
-        try
-        {
+        try {
             WeblogEntryFormEx wf = (WeblogEntryFormEx)actionForm;
             UserManager umgr = RollerFactory.getRoller().getUserManager();
             WebsiteData site = umgr.retrieveWebsite(wf.getWebsiteId());
-            RollerSession rses = 
-                RollerSession.getRollerSession(request);
-            if ( rses.isUserAuthorizedToAuthor(site) )
-            {
+            RollerSession rses =
+                    RollerSession.getRollerSession(request);
+            if ( rses.isUserAuthorizedToAuthor(site) ) {
                 HttpSession session = request.getSession(true);
                 
                 // we need to save any new entries before SpellChecking
-                if (wf.getId() == null) 
-                {
+                if (wf.getId() == null) {
                     save(mapping, actionForm, request, response);
                 }
-
+                
                 // pass the submitted entry text through the spellchecker
                 ArrayList words =
-                    RollerSpellCheck.getSpellingErrors( wf.getText() );
+                        RollerSpellCheck.getSpellingErrors( wf.getText() );
                 session.setAttribute("spellCheckEvents", words);
-
-                request.setAttribute("model", 
-                    new WeblogEntryPageModel(
-                       request, response, mapping, 
-                       (WeblogEntryFormEx)actionForm,
-                       WeblogEntryPageModel.SPELL_MODE, words));
-            }
-            else
-            {
+                
+                request.setAttribute("model",
+                        new WeblogEntryPageModel(
+                        request, response, mapping,
+                        (WeblogEntryFormEx)actionForm,
+                        WeblogEntryPageModel.SPELL_MODE, words));
+            } else {
                 forward = mapping.findForward("access-denied");
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServletException(e);
         }
         return forward;
     }
-
+    
     /**
-    *
-    */
-   public ActionForward sendTrackback(
-                   ActionMapping mapping, 
-                   ActionForm actionForm,
-                   HttpServletRequest request, 
-                   HttpServletResponse response) throws RollerException
-   {
-       ActionForward forward = mapping.findForward("weblogEdit.page");
-       ActionErrors errors = new ActionErrors();
-       WeblogEntryData entry = null;
-       try
-       {
-           WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
-           String entryid = form.getId();
-           if ( entryid == null )
-           {
-               entryid = 
-                   request.getParameter(RollerRequest.WEBLOGENTRYID_KEY);
-           }
-           Roller roller = RollerFactory.getRoller();
-           RollerContext rctx= RollerContext.getRollerContext();
-           WeblogManager wmgr= roller.getWeblogManager();
-           entry = wmgr.retrieveWeblogEntry(entryid);
-
-           RollerSession rses = RollerSession.getRollerSession(request);
-           if (rses.isUserAuthorizedToAuthor(entry.getWebsite()))
-           {
-               // Run entry through registered PagePlugins
-               PagePluginManager ppmgr = roller.getPagePluginManager();
-               Map plugins = ppmgr.createAndInitPagePlugins( 
-                   entry.getWebsite(),
-                   RollerContext.getRollerContext().getServletContext(),
-                   RollerContext.getRollerContext().getAbsoluteContextUrl(),
-                   new VelocityContext());
-               
-               WeblogEntryData applied = 
-                   ppmgr.applyPagePlugins(entry, plugins, true);
-               String title = applied.getTitle();
-               String excerpt = applied.getText();
-               excerpt = StringUtils.left( Utilities.removeHTML(excerpt),255 );
-
-               String url = rctx.createEntryPermalink(applied, request, true);
-               String blog_name = applied.getWebsite().getName();
-
-               if (form.getTrackbackUrl() != null)
-               {
-                  // by default let all trackbacks to be sent
-                  boolean allowTrackback = true;
-
-                  String allowedURLs = 
RollerConfig.getProperty("trackback.allowedURLs");
-                   if (allowedURLs != null && allowedURLs.trim().length() > 0)
-                   {
-                       // in the case that the administrator has enabled 
trackbacks
-                       // for only specific URLs, set it to false by default
-                       allowTrackback = false;
-                       String[] splitURLs = allowedURLs.split("\\|\\|");
-                       for (int i=0; i<splitURLs.length; i++)
-                       {
-                          Matcher m = 
Pattern.compile(splitURLs[i]).matcher(form.getTrackbackUrl());
-                          if (m.matches()) {
-                                  allowTrackback = true;
-                                  break;
-                          }
-                       }
-                   }
-                   
-                   if(!allowTrackback) {
-                    errors.add(ActionErrors.GLOBAL_ERROR,
-                                  new 
ActionError("error.trackbackNotAllowed"));
-                   } else {
-                          try
-                          {
-                              // Construct data
-       
-                              String data = URLEncoder.encode("title", "UTF-8")
-                                  +"="+URLEncoder.encode(title, "UTF-8");
-       
-                              data += ("&" + URLEncoder.encode("excerpt", 
"UTF-8")
-                                        
+"="+URLEncoder.encode(excerpt,"UTF-8"));
-       
-                              data += ("&" + URLEncoder.encode("url", "UTF-8")
-                                        +"="+URLEncoder.encode(url,"UTF-8"));
-       
-                              data += ("&" + URLEncoder.encode("blog_name", 
"UTF-8")
-                                        
+"="+URLEncoder.encode(blog_name,"UTF-8"));
-       
-                              // Send data
-                              URL tburl = new URL(form.getTrackbackUrl());
-                              URLConnection conn = tburl.openConnection();
-                              conn.setDoOutput(true);
-       
-                              OutputStreamWriter wr =
-                                  new 
OutputStreamWriter(conn.getOutputStream());
-                              BufferedReader rd = null;
-                              try
-                              {
-                                  wr.write(data);
-                                  wr.flush();
-           
-                                  // Get the response
-                                  rd = new BufferedReader(new 
InputStreamReader(
-                                      conn.getInputStream()));
-           
-                                  String line;
-                                  StringBuffer resultBuff = new StringBuffer();
-                                  while ((line = rd.readLine()) != null)
-                                  {
-                                      resultBuff.append(
-                                          Utilities.escapeHTML(line, true));
-                                      resultBuff.append("<br />");
-                                  }
-                                  
-                                  ActionMessages resultMsg = new 
ActionMessages();
-                                  resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
-                                      new 
ActionMessage("weblogEdit.trackbackResults", 
-                                      resultBuff));
-                                  saveMessages(request, resultMsg);
-                              }
-                              finally
-                              {
-                                  wr.close();
-                                  rd.close();
-                              }
-                          }
-                          catch (IOException e)
-                          {
-                              errors.add(ActionErrors.GLOBAL_ERROR,
-                                  new ActionError("error.trackback",e));
-                          }
-                   }
-               }
-               else
-               {
-                   errors.add(ActionErrors.GLOBAL_ERROR,
-                           new ActionError("error.noTrackbackUrlSpecified"));
-               }
-               
-               form.setTrackbackUrl(null);
-           }
-           else
-           {
-               forward = mapping.findForward("access-denied");
-           }
-       }
-       catch (Exception e) // unexpected
-       {
-           mLogger.error(e);
-           String msg = e.getMessage();
-           if ( msg == null )
-           {
-               msg = e.getClass().getName();
-           }
-           errors.add(ActionErrors.GLOBAL_ERROR,
-               new ActionError("error.general",msg));
-       }
-
-       if ( !errors.isEmpty() )
-       {
-           saveErrors(request, errors);
-       }
-       
-       request.setAttribute("model",
-                       new WeblogEntryPageModel(request, response, mapping, 
-                               (WeblogEntryFormEx)actionForm,
-                               WeblogEntryPageModel.EDIT_MODE));
-
-       return forward;
+     *
+     */
+    public ActionForward sendTrackback(
+            ActionMapping mapping,
+            ActionForm actionForm,
+            HttpServletRequest request,
+            HttpServletResponse response) throws RollerException {
+        ActionMessages resultMsg = new ActionMessages();
+        ActionForward forward = mapping.findForward("weblogEdit.page");
+        ActionErrors errors = new ActionErrors();
+        WeblogEntryData entry = null;
+        try {
+            WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+            String entryid = form.getId();
+            if ( entryid == null ) {
+                entryid =
+                        request.getParameter(RollerRequest.WEBLOGENTRYID_KEY);
+            }
+            Roller roller = RollerFactory.getRoller();
+            RollerContext rctx= RollerContext.getRollerContext();
+            WeblogManager wmgr= roller.getWeblogManager();
+            entry = wmgr.retrieveWeblogEntry(entryid);
+            
+            RollerSession rses = RollerSession.getRollerSession(request);
+            if (rses.isUserAuthorizedToAuthor(entry.getWebsite())) {
+                // Run entry through registered PagePlugins
+                PagePluginManager ppmgr = roller.getPagePluginManager();
+                Map plugins = ppmgr.createAndInitPagePlugins(
+                        entry.getWebsite(),
+                        RollerContext.getRollerContext().getServletContext(),
+                        
RollerContext.getRollerContext().getAbsoluteContextUrl(),
+                        new VelocityContext());
+                
+                WeblogEntryData applied =
+                        ppmgr.applyPagePlugins(entry, plugins, true);
+                String title = applied.getTitle();
+                String excerpt = applied.getText();
+                excerpt = StringUtils.left( Utilities.removeHTML(excerpt),255 
);
+                
+                String url = rctx.createEntryPermalink(applied, request, true);
+                String blog_name = applied.getWebsite().getName();
+                
+                if (form.getTrackbackUrl() != null) {
+                    // by default let all trackbacks to be sent
+                    boolean allowTrackback = true;
+                    
+                    String allowedURLs = 
RollerConfig.getProperty("trackback.allowedURLs");
+                    if (allowedURLs != null && allowedURLs.trim().length() > 
0) {
+                        // in the case that the administrator has enabled 
trackbacks
+                        // for only specific URLs, set it to false by default
+                        allowTrackback = false;
+                        String[] splitURLs = allowedURLs.split("\\|\\|");
+                        for (int i=0; i<splitURLs.length; i++) {
+                            Matcher m = 
Pattern.compile(splitURLs[i]).matcher(form.getTrackbackUrl());
+                            if (m.matches()) {
+                                allowTrackback = true;
+                                break;
+                            }
+                        }
+                    }
+                    
+                    if(!allowTrackback) {
+                        errors.add(ActionErrors.GLOBAL_ERROR,
+                                new ActionError("error.trackbackNotAllowed"));
+                    } else {
+                        try {
+                            // Construct data
+                            
+                            String data = URLEncoder.encode("title", "UTF-8")
+                            +"="+URLEncoder.encode(title, "UTF-8");
+                            
+                            data += ("&" + URLEncoder.encode("excerpt", 
"UTF-8")
+                            +"="+URLEncoder.encode(excerpt,"UTF-8"));
+                            
+                            data += ("&" + URLEncoder.encode("url", "UTF-8")
+                            +"="+URLEncoder.encode(url,"UTF-8"));
+                            
+                            data += ("&" + URLEncoder.encode("blog_name", 
"UTF-8")
+                            +"="+URLEncoder.encode(blog_name,"UTF-8"));
+                            
+                            // Send data
+                            URL tburl = new URL(form.getTrackbackUrl());
+                            HttpURLConnection conn = 
(HttpURLConnection)tburl.openConnection();
+                            conn.setDoOutput(true);
+                            
+                            OutputStreamWriter wr =
+                                    new 
OutputStreamWriter(conn.getOutputStream());
+                            BufferedReader rd = null;
+                            try {
+                                wr.write(data);
+                                wr.flush();
+                                
+                                // Get the response
+                                boolean inputAvailable = false;
+                                try {
+                                    rd = new BufferedReader(new 
InputStreamReader(
+                                            conn.getInputStream()));
+                                    inputAvailable = true;
+                                } catch (Throwable e) {
+                                    mLogger.debug(e);
+                                }
+                                
+                                // read repsonse only if there is one
+                                if (inputAvailable) {
+                                    String line;
+                                    StringBuffer resultBuff = new 
StringBuffer();
+                                    while ((line = rd.readLine()) != null) {
+                                        resultBuff.append(
+                                                Utilities.escapeHTML(line, 
true));
+                                        resultBuff.append("<br />");
+                                    }
+                                    
resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
+                                            new 
ActionMessage("weblogEdit.trackbackResults",
+                                            resultBuff));
+                                }
+                                
+                                // add response code to messages
+                                if (conn.getResponseCode() > 399) {
+                                    errors.add(ActionErrors.GLOBAL_ERROR,
+                                            new 
ActionError("weblogEdit.trackbackStatusCodeBad",
+                                            new 
Integer(conn.getResponseCode())));
+                                } else {
+                                    
resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
+                                            new 
ActionMessage("weblogEdit.trackbackStatusCodeGood",
+                                            new 
Integer(conn.getResponseCode())));
+                                }
+                            } finally {
+                                if (wr != null) wr.close();
+                                if (rd != null) rd.close();
+                            }
+                        } catch (IOException e) {
+                            errors.add(ActionErrors.GLOBAL_ERROR,
+                                    new ActionError("error.trackback",e));
+                        }
+                    }
+                } else {
+                    errors.add(ActionErrors.GLOBAL_ERROR,
+                            new ActionError("error.noTrackbackUrlSpecified"));
+                }
+                
+                form.setTrackbackUrl(null);
+            } else {
+                forward = mapping.findForward("access-denied");
+            }
+        } catch (Exception e) // unexpected
+        {
+            mLogger.error(e);
+            String msg = e.getMessage();
+            if ( msg == null ) {
+                msg = e.getClass().getName();
+            }
+            errors.add(ActionErrors.GLOBAL_ERROR,
+                    new ActionError("error.general",msg));
+        }
+        
+        saveErrors(request, errors);
+        saveMessages(request, resultMsg);
+        
+        request.setAttribute("model",
+                new WeblogEntryPageModel(request, response, mapping,
+                (WeblogEntryFormEx)actionForm,
+                WeblogEntryPageModel.EDIT_MODE));
+        
+        return forward;
     }
-
+    
     //-----------------------------------------------------------------------
     public ActionForward cancel(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws IOException, ServletException
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws IOException, ServletException {
         return (mapping.findForward("weblogEdit"));
     }
-
+    
     //-----------------------------------------------------------------------
     public ActionForward unspecified(
-        ActionMapping       mapping,
-        ActionForm          actionForm,
-        HttpServletRequest  request,
-        HttpServletResponse response)
-        throws Exception
-    {
+            ActionMapping       mapping,
+            ActionForm          actionForm,
+            HttpServletRequest  request,
+            HttpServletResponse response)
+            throws Exception {
         return create(mapping, actionForm, request, response);
     }
     
@@ -980,29 +880,27 @@
      * is being deleted then mark it published = false.
      * @param entry
      */
-    private void reindexEntry(Roller roller, WeblogEntryData entry) 
-    throws RollerException
-    {
-         IndexManager manager = roller.getIndexManager();
+    private void reindexEntry(Roller roller, WeblogEntryData entry)
+    throws RollerException {
+        IndexManager manager = roller.getIndexManager();
         
         // remove entry before (re)adding it, or in case it isn't Published
-        //manager.removeEntryIndexOperation(entry); 
+        //manager.removeEntryIndexOperation(entry);
         
         // if published, index the entry
-        if (entry.isPublished()) 
-        {
+        if (entry.isPublished()) {
             manager.addEntryReIndexOperation(entry);
         }
     }
-
+    
     public ActionErrors validateEntry(ActionErrors errors, WeblogEntryFormEx 
form) {
         if (errors == null) errors = new ActionErrors();
         if (StringUtils.isEmpty(form.getTitle())) {
             errors.add(null, new 
ActionError("weblogEdit.error.incompleteEntry"));
         }
         return errors;
-    } 
-                            
-
+    }
+    
+    
 }
 


Reply via email to