001: package org.directwebremoting.drapgen.generate.gi;
002:
003: import org.w3c.dom.Element;
004: import org.w3c.dom.NamedNodeMap;
005: import org.w3c.dom.Node;
006:
007: /**
008: *
009: */
010: public class GiMethod {
011: /**
012: * @param element
013: */
014: public GiMethod(Element element, String creatingClassName) {
015: NamedNodeMap attributes = element.getAttributes();
016:
017: Node nameAttr = attributes.getNamedItem("name");
018: if (nameAttr == null) {
019: throw new NullPointerException(
020: "Missing name attribute from element: " + element);
021: }
022: name = nameAttr.getNodeValue();
023:
024: // We might be implemented elsewhere
025: Node sourceAttr = attributes.getNamedItem("source");
026: if (sourceAttr == null) {
027: declarationClassName = creatingClassName;
028: } else {
029: declarationClassName = sourceAttr.getNodeValue();
030: }
031:
032: this .element = element;
033: }
034:
035: /**
036: *
037: */
038: public String getDeclarationClassName() {
039: return declarationClassName;
040: }
041:
042: /**
043: *
044: */
045: public String getName() {
046: return name;
047: }
048:
049: /**
050: *
051: */
052: protected Element getElement() {
053: return element;
054: }
055:
056: /* (non-Javadoc)
057: * @see java.lang.Object#hashCode()
058: */
059: @Override
060: public int hashCode() {
061: return name.hashCode();
062: }
063:
064: /* (non-Javadoc)
065: * @see java.lang.Object#equals(java.lang.Object)
066: */
067: @Override
068: public boolean equals(Object obj) {
069: if (obj == null) {
070: return false;
071: }
072:
073: if (obj == this ) {
074: return true;
075: }
076:
077: if (!this .getClass().equals(obj.getClass())) {
078: return false;
079: }
080:
081: GiMethod that = (GiMethod) obj;
082:
083: if (!this .name.equals(that.name)) {
084: return false;
085: }
086:
087: return true;
088: }
089:
090: /* (non-Javadoc)
091: * @see java.lang.Object#toString()
092: */
093: @Override
094: public String toString() {
095: return declarationClassName + "#" + name + "(...)";
096: }
097:
098: private Element element;
099:
100: private String name;
101:
102: private String declarationClassName;
103: }
|