Changeset 7079
- Timestamp:
- 11/14/16 16:15:06 (8 years ago)
- 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 94 94 95 95 96 protected SRURecordData parse(XMLStreamReader reader, String ns) 96 @SuppressWarnings("deprecation") 97 protected SRURecordData parse(XMLStreamReader reader, String ns, 98 boolean fullLegacyCompatMode) 97 99 throws XMLStreamException, SRUClientException { 98 100 // Resource … … 118 120 119 121 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 } 122 129 } 123 130 -
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSClientBuilder.java
r6938 r7079 42 42 new ArrayList<SRUExtraResponseDataParser>(); 43 43 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; 48 49 49 50 … … 143 144 public ClarinFCSClientBuilder disableLegacySupport() { 144 145 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; 145 175 return this; 146 176 } … … 300 330 builder.addRecordDataParser(new ClarinFCSRecordDataParser(p)); 301 331 if (legacySupport) { 302 builder.addRecordDataParser(new LegacyClarinFCSRecordDataParser(p ));332 builder.addRecordDataParser(new LegacyClarinFCSRecordDataParser(p, fullLegacyCompatMode)); 303 333 } 304 334 if ((extraDataParsers != null) && !extraDataParsers.isEmpty()) { … … 323 353 } 324 354 if (legacySupport) { 325 result.add(new DataViewParserKWIC( ));355 result.add(new DataViewParserKWIC(fullLegacyCompatMode)); 326 356 } 327 357 return result; -
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSRecordData.java
r6938 r7079 32 32 public static final String RECORD_SCHEMA = 33 33 "http://clarin.eu/fcs/resource"; 34 /**35 * The legacy record schema for CLARIN-FCS records.36 *37 * @deprecated Only use to talk to legacy clients38 */39 @Deprecated40 public static final String LEGACY_RECORD_SCHEMA =41 "http://clarin.eu/fcs/1.0";42 34 private final Resource resource; 43 35 -
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSRecordDataParser.java
r6938 r7079 63 63 logger.debug("parsing CLARIN-FCS record"); 64 64 65 return parse(reader, ClarinFCSRecordData.RECORD_SCHEMA );65 return parse(reader, ClarinFCSRecordData.RECORD_SCHEMA, false); 66 66 } 67 67 -
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/DataViewParserKWIC.java
r6938 r7079 40 40 private static final String FCS_KWIC_NS = "http://clarin.eu/fcs/1.0/kwic"; 41 41 private static final String KWIC_LEGACY_TYPE = "kwic"; 42 private static final String KWIC_TYPE =43 "application/x-clarin-fcs-kwic+xml";44 42 private static final Logger logger = 45 43 LoggerFactory.getLogger(DataViewParserKWIC.class); 44 private final boolean fullLegacyCompatMode; 45 46 47 public DataViewParserKWIC(boolean fullLegacyCompatMode) { 48 this.fullLegacyCompatMode = fullLegacyCompatMode; 49 } 50 46 51 47 52 @Override 48 53 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); 50 56 } 57 51 58 52 59 @Override … … 54 61 return 1000; 55 62 } 63 56 64 57 65 @Override … … 61 69 logger.warn("type '" + KWIC_LEGACY_TYPE + "' is deprecated " + 62 70 "for a KWIC <DataView>, please use '" + 63 KWIC_TYPE + "' instead");71 LegacyDataViewKWIC.TYPE + "' instead"); 64 72 } 65 73 String left = null; … … 81 89 logger.debug("left='{}' keyword='{}', right='{}'", 82 90 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 } 93 104 } 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); 94 115 } 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);105 116 } 106 117 -
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/LegacyClarinFCSRecordDataParser.java
r6938 r7079 35 35 public class LegacyClarinFCSRecordDataParser extends 36 36 AbstractClarinFCSRecordDataParser { 37 private final boolean fullLegacyCompatMode; 37 38 38 39 39 40 /** 40 41 * Constructor. … … 45 46 * {@link DataViewParserGenericDOM} or 46 47 * {@link DataViewParserGenericString} instance. 48 * @param fullLegacyCompatMode 49 * enable full legacy CLARIN-FCS compat mode 47 50 * @throws NullPointerException 48 51 * if parsers is <code>null</code> … … 50 53 * if parsers is empty or contains duplicate entries 51 54 */ 52 public LegacyClarinFCSRecordDataParser(List<DataViewParser> parsers) { 55 public LegacyClarinFCSRecordDataParser(List<DataViewParser> parsers, 56 boolean fullLegacyCompatMode) { 53 57 super(parsers); 58 this.fullLegacyCompatMode = fullLegacyCompatMode; 54 59 } 55 60 … … 57 62 @Override 58 63 public String getRecordSchema() { 59 return ClarinFCSRecordData.LEGACY_RECORD_SCHEMA;64 return LegacyClarinFCSRecordData.RECORD_SCHEMA; 60 65 } 61 66 … … 64 69 public SRURecordData parse(XMLStreamReader reader) 65 70 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); 70 78 } 71 79
Note: See TracChangeset
for help on using the changeset viewer.