1d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver/* 2d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * Copyright 2012, Google Inc. 3d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * All rights reserved. 4d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * 5d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * Redistribution and use in source and binary forms, with or without 6d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * modification, are permitted provided that the following conditions are 7d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * met: 8d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * 9d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * * Redistributions of source code must retain the above copyright 10d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * notice, this list of conditions and the following disclaimer. 11d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * * Redistributions in binary form must reproduce the above 12d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * copyright notice, this list of conditions and the following disclaimer 13d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * in the documentation and/or other materials provided with the 14d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * distribution. 15d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * * Neither the name of Google Inc. nor the names of its 16d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * contributors may be used to endorse or promote products derived from 17d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * this software without specific prior written permission. 18d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * 19d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver */ 31d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 32d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverpackage org.jf.dexlib2.immutable.util; 33d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 34d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverimport com.google.common.collect.ImmutableList; 35d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverimport org.jf.util.ImmutableConverter; 36d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 37d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverimport javax.annotation.Nonnull; 38d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverimport javax.annotation.Nullable; 39d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 40d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruverpublic final class CharSequenceConverter { 41d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver private CharSequenceConverter() { 42d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver } 43d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 44d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver @Nonnull 455fa302678ce3a8e08fa8d2e8dbc5424781e751a6Ben Gruver public static ImmutableList<String> immutableStringList(@Nullable Iterable<? extends CharSequence> iterable) { 465fa302678ce3a8e08fa8d2e8dbc5424781e751a6Ben Gruver return CONVERTER.toList(iterable); 47d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver } 48d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 49d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver private static final ImmutableConverter<String, CharSequence> CONVERTER = 50d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver new ImmutableConverter<String, CharSequence>() { 51d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver @Override 52d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver protected boolean isImmutable(@Nonnull CharSequence item) { 53d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver return item instanceof String; 54d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver } 55d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver 56d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver @Nonnull 57d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver @Override 58d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver protected String makeImmutable(@Nonnull CharSequence item) { 59d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver return item.toString(); 60d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver } 61d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver }; 62d4b08e1b21b144a2b300564734e272e4b85a5b56Ben Gruver} 63