121 lines
3.3 KiB
Java
121 lines
3.3 KiB
Java
package org.apache.struts.config;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.HashMap;
|
|
import org.apache.struts.action.DynaActionForm;
|
|
|
|
public class FormBeanConfig implements Serializable {
|
|
protected boolean configured = false;
|
|
|
|
protected HashMap formProperties = new HashMap();
|
|
|
|
protected boolean dynamic = false;
|
|
|
|
public boolean getDynamic() {
|
|
return this.dynamic;
|
|
}
|
|
|
|
public void setDynamic(boolean dynamic) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
}
|
|
|
|
protected ModuleConfig moduleConfig = null;
|
|
|
|
public ModuleConfig getModuleConfig() {
|
|
return this.moduleConfig;
|
|
}
|
|
|
|
public void setModuleConfig(ModuleConfig moduleConfig) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
this.moduleConfig = moduleConfig;
|
|
}
|
|
|
|
protected String name = null;
|
|
|
|
public String getName() {
|
|
return this.name;
|
|
}
|
|
|
|
public void setName(String name) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
this.name = name;
|
|
}
|
|
|
|
protected String type = null;
|
|
|
|
public String getType() {
|
|
return this.type;
|
|
}
|
|
|
|
public void setType(String type) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
this.type = type;
|
|
Class dynaBeanClass = DynaActionForm.class;
|
|
Class formBeanClass = formBeanClass();
|
|
if (formBeanClass != null) {
|
|
if (dynaBeanClass.isAssignableFrom(formBeanClass)) {
|
|
this.dynamic = true;
|
|
} else {
|
|
this.dynamic = false;
|
|
}
|
|
} else {
|
|
this.dynamic = false;
|
|
}
|
|
}
|
|
|
|
public void addFormPropertyConfig(FormPropertyConfig config) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
if (this.formProperties.containsKey(config.getName()))
|
|
throw new IllegalArgumentException("Property " + config.getName() + " already defined");
|
|
this.formProperties.put(config.getName(), config);
|
|
}
|
|
|
|
public FormPropertyConfig findFormPropertyConfig(String name) {
|
|
return (FormPropertyConfig)this.formProperties.get(name);
|
|
}
|
|
|
|
public FormPropertyConfig[] findFormPropertyConfigs() {
|
|
FormPropertyConfig[] results = new FormPropertyConfig[this.formProperties.size()];
|
|
return (FormPropertyConfig[])this.formProperties.values().toArray((Object[])results);
|
|
}
|
|
|
|
public void freeze() {
|
|
this.configured = true;
|
|
FormPropertyConfig[] fpconfigs = findFormPropertyConfigs();
|
|
for (int i = 0; i < fpconfigs.length; i++)
|
|
fpconfigs[i].freeze();
|
|
}
|
|
|
|
public void removeFormPropertyConfig(FormPropertyConfig config) {
|
|
if (this.configured)
|
|
throw new IllegalStateException("Configuration is frozen");
|
|
this.formProperties.remove(config.getName());
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuffer sb = new StringBuffer("FormBeanConfig[");
|
|
sb.append("name=");
|
|
sb.append(this.name);
|
|
sb.append(",type=");
|
|
sb.append(this.type);
|
|
sb.append("]");
|
|
return sb.toString();
|
|
}
|
|
|
|
protected Class formBeanClass() {
|
|
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
|
if (classLoader == null)
|
|
classLoader = getClass().getClassLoader();
|
|
try {
|
|
return classLoader.loadClass(getType());
|
|
} catch (Exception e) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|