package com.amazonaws.services.simpledb; import java.io.InputStream; import static org.junit.Assert.*; import org.junit.After; import org.junit.Test; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.SimpleTimeZone; import java.util.Collections; import java.util.List; import com.amazonaws.*; import com.amazonaws.transform.*; import com.amazonaws.services.simpledb.model.*; import com.amazonaws.services.simpledb.model.transform.*; import com.amazonaws.handlers.*; import java.io.*; import java.nio.ByteBuffer; /** * Basic response unmarshallers tests * * Auto-generated */ public class AmazonSimpleDBUnmarshallersTest { /** * Test DomainMetadata response unmarshaller */ @Test public void testDomainMetadata() throws Exception { InputStream responseXML = DomainMetadataResult.class.getClassLoader() .getResourceAsStream("com/amazonaws/services/simpledb/DomainMetadataResponse.xml"); XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); Reader reader = new InputStreamReader(responseXML); XmlPullParser xpp = xmlPullParserFactory.newPullParser(); xpp.setInput(reader); StaxUnmarshallerContext unmarshallerContext = new StaxUnmarshallerContext(xpp); DomainMetadataResult domainMetadataResult = (DomainMetadataResult)new DomainMetadataResultStaxUnmarshaller().unmarshall(unmarshallerContext); HandlerChainFactory chainFactory = new HandlerChainFactory(); final List<RequestHandler2> requestHandler2s = Collections.synchronizedList(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/simpledb/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/simpledb/request.handler2s")); for (RequestHandler2 handler2 : requestHandler2s) { Response res = new Response(domainMetadataResult, null); handler2.afterResponse(null, res); } assertNotNull(domainMetadataResult.getItemCount()); assertTrue(domainMetadataResult.getItemCount().equals(1)); assertNotNull(domainMetadataResult.getItemNamesSizeBytes()); assertTrue(domainMetadataResult.getItemNamesSizeBytes().equals(1L)); assertNotNull(domainMetadataResult.getAttributeNameCount()); assertTrue(domainMetadataResult.getAttributeNameCount().equals(1)); assertNotNull(domainMetadataResult.getAttributeNamesSizeBytes()); assertTrue(domainMetadataResult.getAttributeNamesSizeBytes().equals(1L)); assertNotNull(domainMetadataResult.getAttributeValueCount()); assertTrue(domainMetadataResult.getAttributeValueCount().equals(1)); assertNotNull(domainMetadataResult.getAttributeValuesSizeBytes()); assertTrue(domainMetadataResult.getAttributeValuesSizeBytes().equals(1L)); assertNotNull(domainMetadataResult.getTimestamp()); assertTrue(domainMetadataResult.getTimestamp().equals(1)); } /** * Test GetAttributes response unmarshaller */ @Test public void testGetAttributes() throws Exception { InputStream responseXML = GetAttributesResult.class.getClassLoader() .getResourceAsStream("com/amazonaws/services/simpledb/GetAttributesResponse.xml"); XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); Reader reader = new InputStreamReader(responseXML); XmlPullParser xpp = xmlPullParserFactory.newPullParser(); xpp.setInput(reader); StaxUnmarshallerContext unmarshallerContext = new StaxUnmarshallerContext(xpp); GetAttributesResult getAttributesResult = (GetAttributesResult)new GetAttributesResultStaxUnmarshaller().unmarshall(unmarshallerContext); HandlerChainFactory chainFactory = new HandlerChainFactory(); final List<RequestHandler2> requestHandler2s = Collections.synchronizedList(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/simpledb/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/simpledb/request.handler2s")); for (RequestHandler2 handler2 : requestHandler2s) { Response res = new Response(getAttributesResult, null); handler2.afterResponse(null, res); } assertNotNull(getAttributesResult.getAttributes()); assertTrue(getAttributesResult.getAttributes().size() == 2); for (Object attributesObject : getAttributesResult.getAttributes()) { Attribute attributes = (Attribute)attributesObject; assertNotNull(attributes.getName()); assertTrue(attributes.getName().equals("1")); assertNotNull(attributes.getValue()); assertTrue(attributes.getValue().equals("1")); } } /** * Test ListDomains response unmarshaller */ @Test public void testListDomains() throws Exception { InputStream responseXML = ListDomainsResult.class.getClassLoader() .getResourceAsStream("com/amazonaws/services/simpledb/ListDomainsResponse.xml"); XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); Reader reader = new InputStreamReader(responseXML); XmlPullParser xpp = xmlPullParserFactory.newPullParser(); xpp.setInput(reader); StaxUnmarshallerContext unmarshallerContext = new StaxUnmarshallerContext(xpp); ListDomainsResult listDomainsResult = (ListDomainsResult)new ListDomainsResultStaxUnmarshaller().unmarshall(unmarshallerContext); HandlerChainFactory chainFactory = new HandlerChainFactory(); final List<RequestHandler2> requestHandler2s = Collections.synchronizedList(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/simpledb/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/simpledb/request.handler2s")); for (RequestHandler2 handler2 : requestHandler2s) { Response res = new Response(listDomainsResult, null); handler2.afterResponse(null, res); } assertNotNull(listDomainsResult.getDomainNames()); assertTrue(listDomainsResult.getDomainNames().size() == 2); for (Object domainNamesObject : listDomainsResult.getDomainNames()) { String domainNames = (String)domainNamesObject; } assertNotNull(listDomainsResult.getNextToken()); assertTrue(listDomainsResult.getNextToken().equals("1")); } /** * Test Select response unmarshaller */ @Test public void testSelect() throws Exception { InputStream responseXML = SelectResult.class.getClassLoader() .getResourceAsStream("com/amazonaws/services/simpledb/SelectResponse.xml"); XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); Reader reader = new InputStreamReader(responseXML); XmlPullParser xpp = xmlPullParserFactory.newPullParser(); xpp.setInput(reader); StaxUnmarshallerContext unmarshallerContext = new StaxUnmarshallerContext(xpp); SelectResult selectResult = (SelectResult)new SelectResultStaxUnmarshaller().unmarshall(unmarshallerContext); HandlerChainFactory chainFactory = new HandlerChainFactory(); final List<RequestHandler2> requestHandler2s = Collections.synchronizedList(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/simpledb/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/simpledb/request.handler2s")); for (RequestHandler2 handler2 : requestHandler2s) { Response res = new Response(selectResult, null); handler2.afterResponse(null, res); } assertNotNull(selectResult.getItems()); assertTrue(selectResult.getItems().size() == 2); for (Object itemsObject : selectResult.getItems()) { Item items = (Item)itemsObject; assertNotNull(items.getName()); assertTrue(items.getName().equals("1")); assertNotNull(items.getAttributes()); assertTrue(items.getAttributes().size() == 2); for (Object attributesObject : items.getAttributes()) { Attribute attributes = (Attribute)attributesObject; assertNotNull(attributes.getName()); assertTrue(attributes.getName().equals("1")); assertNotNull(attributes.getValue()); assertTrue(attributes.getValue().equals("1")); } } assertNotNull(selectResult.getNextToken()); assertTrue(selectResult.getNextToken().equals("1")); } private Date getExpectedDate() { /* * The example date in our test data is: * 2008-10-07T11:51:50.000Z * * So we construct that same date and verify that it matches * what we parsed out of the XML. */ Calendar expectedDate = new GregorianCalendar(); expectedDate.set(Calendar.YEAR, 2008); expectedDate.set(Calendar.MONTH, Calendar.OCTOBER); expectedDate.set(Calendar.DAY_OF_MONTH, 7); expectedDate.set(Calendar.AM_PM, Calendar.AM); expectedDate.set(Calendar.HOUR, 11); expectedDate.set(Calendar.MINUTE, 51); expectedDate.set(Calendar.SECOND, 50); expectedDate.set(Calendar.MILLISECOND, 0); expectedDate.setTimeZone(new SimpleTimeZone(0, "UTC")); return expectedDate.getTime(); } private ByteBuffer getExpectedByteBuffer() { /* * The example base64-binary value in our test data is: * YWJjZGVmZw== * which corresponds to the UTF-8 bytes of "abcdefg". */ String utf8String = "abcdefg"; try { return ByteBuffer.wrap(utf8String.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { fail("Unable to construct the expected ByteBuffer. " + e.getMessage()); return null; } } }