1cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette/* 2cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * Copyright (C) 2014 The Android Open Source Project 3cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * 4cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * Licensed under the Apache License, Version 2.0 (the "License"); 5cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * you may not use this file except in compliance with the License. 6cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * You may obtain a copy of the License at 7cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * 8cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * http://www.apache.org/licenses/LICENSE-2.0 9cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * 10cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * Unless required by applicable law or agreed to in writing, software 11cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * distributed under the License is distributed on an "AS IS" BASIS, 12cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * See the License for the specific language governing permissions and 14cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * limitations under the License. 15cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette */ 16cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 17cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverettepackage android.support.doclava; 18cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 196da15639e2092e1999cf699fedd0dd5167091d77Alan Viveretteimport org.gradle.external.javadoc.internal.AbstractJavadocOptionFileOption; 20cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viveretteimport org.gradle.external.javadoc.internal.JavadocOptionFileWriterContext; 21cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 22cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viveretteimport java.io.IOException; 236da15639e2092e1999cf699fedd0dd5167091d77Alan Viveretteimport java.util.ArrayList; 24cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viveretteimport java.util.Iterator; 25cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 26cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette/** 27cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette * This class is used to hold complex argument(s) to doclava 28cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette */ 296da15639e2092e1999cf699fedd0dd5167091d77Alan Viverettepublic class DoclavaJavadocOptionFileOption extends 306da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette AbstractJavadocOptionFileOption<Iterable<String>> { 31cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 32cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette public DoclavaJavadocOptionFileOption(String option) { 336da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette super(option, null); 34cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 35cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 366da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette public DoclavaJavadocOptionFileOption(String option, Iterable<String> value) { 376da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette super(option, value); 38cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 39cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette 406da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette @Override 41cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette public void write(JavadocOptionFileWriterContext writerContext) throws IOException { 42cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette writerContext.writeOptionHeader(getOption()); 436da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette 446da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette final Iterable<String> args = getValue(); 45cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette if (args != null) { 466da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette final Iterator<String> iter = args.iterator(); 47cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette while (true) { 48cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette writerContext.writeValue(iter.next()); 49cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette if (!iter.hasNext()) { 50cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette break; 51cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 52cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette writerContext.write(" "); 53cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 54cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 556da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette 56cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette writerContext.newLine(); 57cc5197e1c75195409a5c3289df31b3025d3fb364Alan Viverette } 586da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette 596da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette /** 606da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette * @return a deep copy of the option 616da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette */ 626da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette public DoclavaJavadocOptionFileOption duplicate() { 636da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette final Iterable<String> value = getValue(); 640ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas final ArrayList<String> valueCopy; 650ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas if (value != null) { 660ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas valueCopy = new ArrayList<>(); 670ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas for (String item : value) { 680ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas valueCopy.add(item); 690ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas } 700ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas } else { 710ac624b67e5d120912c79453a9ab7b53afd271e9Aurimas Liutikas valueCopy = null; 726da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette } 736da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette return new DoclavaJavadocOptionFileOption(getOption(), valueCopy); 746da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette } 756da15639e2092e1999cf699fedd0dd5167091d77Alan Viverette} 76