org.apache.struts2.s1.WrapperActionMapping Maven / Gradle / Ivy
/*
* $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 org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.config.ExceptionConfig;
import org.apache.struts.config.ForwardConfig;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.config.entities.ResultConfig;
import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
import java.util.Iterator;
import java.util.Map;
import java.util.List;
import java.util.HashMap;
/**
* Wrapper for a Struts 1.x ActionMapping based on an XWork ActionConfig. Using a wrapper object
* allows us to be explicit about what is and isn't implemented.
*/
class WrapperActionMapping extends ActionMapping {
private ActionConfig delegate;
private String actionPath;
private String attribute;
private Struts1Factory strutsFactory;
public WrapperActionMapping(Struts1Factory factory, ActionConfig delegate) {
this.delegate = delegate;
this.strutsFactory = factory;
forwards = null;
exceptions = null;
}
public WrapperActionMapping(Struts1Factory factory, ActionConfig delegate, String actionPath, ModuleConfig moduleConfig) {
this(factory, delegate);
this.moduleConfig = moduleConfig;
this.actionPath = actionPath;
}
/**
* Add Struts ForwardConfigs (from XWork ResultConfigs).
*/
private void initActionForwards() {
if (forwards == null) {
forwards = new HashMap();
Map results = delegate.getResults();
for (Iterator i = results.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
ActionForward wrapper = strutsFactory.createActionForward((ResultConfig) entry.getValue());
forwards.put(wrapper.getName(), wrapper);
}
}
}
/**
* Add XWork ExceptionConfigs (from XWork ExceptionMappingConfigs)
*/
private void initExceptionConfigs() {
if (exceptions == null) {
exceptions = new HashMap();
List exceptionMappings = delegate.getExceptionMappings();
for (Iterator i = exceptionMappings.iterator(); i.hasNext();) {
ExceptionConfig wrapper = strutsFactory.createExceptionConfig((ExceptionMappingConfig) i.next());
exceptions.put(wrapper.getType(), wrapper);
}
}
}
public ActionForward findForward(String name) {
initActionForwards();
return super.findForward(name);
}
public String[] findForwards() {
initActionForwards();
return super.findForwards();
}
public ForwardConfig findForwardConfig(String name) {
initActionForwards();
return super.findForwardConfig(name);
}
public ForwardConfig[] findForwardConfigs() {
initActionForwards();
return super.findForwardConfigs();
}
public ExceptionConfig findExceptionConfig(String type) {
initExceptionConfigs();
return super.findExceptionConfig(type);
}
public ExceptionConfig[] findExceptionConfigs() {
initExceptionConfigs();
return super.findExceptionConfigs();
}
public ExceptionConfig findException(Class type) {
initExceptionConfigs();
return super.findException(type);
}
public ActionForward getInputForward() {
throw new UnsupportedOperationException("NYI");
}
public ModuleConfig getModuleConfig() {
if (moduleConfig == null) {
moduleConfig = strutsFactory.createModuleConfig(delegate.getPackageName());
}
return moduleConfig;
}
public void setModuleConfig(ModuleConfig moduleConfig) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getAttribute() {
return attribute;
}
public void setAttribute(String attribute) {
this.attribute = attribute;
}
public String getForward() {
throw new UnsupportedOperationException("NYI");
}
public void setForward(String forward) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getInclude() {
throw new UnsupportedOperationException("NYI");
}
public void setInclude(String include) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getInput() {
throw new UnsupportedOperationException("NYI");
}
public void setInput(String input) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getMultipartClass() {
throw new UnsupportedOperationException("NYI");
}
public void setMultipartClass(String multipartClass) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getName() {
// Note: in Struts, this is a name reference to a form bean defined in the config file.
throw new UnsupportedOperationException("NYI");
}
public void setName(String name) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getParameter() {
throw new UnsupportedOperationException("NYI");
}
public void setParameter(String parameter) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getPath() {
return actionPath;
}
public void setPath(String path) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getPrefix() {
throw new UnsupportedOperationException("NYI");
}
public void setPrefix(String prefix) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getRoles() {
throw new UnsupportedOperationException("NYI");
}
public void setRoles(String roles) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String[] getRoleNames() {
throw new UnsupportedOperationException("NYI");
}
public String getScope() {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void setScope(String scope) {
throw new UnsupportedOperationException("NYI");
}
public String getSuffix() {
throw new UnsupportedOperationException("NYI");
}
public void setSuffix(String suffix) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String getType() {
throw new UnsupportedOperationException("NYI");
}
public void setType(String type) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public boolean getUnknown() {
throw new UnsupportedOperationException("NYI");
}
public void setUnknown(boolean unknown) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public boolean getValidate() {
throw new UnsupportedOperationException("NYI");
}
public void setValidate(boolean validate) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeExceptionConfig(ExceptionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void removeForwardConfig(ForwardConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addExceptionConfig(ExceptionConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public void addForwardConfig(ForwardConfig config) {
throw new UnsupportedOperationException("Not implemented - immutable");
}
public String toString() {
return "wrapper -> " + delegate.toString();
}
}