objectfactoryskeleton.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 118 行

JAVA
118
字号
/** Copyright (c) 1998-2006 Caucho Technology -- all rights reserved** This file is part of Resin(R) Open Source** Each copy or derived work must preserve the copyright notice and this* notice unmodified.** Resin Open Source is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** Resin Open Source is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty* of NON-INFRINGEMENT.  See the GNU General Public License for more* details.** You should have received a copy of the GNU General Public License* along with Resin Open Source; if not, write to the**   Free Software Foundation, Inc.*   59 Temple Place, Suite 330*   Boston, MA 02111-1307  USA** @author Emil Ong*/package com.caucho.jaxb;import java.lang.reflect.*;import java.util.*;import javax.xml.bind.*;import javax.xml.bind.annotation.*;import javax.xml.namespace.QName;import com.caucho.jaxb.skeleton.*;public class ObjectFactorySkeleton {  private JAXBContextImpl _context;  private Object _objectFactory;  //private HashMap<QName,Skeleton> _roots = new HashMap<QName,Skeleton>();  private HashMap<QName,Method> _roots = new HashMap<QName,Method>();  private HashMap<Class,ClassSkeleton> _classSkeletons     = new HashMap<Class,ClassSkeleton>();  public ObjectFactorySkeleton(JAXBContextImpl context,                                Class objectFactoryClass)    throws JAXBException  {    _context = context;    try {      _objectFactory = objectFactoryClass.newInstance();    }    catch (Exception e) {      throw new JAXBException(e);    }    String namespace = null;    Package pkg = objectFactoryClass.getPackage();    if (pkg.isAnnotationPresent(XmlSchema.class)) {      XmlSchema schema = (XmlSchema) pkg.getAnnotation(XmlSchema.class);      if (! "".equals(schema.namespace()))        namespace = schema.namespace();    }    Method[] methods = objectFactoryClass.getMethods();    for (Method method : methods) {      if (method.getName().startsWith("create")) {        XmlElementDecl decl = method.getAnnotation(XmlElementDecl.class);        Class cl = method.getReturnType();        if (cl.equals(JAXBElement.class)) {          ParameterizedType type =             (ParameterizedType) method.getGenericReturnType();          cl = (Class) type.getActualTypeArguments()[0];        }        if (decl != null) {          String localName = decl.name();          if (! "##default".equals(decl.namespace()))            namespace = decl.namespace();          QName root = null;          if (namespace == null)            root = new QName(localName);          else            root = new QName(localName, namespace);          _roots.put(root, method);        }        else {          if (! _context.hasSkeleton(cl)) {            ClassSkeleton skeleton = new ClassSkeleton(_context, cl);            _classSkeletons.put(cl, skeleton);          }        }      }      else if (method.getName().equals("newInstance")) {        // XXX      }      else if (method.getName().equals("getProperty")) {        // XXX      }      else if (method.getName().equals("setProperty")) {        // XXX      }    }  }}

⌨️ 快捷键说明

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