Repository: olingo-odata4 Updated Branches: refs/heads/master c65ef5e9e -> 456765b70
[OLINGO-663] Repair repository part 1 Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/456765b7 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/456765b7 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/456765b7 Branch: refs/heads/master Commit: 456765b70034280cdd503e419d9ae0c61987641d Parents: c65ef5e Author: Christian Amend <[email protected]> Authored: Tue Jun 2 16:11:47 2015 +0200 Committer: Christian Amend <[email protected]> Committed: Tue Jun 2 16:11:47 2015 +0200 ---------------------------------------------------------------------- .../olingo/server/api/ETagInformation.java | 74 ----------- .../olingo/server/api/EtagInformation.java | 74 ----------- .../apache/olingo/server/core/ETagParser.java | 86 ------------ .../apache/olingo/server/core/EtagParser.java | 86 ------------ .../olingo/server/core/ETagParserTest.java | 131 ------------------- .../olingo/server/core/EtagParserTest.java | 131 ------------------- 6 files changed, 582 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-api/src/main/java/org/apache/olingo/server/api/ETagInformation.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ETagInformation.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ETagInformation.java deleted file mode 100644 index 2a628c4..0000000 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ETagInformation.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.api; - -import java.util.Collection; - -/** - * Information about the values of an ETag-relevant HTTP header. - */ -public class ETagInformation { - private final boolean all; - private final Collection<String> eTags; - - public ETagInformation(final boolean all, final Collection<String> eTags) { - this.all = all; - this.eTags = eTags; - } - - /** - * Gets the information whether the values contain "*". - */ - public boolean isAll() { - return all; - } - - /** - * Gets the collection of ETag values found. - * It is empty if {@link #isAll()} returns <code>true</code>. - */ - public Collection<String> getETags() { - return eTags; - } - - /** - * <p>Checks whether a given ETag value is matched by this ETag information, - * using weak comparison as described in - * <a href="https://www.ietf.org/rfc/rfc7232.txt">RFC 7232</a>, section 2.3.2.</p> - * <p>If the given value is <code>null</code>, or if this ETag information - * does not contain anything, the result is <code>false</code>.</p> - * @param eTag the ETag value to match - * @return a boolean match result - */ - public boolean isMatchedBy(final String eTag) { - if (eTag == null) { - return false; - } else if (all) { - return true; - } else { - for (final String candidate : eTags) { - if ((eTag.startsWith("W/") ? eTag.substring(2) : eTag) - .equals(candidate.startsWith("W/") ? candidate.substring(2) : candidate)) { - return true; - } - } - return false; - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-api/src/main/java/org/apache/olingo/server/api/EtagInformation.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/EtagInformation.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/EtagInformation.java deleted file mode 100644 index 2a628c4..0000000 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/EtagInformation.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.api; - -import java.util.Collection; - -/** - * Information about the values of an ETag-relevant HTTP header. - */ -public class ETagInformation { - private final boolean all; - private final Collection<String> eTags; - - public ETagInformation(final boolean all, final Collection<String> eTags) { - this.all = all; - this.eTags = eTags; - } - - /** - * Gets the information whether the values contain "*". - */ - public boolean isAll() { - return all; - } - - /** - * Gets the collection of ETag values found. - * It is empty if {@link #isAll()} returns <code>true</code>. - */ - public Collection<String> getETags() { - return eTags; - } - - /** - * <p>Checks whether a given ETag value is matched by this ETag information, - * using weak comparison as described in - * <a href="https://www.ietf.org/rfc/rfc7232.txt">RFC 7232</a>, section 2.3.2.</p> - * <p>If the given value is <code>null</code>, or if this ETag information - * does not contain anything, the result is <code>false</code>.</p> - * @param eTag the ETag value to match - * @return a boolean match result - */ - public boolean isMatchedBy(final String eTag) { - if (eTag == null) { - return false; - } else if (all) { - return true; - } else { - for (final String candidate : eTags) { - if ((eTag.startsWith("W/") ? eTag.substring(2) : eTag) - .equals(candidate.startsWith("W/") ? candidate.substring(2) : candidate)) { - return true; - } - } - return false; - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-core/src/main/java/org/apache/olingo/server/core/ETagParser.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ETagParser.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ETagParser.java deleted file mode 100644 index 268c6c6..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ETagParser.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * <p>Parses the values of HTTP header fields that contain a list of entity tags or a - * single star character, i.e., <code>If-Match</code> and <code>If-None-Match</code>.</p> - * <p>See <a href="https://www.ietf.org/rfc/rfc7232.txt">RFC 7232</a> for details; - * there the following grammar is defined:</p> - * <pre> - * If-Match = "*" / 1#entity-tag - * If-None-Match = "*" / 1#entity-tag - * entity-tag = [ weak ] opaque-tag - * weak = %x57.2F ; "W/", case-sensitive - * opaque-tag = DQUOTE *etagc DQUOTE - * etagc = %x21 / %x23-7E / %x80-FF - * </pre> - * <p>Values with illegal syntax do not contribute to the result but no exception is thrown.</p> - */ -public class ETagParser { - - private static final Pattern ETAG = Pattern.compile("\\s*(,\\s*)+|((?:W/)?\"[!#-~\\x80-\\xFF]*\")"); - - protected static Collection<String> parse(final Collection<String> values) { - if (values == null) { - return Collections.<String> emptySet(); - } - - Set<String> result = new HashSet<String>(); - for (final String value : values) { - final Collection<String> part = parse(value); - if (part.size() == 1 && part.iterator().next().equals("*")) { - return part; - } else { - result.addAll(part); - } - } - return result; - } - - private static Collection<String> parse(final String value) { - if (value.trim().equals("*")) { - return Collections.singleton("*"); - } else { - Set<String> result = new HashSet<String>(); - String separator = ""; - int start = 0; - Matcher matcher = ETAG.matcher(value.trim()); - while (matcher.find() && matcher.start() == start) { - start = matcher.end(); - if (matcher.group(1) != null) { - separator = matcher.group(1); - } else if (separator != null) { - result.add(matcher.group(2)); - separator = null; - } else { - return Collections.<String> emptySet(); - } - } - return matcher.hitEnd() ? result : Collections.<String> emptySet(); - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-core/src/main/java/org/apache/olingo/server/core/EtagParser.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/EtagParser.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/EtagParser.java deleted file mode 100644 index 268c6c6..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/EtagParser.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * <p>Parses the values of HTTP header fields that contain a list of entity tags or a - * single star character, i.e., <code>If-Match</code> and <code>If-None-Match</code>.</p> - * <p>See <a href="https://www.ietf.org/rfc/rfc7232.txt">RFC 7232</a> for details; - * there the following grammar is defined:</p> - * <pre> - * If-Match = "*" / 1#entity-tag - * If-None-Match = "*" / 1#entity-tag - * entity-tag = [ weak ] opaque-tag - * weak = %x57.2F ; "W/", case-sensitive - * opaque-tag = DQUOTE *etagc DQUOTE - * etagc = %x21 / %x23-7E / %x80-FF - * </pre> - * <p>Values with illegal syntax do not contribute to the result but no exception is thrown.</p> - */ -public class ETagParser { - - private static final Pattern ETAG = Pattern.compile("\\s*(,\\s*)+|((?:W/)?\"[!#-~\\x80-\\xFF]*\")"); - - protected static Collection<String> parse(final Collection<String> values) { - if (values == null) { - return Collections.<String> emptySet(); - } - - Set<String> result = new HashSet<String>(); - for (final String value : values) { - final Collection<String> part = parse(value); - if (part.size() == 1 && part.iterator().next().equals("*")) { - return part; - } else { - result.addAll(part); - } - } - return result; - } - - private static Collection<String> parse(final String value) { - if (value.trim().equals("*")) { - return Collections.singleton("*"); - } else { - Set<String> result = new HashSet<String>(); - String separator = ""; - int start = 0; - Matcher matcher = ETAG.matcher(value.trim()); - while (matcher.find() && matcher.start() == start) { - start = matcher.end(); - if (matcher.group(1) != null) { - separator = matcher.group(1); - } else if (separator != null) { - result.add(matcher.group(2)); - separator = null; - } else { - return Collections.<String> emptySet(); - } - } - return matcher.hitEnd() ? result : Collections.<String> emptySet(); - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-core/src/test/java/org/apache/olingo/server/core/ETagParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/ETagParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/ETagParserTest.java deleted file mode 100644 index a729219..0000000 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/ETagParserTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.hasItems; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.Collections; - -import org.apache.olingo.server.api.ETagInformation; -import org.apache.olingo.server.api.OData; -import org.junit.Test; - -public class ETagParserTest { - - private static final OData odata = OData.newInstance(); - - @Test - public void empty() { - final ETagInformation eTagInformation = odata.createETagInformation(null); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void loneStar() { - final ETagInformation eTagInformation = odata.createETagInformation(Collections.singleton("*")); - assertTrue(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void starWins() { - final ETagInformation eTagInformation = odata.createETagInformation(Arrays.asList("\"ETag\"", "*")); - assertTrue(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void starAsEtagAndEmptyEtag() { - final ETagInformation eTagInformation = odata.createETagInformation( - Collections.singleton("\"*\", \"\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems("\"*\"", "\"\"")); - } - - @Test - public void severalEtags() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\"", "\"ETag2\",, , ,W/\"ETag3\", ,")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(3)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag2\"", "W/\"ETag3\"")); - } - - @Test - public void duplicateEtagValues() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\"", "\"ETag2\", W/\"ETag1\", \"ETag1\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(3)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag2\"", "W/\"ETag1\"")); - } - - @Test - public void specialCharacters() { - final ETagInformation eTagInformation = odata.createETagInformation( - Collections.singleton("\"!#$%&'()*+,-./:;<=>?@[]^_`{|}~¡\u00FF\", \"ETag2\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems( - "\"!#$%&'()*+,-./:;<=>?@[]^_`{|}~¡\u00FF\"", "\"ETag2\"")); - } - - @Test - public void wrongFormat() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\", ETag2", "w/\"ETag3\"", "W//\"ETag4\"", "W/ETag5", - "\"\"ETag6\"\"", " \"ETag7\"\"ETag7\" ", "\"ETag8\" \"ETag8\"", - "\"ETag 9\"", "\"ETag10\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag10\"")); - } - - @Test - public void match() { - assertFalse(odata.createETagInformation(Collections.<String> emptySet()).isMatchedBy("\"ETag\"")); - assertFalse(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy(null)); - assertTrue(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("*")).isMatchedBy("\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("W/\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("W/\"ETag\"")).isMatchedBy("\"ETag\"")); - assertFalse(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("W/\"ETag2\"")); - assertFalse(odata.createETagInformation(Collections.singleton("W/\"ETag\"")).isMatchedBy("\"ETag2\"")); - assertTrue(odata.createETagInformation(Arrays.asList("\"ETag1\",\"ETag2\"", "\"ETag3\",\"ETag4\"")) - .isMatchedBy("\"ETag4\"")); - assertFalse(odata.createETagInformation(Arrays.asList("\"ETag1\",\"ETag2\"", "\"ETag3\",\"ETag4\"")) - .isMatchedBy("\"ETag5\"")); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/456765b7/lib/server-core/src/test/java/org/apache/olingo/server/core/EtagParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/EtagParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/EtagParserTest.java deleted file mode 100644 index a729219..0000000 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/EtagParserTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.hasItems; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.Collections; - -import org.apache.olingo.server.api.ETagInformation; -import org.apache.olingo.server.api.OData; -import org.junit.Test; - -public class ETagParserTest { - - private static final OData odata = OData.newInstance(); - - @Test - public void empty() { - final ETagInformation eTagInformation = odata.createETagInformation(null); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void loneStar() { - final ETagInformation eTagInformation = odata.createETagInformation(Collections.singleton("*")); - assertTrue(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void starWins() { - final ETagInformation eTagInformation = odata.createETagInformation(Arrays.asList("\"ETag\"", "*")); - assertTrue(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertTrue(eTagInformation.getETags().isEmpty()); - } - - @Test - public void starAsEtagAndEmptyEtag() { - final ETagInformation eTagInformation = odata.createETagInformation( - Collections.singleton("\"*\", \"\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems("\"*\"", "\"\"")); - } - - @Test - public void severalEtags() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\"", "\"ETag2\",, , ,W/\"ETag3\", ,")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(3)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag2\"", "W/\"ETag3\"")); - } - - @Test - public void duplicateEtagValues() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\"", "\"ETag2\", W/\"ETag1\", \"ETag1\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(3)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag2\"", "W/\"ETag1\"")); - } - - @Test - public void specialCharacters() { - final ETagInformation eTagInformation = odata.createETagInformation( - Collections.singleton("\"!#$%&'()*+,-./:;<=>?@[]^_`{|}~¡\u00FF\", \"ETag2\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems( - "\"!#$%&'()*+,-./:;<=>?@[]^_`{|}~¡\u00FF\"", "\"ETag2\"")); - } - - @Test - public void wrongFormat() { - final ETagInformation eTagInformation = odata.createETagInformation( - Arrays.asList("\"ETag1\", ETag2", "w/\"ETag3\"", "W//\"ETag4\"", "W/ETag5", - "\"\"ETag6\"\"", " \"ETag7\"\"ETag7\" ", "\"ETag8\" \"ETag8\"", - "\"ETag 9\"", "\"ETag10\"")); - assertFalse(eTagInformation.isAll()); - assertNotNull(eTagInformation.getETags()); - assertThat(eTagInformation.getETags().size(), equalTo(2)); - assertThat(eTagInformation.getETags(), hasItems("\"ETag1\"", "\"ETag10\"")); - } - - @Test - public void match() { - assertFalse(odata.createETagInformation(Collections.<String> emptySet()).isMatchedBy("\"ETag\"")); - assertFalse(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy(null)); - assertTrue(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("*")).isMatchedBy("\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("W/\"ETag\"")); - assertTrue(odata.createETagInformation(Collections.singleton("W/\"ETag\"")).isMatchedBy("\"ETag\"")); - assertFalse(odata.createETagInformation(Collections.singleton("\"ETag\"")).isMatchedBy("W/\"ETag2\"")); - assertFalse(odata.createETagInformation(Collections.singleton("W/\"ETag\"")).isMatchedBy("\"ETag2\"")); - assertTrue(odata.createETagInformation(Arrays.asList("\"ETag1\",\"ETag2\"", "\"ETag3\",\"ETag4\"")) - .isMatchedBy("\"ETag4\"")); - assertFalse(odata.createETagInformation(Arrays.asList("\"ETag1\",\"ETag2\"", "\"ETag3\",\"ETag4\"")) - .isMatchedBy("\"ETag5\"")); - } -}
