Changeset 7079


Ignore:
Timestamp:
11/14/16 16:15:06 (8 years ago)
Author:
Oliver Schonefeld
Message:
  • more complete legacy compat mode (to be used in FCS conformance tester)


Location:
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/AbstractClarinFCSRecordDataParser.java

    r6938 r7079  
    9494
    9595
    96     protected SRURecordData parse(XMLStreamReader reader, String ns)
     96    @SuppressWarnings("deprecation")
     97    protected SRURecordData parse(XMLStreamReader reader, String ns,
     98            boolean fullLegacyCompatMode)
    9799            throws XMLStreamException, SRUClientException {
    98100        // Resource
     
    118120
    119121        XmlStreamReaderUtils.readEnd(reader, ns, "Resource", true);
    120 
    121         return new ClarinFCSRecordData(pid, ref, dataviews, resourceFragments);
     122        if (fullLegacyCompatMode) {
     123            return new LegacyClarinFCSRecordData(pid, ref, dataviews,
     124                    resourceFragments);
     125        } else {
     126            return new ClarinFCSRecordData(pid, ref, dataviews,
     127                    resourceFragments);
     128        }
    122129    }
    123130
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSClientBuilder.java

    r6938 r7079  
    4242            new ArrayList<SRUExtraResponseDataParser>();
    4343    private SRUVersion defaultVersion = DEFAULT_SRU_VERSION;
    44     private boolean unknownAsDom      = DEFAULT_UNKNOWN_AS_DOM;
    45     private boolean legacySupport     = false;
    46     private int connectTimeout        = SRUClientConfig.DEFAULT_CONNECT_TIMEOUT;
    47     private int socketTimeout         = SRUClientConfig.DEFAULT_SOCKET_TIMEOUT;
     44    private boolean unknownAsDom = DEFAULT_UNKNOWN_AS_DOM;
     45    private boolean legacySupport = false;
     46    private boolean fullLegacyCompatMode = false;
     47    private int connectTimeout = SRUClientConfig.DEFAULT_CONNECT_TIMEOUT;
     48    private int socketTimeout = SRUClientConfig.DEFAULT_SOCKET_TIMEOUT;
    4849
    4950
     
    143144    public ClarinFCSClientBuilder disableLegacySupport() {
    144145        legacySupport = false;
     146        return this;
     147    }
     148
     149
     150    /**
     151     * Configure client to support legacy CLARIN-FCS endpoints in full
     152     * compatibility mode. Automatically enables support for legacy CLARIN-FCS.
     153     * <br>
     154     * NB: This feature should not be used in production!
     155     *
     156     * @return this {@link ClarinFCSClientBuilder} instance
     157     */
     158    public ClarinFCSClientBuilder enableFullLegacyCompatMode() {
     159        enableLegacySupport();
     160        fullLegacyCompatMode = true;
     161        return this;
     162    }
     163
     164
     165    /**
     166     * Configure client to disable support for legacy CLARIN_FCS in full
     167     * compatibility mode. <br>
     168     * NB: Support for legacy CLARIN-FCS will <em>not</em> be disabled
     169     * automatically!
     170     *
     171     * @return this {@link ClarinFCSClientBuilder} instance
     172     */
     173    public ClarinFCSClientBuilder disableFullLegacyCompatMode() {
     174        fullLegacyCompatMode = false;
    145175        return this;
    146176    }
     
    300330        builder.addRecordDataParser(new ClarinFCSRecordDataParser(p));
    301331        if (legacySupport) {
    302             builder.addRecordDataParser(new LegacyClarinFCSRecordDataParser(p));
     332            builder.addRecordDataParser(new LegacyClarinFCSRecordDataParser(p, fullLegacyCompatMode));
    303333        }
    304334        if ((extraDataParsers != null) && !extraDataParsers.isEmpty()) {
     
    323353        }
    324354        if (legacySupport) {
    325             result.add(new DataViewParserKWIC());
     355            result.add(new DataViewParserKWIC(fullLegacyCompatMode));
    326356        }
    327357        return result;
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSRecordData.java

    r6938 r7079  
    3232    public static final String RECORD_SCHEMA =
    3333            "http://clarin.eu/fcs/resource";
    34     /**
    35      * The legacy record schema for CLARIN-FCS records.
    36      *
    37      * @deprecated Only use to talk to legacy clients
    38      */
    39     @Deprecated
    40     public static final String LEGACY_RECORD_SCHEMA =
    41             "http://clarin.eu/fcs/1.0";
    4234    private final Resource resource;
    4335
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSRecordDataParser.java

    r6938 r7079  
    6363        logger.debug("parsing CLARIN-FCS record");
    6464
    65         return parse(reader, ClarinFCSRecordData.RECORD_SCHEMA);
     65        return parse(reader, ClarinFCSRecordData.RECORD_SCHEMA, false);
    6666    }
    6767
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/DataViewParserKWIC.java

    r6938 r7079  
    4040    private static final String FCS_KWIC_NS = "http://clarin.eu/fcs/1.0/kwic";
    4141    private static final String KWIC_LEGACY_TYPE = "kwic";
    42     private static final String KWIC_TYPE =
    43             "application/x-clarin-fcs-kwic+xml";
    4442    private static final Logger logger =
    4543            LoggerFactory.getLogger(DataViewParserKWIC.class);
     44    private final boolean fullLegacyCompatMode;
     45
     46
     47    public DataViewParserKWIC(boolean fullLegacyCompatMode) {
     48        this.fullLegacyCompatMode = fullLegacyCompatMode;
     49    }
     50
    4651
    4752    @Override
    4853    public boolean acceptType(String type) {
    49         return KWIC_TYPE.equals(type) || KWIC_LEGACY_TYPE.equals(type);
     54        return LegacyDataViewKWIC.TYPE.equals(type) ||
     55                KWIC_LEGACY_TYPE.equals(type);
    5056    }
     57
    5158
    5259    @Override
     
    5461        return 1000;
    5562    }
     63
    5664
    5765    @Override
     
    6169            logger.warn("type '" + KWIC_LEGACY_TYPE + "' is deprecated " +
    6270                    "for a KWIC <DataView>, please use '" +
    63                     KWIC_TYPE + "' instead");
     71                    LegacyDataViewKWIC.TYPE + "' instead");
    6472        }
    6573        String left = null;
     
    8189        logger.debug("left='{}' keyword='{}', right='{}'",
    8290                left, keyword, right);
    83 
    84         logger.warn("Upgraded deprecated KWIC dataview to HITS dataview. " +
    85                 "Please upgrade to the new CLARIN-FCS specification " +
    86                 "as soon as possible.");
    87         final int[] offsets    = new int[3];
    88         final StringBuilder sb = new StringBuilder();
    89         if (left != null) {
    90             sb.append(left);
    91             if (!Character.isWhitespace(sb.charAt(sb.length() - 1))) {
    92                 sb.append(" ");
     91        if (fullLegacyCompatMode) {
     92            return new LegacyDataViewKWIC(pid, ref, left, keyword, right);
     93        } else {
     94            logger.warn("Upgraded deprecated KWIC dataview to HITS dataview. " +
     95                    "Please upgrade to the new CLARIN-FCS specification " +
     96                    "as soon as possible.");
     97            final int[] offsets = new int[3];
     98            final StringBuilder sb = new StringBuilder();
     99            if (left != null) {
     100                sb.append(left);
     101                if (!Character.isWhitespace(sb.charAt(sb.length() - 1))) {
     102                    sb.append(" ");
     103                }
    93104            }
     105            offsets[0] = sb.length();
     106            sb.append(keyword);
     107            offsets[1] = sb.length();
     108            if (right != null) {
     109                if (!Character.isWhitespace(sb.charAt(sb.length() - 1))) {
     110                    sb.append(" ");
     111                }
     112                sb.append(right);
     113            }
     114            return new DataViewHits(pid, ref, sb.toString(), offsets, 3);
    94115        }
    95         offsets[0] = sb.length();
    96         sb.append(keyword);
    97         offsets[1] = sb.length();
    98         if (right != null) {
    99             if (!Character.isWhitespace(sb.charAt(sb.length() - 1))) {
    100                 sb.append(" ");
    101             }
    102             sb.append(right);
    103         }
    104         return new DataViewHits(pid, ref, sb.toString(), offsets, 3);
    105116    }
    106117
  • FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/LegacyClarinFCSRecordDataParser.java

    r6938 r7079  
    3535public class LegacyClarinFCSRecordDataParser extends
    3636        AbstractClarinFCSRecordDataParser {
     37    private final boolean fullLegacyCompatMode;
    3738
    38 
     39   
    3940    /**
    4041     * Constructor.
     
    4546     *            {@link DataViewParserGenericDOM} or
    4647     *            {@link DataViewParserGenericString} instance.
     48     * @param fullLegacyCompatMode
     49     *            enable full legacy CLARIN-FCS compat mode
    4750     * @throws NullPointerException
    4851     *             if parsers is <code>null</code>
     
    5053     *             if parsers is empty or contains duplicate entries
    5154     */
    52     public LegacyClarinFCSRecordDataParser(List<DataViewParser> parsers) {
     55    public LegacyClarinFCSRecordDataParser(List<DataViewParser> parsers,
     56            boolean fullLegacyCompatMode) {
    5357        super(parsers);
     58        this.fullLegacyCompatMode = fullLegacyCompatMode;
    5459    }
    5560
     
    5762    @Override
    5863    public String getRecordSchema() {
    59         return ClarinFCSRecordData.LEGACY_RECORD_SCHEMA;
     64        return LegacyClarinFCSRecordData.RECORD_SCHEMA;
    6065    }
    6166
     
    6469    public SRURecordData parse(XMLStreamReader reader)
    6570            throws XMLStreamException, SRUClientException {
    66         logger.warn("The endpoint supplied data in the deprecated CLARIN-FCS " +
    67             "record data format. Please upgrade to the new CLARIN-FCS " +
    68                 "specification as soon as possible.");
    69         return parse(reader, ClarinFCSRecordData.LEGACY_RECORD_SCHEMA);
     71        if (!fullLegacyCompatMode) {
     72            logger.warn("The endpoint supplied data in the deprecated " +
     73                    "CLARIN-FCS record data format. Please upgrade to the " +
     74                    "new CLARIN-FCS specification as soon as possible.");
     75        }
     76        return parse(reader, LegacyClarinFCSRecordData.RECORD_SCHEMA,
     77                fullLegacyCompatMode);
    7078    }
    7179
Note: See TracChangeset for help on using the changeset viewer.