felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From don...@apache.org
Subject svn commit: r533875 [30/30] - in /incubator/felix/sandbox/donsez/upnp.devicegen: ./ doc/ generation/ generation/res/ generation/res/device/ generation/res/service/ manifest/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src...
Date Mon, 30 Apr 2007 23:15:18 GMT
Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/AbstractUPnPStateVariable.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/AbstractUPnPStateVariable.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/AbstractUPnPStateVariable.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/AbstractUPnPStateVariable.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,112 @@
+package org.apache.felix.upnp.devicegen.util;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.upnp.UPnPService;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+public abstract class AbstractUPnPStateVariable
+	implements UPnPStateVariable, BundleActivator {
+
+	final protected String NAME;
+	final protected String DATA_TYPE;
+	final protected Object DEFAULT_VALUE;
+	final protected String[] ALLOWED_VALUES;
+	final protected Number STEP;
+	final protected Number MIN;
+	final protected Number MAX;
+	final protected boolean SENDEVENT;
+	final protected boolean OPTIONAL;
+
+	final protected UPnPService upnpService;
+
+	public AbstractUPnPStateVariable(
+					UPnPService upnpService,
+					String NAME,
+					String DATA_TYPE,
+					Object DEFAULT_VALUE,
+					String[] ALLOWED_VALUES,
+					Number STEP,
+					Number MIN,
+					Number MAX,
+					boolean SENDEVENT,
+					boolean OPTIONAL
+	) {
+		this.upnpService = upnpService;
+		this.NAME = NAME;
+		this.DATA_TYPE = DATA_TYPE;
+		this.DEFAULT_VALUE = DEFAULT_VALUE;
+		this.ALLOWED_VALUES = ALLOWED_VALUES;
+		this.STEP = STEP;
+		this.MIN = MIN;
+		this.MAX = MAX;
+		this.SENDEVENT = SENDEVENT;
+		this.OPTIONAL = OPTIONAL;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getName()
+	 */
+	public String getName() {
+		return NAME;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
+	 */
+	public Class getJavaDataType() {
+		return UPnPDataTypeUtil.getClass(DATA_TYPE);
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
+	 */
+	public String getUPnPDataType() {
+		return DATA_TYPE;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getDefaultValue()
+	 */
+	public Object getDefaultValue() {
+		return DEFAULT_VALUE;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getAllowedValues()
+	 */
+	public String[] getAllowedValues() {
+		return ALLOWED_VALUES;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getMinimum()
+	 */
+	public Number getMinimum() {
+		return MIN;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getMaximum()
+	 */
+	public Number getMaximum() {
+		return MAX;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#getStep()
+	 */
+	public Number getStep() {
+		return STEP;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
+	 */
+	public boolean sendsEvents() {
+		return SENDEVENT;
+	}
+
+	public abstract void start(BundleContext bundleContext) throws Exception;
+	public abstract void stop(BundleContext bundleContext) throws Exception;
+}
\ No newline at end of file

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/AbstractUPnPStateVariable.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/DeviceIcon.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/DeviceIcon.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/DeviceIcon.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/DeviceIcon.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,82 @@
+/*
+__LICENSE__
+*/
+package org.apache.felix.upnp.devicegen.util;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.osgi.service.upnp.UPnPIcon;
+
+public class DeviceIcon implements UPnPIcon {
+
+	private String mimetype;
+	private int width;
+	private int height;
+	private int size;
+	private int depth;
+	private String urlStr;
+	private ClassLoader classLoader;
+	
+	public DeviceIcon(
+			 String mimetype,
+			 int width,
+			 int height,
+			 int size,
+			 int depth,
+			 String urlStr,
+			 ClassLoader classLoader
+	){
+		 this.mimetype=mimetype;
+		 this.width=width;
+		 this.height=height;
+		 this.size=size;
+		 this.depth=depth;
+		 this.urlStr=urlStr;
+		 this.classLoader=classLoader;
+	}
+	
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getMimeType()
+	 */
+	public String getMimeType() {
+		return "image/png";
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getWidth()
+	 */
+	public int getWidth() {
+		return 32;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getHeight()
+	 */
+	public int getHeight() {
+		return 32;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getSize()
+	 */
+	public int getSize() {
+		return 0;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getDepth()
+	 */
+	public int getDepth() {
+		return 16;
+	}
+
+	/**
+	 * @see org.osgi.service.upnp.UPnPIcon#getInputStream()
+	 */
+	public InputStream getInputStream() throws IOException {
+		return classLoader.getResourceAsStream(urlStr);
+		//return Thread.currentThread().getContextClassLoader().getResourceAsStream(urlStr);
+		//return DeviceIcon.class.getResourceAsStream(urlStr);
+	}
+}
+

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/DeviceIcon.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/EventSource.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/EventSource.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/EventSource.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/EventSource.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,36 @@
+/*
+DomoWare OSGi UPnP Sample TV Device is an implementation of UPnP Device service to be used
with OSGi Framework
+Copyright (C) 2004  Matteo Demuru, Francesco Furfari, Stefano "Kismet" Lenzi
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You can contact us at:
+	{matte-d, sygent, kismet-sl} [at] users.sourceforge.net
+*/
+package org.apache.felix.upnp.devicegen.util;
+
+import java.beans.PropertyChangeListener;
+
+/**
+ * EventSource.java 8-feb-2005
+ * @author Francesco Furfari
+ */
+public interface EventSource {
+	void addPropertyChangeListener(PropertyChangeListener listener);
+	void addPropertyChangeListener(String propertyName, PropertyChangeListener listener);
+	void removePropertyChangeListener(PropertyChangeListener listener);
+	void removePropertyChangeListener(String propertyName, PropertyChangeListener listener);
+}
+

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/EventSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/Lookup.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/Lookup.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/Lookup.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/Lookup.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,118 @@
+/*
+DomoWare UPnP Base Driver is an implementation of the OSGi UnP Device Specifaction
+Copyright (C) 2005 Matteo Demuru, Francesco Furfari, Stefano "Kismet" Lenzi
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You can contact us at:
+	{matte-d, sygent, kismet-sl} [at] users.sourceforge.net
+*/
+
+package org.apache.felix.upnp.devicegen.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.upnp.UPnPDevice;
+import org.osgi.service.upnp.UPnPService;
+
+/**
+ * Lookup.java 8-feb-2005
+ * @author Francesco Furfari
+ */
+public class Lookup {
+    
+    static BundleContext context;
+    private ArrayList references = new ArrayList();
+    
+    public UPnPService getService(String deviceId,String serviceId){
+		UPnPDevice device = getDevice(deviceId);
+        if (device == null) return null;
+		return device.getService(serviceId);
+    }
+    
+    public UPnPDevice getDevice(String deviceId){
+		ServiceReference sr = getReference(deviceId);
+        if (sr == null) return null;
+		return getDevice(sr);
+    }
+    
+    private UPnPDevice getDevice(ServiceReference sr){
+        references.add(sr);
+        return(UPnPDevice) context.getService(sr);        
+    }
+    
+    public ServiceReference getReference(String deviceId){
+		try {
+		    String filter = "(" + UPnPDevice.ID + "="+ deviceId + ")";
+		    ServiceReference[] listeners = context.getServiceReferences(UPnPDevice.class.getName(),filter);
+			if (listeners != null)
+				for (int i = 0;i<listeners.length;i++){
+				    return listeners[i]; // the Device Id should be unique
+				}
+			return null;
+		} catch (Exception ex) {
+			System.out.println(ex);
+	        return null; 
+		}
+    }
+    
+    public String getDeviceType(String deviceId){
+        ServiceReference sr = getReference(deviceId);
+        if (sr == null) return null;
+        return (String) sr.getProperty(UPnPDevice.TYPE);
+    }
+    
+    public Object getDeviceProperty(String deviceId,String key){
+        ServiceReference sr = getReference(deviceId);
+        if (sr == null) return null;
+        return  sr.getProperty(key);
+    }
+    
+    public String getServiceType(String deviceId, String serviceId){
+		UPnPDevice device = getDevice(deviceId);
+        if (device == null) return null;
+		return device.getService(serviceId).getType();
+    }
+    
+    public boolean isRootDevice(String deviceId){
+        ServiceReference sr = getReference(deviceId);
+        //if (sr == null) return null;
+        String parent =  (String) sr.getProperty(UPnPDevice.PARENT_UDN);
+        if((parent == null)||parent.equals("")) return true;
+        return false;              
+    }
+    
+    public UPnPDevice getRootDevice(String deviceId) {
+        ServiceReference sr = getReference(deviceId);
+        String parent =  (String) sr.getProperty(UPnPDevice.PARENT_UDN);
+        if((parent == null)||parent.equals("")) 
+            return getDevice(sr);
+        else
+            return getRootDevice(parent);        
+    }
+    
+    public void ungetServices(){
+        Iterator list = this.references.iterator();
+        while( list.hasNext()){
+            ServiceReference sr = (ServiceReference) list.next();
+            context.ungetService(sr);
+            list.remove();
+        }
+    }
+
+}

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/Lookup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPDataTypeUtil.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPDataTypeUtil.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPDataTypeUtil.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPDataTypeUtil.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,72 @@
+/*
+ * __LICENSE__ 
+ */
+package org.apache.felix.upnp.devicegen.util;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.service.upnp.UPnPStateVariable;
+
+/**
+ * utility class to obtains java class for UPnP data type
+ * @author donsez
+ */
+public class UPnPDataTypeUtil {
+
+	private static Map dataTypeMap;
+	static {
+		dataTypeMap = new HashMap();
+		dataTypeMap.put(UPnPStateVariable.TYPE_UI1, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_UI2, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_UI4, Long.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_I1, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_I2, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_I4, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_INT, Integer.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_R4, Float.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_R8, Double.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_NUMBER, Double.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_FIXED_14_4, Double.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_FLOAT, Float.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_CHAR, Character.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_STRING, String.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_DATE, Date.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_DATETIME, Date.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_DATETIME_TZ, Date.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_TIME, Long.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_TIME_TZ, Long.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_BOOLEAN, Boolean.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_BIN_BASE64, byte[].class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_BIN_HEX, byte[].class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_URI, String.class);
+		dataTypeMap.put(UPnPStateVariable.TYPE_UUID, String.class);
+	}
+	
+	public static Class getClass(String upnpDataType){
+		return (Class)dataTypeMap.get(upnpDataType);
+	}
+
+	public static String getClassName(String upnpDataType)throws IllegalArgumentException {
+		Class clazz=(Class)dataTypeMap.get(upnpDataType);
+		if(clazz==null) throw new IllegalArgumentException("No class for "+upnpDataType); 
+		return clazz.getName();
+	}
+
+	public static Object instanciateObject(String upnpDataType, String value){
+		Class clazz=(Class)dataTypeMap.get(upnpDataType);
+		if(clazz.equals(Integer.class)) return new Integer(value);
+		if(clazz.equals(Long.class)) return new Long(value);
+		if(clazz.equals(Float.class)) return new Float(value);
+		if(clazz.equals(Double.class)) return new Double(value);
+		if(clazz.equals(Boolean.class)) return new Boolean(value);
+		if(clazz.equals(String.class)) return new String(value);
+		if(clazz.equals(Character.class)) return new Character(value.charAt(0));
+
+		// TODO TYPE_DATE,TYPE_BIN_BASE64, TYPE_BIN_HEX
+		if(clazz==null) throw new IllegalArgumentException("Can not instanciate object for "+upnpDataType);
		
+		return null;
+	}
+
+}
\ No newline at end of file

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPDataTypeUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventListenerUtil.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventListenerUtil.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventListenerUtil.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventListenerUtil.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,66 @@
+/*
+ * __LICENSE__
+ */
+package org.apache.felix.upnp.devicegen.util;
+
+import java.io.PrintStream;
+import java.util.Dictionary;
+import java.util.Enumeration;
+
+import org.osgi.service.upnp.UPnPStateVariable;
+
+/**
+ * @author donsez
+ */
+public class UPnPEventListenerUtil {
+
+	/**
+	 *  trace the event received by org.osgi.service.upnp.UPnPEventListener
+	 * 
+	 * @param deviceId
+	 *            ID of the device sending the events
+	 * @param serviceId
+	 *            ID of the service sending the events
+	 * @param events
+	 *            Dictionary object containing the new values for the state
+	 *            variables that have changed.
+	 * @see org.osgi.service.upnp.UPnPEventListener#notifyUPnPEvent(java.lang.String,
+	 *      java.lang.String, java.util.Dictionary)
+	 */
+
+	public static void traceEvent(PrintStream printStream, String deviceId,
+			String serviceId, Dictionary events) {
+
+		StringBuffer sb = new StringBuffer();
+		sb.append("UPnPEvent:[deviceId=").append(deviceId);
+		sb.append(",serviceId=").append(serviceId);
+		sb.append(",[");
+		Enumeration enumeration = events.keys();
+		while (enumeration.hasMoreElements()) {
+			Object key = enumeration.nextElement();
+			Object newValue = events.get(key);
+			Object name;
+			if (key instanceof UPnPStateVariable) {
+				/*
+				 * 25.8 says: One or multiple events are passed as parameters to
+				 * the notifyUPnPEvent( String ,String,Dictionary) method. The
+				 * Dictionary object holds a pair of UpnPStateVariab le objects
+				 * that triggered the event and an Object for the new value of
+				 * the state variable.
+				 */
+				name = ((UPnPStateVariable) key).getName();
+			} else {
+				name = key;
+			}
+			sb.append("[\"").append(name).append(
+					"\"(" + newValue.getClass().getName() + "),");
+			sb.append(newValue).append("]");
+			if (enumeration.hasMoreElements())
+				sb.append(',');
+		}
+		sb.append("]]");
+		String msg = sb.toString();
+		printStream.println(msg);
+
+	}
+}
\ No newline at end of file

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventListenerUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventNotifier.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventNotifier.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventNotifier.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventNotifier.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,205 @@
+/*
+DomoWare OSGi UPnP Sample TV Device is an implementation of UPnP Device service to be used
with OSGi Framework
+Copyright (C) 2004  Matteo Demuru, Francesco Furfari, Stefano "Kismet" Lenzi
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You can contact us at:
+	{matte-d, sygent, kismet-sl} [at] users.sourceforge.net
+*/
+package org.apache.felix.upnp.devicegen.util;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Dictionary;
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.upnp.UPnPDevice;
+import org.osgi.service.upnp.UPnPEventListener;
+import org.osgi.service.upnp.UPnPService;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+/**
+ * UPnPEventNotifier.java 8-feb-2005
+ * @author Francesco Furfari
+ */
+public class UPnPEventNotifier implements PropertyChangeListener,ServiceListener {
+	BundleContext context;
+	UPnPDevice device;
+	UPnPService service;
+	EventSource source;
+	
+	Properties UPnPTargetListener;
+	String deviceId;
+	String serviceId;
+	Vector upnpListeners = new Vector();
+	
+	public UPnPEventNotifier(BundleContext context,UPnPDevice device,UPnPService service,EventSource
source){
+	    if ((context == null) || (device == null) || (service == null))
+	        throw new IllegalArgumentException("Illegal arguments in UPnPEventNotifier constructor.");
+		this.context=context;
+		this.device=device;
+		this.service=service;
+		this.source=source;
+		this.serviceId=service.getId();
+		setupUPnPListenerHouseKeeping(device);
+	}
+	
+	/**
+	 * @param deviceId
+	 */
+	private void setupUPnPListenerHouseKeeping(UPnPDevice device) {
+		UPnPTargetListener = new Properties();
+		Dictionary dict = device.getDescriptions(null);
+		deviceId = (String) dict.get(UPnPDevice.ID);
+		UPnPTargetListener.put(UPnPDevice.ID,deviceId);
+		UPnPTargetListener.put(UPnPService.ID,serviceId);
+		UPnPTargetListener.put(UPnPDevice.TYPE,dict.get(UPnPDevice.TYPE));
+		UPnPTargetListener.put(UPnPService.TYPE,service.getType());
+		String ANY_UPnPEventListener = "("+Constants.OBJECTCLASS+"="+UPnPEventListener.class.getName()+")";
+		
+		ServiceReference[] listeners = null; 
+		try {
+			listeners = context.getServiceReferences(UPnPEventListener.class.getName(),null);
+			if (listeners != null){
+				for (int i = 0;i<listeners.length;i++){
+					ServiceReference sr = listeners[i];
+					Filter filter = (Filter) sr.getProperty(UPnPEventListener.UPNP_FILTER);
+					if (filter == null) addNewListener(sr);
+					else {				
+						if (filter.match(UPnPTargetListener))
+							addNewListener(sr);
+					}
+				}
+			}
+		} catch (Exception ex) {
+			System.out.println(ex);
+		}
+		
+	    try {
+	    	String filter = ANY_UPnPEventListener;
+			context.addServiceListener(this,filter);
+		} catch (Exception ex) {
+			System.out.println(ex);
+		}
+		
+		if (source!=null){
+			UPnPStateVariable[] vars = service.getStateVariables();
+			if (vars != null){
+				for (int i=0;i<vars.length;i++)
+					if(vars[i].sendsEvents())
+						source.addPropertyChangeListener(vars[i].getName(),this);
+			}
+		}
+		
+		
+	}
+
+	/* (non-Javadoc)
+	 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+	 */
+	public void propertyChange(PropertyChangeEvent evt) {
+		Iterator list = upnpListeners.iterator();
+		String property = evt.getPropertyName();
+		Object value = evt.getNewValue();
+		//String valueString = value.toString();
+		final Properties events = new Properties();
+		//events.put(property,valueString);
+		events.put(property,value);
+		while (list.hasNext()){
+			final ServiceReference sr = (ServiceReference)list.next();
+			String[] props =sr.getPropertyKeys();
+			new Thread(null,null,"UPnPEventNotifier"){
+				public void run(){
+					try {
+					    UPnPEventListener listener = (UPnPEventListener) context.getService(sr);
+						listener.notifyUPnPEvent(deviceId,serviceId,events);
+						context.ungetService(sr);
+					} catch (Exception ex){
+						System.out.println("UPnPEventNotifier Err: " + ex);
+						System.out.println("UPnPEventNotifier bundleId: " + context.getBundle().getBundleId());
+						System.out.println("UPnPEventNotifier listener: " + context.getService(sr));
+						System.out.println("UPnPEventNotifier sr: " +sr);
+						ex.printStackTrace(System.out);
+					}
+				}
+			}.start();						
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
+	 */
+	public void serviceChanged(ServiceEvent e) {
+		switch(e.getType()){
+			case ServiceEvent.REGISTERED:{
+				ServiceReference sr = e.getServiceReference();
+				Filter filter = (Filter) sr.getProperty(UPnPEventListener.UPNP_FILTER);
+				if (filter == null) addNewListener(sr);
+				else {				
+					if (filter.match(UPnPTargetListener))
+						addNewListener(sr);
+				}
+			};break;
+			
+			case ServiceEvent.MODIFIED:{
+	               ServiceReference sr = e.getServiceReference();
+	               Filter filter = (Filter)	sr.getProperty(UPnPEventListener.UPNP_FILTER);
+	               removeListener(sr);
+	               if (filter == null)
+	                   addNewListener(sr);
+	               else {
+	                   if (filter.match(UPnPTargetListener))
+	                       addNewListener(sr);
+	               }
+	           };break; 
+			
+			case ServiceEvent.UNREGISTERING:{	
+				removeListener(e.getServiceReference());
+			};break;
+				
+		}
+		
+	}
+
+	private void removeListener(ServiceReference reference) {
+		upnpListeners.remove(reference);		
+	}
+
+	private void addNewListener(ServiceReference reference) {
+		upnpListeners.add(reference);	
+		UPnPStateVariable[] vars = service.getStateVariables();
+		if (vars != null){
+			for (int i=0;i<vars.length;i++)
+				if(vars[i].sendsEvents()){
+				    Object value = ((UPnPStateVariableDescriptor) vars[i]).getValue();
+				    propertyChange(new PropertyChangeEvent(this,vars[i].getName(),value,value));
+				}
+		}
+	}
+	
+	public void destroy(){
+		context.removeServiceListener(this);
+		upnpListeners.removeAllElements();
+	}
+}

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPEventNotifier.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPStateVariableDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPStateVariableDescriptor.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPStateVariableDescriptor.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPStateVariableDescriptor.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,33 @@
+/*
+DomoWare UPnP Base Driver is an implementation of the OSGi UnP Device Specifaction
+Copyright (C) 2005 Matteo Demuru, Francesco Furfari, Stefano "Kismet" Lenzi
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You can contact us at:
+	{matte-d, sygent, kismet-sl} [at] users.sourceforge.net
+*/
+
+package org.apache.felix.upnp.devicegen.util;
+
+import org.osgi.service.upnp.UPnPStateVariable;
+
+/**
+ * UPnPStateVariableDescriptor.java 22-gen-2005
+ * @author Francesco Furfari
+ */
+public interface UPnPStateVariableDescriptor extends UPnPStateVariable {
+    Object getValue();
+}

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPStateVariableDescriptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPSubscriber.java
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPSubscriber.java?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPSubscriber.java
(added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPSubscriber.java
Mon Apr 30 16:15:05 2007
@@ -0,0 +1,142 @@
+/*
+DomoWare OSGi UPnP Sample TV Device is an implementation of UPnP Device service to be used
with OSGi Framework
+Copyright (C) 2004  Matteo Demuru, Francesco Furfari, Stefano "Kismet" Lenzi
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You can contact us at:
+	{matte-d, sygent, kismet-sl} [at] users.sourceforge.net
+*/
+package org.apache.felix.upnp.devicegen.util;
+
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.upnp.UPnPDevice;
+import org.osgi.service.upnp.UPnPEventListener;
+import org.osgi.service.upnp.UPnPService;
+
+/**
+ * UPnPSubscriber.java 8-feb-2005
+ * @author Francesco Furfari
+ */
+public class UPnPSubscriber {
+	private BundleContext context;
+	private UPnPEventListener listener;
+	private HashMap hash;
+	
+	private class Subscription implements UPnPEventListener{
+	    ServiceRegistration registration;
+	    
+	    Subscription(String keys){
+	 		try {
+				Filter filter = context.createFilter(keys);
+				Properties props = new Properties();
+				props.put(UPnPEventListener.UPNP_FILTER, filter);
+				registration = context.registerService(UPnPEventListener.class.getName(), this, props);
+			}catch (Exception ex){
+				System.out.println(ex);
+			}
+	    }
+	    
+	    public void unsubscribe(){
+			registration.unregister();
+	    }
+	    
+        public void notifyUPnPEvent(String arg0, String arg1, Dictionary arg2) {
+            listener.notifyUPnPEvent( arg0,  arg1,  arg2);
+        }
+	}
+	
+	
+	public UPnPSubscriber(BundleContext context,UPnPEventListener listener){
+	    if ((context == null)|| (listener == null))
+	        throw new IllegalArgumentException("Illegal arguments in UPnPSubscriber constructor.");
+		this.context = context;
+		this.listener = listener;
+		hash = new HashMap();
+	}
+
+	public void subscribe(String filter){
+		if (hash.get(filter) == null){
+		    hash.put(filter, new Subscription(filter));
+		}	
+	}
+	
+	public void unsubscribe(String filter){
+		if (hash.containsKey(filter)) {
+		    Subscription subscription = (Subscription) hash.get(filter);
+		    subscription.unsubscribe();
+			hash.remove(filter);
+		}
+	}
+	
+	public void unsubscribeAll(){
+	    Iterator list = hash.entrySet().iterator();
+	    while (list.hasNext()){		        
+	        Map.Entry entry = (Map.Entry) list.next();
+	        Subscription subcription = (Subscription) entry.getValue();
+	        subcription.unsubscribe();
+		    list.remove();
+	    }
+	}
+
+	public String subscribeServiceIdOf(String deviceId, String serviceId){
+		String keys = "(&(" + UPnPDevice.ID + "="+ deviceId + ")(" + UPnPService.ID + "=" +
serviceId + "))";
+		subscribe(keys);
+		return keys;
+	}
+	
+	public String subscribeServiceTypeOf(String deviceId, String serviceType){
+		String keys = "(&(" + UPnPDevice.ID + "="+ deviceId + ")(" + UPnPService.TYPE + "="
+ serviceType + "))";
+		subscribe(keys);
+		return keys;
+	}
+	
+	public String subscribeEveryServiceType(String deviceType, String serviceType){
+		String keys = "(&(" + UPnPDevice.TYPE + "="+ deviceType + ")(" + UPnPService.TYPE +
"=" + serviceType + "))";
+		subscribe(keys);
+		return keys;
+	}
+	
+	public String subscribeAllServicesOf(String deviceId){
+		String keys = "(" + UPnPDevice.ID + "="+ deviceId + ")";
+		subscribe(keys);
+		return keys;
+	}
+	
+	public String subscribeEveryDeviceTypeServices(String deviceType){
+		String keys = "(" + UPnPDevice.TYPE + "="+ deviceType + ")";
+		subscribe(keys);
+		return keys;
+	}
+	
+	
+	public void unsubscribeServiceIdOf(String deviceId, String serviceId){
+		String keys = "(&(" + UPnPDevice.ID + "="+ deviceId + ")(" + UPnPService.ID + "=" +
serviceId + "))";
+		unsubscribe(keys);
+	}
+	
+	public void unsubscribeAllServicesOf(String deviceId){
+		String keys = "(" + UPnPDevice.ID + "="+ deviceId + ")";
+		unsubscribe(keys);
+	}
+}
\ No newline at end of file

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/java/org/apache/felix/upnp/devicegen/util/UPnPSubscriber.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Display.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Display.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Display.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/MediaPlayer.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/MediaPlayer.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/MediaPlayer.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Printer.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Printer.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Printer.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Thumbs.db
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Thumbs.db?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Thumbs.db
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Webcam.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Webcam.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/Webcam.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/bunny.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/bunny.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/bunny.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/compass.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/compass.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/compass.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/device.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/device.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/device.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/igd.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/igd.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/igd.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/light.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/light.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/light.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd25.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd25.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/ogd25.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/secure.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/secure.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/secure.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/thermostat.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/thermostat.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/thermostat.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/tv.png
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/tv.png?view=auto&rev=533875
==============================================================================
Binary file - no diff available.

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/src/main/resources/icon/tv.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/felix/sandbox/donsez/upnp.devicegen/upnp.devicegen.txt
URL: http://svn.apache.org/viewvc/incubator/felix/sandbox/donsez/upnp.devicegen/upnp.devicegen.txt?view=auto&rev=533875
==============================================================================
--- incubator/felix/sandbox/donsez/upnp.devicegen/upnp.devicegen.txt (added)
+++ incubator/felix/sandbox/donsez/upnp.devicegen/upnp.devicegen.txt Mon Apr 30 16:15:05 2007
@@ -0,0 +1,9 @@
+# script to launch upnp.devicegen
+
+
+install file:E:\Felix-Dist\felix-0.8.0-repo\trunk\javax.servlet\target\javax.servlet-0.9.0-incubator-SNAPSHOT.jar
+install file:E:\Felix-Dist\felix-0.8.0-repo\trunk\org.osgi.compendium\target\org.osgi.compendium-0.9.0-incubator-SNAPSHOT.jar
+
+start file:E:\Felix-Dist\felix-0.8.0-repo\trunk\upnp.extra\target\org.apache.felix.upnp.extra-0.1.0-incubator-SNAPSHOT.jar
+start file:E:\Felix-Dist\felix-0.8.0-repo\trunk\upnp.basedriver\target\org.apache.felix.upnp.basedriver-0.1.0-incubator-SNAPSHOT.jar
+start file:F:\osgi\felix-sandbox-donsez\upnp.devicegen\target\org.apache.felix.upnp.devicegen-0.9.0-incubator-SNAPSHOT.jar
\ No newline at end of file

Propchange: incubator/felix/sandbox/donsez/upnp.devicegen/upnp.devicegen.txt
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message