I think the limitation of UrlMappingInfo is a real issue. It chooses a controller by name only. What if a "package" name was an additional parameter? It could be optional and remain completely backwards compatible.
By being able to specify the package name, you could solve many issues.
- You could define a UrlMapping path for all controllers in a certain package:
- You could use constraints to specify that the package name must start with my.plugin.
- If there were naming collisions where multiple controllers had the same name, you would have recourse to resolve them in your mapping by specifying the package name.
And if you left the package name unspecified, the controllers would continue to be resolved as they are today.