📄 adapterfactory.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 + -