Example #1
0
  private void testVendorParameters(Boolean usePost) throws IOException {
    if (url == null) return;

    Map m = new HashMap();
    m.put(WFSDataStoreFactory.URL.key, url);
    m.put(WFSDataStoreFactory.TIMEOUT.key, new Integer(100000));
    m.put(WFSDataStoreFactory.PROTOCOL.key, usePost);
    WFS_1_0_0_DataStore wfs = (WFS_1_0_0_DataStore) (new WFSDataStoreFactory()).createDataStore(m);

    final WFS100ProtocolHandler originalHandler = wfs.protocolHandler;
    wfs.protocolHandler =
        new WFS100ProtocolHandler(null, originalHandler.getConnectionFactory()) {
          @Override
          protected WFSCapabilities parseCapabilities(InputStream capabilitiesReader)
              throws IOException {
            return originalHandler.getCapabilities();
          }

          @Override
          public ConnectionFactory getConnectionFactory() {
            return new ConnectionFactoryWrapper(super.getConnectionFactory()) {

              @Override
              public HttpURLConnection getConnection(URL query, HttpMethod method)
                  throws IOException {
                String[] keyValueArray = query.getQuery().split("&");
                Map<String, String> kvp = new HashMap<String, String>();
                for (String keyValue : keyValueArray) {
                  String[] skv = keyValue.split("=");
                  kvp.put(skv[0], skv[1]);
                }

                // check the vendor params actually made it into the url
                assertEquals("true", kvp.get("strict"));
                assertEquals("mysecret", kvp.get("authkey"));
                assertEquals("low%3A2000000%3Bhigh%3A5000000", kvp.get("viewparams"));

                return super.getConnection(query, method);
              }
            };
          }
        };

    Map<String, String> vparams = new HashMap<String, String>();
    vparams.put("authkey", "mysecret");
    vparams.put("viewparams", "low:2000000;high:5000000");
    vparams.put("strict", "true");
    Hints hints = new Hints(WFSDataStore.WFS_VENDOR_PARAMETERS, vparams);
    Query q = new Query("topp:states");
    q.setHints(hints);

    // try with
    FeatureReader fr = wfs.getFeatureReader(q, Transaction.AUTO_COMMIT);
    assertTrue(fr.hasNext());
    fr.close();
  }