Changeset 262


Ignore:
Timestamp:
03/19/10 14:54:36 (14 years ago)
Author:
patdui
Message:
  • Using a proper response when sending back xsd or xml raw data, setting appropriate http headers so browser will trigger native save as dialog
  • Renamed TestHelper? (so maven doesn't try to run it as a test anymore)
Location:
ComponentRegistry/trunk/ComponentRegistry/src
Files:
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/ComponentRegistry.java

    r207 r262  
    1515    List<ComponentDescription> getComponentDescriptions();
    1616
     17    ComponentDescription getComponentDescription(String id);
     18
    1719    List<ProfileDescription> getProfileDescriptions();
     20
     21    ProfileDescription getProfileDescription(String id);
    1822
    1923    CMDComponentSpec getMDProfile(String id);
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/ComponentRegistryImpl.java

    r253 r262  
    166166        return result;
    167167    }
     168   
     169    public ComponentDescription getComponentDescription(String id) {
     170        return componentDescriptions.get(id);
     171    }
    168172
    169173    public CMDComponentSpec getMDProfile(String profileId) {
     
    239243        Collections.sort(result, ProfileDescription.COMPARE_ON_NAME);
    240244        return result;
     245    }
     246   
     247    public ProfileDescription getProfileDescription(String id) {
     248        return profileDescriptions.get(id);
    241249    }
    242250
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/rest/ComponentRegistryRestService.java

    r208 r262  
    9999            return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    100100        } catch (UserUnauthorizedException e) {
    101             LOG.info("Component with id: " + componentId + " deletion failed: "+e.getMessage());
     101            LOG.info("Component with id: " + componentId + " deletion failed: " + e.getMessage());
    102102            return Response.serverError().status(Status.UNAUTHORIZED).build();
    103103        }
     
    109109    @Path("/components/{componentId}/{rawType}")
    110110    @Produces( { MediaType.TEXT_XML, MediaType.APPLICATION_XML })
    111     public String getRegisteredComponentRawType(@PathParam("componentId") String componentId, @PathParam("rawType") String rawType) {
     111    public Response getRegisteredComponentRawType(@PathParam("componentId") String componentId, @PathParam("rawType") String rawType) {
    112112        LOG.info("Component with id: " + componentId + " and rawType:" + rawType + " is requested.");
    113113        String result = "";
     114        ComponentDescription desc = registry.getComponentDescription(componentId);
     115        if (desc == null) {
     116            throw new WebApplicationException(Response.serverError().entity("Requested component does not exist").build());
     117        }
     118        String fileName = desc.getName() + "." + rawType;
    114119        if ("xml".equalsIgnoreCase(rawType)) {
    115120            result = registry.getMDComponentAsXml(componentId);
     
    120125                    "unsupported rawType: " + rawType + " (only xml or xsd are supported)").build());
    121126        }
    122         return result;
     127        return createDownloadResponse(result, fileName);
    123128    }
    124129
     
    145150            return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    146151        } catch (UserUnauthorizedException e) {
    147             LOG.info("Profile with id: " + profileId + " deletion failed: "+e.getMessage());
     152            LOG.info("Profile with id: " + profileId + " deletion failed: " + e.getMessage());
    148153            return Response.serverError().status(Status.UNAUTHORIZED).build();
    149154        }
     
    155160    @Path("/profiles/{profileId}/{rawType}")
    156161    @Produces( { MediaType.TEXT_XML, MediaType.APPLICATION_XML })
    157     public String getRegisteredProfileRawType(@PathParam("profileId") String profileId, @PathParam("rawType") String rawType) {
     162    public Response getRegisteredProfileRawType(@PathParam("profileId") String profileId, @PathParam("rawType") String rawType) {
    158163        LOG.info("Profile with id: " + profileId + " and rawType:" + rawType + " is requested.");
    159164        String result = "";
     165        ProfileDescription desc = registry.getProfileDescription(profileId);
     166        if (desc == null) {
     167            throw new WebApplicationException(Response.serverError().entity("Requested component does not exist").build());
     168        }
     169        String fileName = desc.getName() + "." + rawType;
    160170        if ("xml".equalsIgnoreCase(rawType)) {
    161171            result = registry.getMDProfileAsXml(profileId);
     
    166176                    "unsupported rawType: " + rawType + " (only xml or xsd are supported)").build());
    167177        }
    168         return result;
     178        return createDownloadResponse(result, fileName);
     179
     180    }
     181
     182    private Response createDownloadResponse(String result, String fileName) {
     183        //Making response so it triggers browsers native save as dialog.
     184        Response response = Response.ok().type("application/x-download").header("Content-Disposition", "attachment; filename=" + fileName)
     185                .entity(result).build();
     186        return response;
     187
    169188    }
    170189
  • ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/ComponentRegistryImplTest.java

    r207 r262  
    2222import clarin.cmdi.componentregistry.model.ProfileDescription;
    2323import clarin.cmdi.componentregistry.rest.DummyPrincipal;
    24 import clarin.cmdi.componentregistry.rest.TestHelper;
     24import clarin.cmdi.componentregistry.rest.RegistryTestHelper;
    2525
    2626public class ComponentRegistryImplTest {
     
    3939        assertEquals(0, register.getProfileDescriptions().size());
    4040
    41         CMDComponentSpec testProfile = TestHelper.getTestProfile();
     41        CMDComponentSpec testProfile = RegistryTestHelper.getTestProfile();
    4242        assertNull(testProfile.getHeader().getID());
    4343        assertNull(testProfile.getHeader().getName());
     
    6868        assertEquals(0, register.getProfileDescriptions().size());
    6969
    70         CMDComponentSpec testComponent = TestHelper.getTestComponent();
     70        CMDComponentSpec testComponent = RegistryTestHelper.getTestComponent();
    7171        assertNull(testComponent.getHeader().getID());
    7272        assertNull(testComponent.getHeader().getName());
     
    103103        assertEquals(0, register.getComponentDescriptions().size());
    104104        assertEquals(0, register.getProfileDescriptions().size());
    105         register.registerMDProfile(description, TestHelper.getTestProfile());
     105        register.registerMDProfile(description, RegistryTestHelper.getTestProfile());
    106106        assertEquals(0, register.getComponentDescriptions().size());
    107107        assertEquals(1, register.getProfileDescriptions().size());
     
    130130        assertEquals(0, register.getComponentDescriptions().size());
    131131        assertEquals(0, register.getProfileDescriptions().size());
    132         register.registerMDProfile(description, TestHelper.getTestProfile());
     132        register.registerMDProfile(description, RegistryTestHelper.getTestProfile());
    133133        description = new ProfileDescription();
    134134        description.setName("Aap2");
    135135        String id2 = "Aap2" + System.currentTimeMillis();
    136136        description.setId(id2);
    137         register.registerMDProfile(description, TestHelper.getTestProfile());
     137        register.registerMDProfile(description, RegistryTestHelper.getTestProfile());
    138138
    139139        assertEquals(0, register.getComponentDescriptions().size());
     
    172172
    173173        String id = "profile1";
    174         ProfileDescription description = TestHelper.addProfile(register, id, profileContent);
     174        ProfileDescription description = RegistryTestHelper.addProfile(register, id, profileContent);
    175175
    176176        String xsd = register.getMDProfileAsXsd(description.getId());
     
    194194        compContent += "</CMD_ComponentSpec>\n";
    195195
    196         ComponentDescription compDesc = TestHelper.addComponent(register, compId, compContent);
     196        ComponentDescription compDesc = RegistryTestHelper.addComponent(register, compId, compContent);
    197197
    198198        String profileContent = "";
     
    206206
    207207        String id = "profile1";
    208         ProfileDescription description = TestHelper.addProfile(register, id, profileContent);
     208        ProfileDescription description = RegistryTestHelper.addProfile(register, id, profileContent);
    209209
    210210        String xsd = register.getMDProfileAsXsd(description.getId());
     
    226226        compContent += "    </CMD_Component>\n";
    227227        compContent += "</CMD_ComponentSpec>\n";
    228         ComponentDescription compDesc1 = TestHelper.addComponent(register, "component1", compContent);
     228        ComponentDescription compDesc1 = RegistryTestHelper.addComponent(register, "component1", compContent);
    229229
    230230        compContent = "";
     
    238238        compContent += "    </CMD_Component>\n";
    239239        compContent += "</CMD_ComponentSpec>\n";
    240         ComponentDescription compDesc2 = TestHelper.addComponent(register, "component2", compContent);
     240        ComponentDescription compDesc2 = RegistryTestHelper.addComponent(register, "component2", compContent);
    241241
    242242        compContent = "";
     
    253253        compContent += "    </CMD_Component>\n";
    254254        compContent += "</CMD_ComponentSpec>\n";
    255         ComponentDescription compDesc3 = TestHelper.addComponent(register, "component3", compContent);
     255        ComponentDescription compDesc3 = RegistryTestHelper.addComponent(register, "component3", compContent);
    256256
    257257        String xsd = register.getMDComponentAsXsd(compDesc3.getId());
     
    272272        description.setCreatorName(PRINCIPAL.getName());
    273273        description.setDescription("MyDescription");
    274         CMDComponentSpec testProfile = TestHelper.getTestProfile();
     274        CMDComponentSpec testProfile = RegistryTestHelper.getTestProfile();
    275275
    276276        register.registerMDProfile(description, testProfile);
     
    301301        description.setCreatorName(PRINCIPAL.getName());
    302302        description.setDescription("MyDescription");
    303         CMDComponentSpec testProfile = TestHelper.getTestProfile();
     303        CMDComponentSpec testProfile = RegistryTestHelper.getTestProfile();
    304304
    305305        register.registerMDComponent(description, testProfile);
  • ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/rest/ComponentRegistryRestServiceTest.java

    r207 r262  
    215215    public void testRegisterProfile() throws Exception {
    216216        FormDataMultiPart form = new FormDataMultiPart();
    217         form.field(ComponentRegistryRestService.DATA_FORM_FIELD, TestHelper.getTestProfileContent(),
     217        form.field(ComponentRegistryRestService.DATA_FORM_FIELD, RegistryTestHelper.getTestProfileContent(),
    218218                MediaType.APPLICATION_OCTET_STREAM_TYPE);
    219219        form.field(ComponentRegistryRestService.NAME_FORM_FIELD, "ProfileTest1");
     
    235235    public void testRegisterComponent() throws Exception {
    236236        FormDataMultiPart form = new FormDataMultiPart();
    237         form.field(ComponentRegistryRestService.DATA_FORM_FIELD, TestHelper.getComponentTestContent(),
     237        form.field(ComponentRegistryRestService.DATA_FORM_FIELD, RegistryTestHelper.getComponentTestContent(),
    238238                MediaType.APPLICATION_OCTET_STREAM_TYPE);
    239239        form.field(ComponentRegistryRestService.NAME_FORM_FIELD, "ComponentTest1");
     
    302302    public void testRegisterComponentAsProfile() throws Exception {
    303303        FormDataMultiPart form = new FormDataMultiPart();
    304         form.field(ComponentRegistryRestService.DATA_FORM_FIELD, TestHelper.getComponentTestContent(),
     304        form.field(ComponentRegistryRestService.DATA_FORM_FIELD, RegistryTestHelper.getComponentTestContent(),
    305305                MediaType.APPLICATION_OCTET_STREAM_TYPE);
    306306        form.field(ComponentRegistryRestService.NAME_FORM_FIELD, "t");
     
    318318        registryDir = ComponentRegistryImplTest.createTempRegistryDir();
    319319        testRegistry = ComponentRegistryImplTest.getTestRegistry(registryDir);
    320         TestHelper.addProfile(testRegistry, ComponentRegistry.REGISTRY_ID + "profile1");
    321         TestHelper.addProfile(testRegistry, ComponentRegistry.REGISTRY_ID + "profile2");
    322         TestHelper.addComponent(testRegistry, ComponentRegistry.REGISTRY_ID + "component1");
    323         TestHelper.addComponent(testRegistry, ComponentRegistry.REGISTRY_ID + "component2");
     320        RegistryTestHelper.addProfile(testRegistry, ComponentRegistry.REGISTRY_ID + "profile1");
     321        RegistryTestHelper.addProfile(testRegistry, ComponentRegistry.REGISTRY_ID + "profile2");
     322        RegistryTestHelper.addComponent(testRegistry, ComponentRegistry.REGISTRY_ID + "component1");
     323        RegistryTestHelper.addComponent(testRegistry, ComponentRegistry.REGISTRY_ID + "component2");
    324324    }
    325325
  • ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/rest/MDValidatorTest.java

    r127 r262  
    9797        assertTrue(validator.getErrorMessages().get(1).startsWith(MDValidator.COMPONENT_NOT_REGISTERED_ERROR));
    9898
    99         TestHelper.addComponent(testRegistry, id1);
     99        RegistryTestHelper.addComponent(testRegistry, id1);
    100100        validator = new MDValidator(new ByteArrayInputStream(profileContent.getBytes()), desc, testRegistry);
    101101        assertFalse(validator.validate());
     
    103103        assertTrue(validator.getErrorMessages().get(0).startsWith(MDValidator.COMPONENT_NOT_REGISTERED_ERROR));
    104104
    105         TestHelper.addComponent(testRegistry, id2);
     105        RegistryTestHelper.addComponent(testRegistry, id2);
    106106        validator = new MDValidator(new ByteArrayInputStream(profileContent.getBytes()), desc, testRegistry);
    107107        assertTrue("component is registered should be valid now", validator.validate());
     
    130130        assertTrue(validator.getErrorMessages().get(0).startsWith(MDValidator.COMPONENT_NOT_REGISTERED_ERROR));
    131131
    132         TestHelper.addComponent(testRegistry, id1);
     132        RegistryTestHelper.addComponent(testRegistry, id1);
    133133        validator = new MDValidator(new ByteArrayInputStream(content.getBytes()), desc, testRegistry);
    134134        assertTrue(validator.validate());
  • ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/rest/RegistryTestHelper.java

    r207 r262  
    1919 *
    2020 */
    21 public final class TestHelper {
     21public final class RegistryTestHelper {
    2222
    23     private TestHelper() {
     23    private RegistryTestHelper() {
    2424    }
    2525
     
    7171
    7272    public static ProfileDescription addProfile(ComponentRegistry testRegistry, String id) throws ParseException, JAXBException {
    73         return addProfile(testRegistry, id, TestHelper.getTestProfileContent());
     73        return addProfile(testRegistry, id, RegistryTestHelper.getTestProfileContent());
    7474    }
    7575
Note: See TracChangeset for help on using the changeset viewer.