@Ignore public void testMarshalRecordCollectionById() throws UnsupportedEncodingException, JAXBException { final int totalResults = 2; XStream xstream = createXStream(CswConstants.GET_RECORD_BY_ID_RESPONSE); CswRecordCollection collection = createCswRecordCollection(null, totalResults); collection.setById(true); ArgumentCaptor<MarshallingContext> captor = ArgumentCaptor.forClass(MarshallingContext.class); String xml = xstream.toXML(collection); // Verify the context arguments were set correctly verify(mockProvider, times(totalResults)) .marshal(any(Object.class), any(HierarchicalStreamWriter.class), captor.capture()); MarshallingContext context = captor.getValue(); assertThat(context, not(nullValue())); assertThat( (String) context.get(CswConstants.OUTPUT_SCHEMA_PARAMETER), is(CswConstants.CSW_OUTPUT_SCHEMA)); assertThat((ElementSetType) context.get(CswConstants.ELEMENT_SET_TYPE), is(nullValue())); assertThat(context.get(CswConstants.ELEMENT_NAMES), is(nullValue())); JAXBElement<GetRecordByIdResponseType> jaxb = (JAXBElement<GetRecordByIdResponseType>) getJaxBContext() .createUnmarshaller() .unmarshal(new ByteArrayInputStream(xml.getBytes("UTF-8"))); GetRecordByIdResponseType response = jaxb.getValue(); // Assert the GetRecordsResponse elements and attributes assertThat(response, not(nullValue())); }
@Ignore public void testMarshalRecordCollectionGetElements() throws UnsupportedEncodingException, JAXBException { final int totalResults = 5; XStream xstream = createXStream(CswConstants.GET_RECORDS_RESPONSE); GetRecordsType getRecords = new GetRecordsType(); QueryType query = new QueryType(); List<QName> elements = new LinkedList<QName>(); elements.add(CswRecordMetacardType.CSW_TITLE_QNAME); elements.add(CswRecordMetacardType.CSW_SOURCE_QNAME); query.setElementName(elements); ObjectFactory objectFactory = new ObjectFactory(); getRecords.setAbstractQuery(objectFactory.createAbstractQuery(query)); CswRecordCollection collection = createCswRecordCollection(getRecords, totalResults); collection.setElementName(elements); ArgumentCaptor<MarshallingContext> captor = ArgumentCaptor.forClass(MarshallingContext.class); String xml = xstream.toXML(collection); // Verify the context arguments were set correctly verify(mockProvider, times(totalResults)) .marshal(any(Object.class), any(HierarchicalStreamWriter.class), captor.capture()); MarshallingContext context = captor.getValue(); assertThat(context, not(nullValue())); assertThat( (String) context.get(CswConstants.OUTPUT_SCHEMA_PARAMETER), is(CswConstants.CSW_OUTPUT_SCHEMA)); assertThat((ElementSetType) context.get(CswConstants.ELEMENT_SET_TYPE), is(nullValue())); assertThat(context.get(CswConstants.ELEMENT_NAMES), is(notNullValue())); List<QName> qnames = (List<QName>) context.get(CswConstants.ELEMENT_NAMES); assertThat(qnames.contains(CswRecordMetacardType.CSW_TITLE_QNAME), is(true)); assertThat(qnames.contains(CswRecordMetacardType.CSW_SOURCE_QNAME), is(true)); JAXBElement<GetRecordsResponseType> jaxb = (JAXBElement<GetRecordsResponseType>) getJaxBContext() .createUnmarshaller() .unmarshal(new ByteArrayInputStream(xml.getBytes("UTF-8"))); GetRecordsResponseType response = jaxb.getValue(); // Assert the GetRecordsResponse elements and attributes assertThat(response, not(nullValue())); SearchResultsType resultsType = response.getSearchResults(); assertThat(resultsType, not(nullValue())); assertThat(resultsType.getElementSet(), is(nullValue())); assertThat(resultsType.getNumberOfRecordsMatched().intValue(), is(totalResults)); assertThat(resultsType.getNumberOfRecordsReturned().intValue(), is(totalResults)); assertThat(resultsType.getRecordSchema(), is(CswConstants.CSW_OUTPUT_SCHEMA)); }
static OwnerContext find(MarshallingContext context) { OwnerContext c = (OwnerContext) context.get(OwnerContext.class); if (c == null) { c = new OwnerContext(); context.put(OwnerContext.class, c); } return c; }
public void marshal( Object source, HierarchicalStreamWriter writer, MarshallingContext context) { if (context.get(IN_NESTED) == null) { context.put(IN_NESTED, true); try { super.marshal(source, writer, context); } finally { context.put(IN_NESTED, false); } } else leafLabelConverter.marshal(source, writer, context); }