Changeset 7094


Ignore:
Timestamp:
11/17/16 22:26:04 (8 years ago)
Author:
Oliver Schonefeld
Message:
  • bail, if requested version is not obeyed by server
File:
1 edited

Legend:

Unmodified
Added
Removed
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUSimpleClient.java

    r7074 r7094  
    14581458                    namespaceURI, requestedVersion);
    14591459
    1460             if (NAMESPACES_LEGACY_LOC.foo(namespaceURI)) {
    1461                 return NAMESPACES_LEGACY_LOC;
    1462             } else if (NAMESPACES_OASIS.foo(namespaceURI)) {
    1463                 return NAMESPACES_OASIS;
     1460            SRUNamespaces namespace;
     1461            if (NAMESPACES_LEGACY_LOC.matchNamespace(namespaceURI)) {
     1462                namespace = NAMESPACES_LEGACY_LOC;
     1463            } else if (NAMESPACES_OASIS.matchNamespace(namespaceURI)) {
     1464                namespace = NAMESPACES_OASIS;
    14641465            } else {
    14651466                throw new SRUClientException(
    14661467                        "invalid namespace '" + reader.getNamespaceURI() + "'");
    14671468            }
     1469
     1470            if (requestedVersion != null) {
     1471                if (!namespace.compatibleWithVersion(requestedVersion)) {
     1472                    throw new SRUClientException("Server did not honour " +
     1473                            "requested SRU version and responded with " +
     1474                            "different version (requested version was " +
     1475                            requestedVersion + ")");
     1476                }
     1477            }
     1478            return namespace;
    14681479        } catch (XMLStreamException e) {
    14691480            throw new SRUClientException("error detecting namespace", e);
     
    14731484
    14741485    private interface SRUNamespaces {
     1486        public boolean compatibleWithVersion(SRUVersion version);
     1487
    14751488        public String sruNS();
    14761489
     
    14791492        public String diagnosticNS();
    14801493
    1481         public boolean foo(String namespaceURI);
     1494        public boolean matchNamespace(String namespaceURI);
    14821495
    14831496    } // interface SRUNamespace
     
    14921505
    14931506        @Override
     1507        public boolean compatibleWithVersion(SRUVersion version) {
     1508            return SRUVersion.VERSION_1_1.equals(version) ||
     1509                    SRUVersion.VERSION_1_2.equals(version);
     1510        }
     1511
     1512
     1513        @Override
    14941514        public String sruNS() {
    14951515            return SRU_NS;
     
    15101530
    15111531        @Override
    1512         public boolean foo(String namespaceURI) {
     1532        public boolean matchNamespace(String namespaceURI) {
    15131533            return SRU_NS.equals(namespaceURI);
    15141534        }
     
    15261546
    15271547        @Override
     1548        public boolean compatibleWithVersion(SRUVersion version) {
     1549            return SRUVersion.VERSION_2_0.equals(version);
     1550        }
     1551
     1552
     1553        @Override
    15281554        public String sruNS() {
    15291555            return SRU_NS;
     
    15451571
    15461572        @Override
    1547         public boolean foo(String namespaceURI) {
     1573        public boolean matchNamespace(String namespaceURI) {
    15481574            return SRU_NS.equals(namespaceURI) || SRU_SCAN_NS.equals(namespaceURI);
    15491575        }
Note: See TracChangeset for help on using the changeset viewer.