1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with 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,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20 package org.apache.ws.commons.schema;
21
22 import java.util.LinkedHashMap;
23 import java.util.Map;
24
25 public abstract class XmlSchemaObject {
26 int lineNumber;
27 int linePosition;
28 String sourceURI;
29
30 /**
31 * a map for holding meta information
32 * Initially set to null to gain some improvement
33 * in memory. will be initialized only if a
34 * user attempts
35 */
36 private Map metaInfoMap = null;
37
38 /**
39 * returns the metainfo map. may be null
40 * if not utilized
41 */
42 public Map getMetaInfoMap() {
43 return metaInfoMap;
44 }
45
46 /**
47 * Directly set the meta info map into the schema element
48 * @param metaInfoMap
49 */
50 public void setMetaInfoMap(Map metaInfoMap) {
51 this.metaInfoMap = metaInfoMap;
52 }
53
54 /**
55 * Add a value to the meta info map
56 * will be initialized if not used
57 * previously
58 * @param key
59 * @param value
60 */
61 public void addMetaInfo(Object key,Object value){
62 if (metaInfoMap==null){
63 metaInfoMap = new LinkedHashMap();
64 }
65
66 metaInfoMap.put(key,value);
67 }
68
69
70 /**
71 * Creates new XmlSchemaObject
72 */
73 protected XmlSchemaObject() {
74 }
75
76 public int getLineNumber() {
77 return lineNumber;
78 }
79
80 public void setLineNumber(int lineNumber) {
81 this.lineNumber = lineNumber;
82 }
83
84 public int getLinePosition() {
85 return linePosition;
86 }
87
88 public void setLinePosition(int linePosition) {
89 this.linePosition = linePosition;
90 }
91
92 public String getSourceURI() {
93 return sourceURI;
94 }
95
96 public void setSourceURI(String sourceURI) {
97 this.sourceURI = sourceURI;
98 }
99
100 public boolean equals(Object what) {
101 if (what == this) {
102 return true;
103 }
104
105 // note: instanceof returns false if its first operand is null
106 if (!(what instanceof XmlSchemaObject)) {
107 return false;
108 }
109
110 XmlSchemaObject xso = (XmlSchemaObject) what;
111
112 if (this.lineNumber != xso.lineNumber) {
113 return false;
114 }
115
116 if (this.linePosition != xso.linePosition) {
117 return false;
118 }
119
120 if (this.sourceURI != null) {
121 if (!this.sourceURI.equals(xso.sourceURI)) {
122 return false;
123 }
124 } else {
125 if (xso.sourceURI != null) {
126 return false;
127 }
128 }
129
130 return true;
131 }
132
133 public String toString(String prefix, int tab) {
134 String xml = new String();
135 for (int i = 0; i < tab; i++)
136 xml += "\t";
137
138 xml += this.getClass().toString() + "\n";
139 return xml;
140 }
141 }