View Javadoc

1   /* This file is part of COPAL (COntext Provisioning for All).
2    *
3    * COPAL is a part of SM4All (Smart hoMes for All) project.
4    *
5    * COPAL is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    *
10   * COPAL is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with COPAL. If not, see <http://www.gnu.org/licenses/>.
17   */
18  package at.ac.tuwien.infosys.sm4all.copal.api;
19  
20  import at.ac.tuwien.infosys.sm4all.copal.api.event.xml.XMLContextEvent;
21  import at.ac.tuwien.infosys.sm4all.copal.api.event.xml.XMLContextEventType;
22  import at.ac.tuwien.infosys.sm4all.copal.service.event.PublishingService;
23  
24  /**
25   * Interface for publishers of {@link XMLContextEvent}s.
26   * 
27   * @author sanjin
28   */
29  public interface ContextPublisher {
30  
31      /**
32       * @return the source ID of published {@link XMLContextEvent}s.
33       */
34      String getSourceID();
35  
36      /**
37       * Callback method which notifies that the {@link ContextPublisher} can
38       * start publishing {@link XMLContextEvent}s for specified
39       * {@link XMLContextEventType} using specified {@link PublishingService}.
40       * 
41       * @param publishingService the {@link PublishingService}.
42       * @param eventType the {@link XMLContextEventType}.
43       * @return if this {@link ContextPublisher} has started successfully.
44       */
45      boolean start(PublishingService publishingService,
46              XMLContextEventType eventType);
47  
48      /**
49       * Callback method which notifies that the {@link ContextPublisher} has to
50       * stop publishing {@link XMLContextEvent}s for specified
51       * {@link XMLContextEventType} using specified {@link PublishingService}.
52       * 
53       * @param publishingService the {@link PublishingService}.
54       * @param eventType the {@link XMLContextEventType}.
55       */
56      void stop(PublishingService publishingService, XMLContextEventType eventType);
57  
58      /**
59       * @return the name of {@link XMLContextEventType} published by this
60       *         {@link ContextPublisher}.
61       */
62      String getEventType();
63  }