Added svn properties
Fixed test runtime enviroment boostrap
Fixed dependecy in tester artifact
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@674879 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/upnp/samples/tv/pom.xml b/upnp/samples/tv/pom.xml
index 8e546c9..2386e4f 100644
--- a/upnp/samples/tv/pom.xml
+++ b/upnp/samples/tv/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
@@ -17,60 +17,60 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <artifactId>felix</artifactId>
- <groupId>org.apache.felix</groupId>
- <version>1.0.2</version>
- <relativePath>../../../pom/pom.xml</relativePath>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.upnp.sample.tv</artifactId>
- <packaging>bundle</packaging>
- <name>Apache Felix UPnP Sample TV</name>
- <version>0.2.0-SNAPSHOT</version>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>felix</artifactId>
+ <groupId>org.apache.felix</groupId>
+ <version>1.0.2</version>
+ <relativePath>../../../pom/pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.upnp.sample.tv</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache Felix UPnP Sample TV</name>
+ <version>0.2.0-SNAPSHOT</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-Name>${pom.name}</Bundle-Name>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-Name>${pom.name}</Bundle-Name>
<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
- <Bundle-Author>Matteo Demuru <demuru@apache.org>,Francesco Furfari <furfari@apache.org>,Stefano "Kismet" Lenzi <lenzi@apache.org></Bundle-Author>
- <Bundle-Description>CyberLink Tv clone to test UPnPBase driver</Bundle-Description>
- <Bundle-SymbolicName>org.apache.felix.upnp.sample.tv</Bundle-SymbolicName>
- <Bundle-Activator>org.apache.felix.upnp.sample.tv.Activator</Bundle-Activator>
- <Private-Package>org.apache.felix.upnp.sample.tv.*</Private-Package>
- <Import-Package>*</Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>${pom.groupId}</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>${pom.groupId}</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <Bundle-Author>Matteo Demuru <demuru@apache.org>,Francesco Furfari <furfari@apache.org>,Stefano "Kismet" Lenzi <lenzi@apache.org></Bundle-Author>
+ <Bundle-Description>CyberLink Tv clone to test UPnPBase driver</Bundle-Description>
+ <Bundle-SymbolicName>org.apache.felix.upnp.sample.tv</Bundle-SymbolicName>
+ <Bundle-Activator>org.apache.felix.upnp.sample.tv.Activator</Bundle-Activator>
+ <Private-Package>org.apache.felix.upnp.sample.tv.*</Private-Package>
+ <Import-Package>*</Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
<version>1.0.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.upnp.extra</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-</project>
-
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.upnp.extra</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
+
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/GetPowerAction.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/GetPowerAction.java
index 3c786df..5106e1d 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/GetPowerAction.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/GetPowerAction.java
@@ -1,85 +1,85 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import org.osgi.service.upnp.UPnPAction;
-import org.osgi.service.upnp.UPnPStateVariable;
-
-public class GetPowerAction implements UPnPAction {
-
- final private String NAME = "GetPower";
- final private String RESULT_STATUS = "Power";
- final private String[] OUT_ARG_NAMES = new String[]{RESULT_STATUS};
- private PowerStateVariable power;
-
-
- public GetPowerAction(PowerStateVariable power){
- this.power = power;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getName()
- */
- public String getName() {
- return NAME;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getReturnArgumentName()
- */
- public String getReturnArgumentName() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getInputArgumentNames()
- */
- public String[] getInputArgumentNames() {
-
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getOutputArgumentNames()
- */
- public String[] getOutputArgumentNames() {
- return OUT_ARG_NAMES;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getStateVariable(java.lang.String)
- */
- public UPnPStateVariable getStateVariable(String argumentName) {
- return power;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#invoke(java.util.Dictionary)
- */
- public Dictionary invoke(Dictionary args) throws Exception {
- Boolean value = power.getCurrentPower();
- Hashtable result = new Hashtable();
- result.put(RESULT_STATUS,value);
- return result;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.service.upnp.UPnPAction;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+public class GetPowerAction implements UPnPAction {
+
+ final private String NAME = "GetPower";
+ final private String RESULT_STATUS = "Power";
+ final private String[] OUT_ARG_NAMES = new String[]{RESULT_STATUS};
+ private PowerStateVariable power;
+
+
+ public GetPowerAction(PowerStateVariable power){
+ this.power = power;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getName()
+ */
+ public String getName() {
+ return NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getReturnArgumentName()
+ */
+ public String getReturnArgumentName() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getInputArgumentNames()
+ */
+ public String[] getInputArgumentNames() {
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getOutputArgumentNames()
+ */
+ public String[] getOutputArgumentNames() {
+ return OUT_ARG_NAMES;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getStateVariable(java.lang.String)
+ */
+ public UPnPStateVariable getStateVariable(String argumentName) {
+ return power;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#invoke(java.util.Dictionary)
+ */
+ public Dictionary invoke(Dictionary args) throws Exception {
+ Boolean value = power.getCurrentPower();
+ Hashtable result = new Hashtable();
+ result.put(RESULT_STATUS,value);
+ return result;
+ }
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerService.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerService.java
index 347d9fc..2352dde 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerService.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerService.java
@@ -1,103 +1,103 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.util.HashMap;
-
-import org.osgi.service.upnp.UPnPAction;
-import org.osgi.service.upnp.UPnPService;
-import org.osgi.service.upnp.UPnPStateVariable;
-
-public class PowerService implements UPnPService {
- final private String SERVICE_ID = "urn:schemas-upnp-org:serviceId:power:1";
- final private String SERVICE_TYPE = "urn:schemas-upnp-org:service:power:1";
- final private String VERSION ="1";
-
- private PowerStateVariable power;
- private ResultStateVariable result;
- private UPnPStateVariable[] states;
- private HashMap actions = new HashMap();
-
-
- public PowerService(){
- power = new PowerStateVariable();
- result = new ResultStateVariable();
- this.states = new UPnPStateVariable[]{power,result};
-
- UPnPAction setPower= new SetPowerAction(power,result);
- UPnPAction getPower = new GetPowerAction(power);
- actions.put(setPower.getName(),setPower);
- actions.put(getPower.getName(),getPower);
-
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getId()
- */
- public String getId() {
- return SERVICE_ID;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getType()
- */
- public String getType() {
- return SERVICE_TYPE;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getVersion()
- */
- public String getVersion() {
- return VERSION;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getAction(java.lang.String)
- */
- public UPnPAction getAction(String name) {
- return (UPnPAction)actions.get(name);
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getActions()
- */
- public UPnPAction[] getActions() {
- return (UPnPAction[])(actions.values()).toArray(new UPnPAction[]{});
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getStateVariables()
- */
- public UPnPStateVariable[] getStateVariables() {
- return states;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPService#getStateVariable(java.lang.String)
- */
- public UPnPStateVariable getStateVariable(String name) {
- if (name.equals("Power"))
- return power;
- else if (name.equals("Result"))
- return result;
- else return null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.util.HashMap;
+
+import org.osgi.service.upnp.UPnPAction;
+import org.osgi.service.upnp.UPnPService;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+public class PowerService implements UPnPService {
+ final private String SERVICE_ID = "urn:schemas-upnp-org:serviceId:power:1";
+ final private String SERVICE_TYPE = "urn:schemas-upnp-org:service:power:1";
+ final private String VERSION ="1";
+
+ private PowerStateVariable power;
+ private ResultStateVariable result;
+ private UPnPStateVariable[] states;
+ private HashMap actions = new HashMap();
+
+
+ public PowerService(){
+ power = new PowerStateVariable();
+ result = new ResultStateVariable();
+ this.states = new UPnPStateVariable[]{power,result};
+
+ UPnPAction setPower= new SetPowerAction(power,result);
+ UPnPAction getPower = new GetPowerAction(power);
+ actions.put(setPower.getName(),setPower);
+ actions.put(getPower.getName(),getPower);
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getId()
+ */
+ public String getId() {
+ return SERVICE_ID;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getType()
+ */
+ public String getType() {
+ return SERVICE_TYPE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getVersion()
+ */
+ public String getVersion() {
+ return VERSION;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getAction(java.lang.String)
+ */
+ public UPnPAction getAction(String name) {
+ return (UPnPAction)actions.get(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getActions()
+ */
+ public UPnPAction[] getActions() {
+ return (UPnPAction[])(actions.values()).toArray(new UPnPAction[]{});
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getStateVariables()
+ */
+ public UPnPStateVariable[] getStateVariables() {
+ return states;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPService#getStateVariable(java.lang.String)
+ */
+ public UPnPStateVariable getStateVariable(String name) {
+ if (name.equals("Power"))
+ return power;
+ else if (name.equals("Result"))
+ return result;
+ else return null;
+ }
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerStateVariable.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerStateVariable.java
index ef66bc0..1507bb8 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerStateVariable.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/PowerStateVariable.java
@@ -1,120 +1,120 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-import java.beans.PropertyChangeEvent;
-
-import org.osgi.service.upnp.UPnPLocalStateVariable;
-
-import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
-
-public class PowerStateVariable implements UPnPLocalStateVariable {
-
- final private String NAME = "Power";
- final private Boolean DEFAULT_VALUE = Boolean.FALSE;
- private UPnPEventNotifier notifier;
- private Boolean power = Boolean.FALSE;
-
- public PowerStateVariable(){
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getName()
- */
- public String getName() {
- return NAME;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
- */
- public Class getJavaDataType() {
- return Boolean.class;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
- */
- public String getUPnPDataType() {
- return TYPE_BOOLEAN;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getDefaultValue()
- */
- public Object getDefaultValue() {
- return DEFAULT_VALUE;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getAllowedValues()
- */
- public String[] getAllowedValues() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getMinimum()
- */
- public Number getMinimum() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getMaximum()
- */
- public Number getMaximum() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getStep()
- */
- public Number getStep() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
- */
- public boolean sendsEvents() {
- return true;
- }
-
- public Boolean getCurrentPower(){
- return power;
- }
-
- public void setPower(Boolean value){
- if (!value.equals(power)) {
- Boolean oldValue = power;
- power = value;
- if (notifier != null)
- notifier.propertyChange(new PropertyChangeEvent(this,"Power",oldValue,value));
- }
- }
-
- public void setNotifier(UPnPEventNotifier notifier){
- this.notifier = notifier;
- }
-
- public Object getCurrentValue() {
- return power;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+import java.beans.PropertyChangeEvent;
+
+import org.osgi.service.upnp.UPnPLocalStateVariable;
+
+import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
+
+public class PowerStateVariable implements UPnPLocalStateVariable {
+
+ final private String NAME = "Power";
+ final private Boolean DEFAULT_VALUE = Boolean.FALSE;
+ private UPnPEventNotifier notifier;
+ private Boolean power = Boolean.FALSE;
+
+ public PowerStateVariable(){
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getName()
+ */
+ public String getName() {
+ return NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
+ */
+ public Class getJavaDataType() {
+ return Boolean.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
+ */
+ public String getUPnPDataType() {
+ return TYPE_BOOLEAN;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getDefaultValue()
+ */
+ public Object getDefaultValue() {
+ return DEFAULT_VALUE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getAllowedValues()
+ */
+ public String[] getAllowedValues() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getMinimum()
+ */
+ public Number getMinimum() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getMaximum()
+ */
+ public Number getMaximum() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getStep()
+ */
+ public Number getStep() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
+ */
+ public boolean sendsEvents() {
+ return true;
+ }
+
+ public Boolean getCurrentPower(){
+ return power;
+ }
+
+ public void setPower(Boolean value){
+ if (!value.equals(power)) {
+ Boolean oldValue = power;
+ power = value;
+ if (notifier != null)
+ notifier.propertyChange(new PropertyChangeEvent(this,"Power",oldValue,value));
+ }
+ }
+
+ public void setNotifier(UPnPEventNotifier notifier){
+ this.notifier = notifier;
+ }
+
+ public Object getCurrentValue() {
+ return power;
+ }
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/ResultStateVariable.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/ResultStateVariable.java
index a50ef03..b64ac28 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/ResultStateVariable.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/ResultStateVariable.java
@@ -1,95 +1,95 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-import org.osgi.service.upnp.UPnPStateVariable;
-
-public class ResultStateVariable implements UPnPStateVariable{
-
- final private String NAME = "Result";
- final private Boolean DEFAULT_VALUE = Boolean.FALSE;
-
-
- public ResultStateVariable(){
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getName()
- */
- public String getName() {
- return NAME;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
- */
- public Class getJavaDataType() {
- return Boolean.class;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
- */
- public String getUPnPDataType() {
- return TYPE_BOOLEAN;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getDefaultValue()
- */
- public Object getDefaultValue() {
- return DEFAULT_VALUE;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getAllowedValues()
- */
- public String[] getAllowedValues() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getMinimum()
- */
- public Number getMinimum() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getMaximum()
- */
- public Number getMaximum() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#getStep()
- */
- public Number getStep() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
- */
- public boolean sendsEvents() {
- return false;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+public class ResultStateVariable implements UPnPStateVariable{
+
+ final private String NAME = "Result";
+ final private Boolean DEFAULT_VALUE = Boolean.FALSE;
+
+
+ public ResultStateVariable(){
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getName()
+ */
+ public String getName() {
+ return NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
+ */
+ public Class getJavaDataType() {
+ return Boolean.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
+ */
+ public String getUPnPDataType() {
+ return TYPE_BOOLEAN;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getDefaultValue()
+ */
+ public Object getDefaultValue() {
+ return DEFAULT_VALUE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getAllowedValues()
+ */
+ public String[] getAllowedValues() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getMinimum()
+ */
+ public Number getMinimum() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getMaximum()
+ */
+ public Number getMaximum() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#getStep()
+ */
+ public Number getStep() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
+ */
+ public boolean sendsEvents() {
+ return false;
+ }
+
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/SetPowerAction.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/SetPowerAction.java
index 30d67ff..909bdc8 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/SetPowerAction.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/SetPowerAction.java
@@ -1,91 +1,91 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import org.osgi.service.upnp.UPnPAction;
-import org.osgi.service.upnp.UPnPStateVariable;
-
-public class SetPowerAction implements UPnPAction {
-
- final private String NAME = "SetPower";
- final private String NEW_TIME_VALUE = "Power";
- final private String NEW_RESULT_VALUE = "Result";
- final private String[] IN_ARG_NAMES = new String[]{NEW_TIME_VALUE};
- final private String[] OUT_ARG_NAMES = new String[]{NEW_RESULT_VALUE};
- private PowerStateVariable power;
- private ResultStateVariable result;
-
-
- public SetPowerAction(PowerStateVariable power,ResultStateVariable result){
- this.power = power;
- this.result=result;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getName()
- */
- public String getName() {
- return NAME;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getReturnArgumentName()
- */
- public String getReturnArgumentName() {
- return "Result";
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getInputArgumentNames()
- */
- public String[] getInputArgumentNames() {
- return IN_ARG_NAMES;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getOutputArgumentNames()
- */
- public String[] getOutputArgumentNames() {
- return OUT_ARG_NAMES;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#getStateVariable(java.lang.String)
- */
- public UPnPStateVariable getStateVariable(String argumentName) {
- if (argumentName.equals("Power")) return power;
- else if (argumentName.equals("Result")) return result;
- else return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPAction#invoke(java.util.Dictionary)
- */
- public Dictionary invoke(Dictionary args) throws Exception {
- Boolean value = (Boolean) args.get(NEW_TIME_VALUE);
- power.setPower(value);
- Hashtable result = new Hashtable();
- result.put(NEW_RESULT_VALUE,Boolean.TRUE);
- return result;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.service.upnp.UPnPAction;
+import org.osgi.service.upnp.UPnPStateVariable;
+
+public class SetPowerAction implements UPnPAction {
+
+ final private String NAME = "SetPower";
+ final private String NEW_TIME_VALUE = "Power";
+ final private String NEW_RESULT_VALUE = "Result";
+ final private String[] IN_ARG_NAMES = new String[]{NEW_TIME_VALUE};
+ final private String[] OUT_ARG_NAMES = new String[]{NEW_RESULT_VALUE};
+ private PowerStateVariable power;
+ private ResultStateVariable result;
+
+
+ public SetPowerAction(PowerStateVariable power,ResultStateVariable result){
+ this.power = power;
+ this.result=result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getName()
+ */
+ public String getName() {
+ return NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getReturnArgumentName()
+ */
+ public String getReturnArgumentName() {
+ return "Result";
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getInputArgumentNames()
+ */
+ public String[] getInputArgumentNames() {
+ return IN_ARG_NAMES;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getOutputArgumentNames()
+ */
+ public String[] getOutputArgumentNames() {
+ return OUT_ARG_NAMES;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#getStateVariable(java.lang.String)
+ */
+ public UPnPStateVariable getStateVariable(String argumentName) {
+ if (argumentName.equals("Power")) return power;
+ else if (argumentName.equals("Result")) return result;
+ else return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPAction#invoke(java.util.Dictionary)
+ */
+ public Dictionary invoke(Dictionary args) throws Exception {
+ Boolean value = (Boolean) args.get(NEW_TIME_VALUE);
+ power.setPower(value);
+ Hashtable result = new Hashtable();
+ result.put(NEW_RESULT_VALUE,Boolean.TRUE);
+ return result;
+ }
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
index e7b70ae..f5a0d02 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
@@ -1,319 +1,319 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Dictionary;
-import java.util.Properties;
-import java.util.Random;
-
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.InvalidSyntaxException;
-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.UPnPIcon;
-import org.osgi.service.upnp.UPnPService;
-
-import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
-import org.apache.felix.upnp.extra.util.UPnPSubscriber;
-
-public class TvDevice implements UPnPDevice,UPnPEventListener,ServiceListener {
-
- final private String DEVICE_ID = "uuid:Felix-TV+" +Integer.toHexString(new Random(System.currentTimeMillis()).nextInt());
- private final static String CLOCK_DEVICE_TYPE = "urn:schemas-upnp-org:device:clock:1";
- private final static String TIME_SERVICE_TYPE = "urn:schemas-upnp-org:service:timer:1";
-
- private final static String LIGHT_DEVICE_TYPE = "urn:schemas-upnp-org:device:light:1";
- private final static String POWER_SERVICE_TYPE = "urn:schemas-upnp-org:service:power:1";
-
- private final static String AIRCON_DEVICE_TYPE = "urn:schemas-upnp-org:device:aircon:1";
- private final static String TEMP_SERVICE_TYPE = "urn:schemas-upnp-org:service:temp:1";
-
- private final static String WASHER_DEVICE_TYPE = "urn:schemas-upnp-org:device:washer:1";
- private final static String STATUS_SERVICE_TYPE = "urn:schemas-upnp-org:service:state:1";
-
- private final String devicesFilter =
- "(&"+
- "("+Constants.OBJECTCLASS+"="+UPnPDevice.class.getName()+"))";
- /*"(|("+UPnPDevice.TYPE+"="+ CLOCK_SERVICE_TYPE+")"+
- "("+UPnPDevice.TYPE+"="+ LIGHT_SERVICE_TYPE+")"+
- "("+UPnPDevice.TYPE+"="+ AIRCON_SERVICE_TYPE+")"+
- "("+UPnPDevice.TYPE+"="+ WASHER_SERVICE_TYPE+")))";*/
-
- private BundleContext context;
- private PowerService powerService;
- private UPnPService[] services;
- private Dictionary dictionary;
- private UPnPEventNotifier notifier;
- private PowerStateVariable powerState;
-
- public TvDevice() {
- powerService = new PowerService();
- services = new UPnPService[]{powerService};
- powerState = (PowerStateVariable) powerService.getStateVariable("Power");
- setupDeviceProperties();
- buildEventNotifyer();
- try {
- Activator.context.addServiceListener(this,devicesFilter);
- } catch (InvalidSyntaxException e) {
- System.out.println(e);
- }
- }
-
- /**
- *
- */
- private void buildEventNotifyer() {
- notifier = new UPnPEventNotifier(Activator.context,this,powerService);
- powerState.setNotifier(notifier);
- }
-
- private void setupDeviceProperties(){
- dictionary = new Properties();
- dictionary.put(UPnPDevice.UPNP_EXPORT,"");
- //org.osgi.service.device.Constants.DEVICE_CATEGORY
- //dictionary.put("DEVICE_CATEGORY","UPnP");
- dictionary.put(
- org.osgi.service
- .device.Constants.DEVICE_CATEGORY,
- new String[]{UPnPDevice.DEVICE_CATEGORY}
- );
- dictionary.put(UPnPDevice.FRIENDLY_NAME,"Felix Sample Tv");
- dictionary.put(UPnPDevice.MANUFACTURER,"Apache Software Foundation");
- dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://felix.apache.org");
- dictionary.put(UPnPDevice.MODEL_DESCRIPTION,"A CyberLink Tv device clone to test OSGi to UPnP service import");
- dictionary.put(UPnPDevice.MODEL_NAME,"BimbiTv");
- dictionary.put(UPnPDevice.MODEL_NUMBER,"1.0");
- dictionary.put(UPnPDevice.MODEL_URL,"http://felix.apache.org/site/upnp-examples.html");
- //dictionary.put(UPnPDevice.PRESENTATION_URL,"http://felix.apache.org/BimbiTv/presentation");
- dictionary.put(UPnPDevice.SERIAL_NUMBER,"123456789");
- dictionary.put(UPnPDevice.TYPE,"urn:schemas-upnp-org:device:tv:1");
- dictionary.put(UPnPDevice.UDN,DEVICE_ID);
- //dictionary.put(UPnPDevice.ID,dictionary.get(UPnPDevice.UDN));
- dictionary.put(UPnPDevice.UPC,"1213456789");
- }
-
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPDevice#getService(java.lang.String)
- */
- public UPnPService getService(String serviceId) {
- if (serviceId.equals(powerService.getId())) return powerService;
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPDevice#getServices()
- */
- public UPnPService[] getServices() {
- return services;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPDevice#getIcons(java.lang.String)
- */
- public UPnPIcon[] getIcons(String locale) {
- UPnPIcon icon = new TvIcon();
- return new UPnPIcon[]{icon} ;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPDevice#getDescriptions(java.lang.String)
- */
- public Dictionary getDescriptions(String locale) {
- return dictionary;
- }
-
-
-
- ////////////////////////////////////////////////
- // Component
- ////////////////////////////////////////////////
-
- private Component comp;
-
- public void setComponent(Component comp)
- {
- this.comp = comp;
- }
-
- public Component getComponent()
- {
- return comp;
- }
-
- ////////////////////////////////////////////////
- // on/off
- ////////////////////////////////////////////////
-
- private boolean onFlag = false;
-
- public void on()
- {
- powerState.setPower(Boolean.TRUE);
- doSubscribe();
- }
-
- public boolean isOn()
- {
- return powerState.getCurrentPower().booleanValue();
- }
- public void off()
- {
- powerState.setPower(Boolean.FALSE);
- undoSubscribe();
- }
-
-
- ////////////////////////////////////////////////
- // Clock
- ////////////////////////////////////////////////
-
- private String clockTime = "";
-
- public String getClockTime()
- {
- return clockTime;
- }
-
- ////////////////////////////////////////////////
- // Aircon
- ////////////////////////////////////////////////
-
- private String airconTemp = "";
-
- public String getAirconTempture()
- {
- return airconTemp;
- }
-
- ////////////////////////////////////////////////
- // Message
- ////////////////////////////////////////////////
-
- private String message = "";
-
- public void setMessage(String msg)
- {
- message = msg;
- }
-
- public String getMessage()
- {
- return message;
- }
-
-
- ////////////////////////////////////////////////
- // Subscribe
- ////////////////////////////////////////////////
-
- private UPnPSubscriber subscriber;
-
- public void doSubscribe()
- {
- subscriber = new UPnPSubscriber(Activator.context,this);
- subscriber.subscribeEveryServiceType(CLOCK_DEVICE_TYPE, TIME_SERVICE_TYPE);
- subscriber.subscribeEveryServiceType(AIRCON_DEVICE_TYPE, TEMP_SERVICE_TYPE);
- subscriber.subscribeEveryServiceType(LIGHT_DEVICE_TYPE, POWER_SERVICE_TYPE);
- subscriber.subscribeEveryServiceType(WASHER_DEVICE_TYPE, STATUS_SERVICE_TYPE);
- }
-
- public void undoSubscribe(){
- subscriber.unsubscribeAll();
- }
-
- ArrayList LinkedDevices = new ArrayList();
- /* (non-Javadoc)
- * @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) {
- if( !LinkedDevices.contains(deviceId))
- LinkedDevices.add(deviceId);
- if (deviceId.indexOf("Clock") != -1){
- Long time = (Long) events.get("Time");
- clockTime = new Date(time.longValue()).toString();
- }
- else if (deviceId.indexOf("AirCon") != -1)
- airconTemp = (String) events.get("Temp");
- else if (deviceId.indexOf("Washer") != -1)
- message = (String) events.get("State");
- else if (deviceId.indexOf("Light") != -1)
- message = (String) events.get("Power");
-
- comp.repaint();
- }
-
-
- ////////////////////////////////////////////////
- // start/stop
- ////////////////////////////////////////////////
-
- public void start()
- {
- on();
- }
-
- public void stop()
- {
- ((PowerStateVariable) powerService.getStateVariable("Power")).setNotifier(null);
- notifier.destroy();
- off();
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
- */
- public void serviceChanged(ServiceEvent event) {
- switch(event.getType()){
- case ServiceEvent.REGISTERED:{
- };break;
-
- case ServiceEvent.MODIFIED:{
- };break;
-
- case ServiceEvent.UNREGISTERING:{
- ServiceReference sr = event.getServiceReference();
- String UDN = (String)sr.getProperty(UPnPDevice.ID);
- if (UDN != null){
- if (LinkedDevices.contains(UDN)) {
- if (UDN.indexOf("Clock") != -1)
- clockTime = "";
- else if (UDN.indexOf("AirCon") != -1)
- airconTemp = "";
- else if (UDN.indexOf("Washer") != -1)
- message = "";
- else if (UDN.indexOf("Light") != -1)
- message = "";
- }
- }
- comp.repaint();
- };break;
- }
- }
-
-}
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Dictionary;
+import java.util.Properties;
+import java.util.Random;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.InvalidSyntaxException;
+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.UPnPIcon;
+import org.osgi.service.upnp.UPnPService;
+
+import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
+import org.apache.felix.upnp.extra.util.UPnPSubscriber;
+
+public class TvDevice implements UPnPDevice,UPnPEventListener,ServiceListener {
+
+ final private String DEVICE_ID = "uuid:Felix-TV+" +Integer.toHexString(new Random(System.currentTimeMillis()).nextInt());
+ private final static String CLOCK_DEVICE_TYPE = "urn:schemas-upnp-org:device:clock:1";
+ private final static String TIME_SERVICE_TYPE = "urn:schemas-upnp-org:service:timer:1";
+
+ private final static String LIGHT_DEVICE_TYPE = "urn:schemas-upnp-org:device:light:1";
+ private final static String POWER_SERVICE_TYPE = "urn:schemas-upnp-org:service:power:1";
+
+ private final static String AIRCON_DEVICE_TYPE = "urn:schemas-upnp-org:device:aircon:1";
+ private final static String TEMP_SERVICE_TYPE = "urn:schemas-upnp-org:service:temp:1";
+
+ private final static String WASHER_DEVICE_TYPE = "urn:schemas-upnp-org:device:washer:1";
+ private final static String STATUS_SERVICE_TYPE = "urn:schemas-upnp-org:service:state:1";
+
+ private final String devicesFilter =
+ "(&"+
+ "("+Constants.OBJECTCLASS+"="+UPnPDevice.class.getName()+"))";
+ /*"(|("+UPnPDevice.TYPE+"="+ CLOCK_SERVICE_TYPE+")"+
+ "("+UPnPDevice.TYPE+"="+ LIGHT_SERVICE_TYPE+")"+
+ "("+UPnPDevice.TYPE+"="+ AIRCON_SERVICE_TYPE+")"+
+ "("+UPnPDevice.TYPE+"="+ WASHER_SERVICE_TYPE+")))";*/
+
+ private BundleContext context;
+ private PowerService powerService;
+ private UPnPService[] services;
+ private Dictionary dictionary;
+ private UPnPEventNotifier notifier;
+ private PowerStateVariable powerState;
+
+ public TvDevice() {
+ powerService = new PowerService();
+ services = new UPnPService[]{powerService};
+ powerState = (PowerStateVariable) powerService.getStateVariable("Power");
+ setupDeviceProperties();
+ buildEventNotifyer();
+ try {
+ Activator.context.addServiceListener(this,devicesFilter);
+ } catch (InvalidSyntaxException e) {
+ System.out.println(e);
+ }
+ }
+
+ /**
+ *
+ */
+ private void buildEventNotifyer() {
+ notifier = new UPnPEventNotifier(Activator.context,this,powerService);
+ powerState.setNotifier(notifier);
+ }
+
+ private void setupDeviceProperties(){
+ dictionary = new Properties();
+ dictionary.put(UPnPDevice.UPNP_EXPORT,"");
+ //org.osgi.service.device.Constants.DEVICE_CATEGORY
+ //dictionary.put("DEVICE_CATEGORY","UPnP");
+ dictionary.put(
+ org.osgi.service
+ .device.Constants.DEVICE_CATEGORY,
+ new String[]{UPnPDevice.DEVICE_CATEGORY}
+ );
+ dictionary.put(UPnPDevice.FRIENDLY_NAME,"Felix Sample Tv");
+ dictionary.put(UPnPDevice.MANUFACTURER,"Apache Software Foundation");
+ dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://felix.apache.org");
+ dictionary.put(UPnPDevice.MODEL_DESCRIPTION,"A CyberLink Tv device clone to test OSGi to UPnP service import");
+ dictionary.put(UPnPDevice.MODEL_NAME,"BimbiTv");
+ dictionary.put(UPnPDevice.MODEL_NUMBER,"1.0");
+ dictionary.put(UPnPDevice.MODEL_URL,"http://felix.apache.org/site/upnp-examples.html");
+ //dictionary.put(UPnPDevice.PRESENTATION_URL,"http://felix.apache.org/BimbiTv/presentation");
+ dictionary.put(UPnPDevice.SERIAL_NUMBER,"123456789");
+ dictionary.put(UPnPDevice.TYPE,"urn:schemas-upnp-org:device:tv:1");
+ dictionary.put(UPnPDevice.UDN,DEVICE_ID);
+ //dictionary.put(UPnPDevice.ID,dictionary.get(UPnPDevice.UDN));
+ dictionary.put(UPnPDevice.UPC,"1213456789");
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPDevice#getService(java.lang.String)
+ */
+ public UPnPService getService(String serviceId) {
+ if (serviceId.equals(powerService.getId())) return powerService;
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPDevice#getServices()
+ */
+ public UPnPService[] getServices() {
+ return services;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPDevice#getIcons(java.lang.String)
+ */
+ public UPnPIcon[] getIcons(String locale) {
+ UPnPIcon icon = new TvIcon();
+ return new UPnPIcon[]{icon} ;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPDevice#getDescriptions(java.lang.String)
+ */
+ public Dictionary getDescriptions(String locale) {
+ return dictionary;
+ }
+
+
+
+ ////////////////////////////////////////////////
+ // Component
+ ////////////////////////////////////////////////
+
+ private Component comp;
+
+ public void setComponent(Component comp)
+ {
+ this.comp = comp;
+ }
+
+ public Component getComponent()
+ {
+ return comp;
+ }
+
+ ////////////////////////////////////////////////
+ // on/off
+ ////////////////////////////////////////////////
+
+ private boolean onFlag = false;
+
+ public void on()
+ {
+ powerState.setPower(Boolean.TRUE);
+ doSubscribe();
+ }
+
+ public boolean isOn()
+ {
+ return powerState.getCurrentPower().booleanValue();
+ }
+ public void off()
+ {
+ powerState.setPower(Boolean.FALSE);
+ undoSubscribe();
+ }
+
+
+ ////////////////////////////////////////////////
+ // Clock
+ ////////////////////////////////////////////////
+
+ private String clockTime = "";
+
+ public String getClockTime()
+ {
+ return clockTime;
+ }
+
+ ////////////////////////////////////////////////
+ // Aircon
+ ////////////////////////////////////////////////
+
+ private String airconTemp = "";
+
+ public String getAirconTempture()
+ {
+ return airconTemp;
+ }
+
+ ////////////////////////////////////////////////
+ // Message
+ ////////////////////////////////////////////////
+
+ private String message = "";
+
+ public void setMessage(String msg)
+ {
+ message = msg;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+
+ ////////////////////////////////////////////////
+ // Subscribe
+ ////////////////////////////////////////////////
+
+ private UPnPSubscriber subscriber;
+
+ public void doSubscribe()
+ {
+ subscriber = new UPnPSubscriber(Activator.context,this);
+ subscriber.subscribeEveryServiceType(CLOCK_DEVICE_TYPE, TIME_SERVICE_TYPE);
+ subscriber.subscribeEveryServiceType(AIRCON_DEVICE_TYPE, TEMP_SERVICE_TYPE);
+ subscriber.subscribeEveryServiceType(LIGHT_DEVICE_TYPE, POWER_SERVICE_TYPE);
+ subscriber.subscribeEveryServiceType(WASHER_DEVICE_TYPE, STATUS_SERVICE_TYPE);
+ }
+
+ public void undoSubscribe(){
+ subscriber.unsubscribeAll();
+ }
+
+ ArrayList LinkedDevices = new ArrayList();
+ /* (non-Javadoc)
+ * @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) {
+ if( !LinkedDevices.contains(deviceId))
+ LinkedDevices.add(deviceId);
+ if (deviceId.indexOf("Clock") != -1){
+ Long time = (Long) events.get("Time");
+ clockTime = new Date(time.longValue()).toString();
+ }
+ else if (deviceId.indexOf("AirCon") != -1)
+ airconTemp = (String) events.get("Temp");
+ else if (deviceId.indexOf("Washer") != -1)
+ message = (String) events.get("State");
+ else if (deviceId.indexOf("Light") != -1)
+ message = (String) events.get("Power");
+
+ comp.repaint();
+ }
+
+
+ ////////////////////////////////////////////////
+ // start/stop
+ ////////////////////////////////////////////////
+
+ public void start()
+ {
+ on();
+ }
+
+ public void stop()
+ {
+ ((PowerStateVariable) powerService.getStateVariable("Power")).setNotifier(null);
+ notifier.destroy();
+ off();
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
+ */
+ public void serviceChanged(ServiceEvent event) {
+ switch(event.getType()){
+ case ServiceEvent.REGISTERED:{
+ };break;
+
+ case ServiceEvent.MODIFIED:{
+ };break;
+
+ case ServiceEvent.UNREGISTERING:{
+ ServiceReference sr = event.getServiceReference();
+ String UDN = (String)sr.getProperty(UPnPDevice.ID);
+ if (UDN != null){
+ if (LinkedDevices.contains(UDN)) {
+ if (UDN.indexOf("Clock") != -1)
+ clockTime = "";
+ else if (UDN.indexOf("AirCon") != -1)
+ airconTemp = "";
+ else if (UDN.indexOf("Washer") != -1)
+ message = "";
+ else if (UDN.indexOf("Light") != -1)
+ message = "";
+ }
+ }
+ comp.repaint();
+ };break;
+ }
+ }
+
+}
+
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvFrame.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvFrame.java
index 1bafddc..0d50cbf 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvFrame.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvFrame.java
@@ -1,123 +1,123 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.awt.BorderLayout;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.net.URL;
-
-import javax.swing.ImageIcon;
-import javax.swing.JFrame;
-
-import org.osgi.framework.BundleException;
-
-public class TvFrame extends JFrame implements Runnable
-{
- private final static String TITLE = "Felix UpnP TV";
-
- private TvDevice tvDev;
- private TvPane tvPane;
-
- public TvFrame()
- {
- super(TITLE);
-
- tvDev = new TvDevice();
-
- getContentPane().setLayout(new BorderLayout());
-
- tvPane = new TvPane();
- tvDev.setComponent(tvPane);
- tvPane.setDevice(tvDev);
- getContentPane().add(tvPane, BorderLayout.CENTER);
-
- addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e)
- {
- try {
- Activator.context.getBundle().stop();
- } catch (BundleException ex) {
- ex.printStackTrace();
- }
- }
- });
-
- try {
- URL eventIconUrl = TvFrame.class.getResource("images/logo.gif");
- ImageIcon icon= new ImageIcon(eventIconUrl,"logo");
- setIconImage(icon.getImage());
- }
- catch (Exception ex){
- System.out.println("Resource: IMAGES/logo.gif not found : " + ex.toString());
- }
-
- pack();
- setVisible(true);
- }
-
- public TvPane getTvPanel()
- {
- return tvPane;
- }
-
- public TvDevice getTvDevice()
- {
- return tvDev;
- }
-
- ////////////////////////////////////////////////
- // run
- ////////////////////////////////////////////////
-
- private Thread timerThread = null;
-
- public void run()
- {
- Thread thisThread = Thread.currentThread();
-
- while (timerThread == thisThread) {
- tvDev.setMessage("");
- tvPane.repaint();
- try {
- Thread.sleep(1000*5);
- }
- catch(InterruptedException e) {}
- }
- }
-
- public void start()
- {
- tvDev.start();
-
- timerThread = new Thread(this,"upnp.sample.tv.TVFrame");
- timerThread.start();
- }
-
- public void stop()
- {
- tvDev.stop();
- timerThread = null;
- dispose();
- }
-
-
-}
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.net.URL;
+
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+
+import org.osgi.framework.BundleException;
+
+public class TvFrame extends JFrame implements Runnable
+{
+ private final static String TITLE = "Felix UpnP TV";
+
+ private TvDevice tvDev;
+ private TvPane tvPane;
+
+ public TvFrame()
+ {
+ super(TITLE);
+
+ tvDev = new TvDevice();
+
+ getContentPane().setLayout(new BorderLayout());
+
+ tvPane = new TvPane();
+ tvDev.setComponent(tvPane);
+ tvPane.setDevice(tvDev);
+ getContentPane().add(tvPane, BorderLayout.CENTER);
+
+ addWindowListener(new WindowAdapter(){
+ public void windowClosing(WindowEvent e)
+ {
+ try {
+ Activator.context.getBundle().stop();
+ } catch (BundleException ex) {
+ ex.printStackTrace();
+ }
+ }
+ });
+
+ try {
+ URL eventIconUrl = TvFrame.class.getResource("images/logo.gif");
+ ImageIcon icon= new ImageIcon(eventIconUrl,"logo");
+ setIconImage(icon.getImage());
+ }
+ catch (Exception ex){
+ System.out.println("Resource: IMAGES/logo.gif not found : " + ex.toString());
+ }
+
+ pack();
+ setVisible(true);
+ }
+
+ public TvPane getTvPanel()
+ {
+ return tvPane;
+ }
+
+ public TvDevice getTvDevice()
+ {
+ return tvDev;
+ }
+
+ ////////////////////////////////////////////////
+ // run
+ ////////////////////////////////////////////////
+
+ private Thread timerThread = null;
+
+ public void run()
+ {
+ Thread thisThread = Thread.currentThread();
+
+ while (timerThread == thisThread) {
+ tvDev.setMessage("");
+ tvPane.repaint();
+ try {
+ Thread.sleep(1000*5);
+ }
+ catch(InterruptedException e) {}
+ }
+ }
+
+ public void start()
+ {
+ tvDev.start();
+
+ timerThread = new Thread(this,"upnp.sample.tv.TVFrame");
+ timerThread.start();
+ }
+
+ public void stop()
+ {
+ tvDev.stop();
+ timerThread = null;
+ dispose();
+ }
+
+
+}
+
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvIcon.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvIcon.java
index a6df26d..fb1dec3 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvIcon.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvIcon.java
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.osgi.service.upnp.UPnPIcon;
-
-public class TvIcon implements UPnPIcon {
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getMimeType()
- */
- public String getMimeType() {
- return "image/gif";
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getWidth()
- */
- public int getWidth() {
- return 32;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getHeight()
- */
- public int getHeight() {
- return 32;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getSize()
- */
- public int getSize() {
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getDepth()
- */
- public int getDepth() {
- return 16;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.service.upnp.UPnPIcon#getInputStream()
- */
- public InputStream getInputStream() throws IOException {
- return TvIcon.class.getResourceAsStream("images/tv.gif");
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.osgi.service.upnp.UPnPIcon;
+
+public class TvIcon implements UPnPIcon {
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getMimeType()
+ */
+ public String getMimeType() {
+ return "image/gif";
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getWidth()
+ */
+ public int getWidth() {
+ return 32;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getHeight()
+ */
+ public int getHeight() {
+ return 32;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getSize()
+ */
+ public int getSize() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getDepth()
+ */
+ public int getDepth() {
+ return 16;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.upnp.UPnPIcon#getInputStream()
+ */
+ public InputStream getInputStream() throws IOException {
+ return TvIcon.class.getResourceAsStream("images/tv.gif");
+ }
+}
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvPane.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvPane.java
index f8a0549..7dd1da4 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvPane.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvPane.java
@@ -1,214 +1,214 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-
-import javax.imageio.ImageIO;
-import javax.swing.JPanel;
-
-public class TvPane extends JPanel // MouseListener
-{
- private final static int IMAGE_BORDER_SIZE = 20;
- private final static int IMAGE_BOTTOM_BORDER_SIZE = 30;
-
- ////////////////////////////////////////////////
- // Constructor
- ////////////////////////////////////////////////
-
- public TvPane()
- {
- loadImage();
- initPanel();
- }
-
- ////////////////////////////////////////////////
- // TvDevice
- ////////////////////////////////////////////////
-
- private TvDevice tvDev = null;
-
- public void setDevice(TvDevice dev)
- {
- tvDev = dev;
- }
-
- public TvDevice getDevice()
- {
- return tvDev;
- }
-
- ////////////////////////////////////////////////
- // Background
- ////////////////////////////////////////////////
-
- private BufferedImage panelmage;
- private BufferedImage tvOnImage;
-
- private void loadImage()
- {
- try {
- panelmage = ImageIO.read(TvPane.class.getResourceAsStream("images/tv.jpg"));
- tvOnImage = ImageIO.read(TvPane.class.getResourceAsStream("images/tvon.jpg"));
- }
- catch (Exception e) {
- System.out.println(e);
- }
- }
-
- ////////////////////////////////////////////////
- // Background
- ////////////////////////////////////////////////
-
- private void initPanel()
- {
- setPreferredSize(new Dimension(panelmage.getWidth(), panelmage.getHeight()));
- }
-
- ////////////////////////////////////////////////
- // Font
- ////////////////////////////////////////////////
-
- private final static String DEFAULT_FONT_NAME = "Lucida Console";
- private final static int DEFAULT_TIME_FONT_SIZE = 10;
-
- private Font timeFont = null;
-
- private Font getFont(Graphics g, int size)
- {
- Font font = new Font(DEFAULT_FONT_NAME, Font.BOLD, size);
- if (font != null)
- return font;
- return g.getFont();
- }
-
- private Font getFont(Graphics g)
- {
- if (timeFont == null)
- timeFont = getFont(g, DEFAULT_TIME_FONT_SIZE);
- return timeFont;
- }
-
- ////////////////////////////////////////////////
- // paint
- ////////////////////////////////////////////////
-
- private void drawClockInfo(Graphics g)
- {
- TvDevice tvDev = getDevice();
-
- int winWidth = getWidth();
- int winHeight = getHeight();
-
- Font font = getFont(g);
- g.setFont(font);
- FontMetrics fontMetric = g.getFontMetrics();
- g.setColor(Color.RED);
-
- Rectangle2D strBounds;
- int strWidth;
- int strHeight;
- int strX;
- int strY;
-
- //// Time String ////
-
- String timeStr = tvDev.getClockTime();
- if (timeStr != null && 0 < timeStr.length()) {
- strBounds = fontMetric.getStringBounds(timeStr, g);
- strWidth = (int)strBounds.getWidth();
- strHeight = (int)strBounds.getHeight();
- strX = IMAGE_BORDER_SIZE;
- strY = IMAGE_BORDER_SIZE + strHeight;
- g.drawString(
- timeStr,
- strX,
- strY);
- }
-
- //// Tempture String ////
-
- String tempStr = tvDev.getAirconTempture();
- if (tempStr != null && 0 < tempStr.length()) {
- tempStr += "C";
- strBounds = fontMetric.getStringBounds(tempStr, g);
- strWidth = (int)strBounds.getWidth();
- strHeight = (int)strBounds.getHeight();
- strX = winWidth - IMAGE_BORDER_SIZE - strWidth;
- strY = IMAGE_BORDER_SIZE + strHeight;
- g.drawString(
- tempStr,
- strX,
- strY);
- }
-
- //// Message String ////
-
- String msgStr = tvDev.getMessage();
- if (msgStr != null && 0 < msgStr.length()) {
- strBounds = fontMetric.getStringBounds(msgStr, g);
- strWidth = (int)strBounds.getWidth();
- strHeight = (int)strBounds.getHeight();
- strX = IMAGE_BORDER_SIZE;
- strY = getHeight()-IMAGE_BOTTOM_BORDER_SIZE-2;
- g.drawString(
- msgStr,
- strX,
- strY);
- }
- }
-
- private void drawTvImage(Graphics g)
- {
- //g.setColor(Color.WHITE);
- //g.clearRect(IMAGE_BORDER_SIZE, IMAGE_BORDER_SIZE, getWidth()-IMAGE_BORDER_SIZE*2, getHeight()-IMAGE_BORDER_SIZE-IMAGE_BOTTOM_BORDER_SIZE);
- g.drawImage(tvOnImage, IMAGE_BORDER_SIZE, IMAGE_BORDER_SIZE, null);
- }
-
- private void clear(Graphics g)
- {
- g.setColor(Color.GRAY);
- g.clearRect(0, 0, getWidth(), getHeight());
- }
-
-
- private void drawPanelImage(Graphics g)
- {
- g.drawImage(panelmage, 0, 0, null);
- }
-
- public void paint(Graphics g)
- {
- clear(g);
- drawPanelImage(g);
- TvDevice tvDev = getDevice();
- if (tvDev.isOn() == true) {
- drawTvImage(g);
- drawClockInfo(g);
- }
- }
-}
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import javax.imageio.ImageIO;
+import javax.swing.JPanel;
+
+public class TvPane extends JPanel // MouseListener
+{
+ private final static int IMAGE_BORDER_SIZE = 20;
+ private final static int IMAGE_BOTTOM_BORDER_SIZE = 30;
+
+ ////////////////////////////////////////////////
+ // Constructor
+ ////////////////////////////////////////////////
+
+ public TvPane()
+ {
+ loadImage();
+ initPanel();
+ }
+
+ ////////////////////////////////////////////////
+ // TvDevice
+ ////////////////////////////////////////////////
+
+ private TvDevice tvDev = null;
+
+ public void setDevice(TvDevice dev)
+ {
+ tvDev = dev;
+ }
+
+ public TvDevice getDevice()
+ {
+ return tvDev;
+ }
+
+ ////////////////////////////////////////////////
+ // Background
+ ////////////////////////////////////////////////
+
+ private BufferedImage panelmage;
+ private BufferedImage tvOnImage;
+
+ private void loadImage()
+ {
+ try {
+ panelmage = ImageIO.read(TvPane.class.getResourceAsStream("images/tv.jpg"));
+ tvOnImage = ImageIO.read(TvPane.class.getResourceAsStream("images/tvon.jpg"));
+ }
+ catch (Exception e) {
+ System.out.println(e);
+ }
+ }
+
+ ////////////////////////////////////////////////
+ // Background
+ ////////////////////////////////////////////////
+
+ private void initPanel()
+ {
+ setPreferredSize(new Dimension(panelmage.getWidth(), panelmage.getHeight()));
+ }
+
+ ////////////////////////////////////////////////
+ // Font
+ ////////////////////////////////////////////////
+
+ private final static String DEFAULT_FONT_NAME = "Lucida Console";
+ private final static int DEFAULT_TIME_FONT_SIZE = 10;
+
+ private Font timeFont = null;
+
+ private Font getFont(Graphics g, int size)
+ {
+ Font font = new Font(DEFAULT_FONT_NAME, Font.BOLD, size);
+ if (font != null)
+ return font;
+ return g.getFont();
+ }
+
+ private Font getFont(Graphics g)
+ {
+ if (timeFont == null)
+ timeFont = getFont(g, DEFAULT_TIME_FONT_SIZE);
+ return timeFont;
+ }
+
+ ////////////////////////////////////////////////
+ // paint
+ ////////////////////////////////////////////////
+
+ private void drawClockInfo(Graphics g)
+ {
+ TvDevice tvDev = getDevice();
+
+ int winWidth = getWidth();
+ int winHeight = getHeight();
+
+ Font font = getFont(g);
+ g.setFont(font);
+ FontMetrics fontMetric = g.getFontMetrics();
+ g.setColor(Color.RED);
+
+ Rectangle2D strBounds;
+ int strWidth;
+ int strHeight;
+ int strX;
+ int strY;
+
+ //// Time String ////
+
+ String timeStr = tvDev.getClockTime();
+ if (timeStr != null && 0 < timeStr.length()) {
+ strBounds = fontMetric.getStringBounds(timeStr, g);
+ strWidth = (int)strBounds.getWidth();
+ strHeight = (int)strBounds.getHeight();
+ strX = IMAGE_BORDER_SIZE;
+ strY = IMAGE_BORDER_SIZE + strHeight;
+ g.drawString(
+ timeStr,
+ strX,
+ strY);
+ }
+
+ //// Tempture String ////
+
+ String tempStr = tvDev.getAirconTempture();
+ if (tempStr != null && 0 < tempStr.length()) {
+ tempStr += "C";
+ strBounds = fontMetric.getStringBounds(tempStr, g);
+ strWidth = (int)strBounds.getWidth();
+ strHeight = (int)strBounds.getHeight();
+ strX = winWidth - IMAGE_BORDER_SIZE - strWidth;
+ strY = IMAGE_BORDER_SIZE + strHeight;
+ g.drawString(
+ tempStr,
+ strX,
+ strY);
+ }
+
+ //// Message String ////
+
+ String msgStr = tvDev.getMessage();
+ if (msgStr != null && 0 < msgStr.length()) {
+ strBounds = fontMetric.getStringBounds(msgStr, g);
+ strWidth = (int)strBounds.getWidth();
+ strHeight = (int)strBounds.getHeight();
+ strX = IMAGE_BORDER_SIZE;
+ strY = getHeight()-IMAGE_BOTTOM_BORDER_SIZE-2;
+ g.drawString(
+ msgStr,
+ strX,
+ strY);
+ }
+ }
+
+ private void drawTvImage(Graphics g)
+ {
+ //g.setColor(Color.WHITE);
+ //g.clearRect(IMAGE_BORDER_SIZE, IMAGE_BORDER_SIZE, getWidth()-IMAGE_BORDER_SIZE*2, getHeight()-IMAGE_BORDER_SIZE-IMAGE_BOTTOM_BORDER_SIZE);
+ g.drawImage(tvOnImage, IMAGE_BORDER_SIZE, IMAGE_BORDER_SIZE, null);
+ }
+
+ private void clear(Graphics g)
+ {
+ g.setColor(Color.GRAY);
+ g.clearRect(0, 0, getWidth(), getHeight());
+ }
+
+
+ private void drawPanelImage(Graphics g)
+ {
+ g.drawImage(panelmage, 0, 0, null);
+ }
+
+ public void paint(Graphics g)
+ {
+ clear(g);
+ drawPanelImage(g);
+ TvDevice tvDev = getDevice();
+ if (tvDev.isOn() == true) {
+ drawTvImage(g);
+ drawClockInfo(g);
+ }
+ }
+}
+
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPSubscriber.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPSubscriber.java
index 8780f90..8d1341d 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPSubscriber.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPSubscriber.java
@@ -1,63 +1,63 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.upnp.sample.tv;
-
-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;
-
-/*
-* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
-*/
-
-public class UPnPSubscriber {
- ServiceRegistration registration = null;
- BundleContext context;
- UPnPEventListener listener;
-
- public UPnPSubscriber(BundleContext context,UPnPEventListener listener){
- this.context = context;
- this.listener = listener;
- }
-
- public void subscribe(String deviceType, String serviceType){
- String keys = "(&(" + UPnPDevice.TYPE + "="+ deviceType + ")(" + UPnPService.TYPE + "=" + serviceType + "))";
- try {
- Filter filter = context.createFilter(keys);
- Properties props = new Properties();
- props.put(UPnPEventListener.UPNP_FILTER, filter);
- registration = context.registerService(UPnPEventListener.class.getName(), listener, props);
- }catch (Exception ex){
- System.out.println(ex);
- }
- }
-
- public void unsubscribe(){
- registration.unregister();
- registration = null;
- }
-
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.upnp.sample.tv;
+
+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;
+
+/*
+* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+*/
+
+public class UPnPSubscriber {
+ ServiceRegistration registration = null;
+ BundleContext context;
+ UPnPEventListener listener;
+
+ public UPnPSubscriber(BundleContext context,UPnPEventListener listener){
+ this.context = context;
+ this.listener = listener;
+ }
+
+ public void subscribe(String deviceType, String serviceType){
+ String keys = "(&(" + UPnPDevice.TYPE + "="+ deviceType + ")(" + UPnPService.TYPE + "=" + serviceType + "))";
+ try {
+ Filter filter = context.createFilter(keys);
+ Properties props = new Properties();
+ props.put(UPnPEventListener.UPNP_FILTER, filter);
+ registration = context.registerService(UPnPEventListener.class.getName(), listener, props);
+ }catch (Exception ex){
+ System.out.println(ex);
+ }
+ }
+
+ public void unsubscribe(){
+ registration.unregister();
+ registration = null;
+ }
+
+
+}