View Javadoc

1   /*
2    Copyright (C) 2007 Grid Systems, S.A. and University of Southampton IT Innovation Centre
3   
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8   
9    This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13  
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
17  */
18  package nextgrid.api.pom;
19  
20  import java.io.Serializable;
21  import java.net.URI;
22  import java.util.Map;
23  
24  import javax.xml.namespace.QName;
25  
26  import nextgrid.api.env.ProcessEnvironment;
27  
28  /**
29   * Implementation of the service logic.
30   *
31   * @author Rodrigo Ruiz, Nikolaos Matskanis
32   */
33  public interface Grounding extends Serializable {
34    /**
35     * Name space for grounding attributes.
36     */
37    String NS_GROUNDING = "urn:grounding";
38  
39    /**
40     * Attribute key for the service grounding type URI.
41     */
42    QName ATTR_GROUNDING_TYPE = new QName(NS_GROUNDING, "type");
43  
44    /**
45     * Attribute key for service groundings accepting operation names.
46     * <p>
47     * It is expected that standard groundings will be able to execute different
48     * actions depending on the service configuration. This attribute will be
49     * the basic configuration field for such groundings.
50     */
51    QName ATTR_OPERATION = new QName(NS_GROUNDING, "operation");
52  
53    /**
54     * Gets a URI for the type of this grounding. This URI can be used for
55     * looking up grounding implementations.
56     *
57     * @return The Grounding type as a URI
58     */
59    URI getType();
60  
61    /**
62     * Gets the names and descriptions of all supported attributes.
63     * <p>
64     * The returned map contains [name, description] pairs of attributes.
65     *
66     * @return A map containing attribute names and descriptions
67     */
68    Map<QName, String> getSupportedAttribs();
69  
70    /**
71     * Invokes the logic of this grounding.
72     *
73     * @param env     Process environment
74     * @param service The service instance on which this grounding must be executed
75     * @throws ProcessException If an error occurs
76     */
77    void invoke(ProcessEnvironment env, Service service) throws ProcessException;
78  
79    /**
80     * Clean up.
81     */
82    void dispose();
83  
84    /**
85     * Validates this grounding.
86     *
87     * @throws ProcessException If the validation fails
88     */
89    void validate() throws ProcessException;
90  }