KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > tools > upgrade > transform > elements > GenericResource


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23
24 /*
25  * IIOPListener.java
26  *
27  * Created on August 4, 2003, 2:04 PM
28  */

29
30 package com.sun.enterprise.tools.upgrade.transform.elements;
31
32 /**
33  *
34  * @author prakash
35  */

36 import org.w3c.dom.Document JavaDoc;
37 import org.w3c.dom.Element JavaDoc;
38 import org.w3c.dom.NodeList JavaDoc;
39 import org.w3c.dom.Node JavaDoc;
40 import com.sun.enterprise.tools.upgrade.transform.ElementToObjectMapper;
41
42 import com.sun.enterprise.tools.upgrade.common.*;
43 import com.sun.enterprise.tools.upgrade.cluster.*;
44
45 public class GenericResource extends GenericElement {
46     
47     private boolean appendingResourceRefToCluster = false;
48     private java.util.List JavaDoc insertStructureForResourceRefInCluster = null;
49     /** Creates a new instance of Element */
50     public GenericResource() {
51     }
52     /**
53      * element - one of the child of resources
54      * parentSource - resources element of source
55      * parentResult - resources element of result
56      */

57     public void transform(Element JavaDoc element, Element JavaDoc parentSource, Element JavaDoc parentResult){
58         String JavaDoc resourceTagName = element.getTagName();
59         if(resourceTagName.equals("jms-resource"))
60         {
61             // There is this JMSResource class that handles it.
62
this.skipGenericElementTransform(element, parentSource, parentResult);
63             return;
64         }
65         //Added for CR 6363168
66
if(resourceTagName.equals("jdbc-connection-pool")) {
67             if(element.getAttribute("name").equals("__TimerPool") ||
68                     element.getAttribute("name").equals("PointBasePool"))
69                 return;
70         }
71         //Added for CR 6363168
72
if(resourceTagName.equals("jdbc-resource")) {
73             if(element.getAttribute("pool-name").equals("PointBasePool"))
74                 return;
75         }
76         super.transform(element, parentSource, parentResult);
77         this.updateResourceRef(element, parentResult);
78     }
79     protected void updateResourceRef(Element JavaDoc element, Element JavaDoc parentResult){
80         // If the source version is AS8.x then the following is not necessary.
81
// Otherwise, AS7.x didnt have server element so, need to add resource-ref to the server element and cluster elements
82
if(!commonInfoModel.getSourceVersion().equals(com.sun.enterprise.tools.upgrade.common.UpgradeConstants.VERSION_7X))
83             return;
84         org.w3c.dom.Attr JavaDoc jndiAttr = element.getAttributeNode("jndi-name");
85         if(jndiAttr != null){
86             // parentResult is resources, its parent should be domain. From there get servers and server element.
87
NodeList JavaDoc servers = ((Element JavaDoc)parentResult.getParentNode()).getElementsByTagName("servers");
88             NodeList JavaDoc serverList = ((Element JavaDoc)servers.item(0)).getElementsByTagName("server");
89             // PE there can be only one server.
90
if(commonInfoModel.getTargetEdition().equals(com.sun.enterprise.tools.upgrade.common.UpgradeConstants.EDITION_PE)){
91                 Element JavaDoc serverElement = ((Element JavaDoc)serverList.item(0));
92                 this.addOrUpdateResourceRef(serverElement, element, parentResult);
93             }else{
94                 if(commonInfoModel.getCurrentCluster() == null){
95                     // This must be the scenario for stand alone instances or PE/SE upgrade
96
String JavaDoc serverName = commonInfoModel.getCurrentSourceInstance();
97                     if((serverName == null) || ("".equals(serverName.trim()))){
98                         // This is the case for AS 8.x PE source
99
serverName = "server";
100                     }
101                     if(serverName != null){
102                         for(int lh =0; lh < serverList.getLength(); lh++){
103                             if(serverName.equals(((Element JavaDoc)serverList.item(lh)).getAttribute("name"))){
104                                 this.addOrUpdateResourceRef((Element JavaDoc)serverList.item(lh), element, parentResult);
105                                 break;
106                             }
107                         }
108                     }
109                 }else{
110                     String JavaDoc clusterName = commonInfoModel.getCurrentCluster();
111                     this.updateResourceRefsForCluster(clusterName, serverList,element,parentResult);
112                 }
113             }
114         }
115     }
116     private void updateResourceRefsForCluster(String JavaDoc clusterName, NodeList JavaDoc serverRefList, Element JavaDoc element, Element JavaDoc parentResult){
117         for(java.util.Iterator JavaDoc dItr = ClustersInfoManager.getClusterInfoManager().getClusterInfoList().iterator(); dItr.hasNext();){
118             ClusterInfo cInfo = (ClusterInfo)dItr.next();
119             if(cInfo.getClusterName().equals(clusterName)){
120                 for(java.util.Iterator JavaDoc clItr = cInfo.getClusteredInstanceList().iterator(); clItr.hasNext();){
121                     ClusteredInstance clInstance = (ClusteredInstance)clItr.next();
122                     String JavaDoc clInstanceName = clInstance.getInstanceName();
123                     for(int lh =0; lh < serverRefList.getLength(); lh++){
124                         if(clInstanceName.equals(((Element JavaDoc)serverRefList.item(lh)).getAttribute("name"))){
125                             this.addOrUpdateResourceRef((Element JavaDoc)serverRefList.item(lh), element, parentResult);
126                             break;
127                         }
128                     }
129                 }
130             }
131         }
132         NodeList JavaDoc clusters = ((Element JavaDoc)parentResult.getParentNode()).getElementsByTagName("clusters");
133         if((clusters != null) && (clusters.getLength() > 0)){
134             NodeList JavaDoc clustersList = ((Element JavaDoc)clusters.item(0)).getElementsByTagName("cluster");
135             for(int lh =0; lh < clustersList.getLength(); lh++){
136                 if(clusterName.equals(((Element JavaDoc)clustersList.item(lh)).getAttribute("name"))){
137                     this.appendingResourceRefToCluster = true;
138                     this.addOrUpdateResourceRef((Element JavaDoc)clustersList.item(lh), element, parentResult);
139                     this.appendingResourceRefToCluster = false;
140                     break;
141                 }
142             }
143         }
144     }
145     private void addOrUpdateResourceRef(Element JavaDoc parentForRef, Element JavaDoc element, Element JavaDoc parentResult){
146         // Get resource refs.
147
NodeList JavaDoc resourceRefs = parentForRef.getElementsByTagName("resource-ref");
148         Element JavaDoc resourceRef = null;
149         for(int lh =0; lh < resourceRefs.getLength(); lh++){
150             // Compare one key attribute
151
if((element.getAttribute("jndi-name")).equals(((Element JavaDoc)resourceRefs.item(lh)).getAttribute("ref"))){
152                 resourceRef = (Element JavaDoc)resourceRefs.item(lh);
153                 org.w3c.dom.Attr JavaDoc enAttr = element.getAttributeNode("enabled");
154                 if(enAttr != null){
155                     resourceRef.setAttribute("enabled", element.getAttribute("enabled"));
156                 }
157                 break;
158             }
159         }
160         if(resourceRef == null){
161             resourceRef = parentResult.getOwnerDocument().createElement("resource-ref");
162             resourceRef.setAttribute("ref", element.getAttribute("jndi-name"));
163             org.w3c.dom.Attr JavaDoc enAttr = element.getAttributeNode("enabled");
164             if(enAttr != null){
165                 resourceRef.setAttribute("enabled", element.getAttribute("enabled"));
166             }
167             this.appendElementToParent(parentForRef,resourceRef);
168         }
169     }
170     private void skipGenericElementTransform(Element JavaDoc element, Element JavaDoc parentSource, Element JavaDoc parentResult){
171         NodeList JavaDoc childNodes = element.getChildNodes();
172         for(int index=0; index < childNodes.getLength(); index++){
173             Node JavaDoc aNode = childNodes.item(index);
174             try{
175                 if(aNode.getNodeType() == Node.ELEMENT_NODE){
176                     BaseElement baseElement = ElementToObjectMapper.getMapper().getElementObject(aNode.getNodeName());
177                     baseElement.transform((Element JavaDoc)aNode, element, parentResult);
178                 }
179             }catch(Exception JavaDoc ex){
180                 ex.printStackTrace();
181             }
182         }
183     }
184     protected java.util.List JavaDoc getInsertElementStructure(Element JavaDoc element, Element JavaDoc parentEle){
185         java.util.List JavaDoc insertStrucure = ElementToObjectMapper.getMapper().getInsertElementStructure(element.getTagName());
186         if(element.getTagName().equals("resource-ref") && this.appendingResourceRefToCluster){
187             if(this.insertStructureForResourceRefInCluster == null){
188                 this.insertStructureForResourceRefInCluster = new java.util.ArrayList JavaDoc();
189                 this.insertStructureForResourceRefInCluster.add("application-ref");
190                 this.insertStructureForResourceRefInCluster.add("system-property");
191                 this.insertStructureForResourceRefInCluster.add("property");
192             }
193             return this.insertStructureForResourceRefInCluster;
194         }
195         return insertStrucure;
196     }
197 }
198
Popular Tags