| /* |
| * $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(); |
| } |
| } |