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
+
+
 
 
 #


Reply via email to