View Javadoc
1   /*
2    * Copyright (C) 2013 4th Line GmbH, Switzerland
3    *
4    * The contents of this file are subject to the terms of either the GNU
5    * Lesser General Public License Version 2 or later ("LGPL") or the
6    * Common Development and Distribution License Version 1 or later
7    * ("CDDL") (collectively, the "License"). You may not use this file
8    * except in compliance with the License. See LICENSE.txt for more
9    * information.
10   *
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14   */
15  package example.localservice;
16  
17  import org.fourthline.cling.binding.annotations.*;
18  
19  /**
20   * Getting an output value from another method
21   * <p>
22   * In the following example, the UPnP action has an output argument but the
23   * mapped method is void and does not return any value:
24   * </p>
25   * <a class="citation" href="javacode://this" style="include:INC1"/>
26   * <p>
27   * By providing a <code>getterName</code> in the annotation you can instruct
28   * Cling to call this getter method when the action method completes, taking
29   * the getter method's return value as the output argument value. If there
30   * are several output arguments you can map each to a different getter method.
31   * </p>
32   */
33  @UpnpService(
34          serviceId = @UpnpServiceId("SwitchPower"),
35          serviceType = @UpnpServiceType(value = "SwitchPower", version = 1)
36  )
37  public class SwitchPowerExtraGetter {
38  
39      @UpnpStateVariable(defaultValue = "0", sendEvents = false)
40      private boolean target = false;
41  
42      @UpnpStateVariable(defaultValue = "0")
43      private boolean status = false;
44  
45      @UpnpAction
46      public void setTarget(@UpnpInputArgument(name = "NewTargetValue")
47                            boolean newTargetValue) {
48          target = newTargetValue;
49          status = newTargetValue;
50          System.out.println("Switch is: " + status);
51      }
52  
53      @UpnpAction(out = @UpnpOutputArgument(name = "RetTargetValue"))
54      public boolean getTarget() {
55          return target;
56      }
57  
58      public boolean getStatus() {                    // DOC:INC1
59          return status;
60      }
61  
62      @UpnpAction(
63              name = "GetStatus",
64              out = @UpnpOutputArgument(
65                      name = "ResultStatus",
66                      getterName = "getStatus"
67              )
68      )
69      public void retrieveStatus() {
70          // NOOP in this example
71      }                                               // DOC:INC1
72  
73  }