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


Reply via email to