Author: lenzi
Date: Thu Jan  3 08:29:44 2008
New Revision: 608549

URL: http://svn.apache.org/viewvc?rev=608549&view=rev
Log:
Refined svn:ignore properties

POM modified in order to compile bundle as default

Fixed problem in UPnPEventNotifier which was sending event containg pair 
<String name,String value> instead of <UPnPStateVariable, Object value> see 
OSGi Compendium R4 pag. 257
ExporterUPnPEventListener was aspecting pair <String name, Object value> 
instead of <UPnPStateVariable, Object value> so I have changed it to be 
complaint to OSGi specification but also legacy compatible
Fixed Service leak in UPnP Base Driver see class MyCtrlPoint
Fixed compilation issue with Java 6 in
TimeStateVariable was returing wrong value with metho getCurrentValue() and was 
not compatible with Java6
SetTimeAction was not updating the time and it was not notifing the change of 
the UPnP statevariable
ClockDevice was badly notifing UPnP state variable changeing with pair <String 
name,String value> instead of <UPnPStateVariable, Object value>  
StatusStateVariable was not compatible with Java6

Modified:
    felix/trunk/upnp/   (props changed)
    
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ExporterUPnPEventListener.java
    
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
    felix/trunk/upnp/extra/   (props changed)
    
felix/trunk/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPEventNotifier.java
    felix/trunk/upnp/pom.xml
    
felix/trunk/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
    
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
    
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/SetTimeAction.java
    
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/TimeStateVariable.java
    felix/trunk/upnp/samples/pom.xml
    felix/trunk/upnp/tester/   (props changed)

Propchange: felix/trunk/upnp/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jan  3 08:29:44 2008
@@ -0,0 +1,4 @@
+.project
+.classpath
+bin
+.settings

Modified: 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ExporterUPnPEventListener.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ExporterUPnPEventListener.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ExporterUPnPEventListener.java
 (original)
+++ 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ExporterUPnPEventListener.java
 Thu Jan  3 08:29:44 2008
@@ -29,7 +29,9 @@
 import org.cybergarage.upnp.StateVariable;
 
 import org.osgi.service.upnp.UPnPEventListener;
+import org.osgi.service.upnp.UPnPStateVariable;
 
+import org.apache.felix.upnp.basedriver.Activator;
 import org.apache.felix.upnp.basedriver.util.Converter;
 
 /* 
@@ -47,23 +49,42 @@
         * @see 
org.osgi.service.upnp.UPnPEventListener#notifyUPnPEvent(java.lang.String, 
java.lang.String, java.util.Dictionary)
         */
        public void notifyUPnPEvent(String deviceId, String 
serviceId,Dictionary events) {
-               Device dAux = null;
-               if(d.getUDN().equals(deviceId)){
-                       dAux=d;
-               }else{
-                       dAux= d.getDevice(deviceId);
-               }
-               Service s = dAux.getService(serviceId);
+        Device dAux = null;
+        if(d.getUDN().equals(deviceId)){
+            dAux=d;
+        }else{
+            dAux= d.getDevice(deviceId);
+        }
+        Service s = dAux.getService(serviceId);
                // fix 2/9/2004 francesco 
                Enumeration e = events.keys();
-               StateVariable sv;
                while (e.hasMoreElements()) {
-                       String name = (String) e.nextElement();
-                       sv=s.getStateVariable(name);
-                       //sv.setValue((String) events.get(name));
+            StateVariable sv;
+            String dataType;
+            String name;
+            //TODO Keep for compatibility? The OSGi compendium R4 pag. 257 
requires pair containg <UPnPStateVariable,Object value> instead of <String 
name,Object value>
+            Object key = e.nextElement();
+            if(key instanceof String){
+                name=(String) key;
+                sv=s.getStateVariable(name);
+                dataType=sv.getDataType();
+            }else if(key instanceof UPnPStateVariable){
+                UPnPStateVariable variable = (UPnPStateVariable) key;
+                name=variable.getName();
+                dataType=variable.getUPnPDataType();
+                sv=s.getStateVariable(name);
+            }else{
+                Activator.logger.ERROR(deviceId + " notified the change in the 
StateVariable of " 
+                                       + serviceId + " but the key Java type 
contained in the Dictiories was " 
+                                       + key.getClass().getName() + " instead 
of " + UPnPStateVariable.class.getName()
+                                       + " as specified by OSGi Compendium 
Release 4 pag. 257");
+                continue;
+            }
+            
                        try {
-                               
sv.setValue(Converter.toString(events.get(name),sv.getDataType()));
+                               
sv.setValue(Converter.toString(events.get(key),dataType));
                        } catch (Exception ignored) {
+                Activator.logger.ERROR("UPnP Base Driver Exporter: error 
converting datatype while sending event, exception message 
follows:"+ignored.getMessage());
                        }
                }
        }

Modified: 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
 (original)
+++ 
felix/trunk/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
 Thu Jan  3 08:29:44 2008
@@ -485,7 +485,6 @@
                                                dic.put(UPnPDevice.ID, 
device.getDescriptions(null).get(UPnPDevice.UDN));
                                                dic.put(UPnPDevice.TYPE, 
device.getDescriptions(null).get(UPnPDevice.TYPE));
                                                UPnPService[] services = 
device.getServices();
-                                               //TODO do I have to do the 
unget of UPnPDevice??
                                                if (services != null) {
                                                        for (int j = 0; j < 
services.length; j++) {
                                                                
dic.put(UPnPService.ID, services[j].getId());
@@ -508,6 +507,7 @@
                                                                }
                                                        }
                                                }
+                        context.ungetService(devicesRefs[i]);
                                        }
                                }
                        } else {/* obj==null (interested in all devices) */
@@ -526,7 +526,6 @@
                                                UPnPDevice device = 
(UPnPDevice) context
                                                                
.getService(devicesRefs[i]);
                                                UPnPService[] services = 
device.getServices();
-                                               //do I have to do the unget of 
UPnPDevice??
                                                if (services != null) {
                                                        for (int j = 0; j < 
services.length; j++) {
                                                                
UPnPStateVariable[] stateVars = services[j]
@@ -548,6 +547,7 @@
                                                                }
                                                        }
                                                }
+                        context.ungetService(devicesRefs[i]);
                                        }
                                }
                        }
@@ -584,7 +584,6 @@
                                                                
.get(UPnPDevice.TYPE));
                                                UPnPService[] services = 
device.getServices();
 
-                                               //do I have to do the unget of 
UPnPDevice??
                                                if (services != null) {
                                                        for (int j = 0; j < 
services.length; j++) {
                                                                
dic.put(UPnPService.ID, services[j].getId());
@@ -611,6 +610,7 @@
                                                                }
                                                        }//for services
                                                }//services ==null
+                                               
context.ungetService(devicesRefs[i]);
                                        }//for devicesRefs
                                        ListenerModified msg = new 
ListenerModified(newServices,
                                                        listener);
@@ -634,7 +634,6 @@
                                                UPnPDevice device = 
(UPnPDevice) context
                                                                
.getService(devicesRefs[i]);
                                                UPnPService[] services = 
device.getServices();
-                                               //do I have to do the unget of 
UPnPDevice??
                                                if (services != null) {
                                                        for (int j = 0; j < 
services.length; j++) {
                                                                
UPnPStateVariable[] stateVars = services[j]
@@ -653,6 +652,7 @@
                                                                
}//hasEventedvars
                                                        }//for services
                                                }//services !=null
+                        context.ungetService(devicesRefs[i]);
                                        }//for devicesRefs
                                        subQueue
                                                        .enqueue(new 
ListenerModified(newServices, listener));

Propchange: felix/trunk/upnp/extra/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Jan  3 08:29:44 2008
@@ -1,3 +1,4 @@
+.checkstyle
 classes
 target
 *.log

Modified: 
felix/trunk/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPEventNotifier.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPEventNotifier.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPEventNotifier.java
 (original)
+++ 
felix/trunk/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPEventNotifier.java
 Thu Jan  3 08:29:44 2008
@@ -26,6 +26,7 @@
 import java.util.Properties;
 import java.util.Vector;
 
+import org.apache.felix.upnp.basedriver.Activator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
@@ -172,12 +173,19 @@
         * @see 
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
         */
        public void propertyChange(PropertyChangeEvent evt) {
-               
-               String property = evt.getPropertyName();
+        UPnPStateVariable variable;
+        String property = evt.getPropertyName();
+        try{
+            variable = (UPnPStateVariable) evt.getSource();
+        }catch(ClassCastException ex){
+            Activator.logger.ERROR("Trying to nofied the change of a 
UPnPStateVariable but event source Java type is "
+                                   +evt.getSource().getClass().getName()+" 
instead of "+UPnPStateVariable.class.getName()
+                                   +" so "+property+"it's been SKIPPED");
+            return;
+        }
                Object value = evt.getNewValue();
-               String valueString = value.toString();
-               Properties events = new Properties();
-               events.put(property,valueString);
+               Properties events = new Properties();           
+        events.put(variable,value);
                doNotify(events);
        }
 

Modified: felix/trunk/upnp/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/pom.xml?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- felix/trunk/upnp/pom.xml (original)
+++ felix/trunk/upnp/pom.xml Thu Jan  3 08:29:44 2008
@@ -45,5 +45,19 @@
           <module>samples</module>
       </modules>
     </profile>
+    <profile>
+      <id>default</id>
+      <activation>
+        <property>
+          <name>!packaging</name>
+        </property>
+      </activation>
+      <modules>
+          <module>extra</module>
+          <module>basedriver</module>
+          <module>tester</module>
+          <module>samples</module>
+      </modules>
+    </profile>
   </profiles>
 </project>

Modified: 
felix/trunk/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
 (original)
+++ 
felix/trunk/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
 Thu Jan  3 08:29:44 2008
@@ -97,6 +97,6 @@
        }
 
        public Object getCurrentValue() {
-               return Boolean.valueOf(model.getStatus());
+               return new Boolean(model.getStatus());
        }
 }

Modified: 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
 (original)
+++ 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
 Thu Jan  3 08:29:44 2008
@@ -21,6 +21,7 @@
 
 
 import java.beans.PropertyChangeEvent;
+import java.util.Calendar;
 import java.util.Dictionary;
 import java.util.Properties;
 
@@ -28,6 +29,7 @@
 import org.osgi.service.upnp.UPnPDevice;
 import org.osgi.service.upnp.UPnPIcon;
 import org.osgi.service.upnp.UPnPService;
+import org.osgi.service.upnp.UPnPStateVariable;
 
 import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
 
@@ -38,7 +40,7 @@
        private TimerService timerService;
        private UPnPService[] services;
        private Dictionary dictionary;
-       UPnPEventNotifier notifier;
+       public static UPnPEventNotifier notifier = null;
        
        public ClockDevice(BundleContext context) {
                this.context=context;
@@ -130,8 +132,10 @@
         */
        public void update() {
                Clock clock = Clock.getInstance();
-               String timeStr = clock.toString();
-               notifier.propertyChange(new 
PropertyChangeEvent(this,"Time","",timeStr));
+               Calendar cal = clock.getCalendar();
+        long time = cal.getTime().getTime();
+        UPnPStateVariable variable =  timerService.getStateVariable("Time");
+               notifier.propertyChange(new 
PropertyChangeEvent(variable,"Time",new Long(time-1000),new Long(time)));
        }
        
 }

Modified: 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/SetTimeAction.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/SetTimeAction.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/SetTimeAction.java
 (original)
+++ 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/SetTimeAction.java
 Thu Jan  3 08:29:44 2008
@@ -19,6 +19,7 @@
 
 package org.apache.felix.upnp.sample.clock;
 
+import java.beans.PropertyChangeEvent;
 import java.util.Dictionary;
 
 import org.osgi.service.upnp.UPnPAction;
@@ -85,9 +86,10 @@
         * @see org.osgi.service.upnp.UPnPAction#invoke(java.util.Dictionary)
         */
        public Dictionary invoke(Dictionary args) throws Exception {
-               //Date value = (Date) args.get(NEW_TIME_VALUE);
-               long l = ((Long) args.get(NEW_TIME_VALUE)).longValue();
-               ((TimeStateVariable) time).setCurrentTime(l);
+               Long newValue = (Long) args.get(NEW_TIME_VALUE);
+        Long oldValue = (Long) ((TimeStateVariable) time).getCurrentValue();
+               ((TimeStateVariable) time).setCurrentTime(newValue.longValue());
+        ClockDevice.notifier.propertyChange(new 
PropertyChangeEvent(time,"Time",oldValue,newValue));        
                args.remove(NEW_TIME_VALUE);
                args.put(NEW_RESULT_VALUE,((TimeStateVariable) 
time).getCurrentTime());
                return args;

Modified: 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/TimeStateVariable.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/TimeStateVariable.java?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/TimeStateVariable.java
 (original)
+++ 
felix/trunk/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/TimeStateVariable.java
 Thu Jan  3 08:29:44 2008
@@ -18,6 +18,8 @@
  */
 
 package org.apache.felix.upnp.sample.clock;
+import java.util.Date;
+
 import org.osgi.service.upnp.UPnPLocalStateVariable;
 
 public class TimeStateVariable implements UPnPLocalStateVariable{
@@ -98,11 +100,11 @@
                return clock.getTimeString();
        }
        
-       public void setCurrentTime(long milliseconds){
-               clock.getCalendar().setTimeInMillis(milliseconds);
+       public void setCurrentTime(long milliseconds){        
+               clock.getCalendar().setTime(new Date(milliseconds));
        }
 
        public Object getCurrentValue() {
-               return getCurrentTime();
+               return new Long(clock.getCalendar().getTime().getTime());
        }
 }

Modified: felix/trunk/upnp/samples/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/upnp/samples/pom.xml?rev=608549&r1=608548&r2=608549&view=diff
==============================================================================
--- felix/trunk/upnp/samples/pom.xml (original)
+++ felix/trunk/upnp/samples/pom.xml Thu Jan  3 08:29:44 2008
@@ -44,5 +44,18 @@
           <module>tv</module>
       </modules>
     </profile>
+    <profile>
+      <id>default</id>
+      <activation>
+        <property>
+          <name>!packaging</name>
+        </property>
+      </activation>
+      <modules>
+          <module>binarylight</module>
+          <module>clock</module>
+          <module>tv</module>
+      </modules>
+    </profile>
   </profiles>
 </project>

Propchange: felix/trunk/upnp/tester/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Jan  3 08:29:44 2008
@@ -1,3 +1,4 @@
+.checkstyle
 classes
 target
 *.log


Reply via email to