List of usage examples for java.beans XMLEncoder close
public void close()
From source file:ddf.catalog.source.solr.SolrProviderTest.java
@Test public void testExtensibleMetacards() throws IngestException, UnsupportedQueryException { deleteAllIn(provider);//from w w w.j ava 2 s . co m String brandNewField1 = "description"; String brandNewFieldValue1 = "myDescription"; /* BASIC STRINGS */ Set<AttributeDescriptor> descriptors = new HashSet<AttributeDescriptor>(); descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(brandNewField1, true, true, true, false, BasicTypes.STRING_TYPE)); MetacardTypeImpl mType = new MetacardTypeImpl("custom1", descriptors); MetacardImpl customMetacard = new MetacardImpl(mType); // customMetacard.setAttribute("id", "44567880"); customMetacard.setAttribute(brandNewField1, brandNewFieldValue1); create(customMetacard); // search id Query query = new QueryImpl(filterBuilder.attribute("id").like().text("*")); QueryRequest request = new QueryRequestImpl(query); SourceResponse response = provider.query(request); assertEquals(1, response.getResults().size()); assertEquals("custom1", response.getResults().get(0).getMetacard().getMetacardType().getName()); assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors)); // search title - * query = new QueryImpl(filterBuilder.attribute(brandNewField1).like().text("*")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); assertEquals("custom1", response.getResults().get(0).getMetacard().getMetacardType().getName()); assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors)); // search title - exact query = new QueryImpl(filterBuilder.attribute(brandNewField1).equalTo().text(brandNewFieldValue1)); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); // search negative query = new QueryImpl(filterBuilder.attribute(brandNewField1).like().text("no")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(0, response.getResults().size()); // NEW TYPE String brandNewXmlField1 = "author"; String brandNewXmlFieldValue1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<author>john doe</author>"; descriptors = new HashSet<AttributeDescriptor>(); descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(brandNewXmlField1, true, true, true, false, BasicTypes.XML_TYPE)); mType = new MetacardTypeImpl("34ga$^TGHfg:/", descriptors); customMetacard = new MetacardImpl(mType); // customMetacard.setAttribute(Metacard.ID, "44567880"); customMetacard.setAttribute(brandNewXmlField1, brandNewXmlFieldValue1); create(customMetacard); // Two Ids query = new QueryImpl(filterBuilder.attribute(Metacard.ID).like().text("*")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(2, response.getResults().size()); // search xml query = new QueryImpl(filterBuilder.attribute(brandNewXmlField1).like().caseSensitiveText("doe")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); assertEquals("34ga$^TGHfg:/", response.getResults().get(0).getMetacard().getMetacardType().getName()); assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors)); // search xml - negative query = new QueryImpl(filterBuilder.attribute(brandNewXmlField1).like().text("author")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(0, response.getResults().size()); // EVERYTHING ELSE type String doubleField = "hertz"; double doubleFieldValue = 16065.435; String floatField = "inches"; float floatFieldValue = 4.435f; String intField = "count"; int intFieldValue = 4; String longField = "milliseconds"; long longFieldValue = 987654322111L; String byteField = "bytes"; byte[] byteFieldValue = { 86 }; String booleanField = "expected"; boolean booleanFieldValue = true; String dateField = "lost"; Date dateFieldValue = new Date(); String geoField = "geo"; String geoFieldValue = GULF_OF_GUINEA_POINT_WKT; String shortField = "daysOfTheWeek"; short shortFieldValue = 1; String objectField = "payload"; BevelBorder objectFieldValue = new BevelBorder(BevelBorder.RAISED); descriptors = new HashSet<AttributeDescriptor>(); descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(doubleField, true, true, false, false, BasicTypes.DOUBLE_TYPE)); descriptors.add(new AttributeDescriptorImpl(floatField, true, true, false, false, BasicTypes.FLOAT_TYPE)); descriptors.add(new AttributeDescriptorImpl(intField, true, true, false, false, BasicTypes.INTEGER_TYPE)); descriptors.add(new AttributeDescriptorImpl(longField, true, true, false, false, BasicTypes.LONG_TYPE)); descriptors.add(new AttributeDescriptorImpl(byteField, false, true, false, false, BasicTypes.BINARY_TYPE)); descriptors .add(new AttributeDescriptorImpl(booleanField, true, true, false, false, BasicTypes.BOOLEAN_TYPE)); descriptors.add(new AttributeDescriptorImpl(dateField, true, true, false, false, BasicTypes.DATE_TYPE)); descriptors.add(new AttributeDescriptorImpl(geoField, true, true, false, false, BasicTypes.GEO_TYPE)); descriptors.add(new AttributeDescriptorImpl(shortField, true, true, false, false, BasicTypes.SHORT_TYPE)); descriptors .add(new AttributeDescriptorImpl(objectField, false, true, false, false, BasicTypes.OBJECT_TYPE)); mType = new MetacardTypeImpl("numbersMT", descriptors); customMetacard = new MetacardImpl(mType); // customMetacard.setAttribute(Metacard.ID, "245gasg324"); customMetacard.setAttribute(doubleField, doubleFieldValue); customMetacard.setAttribute(floatField, floatFieldValue); customMetacard.setAttribute(intField, intFieldValue); customMetacard.setAttribute(longField, longFieldValue); customMetacard.setAttribute(byteField, byteFieldValue); customMetacard.setAttribute(booleanField, booleanFieldValue); customMetacard.setAttribute(dateField, dateFieldValue); customMetacard.setAttribute(geoField, geoFieldValue); customMetacard.setAttribute(shortField, shortFieldValue); customMetacard.setAttribute(objectField, objectFieldValue); create(customMetacard); // Three Ids query = new QueryImpl(filterBuilder.attribute(Metacard.ID).like().text("*")); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(3, response.getResults().size()); // search double query = new QueryImpl(filterBuilder.attribute(doubleField).greaterThan().number(doubleFieldValue - 1.0)); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); // search int query = new QueryImpl(filterBuilder.attribute(intField).greaterThan().number(intFieldValue - 1)); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); Metacard resultMetacard = response.getResults().get(0).getMetacard(); assertThat(resultMetacard.getAttribute(Metacard.ID), notNullValue()); assertThat((Double) (resultMetacard.getAttribute(doubleField).getValue()), equalTo(doubleFieldValue)); assertThat((Integer) (resultMetacard.getAttribute(intField).getValue()), equalTo(intFieldValue)); assertThat((Float) (resultMetacard.getAttribute(floatField).getValue()), equalTo(floatFieldValue)); assertThat((Long) (resultMetacard.getAttribute(longField).getValue()), equalTo(longFieldValue)); assertThat((byte[]) (resultMetacard.getAttribute(byteField).getValue()), equalTo(byteFieldValue)); assertThat((Boolean) (resultMetacard.getAttribute(booleanField).getValue()), equalTo(booleanFieldValue)); assertThat((Date) (resultMetacard.getAttribute(dateField).getValue()), equalTo(dateFieldValue)); assertThat((String) (resultMetacard.getAttribute(geoField).getValue()), equalTo(geoFieldValue)); assertThat((Short) (resultMetacard.getAttribute(shortField).getValue()), equalTo(shortFieldValue)); assertThat((BevelBorder) (resultMetacard.getAttribute(objectField).getValue()), instanceOf(BevelBorder.class)); /* * Going to use the XMLEncoder. If it writes out the objects the same way in xml, then they * are the same. */ ByteArrayOutputStream beveledBytesStreamFromSolr = new ByteArrayOutputStream(); XMLEncoder solrXMLEncoder = new XMLEncoder(new BufferedOutputStream(beveledBytesStreamFromSolr)); solrXMLEncoder.writeObject((resultMetacard.getAttribute(objectField).getValue())); solrXMLEncoder.close(); ByteArrayOutputStream beveledBytesStreamOriginal = new ByteArrayOutputStream(); XMLEncoder currendEncoder = new XMLEncoder(new BufferedOutputStream(beveledBytesStreamOriginal)); currendEncoder.writeObject(objectFieldValue); currendEncoder.close(); assertThat(beveledBytesStreamFromSolr.toByteArray(), equalTo(beveledBytesStreamOriginal.toByteArray())); // search short query = new QueryImpl(filterBuilder.attribute(shortField).greaterThanOrEqualTo().number(shortFieldValue)); request = new QueryRequestImpl(query); response = provider.query(request); assertEquals(1, response.getResults().size()); resultMetacard = response.getResults().get(0).getMetacard(); }