The URLs in Restful Objects viewer are derived from ServiceUtil.id(...), which evaluates the getId() method of the service class, otherwise falls back to the simpleName of the class.
Meanwhile in the metamodel itself - ie the ObjectSpecId, as used in the first part of the objectType and bookmarks - is always simply the fully-qualified class name.
In the Wicket viewer (unlike entities) this FQCN doesn't normally manifests as a URL, though it can be seen for bookmarked actions. It can also be seen for published interactions, as the target object.
To rationalize things:
- introduce a new @DomainService#serviceType (analogous to @DomainObject#objectType
- use the value of this serviceType if present
- otherwise fallback to getId()
- otherwise fallback to the fully qualified class name.
This final fallback is a slight change in default behaviour for any apps just using the RO viewer - its default would have been just the simple class name of the service. The workaround is to add either serviceType or getId() explicitly.