blob: 6cca6351fd6ab96e0ef2d915ea372c2e7bf8e758 [file] [log] [blame]
/*
* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.struts2.s1;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.ControllerConfig;
import org.apache.struts.config.ExceptionConfig;
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.ForwardConfig;
import org.apache.struts.config.MessageResourcesConfig;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.config.PlugInConfig;
import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
import com.opensymphony.xwork2.config.entities.PackageConfig;
import com.opensymphony.xwork2.config.entities.ResultConfig;
/**
* Wrapper for a Struts 1.x ModuleConfig based on an XWork PackageConfig. Using a wrapper object
* allows us to be explicit about what is and isn't implemented.
*/
class WrapperModuleConfig implements ModuleConfig {
private Struts1Factory strutsFactory;
private PackageConfig delegate;
private Map _actionMappings;
private Map _exceptionConfigs;
private Map _actionForwards;
public WrapperModuleConfig(Struts1Factory factory, PackageConfig config) {
delegate = config;
this.strutsFactory = factory;
}
/**
* Add Struts ActionMappings (from XWork ExceptionConfigs).
*/
private void initActionMappings() {
if (_actionMappings == null) {
_actionMappings = new HashMap();
for (Iterator i = delegate.getActionConfigs().entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
String actionPath = '/' + (String) entry.getKey();
com.opensymphony.xwork2.config.entities.ActionConfig actionConfig =
(com.opensymphony.xwork2.config.entities.ActionConfig) entry.getValue();
_actionMappings.put(actionPath, strutsFactory.createActionMapping(actionConfig, actionPath, this));
}
}
}
/**
* Add Struts ExceptionConfigs (from XWork ExceptionMappingConfigs).
*/
private void initExceptionConfigs() {
if (_exceptionConfigs == null) {
_exceptionConfigs = new HashMap();
for (Iterator i = delegate.getGlobalExceptionMappingConfigs().iterator(); i.hasNext();) {
ExceptionMappingConfig config = (ExceptionMappingConfig) i.next();
_exceptionConfigs.put(config.getExceptionClassName(), strutsFactory.createExceptionConfig(config));
}
}
}
/**
* Add Struts ActionForwards (from XWork ResultConfigs).
*/
private void initActionForwards() {
if (_actionForwards == null) {
_actionForwards = new HashMap();
for (Iterator i = delegate.getGlobalResultConfigs().entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
String name = (String) entry.getKey();
ResultConfig config = (ResultConfig) entry.getValue();
_actionForwards.put(name, strutsFactory.createActionForward(config));
}
}
}
public String getPrefix() {
return delegate.getNamespace();
}
public void setPrefix(String prefix) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public boolean getConfigured() {
return true;
}
public ControllerConfig getControllerConfig() {
throw new UnsupportedOperationException("NYI");
}
public void setControllerConfig(ControllerConfig cc) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getActionFormBeanClass() {
throw new UnsupportedOperationException("NYI");
}
public void setActionFormBeanClass(String actionFormBeanClass) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getActionMappingClass() {
throw new UnsupportedOperationException("NYI");
}
public void setActionMappingClass(String actionMappingClass) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addActionConfig(ActionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addExceptionConfig(ExceptionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addFormBeanConfig(FormBeanConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getActionForwardClass() {
throw new UnsupportedOperationException("NYI");
}
public void setActionForwardClass(String actionForwardClass) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addForwardConfig(ForwardConfig config) {
throw new UnsupportedOperationException("NYI");
}
public void addMessageResourcesConfig(MessageResourcesConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addPlugInConfig(PlugInConfig plugInConfig) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public ActionConfig findActionConfig(String path) {
initActionMappings();
return (ActionConfig) _actionMappings.get(path);
}
public ActionConfig[] findActionConfigs() {
initActionMappings();
return (ActionConfig[]) _actionMappings.values().toArray(new ActionConfig[_actionMappings.size()]);
}
public ExceptionConfig findExceptionConfig(String type) {
initExceptionConfigs();
return (ExceptionConfig) _exceptionConfigs.get(type);
}
public ExceptionConfig[] findExceptionConfigs() {
initExceptionConfigs();
return (ExceptionConfig[]) _exceptionConfigs.values().toArray(new ExceptionConfig[_exceptionConfigs.size()]);
}
public FormBeanConfig findFormBeanConfig(String name) {
throw new UnsupportedOperationException("NYI");
}
public FormBeanConfig[] findFormBeanConfigs() {
throw new UnsupportedOperationException("NYI");
}
public ForwardConfig findForwardConfig(String name) {
initActionForwards();
return (ForwardConfig) _actionForwards.get(name);
}
public ForwardConfig[] findForwardConfigs() {
initActionForwards();
return (ForwardConfig[]) _actionForwards.values().toArray(new ForwardConfig[_actionForwards.size()]);
}
public ActionConfig findActionConfigId(String s) {
throw new UnsupportedOperationException("NYI");
}
public MessageResourcesConfig findMessageResourcesConfig(String key) {
throw new UnsupportedOperationException("NYI");
}
public MessageResourcesConfig[] findMessageResourcesConfigs() {
throw new UnsupportedOperationException("NYI");
}
public PlugInConfig[] findPlugInConfigs() {
throw new UnsupportedOperationException("NYI");
}
public void freeze() {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeActionConfig(ActionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeExceptionConfig(ExceptionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeFormBeanConfig(FormBeanConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeForwardConfig(ForwardConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeMessageResourcesConfig(MessageResourcesConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public ExceptionConfig findException(Class arg0) {
throw new UnsupportedOperationException("NYI");
}
}