KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > config > impl > ConfigUpdateImpl


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  * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
26  *
27  * Copyright 2001-2002 by iPlanet/Sun Microsystems, Inc.,
28  * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
29  * All rights reserved.
30  */

31 package com.sun.enterprise.config.impl;
32
33 import java.io.Serializable JavaDoc;
34 import java.util.HashMap JavaDoc;
35 import java.util.Set JavaDoc;
36 import java.util.Iterator JavaDoc;
37
38 /**
39  * A configuration change for an element. Holds xpath, list of changed
40  * attributes, their old and new values.
41  */

42 public class ConfigUpdateImpl extends ConfigChangeImpl implements com.sun.enterprise.config.ConfigUpdate, Serializable JavaDoc {
43
44    // private String xpath;
45
private HashMap JavaDoc oldValues = new HashMap JavaDoc();
46     private HashMap JavaDoc newValues = new HashMap JavaDoc();
47     
48     public ConfigUpdateImpl(String JavaDoc xpath, String JavaDoc attrName, String JavaDoc oldValue, String JavaDoc newValue) {
49         this.xpath = xpath;
50         addChangedAttribute(attrName, oldValue, newValue);
51     }
52     
53     public String JavaDoc getConfigChangeType() {
54         return TYPE_UPDATE;
55     }
56         
57     /**
58      * add attr changes to the hashmap
59      */

60     public void addChangedAttribute(String JavaDoc attrName, String JavaDoc oldValue, String JavaDoc newValue) {
61         //FIXME: This solution will not work for cases involving setAttribute(A, NULL)
62
// null has to be handled gracefully in future releases.
63

64         if(oldValues.get(attrName) == null) {
65            // if(!oldValue.equals(newValue)) {
66
oldValues.put(attrName, oldValue);
67                 newValues.put(attrName, newValue);
68            // } else {
69
// return;
70
// }
71
} else if(oldValues.get(attrName).equals(newValue)) {
72             oldValues.remove(attrName);
73             newValues.remove(attrName);
74         } else {
75             newValues.put(attrName, newValue);
76         }
77     }
78     
79     public String JavaDoc getOldValue(String JavaDoc attrName) {
80         return (String JavaDoc)oldValues.get(attrName);
81     }
82     
83     public String JavaDoc getNewValue(String JavaDoc attrName) {
84         return (String JavaDoc)newValues.get(attrName);
85     }
86     
87     public Set JavaDoc getAttributeSet() {
88         return oldValues.keySet();
89     }
90
91     public void removeAttribute(String JavaDoc attrName) {
92         if (attrName == null) {
93             throw new IllegalArgumentException JavaDoc("Attribute name is null");
94         }
95         if (oldValues.containsKey(attrName) && newValues.containsKey(attrName)) {
96             oldValues.remove(attrName);
97             newValues.remove(attrName);
98         }
99     }
100
101     public String JavaDoc toString() {
102         String JavaDoc ret = "update xpath=" +xpath +"\n";
103         Set JavaDoc s = newValues.keySet();
104         for(Iterator JavaDoc iter = s.iterator(); iter.hasNext();) {
105             String JavaDoc next = (String JavaDoc) iter.next();
106             ret+= "\t" + "attr=" + next + " " + oldValues.get(next) + "-->" + newValues.get(next) + "\n";
107         }
108         return ret;
109     }
110     
111     public String JavaDoc getName() {
112         return null; //FIXME TBD
113
}
114 }
Popular Tags