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

📄 ajaxservicecontainer.java.svn-base

📁 EasyJWeb是基于java技术
💻 SVN-BASE
字号:
package com.easyjf.web.ajax;

import java.util.Set;
import java.util.regex.Pattern;

import com.easyjf.container.Container;
/**
 * Ajax容器服务类,主要用于存放AjaxService配置信息,并通过该类获取远程调用相关的Ajax远程服务Bean
 * @author 大峡
 *
 */
public class AjaxServiceContainer{
	private Container container;
	private AjaxConfigManager configManager;
    public AjaxServiceContainer()
    {
    	this(AjaxConfigManager.getInstance(),null);
    }
    public AjaxServiceContainer(Container container)
    {
    	this(AjaxConfigManager.getInstance(),container);
    }
    public AjaxServiceContainer(AjaxConfigManager configManager)
    {
    	this(configManager,null);    	
    }
    public AjaxServiceContainer(AjaxConfigManager configManager,Container container)
    {
    	this.configManager=configManager;
    	this.container=container;    	
    }
	/**
	 * 检测指定的远程调用服务是否可用
	 * @param name
	 * @return 若指定名称的远程服务可用则返回true,否则返回false
	 */
	public boolean isAllow(String name) {
		return checkAllow(name)&&(!checkDeny(name));
	}
	/**
	 * 检测指定服务的指定方法是否可用
	 * @param serviceName
	 * @param methodName
	 * @return 指定方法可用,则返回true,否则返回false
	 */
	public boolean isAllowMethod(String serviceName,String methodName)
	{
		RemoteService service=(RemoteService)configManager.getServices().get(serviceName);
		if(service==null)return true;	
		boolean defineAllow=service.getAllowNames().size()<1 ||matcher(service.getAllowNames(),methodName);
		return   defineAllow&& (! matcher(service.getDenyNames(),methodName));
	}
	/**
	 * 检测指定ConvertBean的指定属性是否需要转换
	 * @param clz
	 * @param property
	 * @return 指定的属性可对远程可见则返回true,否则返回false
	 */
	public boolean isAllowProperty(Class clz,String property)
	{
		RemoteService service=(RemoteService)configManager.getConvertBeans().get(clz.getName());		
		if(service==null)return true;	
		boolean defineAllow=service.getAllowNames().size()<1 ||matcher(service.getAllowNames(),property);
		return   defineAllow&& (! matcher(service.getDenyNames(),property));
	}
	/**
	 * 从容器中调用指定服务的
	 * @param name
	 * @return 返回指定的业务对象
	 */
	public Object getService(String name) {		
		if(isAllow(name))
		return container.getBean(name);
		else throw new ServiceNotAvailableException(name);
	}
	public boolean checkAllow(String name)
	{
		//if(allowNames.size()<1)return true;
		return matcher(configManager.getAllowNames(),name);
	}
	public boolean checkDeny(String name)
	{	
		return matcher(configManager.getDenyNames(),name);
	}
	private boolean matcher(Set patterns,String name)
	{	
		java.util.Iterator it=patterns.iterator();
		while(it.hasNext())
		{
			String t=(String)it.next();			
			if(Pattern.matches(t,name))
			{			
				return true;
			}
		}		
		return false;
	}
	
	public void addService(String serviceName,RemoteService service)
	{
		configManager.getServices().put(serviceName, service);
	}
	public void addConvertBean(String className,RemoteService service)
	{
		configManager.getConvertBeans().put(className,service);
	}
	public void addAllowName(String name)
	{
		String theName=name;
		if(theName.charAt(0)=='*')theName="."+name;
		configManager.getAllowNames().add(theName);
	}
	public void addDenyName(String name)
	{
		String theName=name;
		if(theName.charAt(0)=='*')theName="."+name;
		configManager.getDenyNames().add(theName);
	}
	public void setContainer(Container container) {
		this.container = container;
	}		
}

⌨️ 快捷键说明

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