[ 
https://issues.apache.org/jira/browse/ROL-1811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12712481#action_12712481
 ] 

Dave Johnson commented on ROL-1811:
-----------------------------------

Which MetaWeblog API spec are you refering to?

Roller follows what believe to be the one and only MetaWeblog API spec which 
says:

(from http://www.xmlrpc.com/metaWeblogApi#metawebloggetrecentposts)

"metaWeblog.getCategories (blogid, username, password) returns struct. The 
struct returned contains one struct for each category, containing the following 
elements: description, htmlUrl and rssUrl."

That's exactly what Roller does, it returns a struct of structs, which in Java 
is a hashtable of hashtables and not a list of hashtables as you suggest. If we 
change this to satisfy Windows Live Writer, we'll likely be breaking other 
clients.




> Windows Live Writer fail to do updates - solved 
> ------------------------------------------------
>
>                 Key: ROL-1811
>                 URL: https://issues.apache.org/jira/browse/ROL-1811
>             Project: Roller
>          Issue Type: Bug
>          Components: Web Services
>    Affects Versions: 4.0.1
>            Reporter: Steven Board
>            Assignee: Roller Unassigned
>            Priority: Minor
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> Hi Guys, 
> I know you're aware that Windows Live Writer is unable to perform updates to 
> roller blogs using the xml rpc, however I thought I would let you know why 
> and how I fixed it locally incase you wanted to apply this fix to the next 
> release of roller.
> The reason the update to blogs fails is actually due to the 
> org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getCategories
>  method actually having two bugs.
> The first is trivial and is the fact that you pass the userId to the 
> MetaWeblogAPIHandler.createCategoryStruct(WeblogCategory category, String 
> userid) method, rather than the blogId.  The createCategoryStruct method then 
> incorrectly creates the rssUrl and htmlUrls.
> The second is the fact that the getCategories method does not comply with the 
> MetaWeblog API.  The method you have created returns a Hashtable with the 
> categories as keys with the values being another Hashtable as defined by the 
> MetaWeblog API for the getCategories method.  The getCategories should just 
> return the values from the currently returned Hashtable as a List.
> e.g. The getCategories method should be something like the below.
>       public Object getCategories(String blogid, String userid, String 
> password)
>                       throws Exception {
>               mLogger
>                               .debug("STEVEN BAORD custom getCategories() 
> Called =====[ SUPPORTED ]=====");
>               mLogger.debug((new StringBuilder()).append("     BlogId: 
> ").append(
>                               blogid).toString());
>               mLogger.debug((new StringBuilder()).append("     UserId: 
> ").append(
>                               userid).toString());
>               Weblog website = validate(blogid, userid, password);
>               Weblogger roller = WebloggerFactory.getWeblogger();
>               try {
>                       WeblogManager weblogMgr = roller.getWeblogManager();
>                       List cats = weblogMgr.getWeblogCategories(website, 
> false);
>                       ArrayList<Hashtable> result = new 
> ArrayList<Hashtable>();
>                       WeblogCategory category;
>                       Iterator wbcItr = cats.iterator();
>                       while (wbcItr.hasNext()) {
>                               category = (WeblogCategory) wbcItr.next();
>                               result.add(createCategoryStruct(category, 
> blogid));
>                       }
>                       return result;
>               } catch (Exception e) {
>                       String msg = "ERROR in 
> MetaWeblogAPIHandler.getCategories";
>                       mLogger.error(msg, e);
>                       throw new XmlRpcException(1000, msg);
>               }
>       }
> For anyone else wanting to fix this locally you also need to set the 
> site.absoluteurl property in the roller_properties tables within the database 
> to the url for your roller instance.  e.g. http://<your-domain>/roller.  This 
> is to make sure that the rssUrl and httpUrl for the categories are correctly 
> created with their full paths. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to