]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
495c2b0fa34b3a494392087b5e8e015be850bf5d
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.jaxrs;
2
3 import javax.servlet.ServletContextEvent;
4 import javax.ws.rs.core.Response;
5
6 import org.jboss.resteasy.core.Dispatcher;
7 import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap;
8 import org.collectionspace.authentication.CSpaceTenant;
9 import org.collectionspace.services.authorization.AuthZ;
10 import org.collectionspace.services.client.PersonAuthorityClient;
11 import org.collectionspace.services.client.PersonAuthorityClientUtils;
12 import org.collectionspace.services.client.PoxPayloadOut;
13 import org.collectionspace.services.person.PersonAuthorityResource;
14 import org.collectionspace.services.common.ResourceMap;
15 import org.collectionspace.services.common.ServiceMain;
16 import org.collectionspace.services.common.config.TenantBindingConfigReaderImpl;
17 import org.collectionspace.services.config.service.AuthorityInstanceType;
18 import org.collectionspace.services.config.service.ServiceBindingType;
19 import org.collectionspace.services.config.service.ServiceBindingType.AuthorityInstanceList;
20 import org.collectionspace.services.config.tenant.TenantBindingType;
21
22 import java.util.Date;
23 import java.util.Hashtable;
24 import java.util.List;
25
26 public class CSpaceResteasyBootstrap extends ResteasyBootstrap {
27         
28         @Override
29         public void  contextInitialized(ServletContextEvent event) {
30                 try {
31                         //
32                 // This call to super instantiates and initializes our JAX-RS application class.
33                 // The application class is org.collectionspace.services.jaxrs.CollectionSpaceJaxRsApplication.
34                 //
35                 System.out.println(String.format("%tc [INFO] Starting up the CollectionSpace Services' JAX-RS application.", new Date()));
36                         super.contextInitialized(event);
37                         CollectionSpaceJaxRsApplication app = (CollectionSpaceJaxRsApplication)deployment.getApplication();
38                         Dispatcher disp = deployment.getDispatcher();
39                         disp.getDefaultContextObjects().put(ResourceMap.class, app.getResourceMap());
40                         
41                         initializeAuthorities(app.getResourceMap());
42                         
43                 System.out.println(String.format("%tc [INFO] CollectionSpace Services' JAX-RS application started.", new Date()));
44                 } catch (Throwable e) {
45                         e.printStackTrace();
46                         throw e;
47                 }
48         }
49         
50     @Override
51     public void contextDestroyed(ServletContextEvent event) {
52         System.out.println("[INFO] Shutting down the CollectionSpace Services' JAX-RS application.");
53         //Do something if needed.
54         System.out.println("[INFO] CollectionSpace Services' JAX-RS application stopped.");
55     }   
56
57     public void initializeAuthorities(ResourceMap resourceMap) {
58         TenantBindingConfigReaderImpl tenantBindingConfigReader = ServiceMain.getInstance().getTenantBindingConfigReader();     
59         Hashtable<String, TenantBindingType> tenantBindingsTable = tenantBindingConfigReader.getTenantBindings(false);
60         for (TenantBindingType tenantBindings : tenantBindingsTable.values()) {
61                 for (ServiceBindingType serviceBinding : tenantBindings.getServiceBindings()) {
62                         AuthorityInstanceList element = serviceBinding.getAuthorityInstanceList();
63                         if (element != null && element.getAuthorityInstance() != null) {
64                                 List<AuthorityInstanceType> authorityInstanceList = element.getAuthorityInstance();
65                                 for (AuthorityInstanceType authorityInstance : authorityInstanceList) {
66                                         CSpaceTenant tenant = new CSpaceTenant(tenantBindings.getId(), tenantBindings.getName());
67                                         initializeAuthorityInstance(resourceMap, authorityInstance, serviceBinding.getName(), tenant);
68                                 }
69                         }
70                 }
71         }
72         }
73
74     private void initializeAuthorityInstance(ResourceMap resourceMap, AuthorityInstanceType authorityInstance, String serviceName, CSpaceTenant tenant) {
75                 // TODO Auto-generated method stub
76                 try {
77                         AuthZ.get().login(tenant);
78                         PersonAuthorityClient client = new PersonAuthorityClient();                     
79                         PoxPayloadOut xmlPayloadOut = PersonAuthorityClientUtils.createPersonAuthorityInstance(
80                                         authorityInstance.getTitle(), authorityInstance.getTitleRef(), client.getCommonPartName());
81                         String xmlPayload = xmlPayloadOut.asXML();
82                         PersonAuthorityResource personAuthorityResource = (PersonAuthorityResource) resourceMap.get(serviceName.toLowerCase());
83                         Response response = personAuthorityResource.createAuthority(xmlPayload);
84                         int status = response.getStatus();
85                                                 
86                 } catch (Exception e) {
87                         // TODO Auto-generated catch block
88                         e.printStackTrace();
89                 }
90         }
91
92         private void initializeVocabularies() {
93                 // TODO Auto-generated method stub
94                 
95         }
96
97 }