001: package org.enhydra.util.chiba;
002:
003: import java.util.Hashtable;
004:
005: import org.chiba.xml.xforms.exception.XFormsException;
006:
007: /**
008: * Chiba XForms Processor Container
009: *
010: * @author Slobodan Vujasinovic
011: */
012: public class ChibaAdapterContainer {
013:
014: /**
015: * Container that stores multiple ChibaAdapter instances
016: */
017: // private Hashtable ht = new Hashtable();
018: BaseAdapter ca = null;
019:
020: String name = null;
021:
022: /**
023: * Store ChibaAdapter under specified Name
024: *
025: * @param saName
026: * @param sa
027: * @return
028: */
029: public boolean putChibaAdapter(String saName, BaseAdapter sa) {
030: try {
031: // ht.put(saName, sa);
032: try {
033: if (ca != null) {
034: if (!ca.isClean()) {
035: ca.shutdown();
036: }
037: ca = null;
038: name = null;
039: }
040: } catch (XFormsException e) {
041: // TODO Auto-generated catch block
042: e.printStackTrace();
043: }
044:
045: ca = sa;
046: name = saName;
047: return true;
048: } catch (NullPointerException npe) {
049: return false;
050: }
051: }
052:
053: /**
054: * Removes ChibaAdapter under specified Name
055: *
056: * @param saName
057: * @param sa
058: * @return
059: */
060: public boolean removeChibaAdapter(String saName) {
061: try {
062: // ht.remove(saName);
063: if (saName != null && saName.equals(name)) {
064: if (ca != null) {
065: try {
066: ca.shutdown();
067: } catch (XFormsException e) {
068: // TODO Auto-generated catch block
069: e.printStackTrace();
070: }
071: }
072: name = null;
073: }
074:
075: return true;
076: } catch (NullPointerException npe) {
077: return false;
078: }
079: }
080:
081: /**
082: * Returns ServletAdapter stored under specified Name
083: *
084: * @param saName
085: * @return
086: */
087: public BaseAdapter getChibaAdapter(String saName) {
088: try {
089: // return (ChibaAdapter) ht.get(saName);
090: if (saName != null && saName.equals(name)) {
091: return ca;
092: }
093: return null;
094: } catch (Exception ex) {
095: return null;
096: }
097: }
098:
099: /**
100: * Returns First ChibaAdapter
101: *
102: * @return
103: */
104: public BaseAdapter getFirstChibaAdapter() {
105: try {
106: // Enumeration en = ht.elements();
107: // while (en.hasMoreElements()) {
108: // ChibaAdapter ca = (ChibaAdapter) en.nextElement();
109: // if (ca != null) {
110: // return ca;
111: // }
112: // }
113:
114: return ca;
115:
116: } catch (Exception ex) {
117: }
118: return null;
119: }
120:
121: /**
122: * Clears ChibaAdapter container
123: *
124: */
125: public void clear() {
126: // Enumeration en = ht.elements();
127: // while (en.hasMoreElements()) {
128: // try {
129: // ChibaAdapter ca = (ChibaAdapter) en.nextElement();
130: // if (ca != null) {
131: //
132: // ca.shutdown();
133: //
134: // }
135: // } catch (Exception e) {
136: // e.printStackTrace();
137: // }
138: // }
139: // ht.clear();
140:
141: try {
142: if (ca != null && !ca.isClean())
143: ca.shutdown();
144: } catch (XFormsException e) {
145: // TODO Auto-generated catch block
146: e.printStackTrace();
147: }
148: ca = null;
149: }
150:
151: }
|