class WFS_1_1_0_Protocol implements WFSProtocol {

    public Set<String> getSupportedGetFeatureOutputFormats() {
        OperationType operationMetadata = getOperationMetadata(WFSOperationType.GET_FEATURE);
        List<DomainType> parameters = operationMetadata.getParameter();
        List featuretypes = capabilities.getFeatureTypeList().getFeatureType();

        List supportedByAllFeatureTypes= null;
        for (int i=0; i < featuretypes.size() ; i++){
            net.opengis.wfs.FeatureTypeType ft = (FeatureTypeType) featuretypes.get(i);
            if (ft.getOutputFormats()!=null){
                List value=ft.getOutputFormats().getFormat();
                if (supportedByAllFeatureTypes ==null){
                    supportedByAllFeatureTypes=value;
                }else{
                    List removeOutputFormats= new ArrayList();
                    for (Object o : supportedByAllFeatureTypes){
                        if (!value.contains(o)){
                            removeOutputFormats.add(o);
                        }
                    }
                    for (Object o : removeOutputFormats){
                       supportedByAllFeatureTypes.remove(o);
                    }
                    if (supportedByAllFeatureTypes.size() ==0){
                        break;
                    }
                }
            }
        }

        Set<String> outputFormats = new HashSet<String>();
        for (DomainType param : parameters) {
            String paramName = param.getName();
            if ("outputFormat".equals(paramName)) {
                List value = param.getValue();
                outputFormats.addAll(value);
            }
        }
        if (supportedByAllFeatureTypes!=null)
            outputFormats.addAll(supportedByAllFeatureTypes);
        return outputFormats;
    }

    public  WFS_1_1_0_Protocol(InputStream capabilitiesReader, HTTPClient http,
            Charset defaultEncoding, WFSStrategy strategy);

}