KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > naming > reference > ConfigurationAwareReference


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
18 package org.apache.geronimo.naming.reference;
19
20 import org.apache.geronimo.gbean.AbstractNameQuery;
21 import org.apache.geronimo.gbean.AbstractName;
22 import org.apache.geronimo.kernel.config.Configuration;
23 import org.apache.geronimo.kernel.config.ConfigurationManager;
24 import org.apache.geronimo.kernel.config.ConfigurationUtil;
25 import org.apache.geronimo.kernel.repository.Artifact;
26 import org.apache.geronimo.kernel.Kernel;
27 import org.apache.geronimo.kernel.GBeanNotFoundException;
28
29 import java.util.Set JavaDoc;
30 import java.util.Collections JavaDoc;
31
32 /**
33  * TODO: document me
34  *
35  * NOTE: this class is serialized when modules are installed. Any changes should
36  * be carefully reviewed to ensure they don't cause deserialization errors!
37  *
38  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
39  */

40 public abstract class ConfigurationAwareReference extends SimpleAwareReference {
41     private static final long serialVersionUID = 283358809226901462L;
42     private final Artifact configId;
43     protected final Set JavaDoc abstractNameQueries;
44
45     protected ConfigurationAwareReference(Artifact configId, AbstractNameQuery abstractNameQuery) {
46         this.configId = configId;
47         this.abstractNameQueries = Collections.singleton(abstractNameQuery);
48     }
49
50     protected ConfigurationAwareReference(Artifact configId, Set JavaDoc abstractNameQueries) {
51         this.configId = configId;
52         this.abstractNameQueries = abstractNameQueries;
53     }
54
55     public Configuration getConfiguration() {
56         Kernel kernel = getKernel();
57         ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
58         return configurationManager.getConfiguration(configId);
59     }
60
61     public AbstractName resolveTargetName() throws GBeanNotFoundException {
62         Configuration configuration = getConfiguration();
63         try {
64             return configuration.findGBean(abstractNameQueries);
65         } catch (GBeanNotFoundException e) {
66             Set JavaDoc results = getKernel().listGBeans(abstractNameQueries);
67             if (results.size() == 1) {
68                 return (AbstractName) results.iterator().next();
69             }
70             throw new GBeanNotFoundException("Name query " + abstractNameQueries + " not satisfied in kernel, matches: " + results, e);
71         }
72     }
73
74 }
75
Popular Tags