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

📄 adapterfactory.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:   AdapterFactory.java

package org.apache.struts2.views.xslt;

import java.util.*;
import org.apache.struts2.StrutsException;
import org.w3c.dom.*;

// Referenced classes of package org.apache.struts2.views.xslt:
//			SimpleAdapterDocument, ArrayAdapter, StringAdapter, CollectionAdapter, 
//			MapAdapter, BeanAdapter, ProxyElementAdapter, ProxyTextNodeAdapter, 
//			ProxyAttrAdapter, ProxyNamedNodeMap, AdapterNode

public class AdapterFactory
{

	private Map adapterTypes;

	public AdapterFactory()
	{
		adapterTypes = new HashMap();
	}

	public void registerAdapterType(Class type, Class adapterType)
	{
		adapterTypes.put(type, adapterType);
	}

	public Document adaptDocument(String propertyName, Object propertyValue)
		throws IllegalAccessException, InstantiationException
	{
		return new SimpleAdapterDocument(this, null, propertyName, propertyValue);
	}

	public Node adaptNode(AdapterNode parent, String propertyName, Object value)
	{
		Class adapterClass = getAdapterForValue(value);
		if (adapterClass != null)
			return constructAdapterInstance(adapterClass, parent, propertyName, value);
		if (value instanceof Document)
			value = ((Document)value).getDocumentElement();
		if (value instanceof Node)
			return proxyNode(parent, (Node)value);
		Class valueType = value.getClass();
		if (valueType.isArray())
			adapterClass = org/apache/struts2/views/xslt/ArrayAdapter;
		else
		if ((value instanceof String) || (value instanceof Number) || valueType.isPrimitive())
			adapterClass = org/apache/struts2/views/xslt/StringAdapter;
		else
		if (value instanceof Collection)
			adapterClass = org/apache/struts2/views/xslt/CollectionAdapter;
		else
		if (value instanceof Map)
			adapterClass = org/apache/struts2/views/xslt/MapAdapter;
		else
			adapterClass = org/apache/struts2/views/xslt/BeanAdapter;
		return constructAdapterInstance(adapterClass, parent, propertyName, value);
	}

	public Node proxyNode(AdapterNode parent, Node node)
	{
		if (node instanceof Document)
			node = ((Document)node).getDocumentElement();
		if (node == null)
			return null;
		if (node.getNodeType() == 1)
			return new ProxyElementAdapter(this, parent, (Element)node);
		if (node.getNodeType() == 3)
			return new ProxyTextNodeAdapter(this, parent, (Text)node);
		if (node.getNodeType() == 2)
			return new ProxyAttrAdapter(this, parent, (Attr)node);
		else
			return null;
	}

	public NamedNodeMap proxyNamedNodeMap(AdapterNode parent, NamedNodeMap nnm)
	{
		return new ProxyNamedNodeMap(this, parent, nnm);
	}

	private Node constructAdapterInstance(Class adapterClass, AdapterNode parent, String propertyName, Object propertyValue)
	{
		try
		{
			adapterClass.getConstructor(new Class[0]);
		}
		catch (NoSuchMethodException e1)
		{
			throw new StrutsException((new StringBuilder()).append("Adapter class: ").append(adapterClass).append(" does not have a no-args consructor.").toString());
		}
		AdapterNode adapterNode;
		adapterNode = (AdapterNode)adapterClass.newInstance();
		adapterNode.setAdapterFactory(this);
		adapterNode.setParent(parent);
		adapterNode.setPropertyName(propertyName);
		adapterNode.setPropertyValue(propertyValue);
		return adapterNode;
		IllegalAccessException e;
		e;
		e.printStackTrace();
		throw new StrutsException((new StringBuilder()).append("Cannot adapt ").append(propertyValue).append(" (").append(propertyName).append(") :").append(e.getMessage()).toString());
		e;
		e.printStackTrace();
		throw new StrutsException((new StringBuilder()).append("Cannot adapt ").append(propertyValue).append(" (").append(propertyName).append(") :").append(e.getMessage()).toString());
	}

	public Node adaptNullValue(BeanAdapter parent, String propertyName)
	{
		return new StringAdapter(this, parent, propertyName, "null");
	}

	public Class getAdapterForValue(Object value)
	{
		return (Class)adapterTypes.get(value.getClass());
	}
}

⌨️ 快捷键说明

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