source: ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/tools/RegistryToolHelper.java @ 207

Last change on this file since 207 was 207, checked in by patdui, 14 years ago
  • addd Basic security in webapp
  • Added Delete functionality in registry
  • Made POST and DELETE use authorisation
File size: 3.0 KB
Line 
1package clarin.cmdi.componentregistry.tools;
2
3import java.io.IOException;
4import java.io.InputStream;
5
6import javax.ws.rs.core.HttpHeaders;
7import javax.ws.rs.core.MediaType;
8
9import org.slf4j.Logger;
10import org.slf4j.LoggerFactory;
11
12import clarin.cmdi.componentregistry.model.RegisterResponse;
13import clarin.cmdi.componentregistry.rest.ComponentRegistryRestService;
14
15import com.sun.jersey.api.client.WebResource;
16import com.sun.jersey.api.client.WebResource.Builder;
17import com.sun.jersey.core.util.Base64;
18import com.sun.jersey.multipart.FormDataMultiPart;
19
20public class RegistryToolHelper {
21
22    private final static Logger LOG = LoggerFactory.getLogger(RegistryToolHelper.class);
23
24    private final WebResource service;
25    private int failed = 0;
26
27    private final String userName;
28
29    private final String password;
30
31    public RegistryToolHelper(WebResource service, String userName, String password) {
32        this.service = service;
33        this.userName = userName;
34        this.password = password;
35    }
36
37    public void registerComponent(InputStream input, String creatorName, String description, String group, String name) throws IOException {
38        FormDataMultiPart form = createForm(input, creatorName, description, name);
39        form.field(ComponentRegistryRestService.GROUP_FORM_FIELD, group);
40        RegisterResponse response = getAuthenticatedResource("/components").type(MediaType.MULTIPART_FORM_DATA).post(RegisterResponse.class, form);
41        handleResult(response);
42    }
43
44    public void registerProfile(InputStream input, String creatorName, String description, String name) throws IOException {
45        FormDataMultiPart form = createForm(input, creatorName, description, name);
46        RegisterResponse response = getAuthenticatedResource("/profiles").type(MediaType.MULTIPART_FORM_DATA).post(RegisterResponse.class, form);
47        handleResult(response);
48    }
49   
50    private Builder getAuthenticatedResource(String path) {
51        return service.path(path).header(HttpHeaders.AUTHORIZATION, "Basic " + new String(Base64.encode(userName+":"+password)));
52    }
53
54
55    private FormDataMultiPart createForm(InputStream input, String creatorName, String description, String name) throws IOException {
56        FormDataMultiPart form = new FormDataMultiPart();
57        form.field(ComponentRegistryRestService.DATA_FORM_FIELD, input, MediaType.APPLICATION_OCTET_STREAM_TYPE);
58        form.field(ComponentRegistryRestService.NAME_FORM_FIELD, name);
59        form.field(ComponentRegistryRestService.DESCRIPTION_FORM_FIELD, description);
60        return form;
61    }
62
63    private void handleResult(RegisterResponse response) {
64        if (response.isRegistered()) {
65            LOG.info("Registration ok.");
66        } else {
67            failed++;
68            LOG.error("Registration failed with the following errors:");
69            for (int i = 0; i < response.getErrors().size(); i++) {
70                LOG.error(response.getErrors().get(i));
71            }
72        }
73    }
74
75    public int getNrOfFailed() {
76        return failed;
77    }
78
79}
Note: See TracBrowser for help on using the repository browser.