1 package org.collectionspace.services.jaxrs;
3 import javax.servlet.ServletContextEvent;
4 import javax.ws.rs.core.Response;
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;
22 import java.util.Date;
23 import java.util.Hashtable;
24 import java.util.List;
26 public class CSpaceResteasyBootstrap extends ResteasyBootstrap {
29 public void contextInitialized(ServletContextEvent event) {
32 // This call to super instantiates and initializes our JAX-RS application class.
33 // The application class is org.collectionspace.services.jaxrs.CollectionSpaceJaxRsApplication.
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());
41 initializeAuthorities(app.getResourceMap());
43 System.out.println(String.format("%tc [INFO] CollectionSpace Services' JAX-RS application started.", new Date()));
44 } catch (Throwable e) {
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.");
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);
74 private void initializeAuthorityInstance(ResourceMap resourceMap, AuthorityInstanceType authorityInstance, String serviceName, CSpaceTenant tenant) {
75 // TODO Auto-generated method stub
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();
86 } catch (Exception e) {
87 // TODO Auto-generated catch block
92 private void initializeVocabularies() {
93 // TODO Auto-generated method stub