Author: furfari
Date: Sat Dec 29 11:42:12 2007
New Revision: 607467
URL: http://svn.apache.org/viewvc?rev=607467&view=rev
Log:
Added new system properties to configure the UPnP basedriver:
felix.upnpbase.log (default 2) (range 0 - 4)
felix.upnpbase.exporter.enabled (default true)
felix.upnpbase.importer.enabled (default true)
felix.upnpbase.cyberdomo.log (default false)
felix.upnpbase.cyberdomo.net.loopback (default false)
felix.upnpbase.cyberdomo.net.onlyIPV4 (default true)
felix.upnpbase.cyberdomo.net.onlyIPV6 (default false)
cyberdomo.ssdp.mx (default 5) it represent the delay in seconds to receive an
MSearch reply. (it should be between 2 and 10)
cyberdomo.ssdp.buffersize (default 2048) (range from 512 to 65636)
cyberdomo.ssdp.port (default 1900) (according to the UPnP Spec. it should never
be changed; range 1024 - 49151 )
Modified:
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/controller/impl/DriverControllerImpl.java
felix/trunk/upnp/doc/config.properties.upnp
Modified:
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
URL:
http://svn.apache.org/viewvc/felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java?rev=607467&r1=607466&r2=607467&view=diff
==============================================================================
---
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
(original)
+++
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
Sat Dec 29 11:42:12 2007
@@ -19,16 +19,6 @@
package org.apache.felix.upnp.basedriver;
-import org.apache.felix.upnp.extra.controller.DevicesInfo;
-import org.apache.felix.upnp.extra.controller.DriverController;
-
-import org.cybergarage.upnp.UPnP;
-import org.cybergarage.xml.parser.JaxpParser;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
-
import org.apache.felix.upnp.basedriver.controller.impl.DriverControllerImpl;
import org.apache.felix.upnp.basedriver.export.RootDeviceExportingQueue;
import org.apache.felix.upnp.basedriver.export.RootDeviceListener;
@@ -41,12 +31,26 @@
import org.apache.felix.upnp.basedriver.importer.core.event.thread.SubScriber;
import org.apache.felix.upnp.basedriver.tool.Logger;
import org.apache.felix.upnp.basedriver.tool.Util;
+import org.apache.felix.upnp.extra.controller.DevicesInfo;
+import org.apache.felix.upnp.extra.controller.DriverController;
+import org.cybergarage.upnp.UPnP;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
/*
* @author <a href="mailto:[EMAIL PROTECTED]">Felix Project Team</a>
*/
public class Activator implements BundleActivator {
-
+
+ private final static String BASEDRIVER_LOG_PROP = "felix.upnpbase.log";
+ private final static String EXPORTER_ENABLED_PROP =
"felix.upnpbase.exporter.enabled";
+ private final static String IMPORTER_ENABLED_PROP =
"felix.upnpbase.importer.enabled";
+ private final static String NET_ONLY_IPV4_PROP =
"felix.upnpbase.cyberdomo.net.onlyIPV4";
+ private final static String NET_ONLY_IPV6_PROP =
"felix.upnpbase.cyberdomo.net.onlyIPV6";
+ private final static String NET_USE_LOOPBACK_PROP =
"felix.upnpbase.cyberdomo.net.loopback";
+ private final static String CYBERDOMO_LOG_PROP =
"felix.upnpbase.cyberdomo.log";
+
public static BundleContext bc;
public static Logger logger;
private RootDeviceExportingQueue queue;
@@ -70,36 +74,71 @@
Activator.bc = context;
- String levelStr = (String)
Util.getPropertyDefault(context,"felix.upnpbase.log","2");
+ //
+ // Debugger configuration
+ //
+ String levelStr =
Util.getPropertyDefault(context,BASEDRIVER_LOG_PROP,"2");
Activator.logger = new Logger(levelStr);
- String cyberLog = (String)
Util.getPropertyDefault(context,"felix.upnpbase.cyberlink.log","false");
- Activator.logger.setCyberDebug(cyberLog);
-
- UPnP.setEnable(UPnP.USE_ONLY_IPV4_ADDR);
- UPnP.setDisable(UPnP.USE_LOOPBACK_ADDR);
-
- //Setting up Base Driver Exporter
- this.queue = new RootDeviceExportingQueue();
- this.producerDeviceToExport = new RootDeviceListener(queue);
- producerDeviceToExport.activate();
- consumerDeviceToExport = new ThreadExporter(queue);
- new Thread(consumerDeviceToExport,
"upnp.basedriver.Exporter").start();
-
- //Setting up Base Driver Importer
- this.notifierQueue = new NotifierQueue();
- this.subQueue = new SubscriptionQueue();
- ctrl = new MyCtrlPoint(context, subQueue, notifierQueue);
- //Enable CyberLink re-new for Event
- ctrl.setNMPRMode(true);
+ String cyberLog =
Util.getPropertyDefault(context,CYBERDOMO_LOG_PROP,"false");
+ Activator.logger.setCyberDebug(cyberLog);
+
+
+ //
+ // NET configuration
+ //
+ String useOnlyIPV4 =
Util.getPropertyDefault(context,NET_ONLY_IPV4_PROP,"true");
+ if (useOnlyIPV4.equalsIgnoreCase("true"))
+ UPnP.setEnable(UPnP.USE_ONLY_IPV4_ADDR);
+ else
+ UPnP.setDisable(UPnP.USE_ONLY_IPV4_ADDR);
+
+ String useOnlyIPV6 =
Util.getPropertyDefault(context,NET_ONLY_IPV6_PROP,"false");
+ if (useOnlyIPV6.equalsIgnoreCase("true"))
+ UPnP.setEnable(UPnP.USE_ONLY_IPV6_ADDR);
+ else
+ UPnP.setDisable(UPnP.USE_ONLY_IPV6_ADDR);
+
+ String useLoopback =
Util.getPropertyDefault(context,NET_USE_LOOPBACK_PROP,"false");
+ if (useLoopback.equalsIgnoreCase("true"))
+ UPnP.setEnable(UPnP.USE_LOOPBACK_ADDR);
+ else
+ UPnP.setDisable(UPnP.USE_LOOPBACK_ADDR);
+
+ //
+ // Exporter configuration
+ //
+ String useExporter =
Util.getPropertyDefault(context,EXPORTER_ENABLED_PROP,"true");
+ if (useExporter.equalsIgnoreCase("true")){
+ //Setting up Base Driver Exporter
+ this.queue = new RootDeviceExportingQueue();
+ this.producerDeviceToExport = new
RootDeviceListener(queue);
+ producerDeviceToExport.activate();
+ consumerDeviceToExport = new ThreadExporter(queue);
+ new Thread(consumerDeviceToExport,
"upnp.basedriver.Exporter").start();
+ }
+
+ //
+ // Importer configuration
+ //
+ String useImporter =
Util.getPropertyDefault(context,IMPORTER_ENABLED_PROP,"true");
+ if (useImporter.equalsIgnoreCase("true")){
+ //Setting up Base Driver Importer
+ this.notifierQueue = new NotifierQueue();
+ this.subQueue = new SubscriptionQueue();
+ ctrl = new MyCtrlPoint(context, subQueue,
notifierQueue);
- this.monitor=new Monitor();
- this.notifier = new Notifier(notifierQueue,monitor);
- this.subScriber = new SubScriber(ctrl, subQueue,monitor);
-
- ctrl.start();
- subScriber.start();
- notifier.start();
+ //Enable CyberLink re-new for Event
+ ctrl.setNMPRMode(true);
+
+ this.monitor=new Monitor();
+ this.notifier = new Notifier(notifierQueue,monitor);
+ this.subScriber = new SubScriber(ctrl,
subQueue,monitor);
+
+ ctrl.start();
+ subScriber.start();
+ notifier.start();
+ }
doControllerRegistration();
@@ -123,15 +162,20 @@
drvControllerRegistrar.unregister();
- //Setting up Base Driver Exporter
- consumerDeviceToExport.end();
- consumerDeviceToExport.cleanUp();
- producerDeviceToExport.deactive();
-
- //Setting up Base Driver Importer
- ctrl.stop();
- subScriber.close();
- notifier.close();
+ //Base Driver Exporter
+ if (consumerDeviceToExport != null) {
+ consumerDeviceToExport.end();
+ consumerDeviceToExport.cleanUp();
+ producerDeviceToExport.deactive();
+ }
+
+ //Base Driver Importer
+ if (ctrl != null){
+ ctrl.stop();
+ subScriber.close();
+ notifier.close();
+ }
+
Activator.logger.close();
Activator.logger=null;
Activator.bc = null;
Modified:
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/controller/impl/DriverControllerImpl.java
URL:
http://svn.apache.org/viewvc/felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/controller/impl/DriverControllerImpl.java?rev=607467&r1=607466&r2=607467&view=diff
==============================================================================
---
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/controller/impl/DriverControllerImpl.java
(original)
+++
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/controller/impl/DriverControllerImpl.java
Sat Dec 29 11:42:12 2007
@@ -58,13 +58,24 @@
}
public String getLocationURL(String udn) {
+ if (myCtrl == null){
+ logger.WARNING("UPnP Importer is disabled. getLocationURL is
not available");
+ return null;
+ }
if (udn == null || udn.equals("")) throw new
IllegalArgumentException("Invalid udn paramenter");
Device device = myCtrl.getDevice(udn);
- if (device == null) logger.WARNING("getLocationURL():: No device data
available for UDN:"+udn);
- return myCtrl.getDevice(udn).getLocation();
+ if (device == null) {
+ logger.WARNING("getLocationURL():: No device data available for
UDN:"+udn);
+ return null;
+ }
+ return device.getLocation();
}
public String getSCPDURL(String udn, String serviceId) {
+ if (myCtrl == null){
+ logger.WARNING("UPnP Importer is disabled. getSCPDURL() is not
available");
+ return null;
+ }
if (udn == null || udn.equals("") ) throw new
IllegalArgumentException("Invalid udn paramenter");
if (serviceId == null || serviceId.equals("") ) throw new
IllegalArgumentException("Invalid serviceId paramenter");
Device device= myCtrl.getDevice(udn);
@@ -82,8 +93,16 @@
}
public String resolveRelativeUrl(String udn, String link) {
- if (udn == null || udn.equals("")) throw new
IllegalArgumentException("Invalid udn paramenter");
+ if (myCtrl == null){
+ logger.WARNING("UPnP Importer is disabled. resolveRelativeUrl()
is not available");
+ return null;
+ }
+ if (udn == null || udn.equals("")) throw new
IllegalArgumentException("Invalid udn paramenter");
Device device = myCtrl.getDevice(udn);
+ if (device == null) {
+ logger.WARNING("resolveRelativeUrl():: No device data available
for UDN: "+udn);
+ return null;
+ }
return resolveRelativeLink(device,link);
}
@@ -117,7 +136,11 @@
}
public void search(String target) {
- myCtrl.search(target);
+ if (myCtrl == null){
+ logger.WARNING("UPnP Importer is disabled. resolveRelativeUrl()
is not available");
+ return ;
+ }
+ myCtrl.search(target);
}
Modified: felix/trunk/upnp/doc/config.properties.upnp
URL:
http://svn.apache.org/viewvc/felix/trunk/upnp/doc/config.properties.upnp?rev=607467&r1=607466&r2=607467&view=diff
==============================================================================
--- felix/trunk/upnp/doc/config.properties.upnp (original)
+++ felix/trunk/upnp/doc/config.properties.upnp Sat Dec 29 11:42:12 2007
@@ -36,7 +36,6 @@
file:../org.osgi.core/target/org.osgi.core-1.1.0-SNAPSHOT.jar \
file:../javax.servlet/target/javax.servlet-0.9.0-SNAPSHOT.jar \
file:../org.osgi.compendium/target/org.osgi.compendium-0.9.0-SNAPSHOT.jar \
- file:../log/target/org.apache.felix.log-0.9.0-SNAPSHOT.jar \
file:../http.jetty/target/org.apache.felix.http.jetty-0.9.0-SNAPSHOT.jar \
file:../upnp/basedriver/target/org.apache.felix.upnp.basedriver-0.3.0-SNAPSHOT.jar
\
file:../upnp/extra/target/org.apache.felix.upnp.extra-0.3.0-SNAPSHOT.jar \
@@ -56,6 +55,23 @@
org.osgi.service.http.port=8080
osgi.shell.telnet=on
#obr.repository.url=http://bundles.osgi.org/obr/browse?_xml=1&cmd=repository
+
+
+#
+# UPnP Basedriver properties
+#
+#felix.upnpbase.log=2
+#felix.upnpbase.exporter.enabled=true
+#felix.upnpbase.importer.enabled=true
+#felix.upnpbase.cyberdomo.log=false
+#felix.upnpbase.cyberdomo.net.loopback=false
+#felix.upnpbase.cyberdomo.net.onlyIPV4=true
+#felix.upnpbase.cyberdomo.net.onlyIPV6=false
+#cyberdomo.ssdp.mx=5
+#cyberdomo.ssdp.buffersize=2048
+#cyberdomo.ssdp.port=1900
+
+
#