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 + -
显示快捷键?