KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > connector > deployment > dconfigbean > ResourceAdapterDConfigRoot


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.connector.deployment.dconfigbean;
19
20 import java.io.IOException JavaDoc;
21 import java.io.InputStream JavaDoc;
22
23 import javax.enterprise.deploy.model.DDBean JavaDoc;
24 import javax.enterprise.deploy.model.DDBeanRoot JavaDoc;
25 import javax.enterprise.deploy.spi.DConfigBean JavaDoc;
26 import javax.enterprise.deploy.spi.exceptions.ConfigurationException JavaDoc;
27
28 import org.apache.geronimo.deployment.plugin.DConfigBeanRootSupport;
29 import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
30 import org.apache.geronimo.xbeans.geronimo.GerResourceadapterType;
31 import org.apache.xmlbeans.SchemaTypeLoader;
32 import org.apache.xmlbeans.XmlBeans;
33 import org.apache.xmlbeans.XmlException;
34 import org.apache.xmlbeans.XmlObject;
35
36 /**
37  *
38  *
39  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
40  *
41  * */

42 public class ResourceAdapterDConfigRoot extends DConfigBeanRootSupport {
43     static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[] {
44         XmlBeans.typeLoaderForClassLoader(org.apache.geronimo.xbeans.j2ee.String.class.getClassLoader()),
45         XmlBeans.typeLoaderForClassLoader(GerConnectorDocument.class.getClassLoader())
46     });
47
48     private static String JavaDoc[][] XPATHS = {
49         {"connector", "resourceadapter"}
50     };
51
52     private ResourceAdapterDConfigBean resourceAdapterDConfigBean;
53
54     public ResourceAdapterDConfigRoot(DDBeanRoot JavaDoc ddBean) {
55         super(ddBean, loadDefaultData(ddBean));
56         replaceResourceAdapterDConfigBean(getConnectorDocument().getConnector().getResourceadapterArray()[0]);
57     }
58
59     private static XmlObject loadDefaultData(DDBeanRoot JavaDoc root) {
60         InputStream JavaDoc in = root.getDeployableObject().getEntry("META-INF/geronimo-ra.xml");
61         if(in == null) {
62             GerConnectorDocument doc = GerConnectorDocument.Factory.newInstance();
63             doc.addNewConnector().addNewResourceadapter();
64             return doc;
65         } else {
66             try {
67                 XmlObject result = GerConnectorDocument.Factory.parse(in);
68                 in.close();
69                 return result;
70             } catch (XmlException e) {
71                 throw new RuntimeException JavaDoc("Unable to load default Geronimo RA data", e);
72             } catch (IOException JavaDoc e) {
73                 throw new RuntimeException JavaDoc("Unable to load default Geronimo RA data", e);
74             }
75         }
76     }
77
78     private void replaceResourceAdapterDConfigBean(GerResourceadapterType resourceAdapter) {
79         DDBean JavaDoc ddBean = getDDBean();
80         String JavaDoc path = getXpaths()[0];
81         System.out.println("********** Searching XPath "+path+" -- "+ddBean.getChildBean(path));
82         DDBean JavaDoc childDDBean = ddBean.getChildBean(path)[0];
83         resourceAdapterDConfigBean = new ResourceAdapterDConfigBean(childDDBean, resourceAdapter);
84     }
85
86     GerConnectorDocument getConnectorDocument() {
87         return (GerConnectorDocument) getXmlObject();
88     }
89
90     public String JavaDoc[] getXpaths() {
91         return getXPathsForJ2ee_1_4(XPATHS);
92     }
93
94     public DConfigBean JavaDoc getDConfigBean(DDBean JavaDoc bean) throws ConfigurationException JavaDoc {
95         if (getXpaths()[0].equals(bean.getXpath())) {
96             return resourceAdapterDConfigBean;
97         }
98         return null;
99     }
100
101     public void fromXML(InputStream JavaDoc inputStream) throws XmlException, IOException JavaDoc {
102         super.fromXML(inputStream);
103         //TODO this is so totally wrong...
104
replaceResourceAdapterDConfigBean(getConnectorDocument().getConnector().getResourceadapterArray()[0]);
105     }
106
107     protected SchemaTypeLoader getSchemaTypeLoader() {
108         return SCHEMA_TYPE_LOADER;
109     }
110 }
111
Popular Tags