1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.seasar.tuigwaa.logic;
17  
18  import org.seasar.framework.container.ComponentDef;
19  import org.seasar.tuigwaa.logic.interceptor.DataServiceMethodRegister;
20  import org.seasar.tuigwaa.model.DataService;
21  
22  import com.isenshi.util.extlib.DiconResource;
23  
24  public class ExternalLogicContainerImpl implements ExternalLogicContainer {
25  
26  	private DataServiceMethodRegister methodRegister;
27  
28  	public void setMethodRegister(DataServiceMethodRegister methodRegister) {
29  		this.methodRegister = methodRegister;
30  	}
31  
32  	public void create(String siteName, String[] paths) {
33  		for (int i = 0; i < paths.length; i++) {
34  			DiconResource resource = new DiconResource();
35  			resource.setNamespace("sites." + siteName);
36  			resource.setPath(paths[i]);
37  			resource.load();
38  			resource.bindRoot();
39  			resource.include("dicon/service.dicon");
40  
41  			registDelegateDataService(siteName, resource);
42  		}
43  	}
44  
45  	private void registDelegateDataService(String siteName,
46  			DiconResource resource) {
47  		ComponentDef[] defs = resource.findComponentDefs(DataService.class);
48  		if (defs == null) {
49  			return;
50  		}
51  		for (int i = 0; i < defs.length; i++) {
52  			String entityName = defs[i].getComponentName();
53  			DataService dataService = (DataService) defs[i].getComponent();
54  			methodRegister.registDelegateObject(siteName, entityName,
55  					dataService);
56  		}
57  	}
58  }