KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > j2ee > management > impl > J2EEAppClientModuleImpl


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.j2ee.management.impl;
18
19 import java.util.Hashtable JavaDoc;
20 import javax.management.ObjectName JavaDoc;
21
22 import org.apache.geronimo.gbean.GBeanInfo;
23 import org.apache.geronimo.gbean.GBeanInfoBuilder;
24 import org.apache.geronimo.management.J2EEApplication;
25 import org.apache.geronimo.management.J2EEServer;
26 import org.apache.geronimo.management.AppClientModule;
27 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
28 import org.apache.geronimo.kernel.ObjectNameUtil;
29
30 /**
31  * @version $Revision: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
32  */

33 public class J2EEAppClientModuleImpl implements AppClientModule {
34     private final String JavaDoc deploymentDescriptor;
35     private final J2EEServer server;
36     private final J2EEApplication application;
37     private final ClassLoader JavaDoc classLoader;
38     private final String JavaDoc objectName;
39
40     public J2EEAppClientModuleImpl(String JavaDoc objectName, J2EEServer server, J2EEApplication application, String JavaDoc deploymentDescriptor, ClassLoader JavaDoc classLoader) {
41         this.objectName = objectName;
42         ObjectName JavaDoc myObjectName = ObjectNameUtil.getObjectName(this.objectName);
43         verifyObjectName(myObjectName);
44
45         this.server = server;
46         this.application = application;
47         this.deploymentDescriptor = deploymentDescriptor;
48         this.classLoader = classLoader;
49     }
50
51     public String JavaDoc getObjectName() {
52         return objectName;
53     }
54
55     public boolean isStateManageable() {
56         return true;
57     }
58
59     public boolean isStatisticsProvider() {
60         return false;
61     }
62
63     public boolean isEventProvider() {
64         return true;
65     }
66
67     /**
68      * ObjectName must match this pattern:
69      * <p/>
70      * domain:j2eeType=AppClientModule,name=MyName,J2EEServer=MyServer,J2EEApplication=MyApplication
71      */

72     private void verifyObjectName(ObjectName JavaDoc objectName) {
73         if (objectName.isPattern()) {
74             throw new InvalidObjectNameException("ObjectName can not be a pattern", objectName);
75         }
76         Hashtable JavaDoc keyPropertyList = objectName.getKeyPropertyList();
77         if (!"AppClientModule".equals(keyPropertyList.get("j2eeType"))) {
78             throw new InvalidObjectNameException("AppClientModule object name j2eeType property must be 'AppClientModule'", objectName);
79         }
80         if (!keyPropertyList.containsKey("name")) {
81             throw new InvalidObjectNameException("AppClientModule object must contain a name property", objectName);
82         }
83         if (!keyPropertyList.containsKey("J2EEServer")) {
84             throw new InvalidObjectNameException("AppClientModule object name must contain a J2EEServer property", objectName);
85         }
86         if (!keyPropertyList.containsKey("J2EEApplication")) {
87             throw new InvalidObjectNameException("AppClientModule object name must contain a J2EEApplication property", objectName);
88         }
89         if (keyPropertyList.size() != 4) {
90             throw new InvalidObjectNameException("AppClientModule object name can only have j2eeType, name, J2EEApplication, and J2EEServer properties", objectName);
91         }
92     }
93
94     public String JavaDoc getDeploymentDescriptor() {
95         return deploymentDescriptor;
96     }
97
98     public String JavaDoc getServer() {
99         return server.getObjectName();
100     }
101
102     public String JavaDoc getApplication() {
103         if (application == null) {
104             return null;
105         }
106         return application.getObjectName();
107     }
108
109     public String JavaDoc[] getJavaVMs() {
110         return server.getJavaVMs();
111     }
112
113     public ClassLoader JavaDoc getClassLoader() {
114         return classLoader;
115     }
116
117     public static final GBeanInfo GBEAN_INFO;
118
119     static {
120         GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(J2EEAppClientModuleImpl.class, NameFactory.APP_CLIENT_MODULE);
121         infoFactory.addReference("J2EEServer", J2EEServer.class);
122         infoFactory.addReference("J2EEApplication", J2EEApplication.class);
123
124         infoFactory.addAttribute("deploymentDescriptor", String JavaDoc.class, true);
125
126         infoFactory.addAttribute("objectName", String JavaDoc.class, false);
127         infoFactory.addAttribute("server", String JavaDoc.class, false);
128         infoFactory.addAttribute("application", String JavaDoc.class, false);
129         infoFactory.addAttribute("javaVMs", String JavaDoc[].class, false);
130         infoFactory.addAttribute("classLoader", ClassLoader JavaDoc.class, false);
131         infoFactory.addInterface(AppClientModule.class);
132
133
134         infoFactory.setConstructor(new String JavaDoc[]{
135             "objectName",
136             "J2EEServer",
137             "J2EEApplication",
138             "deploymentDescriptor",
139             "classLoader"});
140
141         GBEAN_INFO = infoFactory.getBeanInfo();
142     }
143
144     public static GBeanInfo getGBeanInfo() {
145         return GBEAN_INFO;
146     }
147 }
148
Popular Tags