accepted = available; } else { accepted = new SuffixSet(suffixes); if (accepted.retainAll(available)) { accepted = new SuffixSet(suffixes); accepted.removeAll(available); assert !accepted.isEmpty(); throw new IllegalArgumentException( "\"" + accepted + "\" (no archive driver installed for these extensions)");
for (i = 0; 0 < (i = path.indexOf('.', i) + 1) && i < l ;) { final String scheme = path.substring(i); if (suffixes.contains(scheme)) try { return new FsScheme(scheme); } catch (URISyntaxException noSchemeNoArchiveBadLuck) {
@SuppressWarnings("AccessingNonPublicFieldOfAnotherObject") private static SuffixSet extensions( final FsDriverProvider provider) { if (provider instanceof TArchiveDetector) return new SuffixSet(((TArchiveDetector) provider).suffixes); final Map<FsScheme, FsDriver> map = provider.get(); final SuffixSet set = new SuffixSet(); for (final Map.Entry<FsScheme, FsDriver> entry : map.entrySet()) if (entry.getValue().isFederated()) set.add(entry.getKey().toString()); return set; }
@Test public void testNullMapping() { for (TArchiveDetector delegate : new TArchiveDetector[] { NIL, ALL, }) { TArchiveDetector detector = new TArchiveDetector( delegate, "zip", null); // remove zip suffix assertFalse(new SuffixSet(detector.toString()).contains("zip")); detector = new TArchiveDetector( delegate, ".ZIP", null); // remove zip suffix assertFalse(new SuffixSet(detector.toString()).contains("zip")); } }
@Before public void setUp() { empty = new SuffixSet(""); sets = new SuffixSet[] { new SuffixSet("suffix1|suffix2"), new SuffixSet("suffix2|suffix1"), new SuffixSet(".suffix1|.suffix2"), new SuffixSet(".suffix2|.suffix1"), new SuffixSet("SUFFIX1|SUFFIX2"), new SuffixSet("SUFFIX2|SUFFIX1"), new SuffixSet(".SUFFIX1|.SUFFIX2"), new SuffixSet(".SUFFIX2|.SUFFIX1"), new SuffixSet("SuFfIx1|SuFfIx2"), new SuffixSet("SuFfIx2|SuFfIx1"), new SuffixSet(".sUfFiX1|.sUfFiX2"), new SuffixSet(".sUfFiX2|.sUfFiX1"), new SuffixSet("suffix1|.suffix2|suffix2|.suffix1"), new SuffixSet("suffix2|.suffix1|suffix1|.suffix2"), new SuffixSet("SUFFIX1|.SUFFIX2|SUFFIX2|.SUFFIX1"), new SuffixSet("SUFFIX2|.SUFFIX1|SUFFIX1|.SUFFIX2"), new SuffixSet("SuFfIx1|.sUfFiX2|SuFfIx2|.sUfFiX1"), new SuffixSet("SuFfIx2|.sUfFiX1|SuFfIx1|.sUfFiX2"), new SuffixSet("suffix1|.suffix1|SUFFIX1|.SUFFIX1|suffix2|.suffix2|SUFFIX2|.SUFFIX2"), new SuffixSet("suffix2|.suffix2|SUFFIX2|.SUFFIX2|suffix1|.suffix1|SUFFIX1|.SUFFIX1"), new SuffixSet("suffix1|.suffix1|SUFFIX1|.SUFFIX1|SuFfIx1|.sUfFiX1|suffix2|.suffix2|SUFFIX2|.SUFFIX2|SuFfIx2|.sUfFiX2"), new SuffixSet("suffix2|.suffix2|SUFFIX2|.SUFFIX2|SuFfIx2|.sUfFiX2|suffix1|.suffix1|SUFFIX1|.SUFFIX1|SuFfIx1|.sUfFiX1"), new SuffixSet("suffix1||.suffix1||SUFFIX1||.SUFFIX1||SuFfIx1||.sUfFiX1||suffix2||.suffix2||SUFFIX2||.SUFFIX2||SuFfIx2||.sUfFiX2"), new SuffixSet("suffix2||.suffix2||SUFFIX2||.SUFFIX2||SuFfIx2||.sUfFiX2||suffix1||.suffix1||SUFFIX1||.SUFFIX1||SuFfIx1||.sUfFiX1"), }; }
/** * Returns the <i>canonical suffix list</i> for all federated file system * types recognized by this {@code TArchiveDetector}. * * @return Either {@code ""} to indicate an empty set or * a string of the form {@code "suffix[|suffix]*"}, * where {@code suffix} is a combination of lower case * letters which does <em>not</em> start with a dot. * The string never contains empty or duplicated suffixes and the * suffixes are sorted in natural order. * @see #TArchiveDetector(String) * @see SuffixSet Syntax constraints for suffix lists. */ @Override public String toString() { return suffixes.toString(); } }
@Test public void testRetainAll() { for (int i = 0; i < sets.length; i++) for (int j = 0; j < sets.length ; j++) assertFalse(sets[i].retainAll(sets[j])); }
@Test public void testGet() { for (String scheme : new SuffixSet(DRIVER_LIST)) assertThat(instance.get().get(FsScheme.create(scheme)), notNullValue()); }
@Test public void testToString() { for (final SuffixSet set : sets) { assertTrue("suffix1|suffix2".equals(set.toString())); } }
private static Map<String, SuffixSet> compact( final Map<FsScheme, FsDriver> input) { final Map<String, SuffixSet> output = new TreeMap<String, SuffixSet>(); for (final Entry<FsScheme, FsDriver> entry : input.entrySet()) { final String scheme = entry.getKey().toString(); final String clazz = entry.getValue().getClass().getName(); SuffixSet suffixes = output.get(clazz); if (null == suffixes) { suffixes = new SuffixSet(); output.put(clazz, suffixes); } suffixes.add(scheme); } return Collections.unmodifiableMap(output); } }