@@ -0,0 +1,2168 @@
+/*%0A * Copyright (c) 2014 Santiago M. Mola %3Csanti@mola.io%3E%0A *%0A *   Permission is hereby granted, free of charge, to any person obtaining a%0A *   copy of this software and associated documentation files (the %22Software%22),%0A *   to deal in the Software without restriction, including without limitation%0A *   the rights to use, copy, modify, merge, publish, distribute, sublicense,%0A *   and/or sell copies of the Software, and to permit persons to whom the%0A *   Software is furnished to do so, subject to the following conditions:%0A *%0A *   The above copyright notice and this permission notice shall be included in%0A *   all copies or substantial portions of the Software.%0A *%0A *   THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS%0A *   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING%0A *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER%0A *   DEALINGS IN THE SOFTWARE.%0A */%0A%0Apackage io.mola.galimatias.canonicalize;%0A%0Aimport io.mola.galimatias.GalimatiasParseException;%0Aimport io.mola.galimatias.URL;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.List;%0A%0Apublic class CombinedCanonicalizer implements URLCanonicalizer %7B%0A%0A    private final List%3CURLCanonicalizer%3E canonicalizers;%0A%0A    public CombinedCanonicalizer(final URLCanonicalizer ... canons) %7B%0A        canonicalizers = new ArrayList%3CURLCanonicalizer%3E();%0A        for (final URLCanonicalizer canon : canons) %7B%0A            if (canon instanceof CombinedCanonicalizer) %7B%0A                canonicalizers.addAll(((CombinedCanonicalizer) canon).canonicalizers);%0A            %7D else %7B%0A                canonicalizers.add(canon);%0A            %7D%0A        %7D%0A    %7D%0A%0A    @Override%0A    public URL canonicalize(final URL input) throws GalimatiasParseException %7B%0A        URL result = input;%0A        for (final URLCanonicalizer canon : canonicalizers) %7B%0A            result = canon.canonicalize(result);%0A        %7D%0A        return result;%0A    %7D%0A%0A%7D%0A

Add CombinedCanonicalizer.