Created a set of properties for the driver: upnp.properties
Bundle load the default properties from upnp.properties and them are overreddin by the system properties
Created javadoc for properties used by the UPnP Base Driver
Added README for describing Javadoc
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@609675 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
index a003621..f3c637f 100644
--- a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
+++ b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
@@ -19,6 +19,13 @@
package org.apache.felix.upnp.basedriver;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Properties;
+
import org.cybergarage.upnp.UPnP;
import org.osgi.framework.BundleActivator;
@@ -62,6 +69,8 @@
private DriverControllerImpl drvController;
private ServiceRegistration drvControllerRegistrar;
+ private Properties configuration;
+
/**
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
@@ -71,6 +80,8 @@
Activator.bc = context;
+ doInitProperties();
+
doInitLogger();
doInitUPnPStack();
@@ -84,7 +95,33 @@
}
- /**
+ private void doInitProperties() {
+ /*
+ * Loading default properties value from the embeeded properties file
+ */
+ configuration = new Properties();
+ try {
+ configuration.load(Activator.class.getResourceAsStream("upnp.properties"));
+ } catch (Exception ignored) {
+ ignored.printStackTrace();
+ }
+
+ /*
+ * Overiding default value with the properties defined in the System
+ */
+ Enumeration e = configuration.propertyNames();
+ Properties system = System.getProperties();
+ while (e.hasMoreElements()) {
+ String name = (String) e.nextElement();
+ if(system.containsKey(name)){
+ configuration.setProperty(name, system.getProperty(name));
+ }
+ }
+
+ }
+
+
+ /**
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
@@ -109,13 +146,6 @@
Activator.logger=null;
Activator.bc = null;
}
-
- public final String getPropertyDefault(BundleContext bc, String propertyName, String defaultValue ){
- String value = bc.getProperty(propertyName);
- if(value == null)
- return defaultValue;
- return value;
- }
/**
* Method used for initilizing the general properties of the UPnP Base Driver
@@ -124,10 +154,10 @@
*/
private void doInitLogger() {
- String levelStr = getPropertyDefault(Activator.bc,Constants.BASEDRIVER_LOG_PROP,"2");
+ String levelStr = configuration.getProperty(Constants.BASEDRIVER_LOG_PROP,"2");
Activator.logger = new Logger(levelStr);
- String cyberLog = getPropertyDefault(Activator.bc,Constants.CYBERDOMO_LOG_PROP,"false");
+ String cyberLog = configuration.getProperty(Constants.CYBERDOMO_LOG_PROP,"false");
Activator.logger.setCyberDebug(cyberLog);
}
@@ -138,15 +168,15 @@
* @since 0.3
*/
private void doInitUPnPStack() {
- boolean useOnlyIPV4 = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_ONLY_IPV4_PROP,"true")).booleanValue();
+ boolean useOnlyIPV4 = Boolean.valueOf(configuration.getProperty(Constants.NET_ONLY_IPV4_PROP,"true")).booleanValue();
if (useOnlyIPV4) UPnP.setEnable(UPnP.USE_ONLY_IPV4_ADDR);
else UPnP.setDisable(UPnP.USE_ONLY_IPV4_ADDR);
- boolean useOnlyIPV6 = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_ONLY_IPV6_PROP,"true")).booleanValue();
+ boolean useOnlyIPV6 = Boolean.valueOf(configuration.getProperty(Constants.NET_ONLY_IPV6_PROP,"true")).booleanValue();
if (useOnlyIPV6) UPnP.setEnable(UPnP.USE_ONLY_IPV6_ADDR);
else UPnP.setDisable(UPnP.USE_ONLY_IPV6_ADDR);
- boolean useLoopback = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_USE_LOOPBACK_PROP,"true")).booleanValue();
+ boolean useLoopback = Boolean.valueOf(configuration.getProperty(Constants.NET_USE_LOOPBACK_PROP,"true")).booleanValue();
if (useLoopback) UPnP.setEnable(UPnP.USE_LOOPBACK_ADDR);
else UPnP.setDisable(UPnP.USE_LOOPBACK_ADDR);
@@ -161,7 +191,7 @@
* @throws InvalidSyntaxException
*/
private void doInitExporter() throws InvalidSyntaxException {
- boolean useExporter = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.EXPORTER_ENABLED_PROP,"true")).booleanValue();
+ boolean useExporter = Boolean.valueOf(configuration.getProperty(Constants.EXPORTER_ENABLED_PROP,"true")).booleanValue();
if (!useExporter) return;
this.queue = new RootDeviceExportingQueue();
@@ -178,7 +208,7 @@
* @since 0.3
*/
private void doInitImporter() {
- boolean useImporter = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.IMPORTER_ENABLED_PROP,"true")).booleanValue();
+ boolean useImporter = Boolean.valueOf(configuration.getProperty(Constants.IMPORTER_ENABLED_PROP,"true")).booleanValue();
if (!useImporter) return;
diff --git a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
index 89ca806..d4f374c 100644
--- a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
+++ b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
@@ -27,15 +27,64 @@
* device service is been created by UPnP base Driver. <br>
* The value of the does not carry any mean. <br>
* The name of the property is "UPnP.device.import".
+ *
+ * @since 0.1
*/
public final static String UPNP_IMPORT = "UPnP.device.imported";
+
+
+ /**
+ * Set the verbosity of the logging message of the bundle
+ *
+ * @since 0.1
+ */
public final static String BASEDRIVER_LOG_PROP = "felix.upnpbase.log";
+
+ /**
+ * If equal to "true" enables the CyberDomo UPnP SDK debugging messages
+ *
+ * @since 0.1
+ */
public final static String CYBERDOMO_LOG_PROP = "felix.upnpbase.cyberdomo.log";
+
+
+
+ /**
+ * If equal to "true" enables Exporter facility of the UPnP Base Driver
+ *
+ * @since 0.3
+ */
public final static String EXPORTER_ENABLED_PROP = "felix.upnpbase.exporter.enabled";
+
+ /**
+ * If equal to "true" enables Importer facility of the UPnP Base Driver
+ *
+ * @since 0.3
+ */
public final static String IMPORTER_ENABLED_PROP = "felix.upnpbase.importer.enabled";
+
+
+
+ /**
+ * If equal to "true" enables the use of NICs with IPv4 configured and only IPv4 addresses will be used
+ *
+ * @since 0.3
+ */
public final static String NET_ONLY_IPV4_PROP = "felix.upnpbase.cyberdomo.net.onlyIPV4";
+
+ /**
+ * If equal to "true" enables the use of NICs with IPv6 configured and only IPv6 addresses will be used<br>
+ * <b>NOTE:</b>This property is used only on JDK 1.4 or greater
+ * @since 0.3
+ */
public final static String NET_ONLY_IPV6_PROP = "felix.upnpbase.cyberdomo.net.onlyIPV6";
+
+ /**
+ * If equal to "true" enables the use of Loopback addresses, either IPv6 and IPv4
+ *
+ * @since 0.3
+ */
public final static String NET_USE_LOOPBACK_PROP = "felix.upnpbase.cyberdomo.net.loopback";
}
diff --git a/upnp/basedriver/src/main/resources/README b/upnp/basedriver/src/main/resources/README
new file mode 100644
index 0000000..adb9955
--- /dev/null
+++ b/upnp/basedriver/src/main/resources/README
@@ -0,0 +1,28 @@
+This bundle tries to be complaint to the UPnP Base Driver OSGi R4 specification.
+
+At the moment the bundle do not support the following requirement:
+ - upnp.ssdp.address Configuration Service
+ - exported device changes: if a service already exported as UPnP Device changes
+ it's own configuration, i.e.: implements new service, changes the friendly name, etc.,
+ the new service description is not reflected on the UPnP Device
+ - icon for exported device is not tested
+ - no localization support
+
+The bundle provides extra capabilities:
+ - the bundles implements the org.apache.felix.upnp.extra.controller specification
+
+Finally the bundle can be configured by setting the following properties divided by categories:
+1 - LOGGING
+felix.upnpbase.log: integer which identifies the verbosity of the bundle
+felix.upnpbase.cyberdomo.log: boolean which enables or disables the UPnP CyberDomo SDK debugging messages
+2 - FACILITY
+felix.upnpbase.exporter.enabled: boolean which enables or disables the Exporter facilities of the UPnP Base Driver
+felix.upnpbase.importer.enabled: boolean which enables or disables the Exporter facilities of the UPnP Base Driver
+3 - NETWORK
+felix.upnpbase.cyberdomo.net.loopback: boolean which enables or disables the use of Loopback devices
+felix.upnpbase.cyberdomo.net.onlyIPV4: boolean which enables or disables the use of IPv4 addresses
+felix.upnpbase.cyberdomo.net.onlyIPV6: boolean which enables or disables the use of IPv6 addresses (if base driver is running on JDK 1.4 or greater)
+cyberdomo.ssdp.mx: integer which idntifies the value to set in MX packet while performing discovery operation on UPnP
+cyberdomo.ssdp.buffersize: integer which identifies buffer size for UDP packet
+cyberdomo.ssdp.port: integer which identifies the destination port to use for SDDP multicast discovery packet
+
\ No newline at end of file
diff --git a/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties b/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties
new file mode 100644
index 0000000..45b5e69
--- /dev/null
+++ b/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#
+# Felix UPnP Base Driver 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