private static void writeFeatureType(ILayer layer, BufferedWriter out) throws IOException {
    WFSDataStore wfs = (WFSDataStore) layer.getResource(WFSDataStore.class, null);
    SimpleFeatureType type = layer.getSchema();
    String typeName = type.getName().getLocalPart();

    int hidden = layer.isVisible() ? 1 : 0;
    ServiceInfo serviceInfo = wfs.getInfo();
    String title = serviceInfo.getTitle();
    String version = "1.0.0"; // only known entry at this time //$NON-NLS-1$
    URI source = serviceInfo.getSource();
    String get = source == null ? "" : source.toString();

    ResourceInfo resourceInfo = wfs.getFeatureSource(typeName).getInfo();
    append(4, out, "<SimpleFeatureType hidden=\"" + hidden + "\">"); // $NON-NLS-1$ //$NON-NLS-2$
    append(
        6,
        out,
        "<Server service=\"OGC:WFS\" title=\""
            + title
            + "\" version=\""
            + version
            + "\">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    append(
        8,
        out,
        "<OnlineResource method=\"GET\" xlink:href=\""
            + get
            + "\" xlink:type=\"simple\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
    append(6, out, "</Server>"); // $NON-NLS-1$
    append(6, out, "<Name>" + typeName + "</Name>"); // $NON-NLS-1$ //$NON-NLS-2$
    append(6, out, "<Title>" + resourceInfo.getTitle() + "</Title>"); // $NON-NLS-1$ //$NON-NLS-2$
    // if( !Double.isNaN( layer.getMinScaleDenominator() ))
    //        append( 6, out,
    // "<sld:MinScaleDenominator>"+layer.getMinScaleDenominator()+"</sld:MinScaleDenominator>");
    // if( !Double.isNaN( layer.getMaxScaleDenominator() ))
    //        append( 6, out,
    // "<sld:MinScaleDenominator>"+layer.getMaxScaleDenominator()+"</sld:MinScaleDenominator>");
    String SRS = "EPSG:4326";
    CoordinateReferenceSystem crs = resourceInfo.getCRS();
    // TODO: anyone knows how to get the urn for the crs object?
    append(6, out, "<SRS>" + SRS + "</SRS>"); // $NON-NLS-1$ //$NON-NLS-2$
    append(4, out, "</SimpleFeatureType>"); // $NON-NLS-1$
  }
  public String wfsRequest() {
    // String getCapabilities =
    // "http://"+host+":"+port+"/geoserver/"+workspace+"/wfs?REQUEST=GetCapabilities&version=1.0.0";
    String getCapabilities =
        "http://"
            + host
            + ":"
            + port
            + "/geoserver/"
            + workspace
            + "/ows?REQUEST=GetCapabilities&version=1.1.1&service=WFS";
    Map connectionParameters = new HashMap();
    connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities);
    connectionParameters.put("WFSDataStoreFactory:USERNAME", "admin");
    connectionParameters.put("WFSDataStoreFactory:PASSWORD", "geoserver");
    connectionParameters.put("WFSDataStoreFactory:WFS_STRATEGY", "geoserver");
    connectionParameters.put("WFSDataStoreFactory:MAXFEATURES", 1000);
    WFSDataStoreFactory dsf = new WFSDataStoreFactory();
    try {
      // WFS_1_0_0_DataStore wfs = dsf.createDataStore(connectionParameters);
      WFSDataStore dataStore = dsf.createDataStore(connectionParameters);

      String[] typeNames = dataStore.getTypeNames();
      System.out.println(ArrayUtils.toString(typeNames));

      SimpleFeatureSource source = dataStore.getFeatureSource(workspace + ":" + layer);
      SimpleFeatureCollection fc = source.getFeatures();
      StringWriter writer = new StringWriter();
      while (fc.features().hasNext()) {
        SimpleFeature sf = fc.features().next();
        System.out.println(sf.getAttribute("myname"));
        FeatureJSON fjson = new FeatureJSON();
        fjson.writeFeature(sf, writer);
      }
      String geojson = writer.toString();
      return geojson;
    } catch (IOException ex) {
      ex.printStackTrace();
    }
    return null;
  }