init.java

来自「JAVA 所有包」· Java 代码 · 共 421 行 · 第 1/2 页

JAVA
421
字号
/* * Copyright  1999-2004 The Apache Software Foundation. * *  Licensed under the Apache License, Version 2.0 (the "License"); *  you may not use this file except in compliance with the License. *  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. * */package com.sun.org.apache.xml.internal.security;import java.io.InputStream;import java.security.AccessController;import java.security.PrivilegedAction;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import com.sun.org.apache.xml.internal.security.algorithms.JCEMapper;import com.sun.org.apache.xml.internal.security.algorithms.SignatureAlgorithm;import com.sun.org.apache.xml.internal.security.c14n.Canonicalizer;import com.sun.org.apache.xml.internal.security.keys.KeyInfo;import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolver;import com.sun.org.apache.xml.internal.security.transforms.Transform;import com.sun.org.apache.xml.internal.security.utils.I18n;//import com.sun.org.apache.xml.internal.security.utils.PRNG;import com.sun.org.apache.xml.internal.security.utils.XMLUtils;import com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;/** * This class does the configuration of the library. This includes creating * the mapping of Canonicalization and Transform algorithms. Initialization is * done by calling {@link Init#init} which should be done in any static block * of the files of this library. We ensure that this call is only executed once. * * @author $Author: raul $ */public final class Init {  /** {@link java.util.logging} logging facility */  static java.util.logging.Logger log =         java.util.logging.Logger.getLogger(Init.class.getName());   /** Field _initialized */   private static boolean _alreadyInitialized = false;      /** The namespace for CONF file **/   public static final String CONF_NS="http://www.xmlsecurity.org/NS/#configuration";   /**    * Method isInitialized    * @return true if the librairy is already initialized.         *    */   public static final boolean isInitialized() {      return Init._alreadyInitialized;   }   /**    * Method init    *    */   public synchronized static void init() {      if (_alreadyInitialized) {        return;      }      long XX_configure_i18n_end=0;      long XX_configure_reg_c14n_start=0;      long XX_configure_reg_c14n_end=0;      long XX_configure_reg_jcemapper_end=0;      long XX_configure_reg_keyInfo_start=0;      long XX_configure_reg_keyResolver_end=0;      long XX_configure_reg_prefixes_start=0;      long XX_configure_reg_resourceresolver_start=0;      long XX_configure_reg_sigalgos_end=0;      long XX_configure_reg_transforms_end=0;      long XX_configure_reg_keyInfo_end=0;      long XX_configure_reg_keyResolver_start=0;         _alreadyInitialized = true;         try {            long XX_init_start = System.currentTimeMillis();            long XX_prng_start = System.currentTimeMillis();            //PRNG.init(new java.security.SecureRandom());            long XX_prng_end = System.currentTimeMillis();            /* read library configuration file */            long XX_parsing_start = System.currentTimeMillis();            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();            dbf.setNamespaceAware(true);            dbf.setValidating(false);            DocumentBuilder db = dbf.newDocumentBuilder();	    	    // We don't allow users to override the Apache XML Security	    // configuration in the JRE. Users should use the standard security	    // provider mechanism instead if implementing their own	    // transform or canonicalization algorithms.      	    // String cfile = System.getProperty("com.sun.org.apache.xml.internal.security.resource.config");	    // InputStream is =	    //     Class.forName("com.sun.org.apache.xml.internal.security.Init")	    //     .getResourceAsStream(cfile != null ? cfile : "resource/config.xml");	    InputStream is = (InputStream) AccessController.doPrivileged(		new PrivilegedAction() {		    public Object run() {			return getClass().getResourceAsStream	    			("resource/config.xml");		    }		});            Document doc = db.parse(is);            long XX_parsing_end = System.currentTimeMillis();                                   long XX_configure_i18n_start = 0;                                    {                XX_configure_reg_keyInfo_start = System.currentTimeMillis();               try {                  KeyInfo.init();               } catch (Exception e) {                  e.printStackTrace();                  throw e;               }               XX_configure_reg_keyInfo_end = System.currentTimeMillis();            }            			long XX_configure_reg_transforms_start=0;			long XX_configure_reg_jcemapper_start=0;			long XX_configure_reg_sigalgos_start=0;			long XX_configure_reg_resourceresolver_end=0;			long XX_configure_reg_prefixes_end=0;            Node config=doc.getFirstChild();            for (;config!=null;config=config.getNextSibling()) {            	if ("Configuration".equals(config.getLocalName())) {            		break;                }            }			for (Node el=config.getFirstChild();el!=null;el=el.getNextSibling()) {                if (!(el instanceof Element)) {                	continue;                }                String tag=el.getLocalName();// // Commented out: not supported in the JDK. We use the default locale.////            if (tag.equals("ResourceBundles")){//                XX_configure_i18n_start = System.currentTimeMillis();//            	Element resource=(Element)el;//               /* configure internationalization *///               Attr langAttr = resource.getAttributeNode("defaultLanguageCode");//               Attr countryAttr = resource.getAttributeNode("defaultCountryCode");//               String languageCode = (langAttr == null)//                                     ? null//                                     : langAttr.getNodeValue();//               String countryCode = (countryAttr == null)//                                    ? null//                                    : countryAttr.getNodeValue();////               I18n.init(languageCode, countryCode);//               XX_configure_i18n_end = System.currentTimeMillis();//            }                       if (tag.equals("CanonicalizationMethods")){                XX_configure_reg_c14n_start = System.currentTimeMillis();               Canonicalizer.init();               Element[] list=XMLUtils.selectNodes(el.getFirstChild(),CONF_NS,"CanonicalizationMethod");                              for (int i = 0; i < list.length; i++) {                  String URI = list[i].getAttributeNS(null,                                  "URI");                  String JAVACLASS =                     list[i].getAttributeNS(null,                        "JAVACLASS");                  try {                      Class.forName(JAVACLASS);/*                     Method methods[] = c.getMethods();                     for (int j = 0; j < methods.length; j++) {                        Method currMeth = methods[j];                        if (currMeth.getDeclaringClass().getName()                                .equals(JAVACLASS)) {                           log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString());                        }                     }*/                      if (true)                      	if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", "                            + JAVACLASS + ")");                     Canonicalizer.register(URI, JAVACLASS);                  } catch (ClassNotFoundException e) {                     Object exArgs[] = { URI, JAVACLASS };                     log.log(java.util.logging.Level.SEVERE, I18n.translate("algorithm.classDoesNotExist",

⌨️ 快捷键说明

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