Hi,

I have tried to setup Cyberlink for Java on a Windows7 PC within an Eclipse environment and found several issues.

My environment is XBMC or a Panasonic TV as media renderer, and a FritzBox as a media server.

1. If you import from github https://github.com/cybergarage/CyberLink4Java the poms contain some lines which prevent an import as a Maven project into eclipse. I created a fork https://github.com/ms777/CyberLink4Java.git where this is changed. I am not an expert in maven, so please be patient … I have also removed the dependency on the 1.8.1 in the pom, as I found different behavior when using the 1.8.1 jar compared to using the source for the upnp stack, which I assume is 2.1.0

2. I had a problem with the MediaGate demo application. Linking against the 1.8.1 jar, it was recogniced by XBMC as a server, linking against the 2.1.0 upnp-stack source it was not. I tracked this back to XmlPullParser being the standard parser in 2.1.0. Adding

    static {
        org.cybergarage.upnp.UPnP.setXMLParser(new kXML2Parser());

}
to MediaGate solved this.

3. MediaGate did not play a selected video, both in 1.8.1 and in 2.1.0. I tracked this to what I believe is a bug in org.cybergarage.upnp.std.av.server.object.container.ContainerNode. Adding

if (cnode.getID().equals(id)) 
  return cnode;

in

public ContentNode findContentNodeByID(String id)

solved this.

4. I have created a small test which lists the services and actions a device offers (org.cybergarage.ms777.test.ListServicesAndActions). This did not work in either 1.8.1 or 2.1.0. I tracked this back to what may be a bug in Service.java. Adding the lines

try {
  URL urlLoc = new URL(rootDev.getLocation());
  URL scpdUrl = new URL(urlLoc.getProtocol(), urlLoc.getHost(), urlLoc.getPort(), scpdURLStr);
  scpdNode = getSCPDNode(scpdUrl);      
  if (scpdNode != null) {
    data.setSCPDNode(scpdNode);
    return scpdNode;
  }
}
  catch (Exception e){}

in

private Node getSCPDNode()

solved this

5. I have created a small test which plays a file on my server on my renderer (org.cybergarage.ms777.test.PlayFromServerToRenderer). This works now.

Hope this helps others in the same situation …

ms777