UPnP Server : link between LocalDevice and LocalService

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

UPnP Server : link between LocalDevice and LocalService

math62
Hello,

I'm currently trying to create an UPnP Server without annotated class.
I found how to create StateVariable, Action, Service and Device objects, but I'm encountering a problem with the link between Device and ServiceĀ :
I can't do "service.setManager(new DefaultServiceManager(service, Hello.class));" because I don't want to have an annotated class, so I'm doing "service.setManager(new DefaultServiceManager(service, null));".

My program is running, but when I'm looking on generated SCPD files, my Device SCPD is right but my Service SCPD is empty.
I think this issue is coming from the manager of my service, which doesn't (or prevents) the generation of my Service SCPD ...

Is my problem really coming from this issue ? If yes, is there any method to create an UPnP Server with cling and without annotations ?
Reply | Threaded
Open this post in threaded view
|

Re: UPnP Server : link between LocalDevice and LocalService

Christian Bauer
Administrator
The ServiceManager, and especially the DefaultServiceManager have nothing to do with annotations. Read the manual and Javadoc about it, this is not the reason why your service descriptor doesn't look right. You will need a ServiceManager, it's the connection between LocalService metadata (data about the service) and some actual implementation of that service.

Recently someone posted a fork for Cling here that had better support for building device/service metadata with code instead of annotations. I think it wasn't easily possible to pull some of these changes into the Cling master project but I haven't looked closer. It was definitely mixed with other changes that I don't want.

Having said that, you basically need to do what the code in the package org.fourthline.cling.annotations is doing.