?? ajaxservicecontainer.java
字號:
package com.easyjf.web.ajax;
import java.util.Set;
import java.util.regex.Pattern;
import com.easyjf.container.Container;
/**
* Ajax容器服務類,主要用于存放AjaxService配置信息,并通過該類獲取遠程調用相關的Ajax遠程服務Bean
* @author 大峽
*@sinace 2006.12.30
*/
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
*/
public boolean isAllow(String name) {
return checkAllow(name)&&(!checkDeny(name));
}
/**
* 檢測指定服務的指定方法是否可用
* @param serviceName
* @param methodName
* @return
*/
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
*/
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 + -