EMMA Coverage Report (generated Sat Jul 01 16:38:45 PDT 2006)
[all classes][jade.jademx.mbean]

COVERAGE SUMMARY FOR SOURCE FILE [JadeFactory.java]

nameclass, %method, %block, %line, %
JadeFactory.java100% (1/1)100% (11/11)90%  (171/191)94%  (34.8/37)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JadeFactory100% (1/1)100% (11/11)90%  (171/191)94%  (34.8/37)
runtimeInstance (): JadeRuntimeMBean 100% (1/1)69%  (34/49)75%  (6/8)
toString (): String 100% (1/1)84%  (27/32)84%  (0.8/1)
JadeFactory (JadeMXServer): void 100% (1/1)100% (7/7)100% (2/2)
JadeFactory (JadeMXServer, String): void 100% (1/1)100% (7/7)100% (2/2)
JadeFactory (JadeMXServer, String, String): void 100% (1/1)100% (7/7)100% (2/2)
JadeFactory (JadeMXServer, String, String, String): void 100% (1/1)100% (51/51)100% (10/10)
getJadeMXServer (): JadeMXServer 100% (1/1)100% (3/3)100% (1/1)
getObjectNameDomain (): String 100% (1/1)100% (3/3)100% (1/1)
getRuntimeName (): String 100% (1/1)100% (3/3)100% (1/1)
getThreadGroupName (): String 100% (1/1)100% (3/3)100% (1/1)
instantiateRuntime (JademxConfig): JadeRuntimeMBean 100% (1/1)100% (26/26)100% (8/8)

1// jademx - JADE management using JMX
2// Copyright 2005-2006 Caboodle Networks, Inc.
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 
18package jade.jademx.mbean;
19 
20import jade.core.Runtime;
21import jade.jademx.config.jademx.onto.JademxConfig;
22import jade.jademx.server.JadeMXServer;
23import jade.jademx.server.JadeMXServerFactory;
24import jade.util.Logger;
25import jade.util.leap.Iterator;
26import jade.util.leap.List;
27 
28/** 
29 * Factory class for <code>jade.management.mbean</code> package.
30 * @author David Bernstein, <a href="http://www.caboodlenetworks.com"
31 *  >Caboodle Networks, Inc.</a>
32 */
33public class JadeFactory {
34    
35    /** the JadeMXServer we're using */
36    private JadeMXServer jadeMXServer;
37 
38    /** default ObjectName domain */
39    public final static String OBJECT_NAME_DOMAIN_DEFAULT = "jade";
40    
41    /** ObjectName domain for created MBeans*/
42    private String objectNameDomain;
43    
44    /** default name for thread group */
45    private static final String THREAD_GROUP_DEFAULT_NAME =
46        "JADE runtime";
47    
48    /** thread group name */
49    private String threadGroupName = THREAD_GROUP_DEFAULT_NAME;
50    
51    /** default name property for runtime instance */
52    private static final String RUNTIME_NAME_DEFAULT = "default";
53    
54    /** name property for JadeRuntime */
55    private String runtimeName = RUNTIME_NAME_DEFAULT;
56 
57    
58    /** my logger */
59    private final Logger logger = 
60        Logger.getMyLogger(JadeFactory.class.getName());
61    
62    
63    /**
64     * make factory for JADE MBeans for given MBean server.
65     * @param jadeMXServer MBean server operating under
66     */
67    public JadeFactory( JadeMXServer jadeMXServer ) {
68        this( jadeMXServer, 
69              OBJECT_NAME_DOMAIN_DEFAULT,
70              RUNTIME_NAME_DEFAULT,
71              THREAD_GROUP_DEFAULT_NAME );
72    }
73    
74    
75    /**
76     * make factory for JADE MBeans for given MBean server.
77     * @param jadeMXServer MBean server operating under
78     * @param objectNameDomain ObjectName domain to use
79     */
80    public JadeFactory( JadeMXServer jadeMXServer, String objectNameDomain ) {
81        this( jadeMXServer, objectNameDomain, RUNTIME_NAME_DEFAULT, 
82                THREAD_GROUP_DEFAULT_NAME );
83    }
84    
85    
86    /**
87     * make factory for JADE MBeans for given MBean server.
88     * @param jadeMXServer MBean server operating under
89     * @param objectNameDomain ObjectName domain to use
90     * @param runtimeName name property to use for JadeRuntimeMBean
91     */
92    public JadeFactory( JadeMXServer jadeMXServer, String objectNameDomain, 
93            String runtimeName ) {
94        this( jadeMXServer, objectNameDomain, runtimeName, 
95                THREAD_GROUP_DEFAULT_NAME );
96    }
97    
98    
99    /**
100     * make factory for JADE MBeans for given MBean server.
101     * @param jadeMXServer MBean server operating under
102     * @param objectNameDomain ObjectName domain to use
103     * @param runtimeName name property to use for JadeRuntimeMBean
104     * @param threadGroupName name for thread group for JADE platforms
105     */
106    public JadeFactory( 
107            JadeMXServer jadeMXServer, 
108            String objectNameDomain, 
109            String runtimeName,
110            String threadGroupName ) {
111        this.jadeMXServer = jadeMXServer;
112        this.objectNameDomain = objectNameDomain;
113        this.runtimeName = runtimeName;
114        this.threadGroupName = threadGroupName;
115        logger.log( Logger.CONFIG, "created jademx JadeFactory for domain \"" + 
116                objectNameDomain + "\", thread group \""+threadGroupName+"\"");
117    }
118    
119    
120    /**
121     * Factory class wrapper for <code>jade.core.Runtime.instance()</code>.
122     * Callers should call <code>unregister()</code> after all done with
123     * the instance.
124     * @return MBean for singleton JADE runtime
125     */
126    public JadeRuntimeMBean runtimeInstance() 
127      throws JademxException {
128        JadeMXServerFactory.setSysProp( jadeMXServer );
129        // FIXME: inconsistency between new JadeRuntime MBean and single
130        // JADE Runtime instance
131        JadeRuntime jadeRuntime = new JadeRuntime( this, Runtime.instance() );
132        try {
133            jadeRuntime.register( runtimeName, null );
134        }
135        catch ( Exception e ) {
136            throw new JademxException("exception registering "+runtimeName, e );
137        }
138        logger.log( Logger.CONFIG, "created JadeRuntimeMBean instance \"" + 
139                jadeRuntime.getObjectName().getCanonicalName() + "\"");
140        return jadeRuntime;
141    }
142    
143    /**
144     * instantiate the runtime specified by jademx configuration object
145     * @param jademxConfig jademx configuration to instantiate
146     * @return instantiated runtime mbean
147     * @throws JademxException on error
148     */
149    public JadeRuntimeMBean instantiateRuntime( JademxConfig jademxConfig )
150      throws JademxException {
151        JadeRuntime jadeRuntime = (JadeRuntime)runtimeInstance();
152        List runtimes = jademxConfig.getRuntimes();
153        if ( null != runtimes ) {
154            Iterator runtimeI = runtimes.iterator();
155            if ( runtimeI.hasNext() ) {
156                jade.jademx.config.jademx.onto.ConfigRuntime runtimeConfig = 
157                    (jade.jademx.config.jademx.onto.ConfigRuntime)runtimeI.next(); 
158                jadeRuntime.instantiatePlatforms( runtimeConfig );
159            }
160        }
161        return jadeRuntime;
162    }
163    
164    /**
165     * return the object name domain
166     * @return returns the object name domain
167     */
168    public String getObjectNameDomain() {
169        return objectNameDomain;
170    }
171 
172    /**
173     * return the MBean server 
174     * @return returns the MBean server.
175     */
176    public JadeMXServer getJadeMXServer() {
177        return jadeMXServer;
178    }
179    
180    /**
181     * return the thread group name
182     * @return the thread group name
183     */
184    public String getThreadGroupName() {
185        return threadGroupName;
186    }
187    /**
188     * get runtime name
189     * @return Returns the runtimeName.
190     */
191    public String getRuntimeName() {
192        return runtimeName;
193    }
194    
195    /* (non-Javadoc)
196     * @see java.lang.Object#toString()
197     */
198    public String toString() {
199        return JadeFactory.class.getName() +
200        "[objectNameDomain="+objectNameDomain+
201        ",threadGroupName="+threadGroupName+
202        ",runtimeName="+runtimeName+"]";
203    }
204}

[all classes][jade.jademx.mbean]
EMMA 2.0.5312 (C) Vladimir Roubtsov