roller-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Johnson (JIRA)" <>
Subject [jira] Commented: (ROL-1811) Windows Live Writer fail to do updates - solved
Date Sun, 24 May 2009 02:08:45 GMT


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:


"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:
>             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);
> 				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.

View raw message