asn1oidregistry.java
来自「一个非常好的ssh客户端实现」· Java 代码 · 共 105 行
JAVA
105 行
/****************************************************************************** * * Copyright (c) 1999-2003 AppGate Network Security AB. All Rights Reserved. * * This file contains Original Code and/or Modifications of Original Code as * defined in and that are subject to the MindTerm Public Source License, * Version 2.0, (the 'License'). You may not use this file except in compliance * with the License. * * You should have received a copy of the MindTerm Public Source License * along with this software; see the file LICENSE. If not, write to * AppGate Network Security AB, Otterhallegatan 2, SE-41118 Goteborg, SWEDEN * *****************************************************************************/package com.mindbright.asn1;import java.util.Properties;import java.util.Hashtable;import java.util.Enumeration;public class ASN1OIDRegistry extends Properties { private static ASN1OIDRegistry registry = new ASN1OIDRegistry(); private static Hashtable modules = new Hashtable(); public void putName(String oid, String name, String shortName) { putName(oid, name); putShortName(oid, shortName); } public void putShortName(String oid, String shortName) { put("shortname." + oid, shortName); put("shortname." + shortName, oid); } public void putName(String oid, String name) { put("name." + oid, name); put("name." + name, oid); } public static synchronized Class lookupType(ASN1OID oid) { String id = oid.getString(); String type = registry.getProperty(id); Class typeImpl = null; if(type != null) { if(type.indexOf('.') == -1) { type = "com.mindbright.asn1." + type; } try { typeImpl = Class.forName(type); } catch (ClassNotFoundException e) { throw new Error("Can't find class '" + type + "' registered in ASN1OIDRegistry with '" + id + "'"); } } return typeImpl; } public static synchronized String lookupName(String id) { id = "name." + id; return registry.getProperty(id); } public static synchronized String lookupShortName(String id) { id = "shortname." + id; return registry.getProperty(id); } public static void register(ASN1OID oid, String type) { register(oid.getString(), type); } public static synchronized void register(String oid, String type) { registry.put(oid, type); } public static void addModule(String moduleName) { // !!! TODO circular references will loop !!! try { ASN1OIDRegistry registeredTypes = (ASN1OIDRegistry) Class.forName(moduleName + ".RegisteredTypes").newInstance(); addModule(moduleName, registeredTypes); } catch (Exception e) { throw new Error("In ASN1OIDRegistry: " + e.getMessage()); } } public static void addModule(String moduleName, Properties moduleTypes) { // !!! OUCH synchronization if(modules.get(moduleName) != null) { /* already added... */ return; } modules.put(moduleName, moduleTypes); Enumeration e = moduleTypes.propertyNames(); while(e.hasMoreElements()) { String key = (String)e.nextElement(); register(key, moduleTypes.getProperty(key)); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?