View Javadoc

1   /**
2    *
3    *  Licensed to the Apache Software Foundation (ASF) under one or more
4    *  contributor license agreements.  See the NOTICE file distributed with
5    *  this work for additional information regarding copyright ownership.
6    *  The ASF licenses this file to You under the Apache License, Version 2.0
7    *  (the "License"); you may not use this file except in compliance with
8    *  the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing, software
13   *  distributed under the License is distributed on an "AS IS" BASIS,
14   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *  See the License for the specific language governing permissions and
16   *  limitations under the License.
17   */
18  
19  package org.apache.geronimo.naming.deployment;
20  
21  import java.util.Map;
22  
23  import javax.xml.namespace.QName;
24  
25  import org.apache.geronimo.j2ee.deployment.NamingBuilder;
26  import org.apache.geronimo.j2ee.deployment.Module;
27  import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
28  import org.apache.geronimo.kernel.repository.Environment;
29  import org.apache.geronimo.kernel.config.Configuration;
30  import org.apache.geronimo.common.DeploymentException;
31  import org.apache.geronimo.gbean.GBeanInfo;
32  import org.apache.geronimo.gbean.GBeanInfoBuilder;
33  import org.apache.xmlbeans.XmlObject;
34  import org.apache.xmlbeans.QNameSet;
35  
36  /**
37   * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
38   */
39  public class UnavailableRefBuilder implements NamingBuilder {
40      private final QNameSet unavailableQNameSet;
41      private QName unavailableQName;
42  
43      public UnavailableRefBuilder(String namespaceURI, String localPart) {
44          unavailableQName = new QName(namespaceURI, localPart);
45          unavailableQNameSet = QNameSet.singleton(unavailableQName);
46      }
47      public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) throws DeploymentException {
48          checkUnavailable(specDD);
49      }
50  
51      private void checkUnavailable(XmlObject specDD) throws DeploymentException {
52          XmlObject[] specRefs = specDD.selectChildren(unavailableQNameSet);
53          if (specRefs.length > 0) {
54              throw new DeploymentException("This server cannot deploy references of type " + unavailableQName);
55          }
56      }
57  
58      public void initContext(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module) throws DeploymentException {
59          checkUnavailable(specDD);
60      }
61  
62      public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
63          checkUnavailable(specDD);
64      }
65  
66      public QNameSet getSpecQNameSet() {
67          return unavailableQNameSet;
68      }
69  
70      public QNameSet getPlanQNameSet() {
71          return QNameSet.EMPTY;
72      }
73  
74      public static final GBeanInfo GBEAN_INFO;
75  
76      static {
77          GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(UnavailableRefBuilder.class, NameFactory.MODULE_BUILDER);
78          infoBuilder.addAttribute("specNamespaceURI", String.class, true, true);
79          infoBuilder.addAttribute("specLocalPart", String.class, true, true);
80  
81          infoBuilder.setConstructor(new String[] {"specNamespaceURI", "specLocalPart"});
82  
83          GBEAN_INFO = infoBuilder.getBeanInfo();
84      }
85  
86      public static GBeanInfo getGBeanInfo() {
87          return GBEAN_INFO;
88      }
89  }