001: package org.gui4j.core.call;
002:
003: import java.io.Serializable;
004: import java.util.Collections;
005: import java.util.List;
006: import java.util.Map;
007: import java.util.Set;
008:
009: import org.gui4j.Gui4jCallBase;
010: import org.gui4j.core.Gui4jCall;
011: import org.gui4j.core.Gui4jComponent;
012: import org.gui4j.core.Gui4jComponentInstance;
013: import org.gui4j.core.Gui4jMap1;
014: import org.gui4j.exception.ErrorTags;
015:
016: final class Gui4jDefaultCall implements ErrorTags, Serializable,
017: Gui4jCall {
018: private final Gui4jComponent mGui4jComponent;
019: private final Gui4jAccessImpl mGui4jAccessImpl;
020: private final List mDependantProperties;
021: private final Map mValueClassMap;
022: private final Set mUsedParams;
023:
024: Gui4jDefaultCall(Gui4jComponent gui4jComponent,
025: Gui4jAccessImpl gui4jAccessImpl, List dependantProperties,
026: Map valueClassMap) {
027: this (gui4jComponent, gui4jAccessImpl, dependantProperties,
028: valueClassMap, Collections.EMPTY_SET);
029: }
030:
031: Gui4jDefaultCall(Gui4jComponent gui4jComponent,
032: Gui4jAccessImpl gui4jAccessImpl, List dependantProperties,
033: Map valueClassMap, Set usedParams) {
034: mGui4jComponent = gui4jComponent;
035: mGui4jAccessImpl = gui4jAccessImpl;
036: mDependantProperties = dependantProperties;
037: mValueClassMap = valueClassMap;
038: mUsedParams = usedParams;
039: }
040:
041: public Class getValueClass() {
042: return getValueClass("");
043: }
044:
045: public Class getValueClass(String paramName) {
046: return (Class) mValueClassMap.get(paramName);
047: }
048:
049: public boolean hasTriggerEvents() {
050: return mDependantProperties != null
051: && mDependantProperties.size() > 0;
052: }
053:
054: public Gui4jCall[] getDependantProperties() {
055: if (mDependantProperties == null) {
056: return null;
057: }
058: Gui4jDefaultCall[] gui4jAccess = new Gui4jDefaultCall[mDependantProperties
059: .size()];
060: for (int i = 0; i < mDependantProperties.size(); i++) {
061: gui4jAccess[i] = (Gui4jDefaultCall) mDependantProperties
062: .get(i);
063: }
064: return gui4jAccess;
065: }
066:
067: public String getConfigurationName() {
068: return mGui4jComponent.getGui4jComponentContainer()
069: .getConfigurationName();
070: }
071:
072: /**
073: * @param baseInstance
074: * the root class used for reflection
075: * @param defaultValue
076: * @return Object
077: */
078: public Object getValueNoParams(Gui4jCallBase baseInstance,
079: Object defaultValue) {
080: return getValue(baseInstance, baseInstance, null, defaultValue);
081: }
082:
083: /*
084: * (non-Javadoc)
085: *
086: * @see de.bea.gui4j.call.Gui4jGetValue#getValue(de.bea.gui4j.Gui4jCallBase,
087: * java.util.Map, java.lang.Object)
088: */
089: public Object getValue(Gui4jCallBase gui4jController, Map paramMap,
090: Object defaultValue) {
091: return getValue(gui4jController, gui4jController, paramMap,
092: defaultValue);
093: }
094:
095: /*
096: * (non-Javadoc)
097: *
098: * @see org.gui4j.Gui4jGetValue#getValueNoErrorChecking(org.gui4j.Gui4jCallBase,
099: * java.util.Map, java.lang.Object)
100: */
101: public Object getValueNoErrorChecking(
102: Gui4jCallBase gui4jController, Map paramMap,
103: Gui4jComponentInstance componentInstance) {
104: return mGui4jAccessImpl.getValue(gui4jController,
105: gui4jController, paramMap);
106: }
107:
108: /**
109: * @param baseInstance
110: * the root class used for reflection
111: * @param defaultParamValue
112: * the value substituted for '?' in the access path
113: * @param defaultValue
114: * @return Object
115: */
116: public Object getValueUseDefaultParam(Gui4jCallBase baseInstance,
117: Object defaultParamValue, Object defaultValue) {
118: Map m = new Gui4jMap1("", defaultParamValue);
119: return getValue(baseInstance, baseInstance, m, defaultValue);
120: }
121:
122: Object getValue(Gui4jCallBase gui4jController, Object this Instance,
123: Map paramMap, Object defaultValue) {
124: try {
125: return mGui4jAccessImpl.getValue(gui4jController,
126: this Instance, paramMap);
127: } catch (Throwable e) {
128: gui4jController.getGui4j().handleException(gui4jController,
129: e, null);
130: return defaultValue;
131: }
132: }
133:
134: public Class getResultClass() {
135: return mGui4jAccessImpl == null ? null : mGui4jAccessImpl
136: .getResultClass();
137: }
138:
139: /**
140: * @see java.lang.Object#toString()
141: */
142: public String toString() {
143: return mGui4jAccessImpl.toString();
144: }
145:
146: public Set getUsedParams() {
147: return mUsedParams;
148: }
149:
150: }
|