Hi guys, The SpringBeanRouter.resolveUri() method in 1.1.1 has a potential problem, if you specify restlet in Spring configuration file without an id like this way:
<bean name="/product-folders" scope="prototype" class="..."> </bean> Your BeanFinder will never be attached the URI "/product-folders". The reason is that the resolveUri() method tries to get name and other aliases from id, see the code below protected String resolveUri(String resourceName, ConfigurableListableBeanFactory factory) { for (final String alias : factory.getAliases(resourceName)) { if (alias.startsWith("/")) { return alias; } } return null; } if you don't specify and ID in the Spring configuration file factory.getAliases(resourceName) will return null when the passed in resourceName is actually the bean name. To workaround this, you have to specify an ID for each restlet, eg, <bean id="_product-folders" name="/product-folders" scope="prototype" class="..."> </bean> Note, the id cannot be the same as the name because XML id cannot contain characters in URI like "/" or "{id}". Also, it's troublesome to specify id for each bean. So, how can I just simply specify name without IDs? I made it by changing resolveUri as below protected String resolveUri(String resourceName, ApplicationContext factory) { String aliasName = null; if (resourceName.startsWith("/")) { aliasName = resourceName; } else { for (final String alias : factory.getAliases(resourceName)) { if (alias.startsWith("/")) { aliasName = alias; break; } } } logger.debug("resolveUri: alias=" + aliasName); return aliasName; } I first check resourceName, if you don't specify an ID, bean name will be passed in as resourceName, in this case, just return the beanName if it starts with a slash. If you specify an ID, bean id will be passed in, then getAliases() will return the beanName of that id. it's done. Tested with 1.1.1 What do you guys think? Regards, Daniel ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1169062