View Javadoc

1   /*
2    ~ Copyright 2006-2007 Nicolas De Loof.
3    ~
4    ~ Licensed under the Apache License, Version 2.0 (the "License");
5    ~ you may not use this file except in compliance with the License.
6    ~ You may obtain a copy of the License at
7    ~
8    ~      http://www.apache.org/licenses/LICENSE-2.0
9    ~
10   ~ Unless required by applicable law or agreed to in writing, software
11   ~ distributed under the License is distributed on an "AS IS" BASIS,
12   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   ~ See the License for the specific language governing permissions and
14   ~ limitations under the License.
15   */
16  package org.jmonit;
17  
18  import java.util.Collection;
19  import java.util.Set;
20  
21  import org.jmonit.spi.PluginManager;
22  
23  /**
24   * A <b>Repository</b> contains all the monitors used by the application and
25   * provides a centralized way to acces them. A monitor is defined in the
26   * repository by the pair category + name.
27   * <p>
28   * Categories are used to group monitors that handle comparable resources. For
29   * example a <tt>jdbc</tt> category will group all <code>Monitor</code>s
30   * that instrument the data acces layer. The category can have sub-categories
31   * using a dot notation. For example, the <tt>jdbc.procedures</tt> category
32   * can group data acces layer monitors dedicated to invocation of stored
33   * procedures.
34   * 
35   * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
36   */
37  public interface Repository
38  {
39      /**
40       * @param name monitor name
41       * @return The monitor uniquely defines by it's name
42       */
43      Monitor getMonitor( String name );
44  
45      /**
46       * @param tag tag
47       * @return all monitors having the requested tag
48       */
49      Collection<Monitor> getMonitorsWithTag( String tag );
50  
51      /**
52       * @return The tags used by existing monitors
53       */
54      Set<String> getTags();
55  
56      /**
57       * @param tags the tags the returned monitor must have
58       * @return all monitors having the requested tags
59       */
60      Collection<Monitor> getMonitorsWithTags( String[] tags );
61  
62      /**
63       * @return all monitors
64       */
65      Collection<Monitor> getMonitors();
66  
67      /**
68       * @return all monitors that support the expected set of features
69       */
70      Collection<Monitor> getMonitorsWithFeatures( Class[] features );
71  
72      /**
73       * Register a custom featureManager
74       * 
75       * @param featureManager
76       */
77      void setFeatureManager( PluginManager featureManager );
78  
79      /**
80       * @return the active feature manager
81       */
82      PluginManager getFeatureManager();
83  
84  }