package mil.nga.giat.geowave.adapter.vector.query; public class CqlQueryFilterIteratorTest { // TODO figure out if we need this test, I don't think it was really testing // what it seems to intend to test though because MockAccumulo is not going // to use the VFSClassloader, we can test URLstreamhandlerfactory without a // dependency on cql or a dependency on accumulo // private DataStore createDataStore() // throws IOException { // final Map<String, Serializable> params = new HashMap<String, // Serializable>(); // params.put( // "gwNamespace", // "test_" + getClass().getName()); // return new GeoWaveGTDataStoreFactory( // new MemoryStoreFactoryFamily()).createNewDataStore(params); // } // // @Test // public void test() // throws SchemaException, // IOException, // ParseException { // final DataStore dataStore = createDataStore(); // // final SimpleFeatureType type = DataUtilities.createType( // "CqlQueryFilterIteratorTest", // "geometry:Geometry:srid=4326,pop:java.lang.Long,pid:String"); // // dataStore.createSchema(type); // // final Transaction transaction1 = new DefaultTransaction(); // // final FeatureWriter<SimpleFeatureType, SimpleFeature> writer = // dataStore.getFeatureWriter( // "CqlQueryFilterIteratorTest", // transaction1); // final SimpleFeature newFeature = writer.next(); // newFeature.setAttribute( // "pop", // Long.valueOf(100)); // newFeature.setAttribute( // "pid", // "a89dhd-123-dxc"); // newFeature.setAttribute( // "geometry", // new WKTReader().read("LINESTRING (30 10, 10 30, 40 40)")); // writer.write(); // writer.close(); // // transaction1.commit(); // // final FilterFactoryImpl factory = new FilterFactoryImpl(); // final Expression exp1 = factory.property("pid"); // final Expression exp2 = factory.literal("a89dhd-123-dxc"); // final Filter f = factory.equal( // exp1, // exp2, // false); // // final MockInstance mockDataInstance = new MockInstance( // "CqlQueryFilterIteratorTest"); // final Connector mockDataConnector = mockDataInstance.getConnector( // "root", // new PasswordToken( // new byte[0])); // final BasicAccumuloOperations dataOps = new BasicAccumuloOperations( // mockDataConnector); // // final AccumuloIndexStore indexStore = new AccumuloIndexStore( // dataOps); // // final String tableName = IndexType.SPATIAL_VECTOR.getDefaultId(); // final ScannerBase scanner = dataOps.createScanner(tableName); // // final AccumuloAdapterStore adapterStore = new AccumuloAdapterStore( // dataOps); // // initScanner( // scanner, // indexStore.getIndex(new ByteArrayId( // IndexType.SPATIAL_VECTOR.getDefaultId())), // (DataAdapter<SimpleFeature>) adapterStore.getAdapter(new ByteArrayId( // "CqlQueryFilterIteratorTest")), // f); // // final Iterator<Entry<Key, Value>> it = scanner.iterator(); // assertTrue(it.hasNext()); // int count = 0; // while (it.hasNext()) { // it.next(); // count++; // } // // line string covers more than one tile // assertTrue(count >= 1); // // } // // @Test // public void testStreamHandlerFactoryConflictResolution() { // unsetURLStreamHandlerFactory(); // URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); // try { // Class.forName(CqlQueryFilterIterator.class.getName()); // } // catch (final Exception e) { // Assert.fail("Iterator did not handle an alread loaded URLStreamHandler, exception was: " // + e.getLocalizedMessage()); // } // catch (final Error e) { // Assert.fail("Iterator did not handle an alread loaded URLStreamHandler, error was: " // + e.getLocalizedMessage()); // } // Assert.assertEquals( // unsetURLStreamHandlerFactory(), // FsUrlStreamHandlerFactory.class.getName()); // URL.setURLStreamHandlerFactory(new UnitTestCustomStreamHandlerFactory()); // try { // final Method m = CqlQueryFilterIterator.class.getDeclaredMethod( // "initialize", // null); // m.setAccessible(true); // m.invoke(null); // } // catch (final NoSuchMethodException e) { // Assert.fail("Error changing scope of CqlQueryFilterIterator init() method"); // } // catch (final InvocationTargetException e) { // if (e.getTargetException().getMessage().equals( // "factory already defined")) { // Assert.assertEquals( // unsetURLStreamHandlerFactory(), // UnitTestCustomStreamHandlerFactory.class.getName()); // URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); // return; // } // Assert.fail("Error invoking scope of CqlQueryFilterIterator init() method"); // } // catch (final IllegalAccessException e) { // Assert.fail("Error accessing scope of CqlQueryFilterIterator init() method"); // } // Assert.fail("Loading conflicting duplicate StreamHandler factories did not throw an error"); // } // // private static String unsetURLStreamHandlerFactory() { // try { // final Field f = URL.class.getDeclaredField("factory"); // f.setAccessible(true); // final Object curFac = f.get(null); // f.set( // null, // null); // URL.setURLStreamHandlerFactory(null); // return curFac.getClass().getName(); // } // catch (final Exception e) { // return null; // } // } // // public class UnitTestCustomStreamHandlerFactory implements // java.net.URLStreamHandlerFactory // { // public UnitTestCustomStreamHandlerFactory() {} // // @Override // public URLStreamHandler createURLStreamHandler( // final String protocol ) { // if (protocol.equals("http")) { // return new sun.net.www.protocol.http.Handler(); // } // else if (protocol.equals("https")) { // return new sun.net.www.protocol.https.Handler(); // } // return null; // } // } // // private void initScanner( // final ScannerBase scanner, // final Index index, // final DataAdapter<SimpleFeature> dataAdapter, // final Filter cqlFilter ) { // final IteratorSetting iteratorSettings = new IteratorSetting( // CqlQueryFilterIterator.CQL_QUERY_ITERATOR_PRIORITY, // CqlQueryFilterIterator.CQL_QUERY_ITERATOR_NAME, // CqlQueryFilterIterator.class); // iteratorSettings.addOption( // CqlQueryFilterIterator.CQL_FILTER, // FilterToCQLTool.toCQL(cqlFilter)); // iteratorSettings.addOption( // CqlQueryFilterIterator.DATA_ADAPTER, // ByteArrayUtils.byteArrayToString(PersistenceUtils.toBinary(dataAdapter))); // iteratorSettings.addOption( // CqlQueryFilterIterator.MODEL, // ByteArrayUtils.byteArrayToString(PersistenceUtils.toBinary(index.getIndexModel()))); // // scanner.addScanIterator(iteratorSettings); // } }