⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configreader.java

📁 一个用java编写的服务器,对于学习网络编程的人来说是个很好的例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * This file is part of the QuickServer library 
 * Copyright (C) QuickServer.org
 *
 * Use, modification, copying and distribution of this software is subject to
 * the terms and conditions of the GNU Lesser General Public License. 
 * You should have received a copy of the GNU LGP License along with this 
 * library; if not, you can download a copy from <http://www.quickserver.org/>.
 *
 * For questions, suggestions, bug-reports, enhancement-requests etc.
 * visit http://www.quickserver.org
 *
 */

package org.quickserver.util.xmlreader;

import org.apache.commons.digester.*;
import java.io.*;
import java.util.*;
import org.quickserver.util.*;
import org.quickserver.util.io.*;
import java.util.logging.*;
import org.quickserver.swing.*;
import org.quickserver.net.server.QuickServer;

/**
 * This class reads the xml configuration and gives 
 * QuickServerConfig object.
 * @author Akshathkumar Shetty
 * @since 1.3
 */
public class ConfigReader {
	private static Logger logger = Logger.getLogger(ConfigReader.class.getName());

	/**
	 * Parses XML config of QuickServer of version 1.3 and above
	 * @since 1.3
	 */
	public static QuickServerConfig read(String fileName) throws Exception {
		File input = new File(fileName);
		return read(input);
	}

	/**
	 * Parses XML config of QuickServer of version 1.3 and above
	 * @since 1.4
	 */
	public static QuickServerConfig read(File input) throws Exception {
		Digester digester = new Digester();
	    digester.setValidating(false);

		//digester.setNamespaceAware(true);
		//String xsd = "" + new File("quickserver_config.xsd").toURI();
		//digester.setSchema(xsd);
		String mainTag = "quickserver";
		String subTag = "";
		
		digester.addObjectCreate(mainTag, QuickServerConfig.class);
		digester.addBeanPropertySetter(mainTag+"/name", "name");
		digester.addBeanPropertySetter(mainTag+"/server-banner", "serverBanner");
		digester.addBeanPropertySetter(mainTag+"/port", "port");
		digester.addBeanPropertySetter(mainTag+"/bind-address", "bindAddr");
		//<server-mode>
		String curTag = mainTag+"/server-mode";
		digester.addObjectCreate(curTag, ServerMode.class);
		digester.addBeanPropertySetter(curTag+"/blocking", "blocking");
		digester.addSetNext(curTag,"setServerMode");
		//</server-mode>
		digester.addBeanPropertySetter(mainTag+"/client-event-handler", "clientEventHandler");//v1.4.6
		digester.addBeanPropertySetter(mainTag+"/client-command-handler", "clientCommandHandler");
		digester.addBeanPropertySetter(mainTag+"/client-object-handler", "clientObjectHandler");
		digester.addBeanPropertySetter(mainTag+"/client-binary-handler", "clientBinaryHandler");//v1.4
		digester.addBeanPropertySetter(mainTag+"/client-write-handler", "clientWriteHandler");//v1.4.5
		digester.addBeanPropertySetter(mainTag+"/authenticator", "authenticator"); //v1.3
		digester.addBeanPropertySetter(mainTag+"/client-authentication-handler", "clientAuthenticationHandler"); //v1.4.6
		digester.addBeanPropertySetter(mainTag+"/client-data", "clientData");
		digester.addBeanPropertySetter(mainTag+"/client-extended-event-handler", "clientExtendedEventHandler");//v1.4.6
		digester.addBeanPropertySetter(mainTag+"/timeout", "timeout");
		digester.addBeanPropertySetter(mainTag+"/timeout-msg", "timeoutMsg");
		digester.addBeanPropertySetter(mainTag+"/max-auth-try", "maxAuthTry");
		digester.addBeanPropertySetter(mainTag+"/max-auth-try-msg", "maxAuthTryMsg");		
		digester.addBeanPropertySetter(mainTag+"/max-connection", "maxConnection");
		digester.addBeanPropertySetter(mainTag+"/max-connection-msg", "maxConnectionMsg");
		digester.addBeanPropertySetter(mainTag+"/console-logging-level", "consoleLoggingLevel");
		digester.addBeanPropertySetter(mainTag+"/console-logging-formatter", "consoleLoggingFormatter");
		//<default-data-mode>
		curTag = mainTag+"/default-data-mode";
		digester.addObjectCreate(curTag, DefaultDataMode.class);
		digester.addBeanPropertySetter(curTag+"/data-type-in", "dataModeIn");
		digester.addBeanPropertySetter(curTag+"/data-type-out", "dataModeOut");
		digester.addSetNext(curTag,"setDefaultDataMode");
		//</default-data-mode>
		//<object-pool>
		curTag = mainTag+"/object-pool";
		digester.addObjectCreate(curTag, ObjectPoolConfig.class);
		digester.addBeanPropertySetter(curTag+"/max-active", "maxActive");
		digester.addBeanPropertySetter(curTag+"/max-idle", "maxIdle");
		digester.addBeanPropertySetter(curTag+"/init-size", "initSize");
		digester.addBeanPropertySetter(curTag+"/pool-manager", "poolManager");
		//<thread-object-pool>
		digester.addObjectCreate(curTag+"/thread-object-pool", ThreadObjectPoolConfig.class);
		digester.addBeanPropertySetter(curTag+"/thread-object-pool/max-active", "maxActive");
		digester.addBeanPropertySetter(curTag+"/thread-object-pool/max-idle", "maxIdle");
		digester.addBeanPropertySetter(curTag+"/thread-object-pool/init-size", "initSize");
		digester.addSetNext(curTag+"/thread-object-pool","setThreadObjectPoolConfig");
		//</thread-object-pool>
		//<client-handler-object-pool>
		digester.addObjectCreate(curTag+"/client-handler-object-pool", ClientHandlerObjectPoolConfig.class);
		digester.addBeanPropertySetter(curTag+"/client-handler-object-pool/max-active", "maxActive");
		digester.addBeanPropertySetter(curTag+"/client-handler-object-pool/max-idle", "maxIdle");
		digester.addBeanPropertySetter(curTag+"/client-handler-object-pool/init-size", "initSize");
		digester.addSetNext(curTag+"/client-handler-object-pool","setClientHandlerObjectPoolConfig");
		//</client-handler-object-pool>
		//<byte-buffer-object-pool>
		digester.addObjectCreate(curTag+"/byte-buffer-object-pool", ByteBufferObjectPoolConfig.class);
		digester.addBeanPropertySetter(curTag+"/byte-buffer-object-pool/max-active", "maxActive");
		digester.addBeanPropertySetter(curTag+"/byte-buffer-object-pool/max-idle", "maxIdle");
		digester.addBeanPropertySetter(curTag+"/byte-buffer-object-pool/init-size", "initSize");
		digester.addSetNext(curTag+"/byte-buffer-object-pool","setByteBufferObjectPoolConfig");
		//</byte-buffer-object-pool>
		//<client-data-object-pool>
		digester.addObjectCreate(curTag+"/client-data-object-pool", ClientDataObjectPoolConfig.class);
		digester.addBeanPropertySetter(curTag+"/client-data-object-pool/max-active", "maxActive");
		digester.addBeanPropertySetter(curTag+"/client-data-object-pool/max-idle", "maxIdle");
		digester.addBeanPropertySetter(curTag+"/client-data-object-pool/init-size", "initSize");
		digester.addSetNext(curTag+"/client-data-object-pool","setClientDataObjectPoolConfig");
		//</client-data-object-pool>
		digester.addSetNext(curTag,"setObjectPoolConfig");
		//</object-pool>
		//<communication-logging>
		digester.addBeanPropertySetter(mainTag+"/communication-logging/enable", "communicationLogging");
		//</communication-logging>
		digester.addBeanPropertySetter(mainTag+"/security-manager-class", "securityManagerClass");
		
		//<access-constraint>
		digester.addObjectCreate(mainTag+"/access-constraint", AccessConstraintConfig.class);
		//<ip-filter>
		digester.addObjectCreate(mainTag+"/access-constraint/ip-filter", IpFilterConfig.class);
		digester.addBeanPropertySetter(mainTag+"/access-constraint/ip-filter/enable", "enable");
		digester.addBeanPropertySetter(mainTag+"/access-constraint/ip-filter/allow-access", "allowAccess");
		//<ip-collection>
		digester.addCallMethod(mainTag+"/access-constraint/ip-filter/ip-collection/client-ip-address", "addClientIpAddress", 0);
		//<ip-collection>
		digester.addSetNext(mainTag+"/access-constraint/ip-filter", "setIpFilterConfig");
		//<ip-filter>
		digester.addSetNext(mainTag+"/access-constraint", "setAccessConstraintConfig");
		//</access-constraint>	

		//<application-jar-path>
		digester.addBeanPropertySetter(mainTag+"/application-jar-path", "applicationJarPath");

		//<server-hooks>
		digester.addObjectCreate(mainTag+"/server-hooks", ServerHooks.class);
		digester.addCallMethod(mainTag+"/server-hooks/class-name", "addClassName", 0);
		digester.addSetNext(mainTag+"/server-hooks", "setServerHooks");
		//</server-hooks>

		//<secure>
		curTag = mainTag+"/secure";
		digester.addObjectCreate(curTag, Secure.class);
		digester.addBeanPropertySetter(curTag+"/enable", "enable");
		digester.addBeanPropertySetter(curTag+"/load", "load");
		digester.addBeanPropertySetter(curTag+"/port", "port");
		digester.addBeanPropertySetter(curTag+"/protocol", "protocol");
		digester.addBeanPropertySetter(curTag+"/client-auth-enable", "clientAuthEnable");
		//<secure-store>
		digester.addObjectCreate(curTag+"/secure-store", SecureStore.class);
		digester.addBeanPropertySetter(curTag+"/secure-store/type", "type");
		digester.addBeanPropertySetter(curTag+"/secure-store/algorithm", "algorithm");
		digester.addBeanPropertySetter(curTag+"/secure-store/provider", "provider");
		//<key-store-info>
		digester.addObjectCreate(curTag+"/secure-store/key-store-info", KeyStoreInfo.class);
		digester.addBeanPropertySetter(curTag+"/secure-store/key-store-info/store-file", "storeFile");
		digester.addBeanPropertySetter(curTag+"/secure-store/key-store-info/store-password", "storePassword");
		digester.addBeanPropertySetter(curTag+"/secure-store/key-store-info/key-password", "keyPassword");
		digester.addSetNext(curTag+"/secure-store/key-store-info","setKeyStoreInfo");
		//</key-store-info>
		//<trust-store-info>
		digester.addObjectCreate(curTag+"/secure-store/trust-store-info", TrustStoreInfo.class);
		digester.addBeanPropertySetter(curTag+"/secure-store/trust-store-info/store-file", "storeFile");
		digester.addBeanPropertySetter(curTag+"/secure-store/trust-store-info/store-password", "storePassword");
		digester.addBeanPropertySetter(curTag+"/secure-store/trust-store-info/type", "type");
		digester.addBeanPropertySetter(curTag+"/secure-store/trust-store-info/provider", "provider");
		digester.addSetNext(curTag+"/secure-store/trust-store-info","setTrustStoreInfo");
		//</trust-store-info>
		digester.addBeanPropertySetter(curTag+"/secure-store/secure-store-manager", "secureStoreManager");
		digester.addSetNext(curTag+"/secure-store","setSecureStore");
		//</secure-store>
		digester.addSetNext(curTag,"setSecure");
		//</secure>

		//<advanced-settings>
		curTag = mainTag+"/advanced-settings";
		digester.addObjectCreate(curTag, AdvancedSettings.class);
		digester.addBeanPropertySetter(curTag+"/charset", "charset");
		digester.addBeanPropertySetter(curTag+"/byte-buffer-size", "byteBufferSize");
		digester.addBeanPropertySetter(curTag+"/backlog", "backlog");
		digester.addBeanPropertySetter(curTag+"/use-direct-byte-buffer", "useDirectByteBuffer");
		digester.addBeanPropertySetter(curTag+"/socket-linger", "socketLinger");
		digester.addBeanPropertySetter(curTag+"/debug-non-blocking-mode", "debugNonBlockingMode");
		digester.addBeanPropertySetter(curTag+"/client-identifier", "clientIdentifier");
		digester.addBeanPropertySetter(curTag+"/qsobject-pool-maker", "qSObjectPoolMaker");
		digester.addBeanPropertySetter(curTag+"/max-threads-for-nio-write", "maxThreadsForNioWrite");
		digester.addSetNext(curTag,"setAdvancedSettings");
		//</advanced-settings>

		//<qsadmin-server>
		subTag = "qsadmin-server";
		curTag = mainTag+"/"+subTag;
		digester.addObjectCreate(curTag, QSAdminServerConfig.class);
		digester.addBeanPropertySetter(curTag+"/name", "name");
		digester.addBeanPropertySetter(curTag+"/server-banner", "serverBanner");
		digester.addBeanPropertySetter(curTag+"/port", "port");
		//<server-mode>
		digester.addObjectCreate(curTag+"/server-mode", ServerMode.class);
		digester.addBeanPropertySetter(curTag+"/server-mode/blocking", "blocking");
		digester.addSetNext(curTag+"/server-mode","setServerMode");
		//</server-mode>
		digester.addBeanPropertySetter(curTag+"/client-event-handler", "clientEventHandler");
		digester.addBeanPropertySetter(curTag+"/client-command-handler", "clientCommandHandler");
		digester.addBeanPropertySetter(curTag+"/client-object-handler", "clientObjectHandler");
		digester.addBeanPropertySetter(curTag+"/client-binary-handler", "clientBinaryHandler");//v1.4
		digester.addBeanPropertySetter(curTag+"/client-write-handler", "clientWriteHandler");//v1.4.5
		digester.addBeanPropertySetter(curTag+"/authenticator", "authenticator"); //v1.3
		digester.addBeanPropertySetter(curTag+"/client-authentication-handler", "clientAuthenticationHandler"); //v1.4.6
		digester.addBeanPropertySetter(curTag+"/client-data", "clientData");
		digester.addBeanPropertySetter(curTag+"/client-extended-event-handler", "clientExtendedEventHandler");//v1.4.6
		digester.addBeanPropertySetter(curTag+"/timeout", "timeout");
		digester.addBeanPropertySetter(curTag+"/max-auth-try", "maxAuthTry");
		digester.addBeanPropertySetter(curTag+"/max-auth-try-msg", "maxAuthTryMsg");
		digester.addBeanPropertySetter(curTag+"/timeout-msg", "timeoutMsg");
		digester.addBeanPropertySetter(curTag+"/max-connection", "maxConnection");
		digester.addBeanPropertySetter(curTag+"/max-connection-msg", "maxConnectionMsg");
		digester.addBeanPropertySetter(curTag+"/bind-address", "bindAddr");

⌨️ 快捷键说明

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