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.security;
19  
20  import java.util.Map;
21  import at.ac.tuwien.infosys.sm4all.copal.api.event.ContextEvent;
22  import at.ac.tuwien.infosys.sm4all.copal.api.listener.ContextListener;
23  
24  /**
25   * The interface for methods of {@link Authorization}s that can allow or deny a
26   * {@link ContextListener} to receive a {@link ContextEvent}.
27   * 
28   * @author sanjin
29   */
30  public interface AuthorizationMethod {
31  
32      /**
33       * Returns the globally unique name of this {@link AuthorizationMethod}.
34       * 
35       * @return the globally unique name of this {@link AuthorizationMethod}.
36       */
37      String getName();
38  
39      /**
40       * Check whether specified {@link ContextListener} is allowed/denied to
41       * receive specified {@link ContextEvent} and using specified attributes to
42       * decide.
43       * 
44       * @param listener the {@link ContextListener}.
45       * @param event {@link ContextEvent}.
46       * @param attributes the {@link Map} of attribute name to attribute value
47       *        that is used in authorizing.
48       * @return the {@link AuthorizationResult}.
49       */
50      AuthorizationResult authorize(ContextListener listener, ContextEvent event,
51              Map<String, String> attributes);
52  }