⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 component.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   Component.java

package org.apache.struts2.components;

import com.opensymphony.xwork2.util.TextParseUtil;
import com.opensymphony.xwork2.util.ValueStack;
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.StrutsException;
import org.apache.struts2.dispatcher.mapper.ActionMapper;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import org.apache.struts2.util.FastByteArrayOutputStream;
import org.apache.struts2.views.jsp.TagUtils;
import org.apache.struts2.views.util.ContextUtil;
import org.apache.struts2.views.util.UrlHelper;

public class Component
{

	public static final String COMPONENT_STACK = "__component_stack";
	protected ValueStack stack;
	protected Map parameters;
	protected String id;
	protected ActionMapper actionMapper;
	static final boolean $assertionsDisabled = !org/apache/struts2/components/Component.desiredAssertionStatus();

	public Component(ValueStack stack)
	{
		this.stack = stack;
		parameters = new LinkedHashMap();
		getComponentStack().push(this);
	}

	private String getComponentName()
	{
		Class c = getClass();
		String name = c.getName();
		int dot = name.lastIndexOf('.');
		return name.substring(dot + 1).toLowerCase();
	}

	public void setActionMapper(ActionMapper mapper)
	{
		actionMapper = mapper;
	}

	public ValueStack getStack()
	{
		return stack;
	}

	public Stack getComponentStack()
	{
		Stack componentStack = (Stack)stack.getContext().get("__component_stack");
		if (componentStack == null)
		{
			componentStack = new Stack();
			stack.getContext().put("__component_stack", componentStack);
		}
		return componentStack;
	}

	public boolean start(Writer writer)
	{
		return true;
	}

	public boolean end(Writer writer, String body)
	{
		return end(writer, body, true);
	}

	protected boolean end(Writer writer, String body, boolean popComponentStack)
	{
		if (!$assertionsDisabled && body == null)
			throw new AssertionError();
		try
		{
			writer.write(body);
		}
		catch (IOException e)
		{
			throw new StrutsException((new StringBuilder()).append("IOError while writing the body: ").append(e.getMessage()).toString(), e);
		}
		if (popComponentStack)
			popComponentStack();
		return false;
	}

	protected void popComponentStack()
	{
		getComponentStack().pop();
	}

	protected Component findAncestor(Class clazz)
	{
		Stack componentStack = getComponentStack();
		int currPosition = componentStack.search(this);
		if (currPosition >= 0)
		{
			int start = componentStack.size() - currPosition - 1;
			for (int i = start; i >= 0; i--)
			{
				Component component = (Component)componentStack.get(i);
				if (clazz.isAssignableFrom(component.getClass()) && component != this)
					return component;
			}

		}
		return null;
	}

	protected String findString(String expr)
	{
		return (String)findValue(expr, java/lang/String);
	}

	protected String findString(String expr, String field, String errorMsg)
	{
		if (expr == null)
			throw fieldError(field, errorMsg, null);
		else
			return findString(expr);
	}

	protected StrutsException fieldError(String field, String errorMsg, Exception e)
	{
		String msg = (new StringBuilder()).append("tag '").append(getComponentName()).append("', field '").append(field).append(id == null ? "" : (new StringBuilder()).append("', id '").append(id).toString()).append(parameters == null || !parameters.containsKey("name") ? "" : (new StringBuilder()).append("', name '").append(parameters.get("name")).toString()).append("': ").append(errorMsg).toString();
		throw new StrutsException(msg, e);
	}

	protected Object findValue(String expr)
	{
		if (expr == null)
			return null;
		if (altSyntax() && expr.startsWith("%{") && expr.endsWith("}"))
			expr = expr.substring(2, expr.length() - 1);
		return getStack().findValue(expr);
	}

	public boolean altSyntax()
	{
		return ContextUtil.isUseAltSyntax(stack.getContext());
	}

	protected Object findValue(String expr, String field, String errorMsg)
	{
		if (expr == null)
			throw fieldError(field, errorMsg, null);
		Object value = null;
		Exception problem = null;
		try
		{
			value = findValue(expr);
		}
		catch (Exception e)
		{
			problem = e;
		}
		if (value == null)
			throw fieldError(field, errorMsg, problem);
		else
			return value;
	}

	protected Object findValue(String expr, Class toType)
	{
		if (altSyntax() && toType == java/lang/String)
			return TextParseUtil.translateVariables('%', expr, stack);
		if (altSyntax() && expr.startsWith("%{") && expr.endsWith("}"))
			expr = expr.substring(2, expr.length() - 1);
		return getStack().findValue(expr, toType);
	}

	/**
	 * @deprecated Method determineActionURL is deprecated
	 */

	protected String determineActionURL(String action, String namespace, String method, HttpServletRequest req, HttpServletResponse res, Map parameters, String scheme, 
			boolean includeContext, boolean encodeResult)
	{
		return determineActionURL(action, namespace, method, req, res, parameters, scheme, includeContext, encodeResult, false, true);
	}

	protected String determineActionURL(String action, String namespace, String method, HttpServletRequest req, HttpServletResponse res, Map parameters, String scheme, 
			boolean includeContext, boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp)
	{
		String finalAction = findString(action);
		String finalMethod = method == null ? method : findString(method);
		String finalNamespace = determineNamespace(namespace, getStack(), req);
		ActionMapping mapping = new ActionMapping(finalAction, finalNamespace, finalMethod, parameters);
		String uri = actionMapper.getUriFromActionMapping(mapping);
		return UrlHelper.buildUrl(uri, req, res, parameters, scheme, includeContext, encodeResult, forceAddSchemeHostAndPort, escapeAmp);
	}

	protected String determineNamespace(String namespace, ValueStack stack, HttpServletRequest req)
	{
		String result;
		if (namespace == null)
			result = TagUtils.buildNamespace(actionMapper, stack, req);
		else
			result = findString(namespace);
		if (result == null)
			result = "";
		return result;
	}

	public void copyParams(Map params)
	{
		stack.push(parameters);
		stack.push(this);
		java.util.Map.Entry entry;
		String key;
		for (Iterator iterator = params.entrySet().iterator(); iterator.hasNext(); stack.setValue(key, entry.getValue()))
		{
			entry = (java.util.Map.Entry)iterator.next();
			key = (String)entry.getKey();
		}

		stack.pop();
		stack.pop();
		break MISSING_BLOCK_LABEL_133;
		Exception exception;
		exception;
		stack.pop();
		stack.pop();
		throw exception;
	}

	protected String toString(Throwable t)
	{
		FastByteArrayOutputStream bout = new FastByteArrayOutputStream();
		PrintWriter wrt = new PrintWriter(bout);
		t.printStackTrace(wrt);
		wrt.close();
		return bout.toString();
	}

	public Map getParameters()
	{
		return parameters;
	}

	public void addAllParameters(Map params)
	{
		parameters.putAll(params);
	}

	public void addParameter(String key, Object value)
	{
		if (key != null)
		{
			Map params = getParameters();
			if (value == null)
				params.remove(key);
			else
				params.put(key, value);
		}
	}

	public String getId()
	{
		return id;
	}

	public void setId(String id)
	{
		if (id != null)
			this.id = findString(id);
	}

	public boolean usesBody()
	{
		return false;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -