001/* 002 * Copyright 2010-2013 JetBrains s.r.o. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package org.jetbrains.jet.renderer; 018 019import org.jetbrains.annotations.NotNull; 020import org.jetbrains.jet.lang.resolve.name.FqName; 021 022import java.util.Collection; 023import java.util.Collections; 024 025public class DescriptorRendererBuilder { 026 private boolean shortNames = false; 027 private boolean withDefinedIn = true; 028 private boolean modifiers = true; 029 private boolean startFromName = false; 030 private boolean debugMode = false; 031 private boolean classWithPrimaryConstructor = false; 032 private boolean verbose = false; 033 private boolean unitReturnType = true; 034 private boolean normalizedVisibilities = false; 035 private boolean showInternalKeyword = true; 036 @NotNull 037 private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; 038 @NotNull 039 private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler(); 040 @NotNull 041 private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN; 042 @NotNull 043 private Collection<FqName> excludedAnnotationClasses = Collections.emptyList(); 044 045 public DescriptorRendererBuilder() { 046 } 047 048 public DescriptorRendererBuilder setShortNames(boolean shortNames) { 049 this.shortNames = shortNames; 050 return this; 051 } 052 053 public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) { 054 this.withDefinedIn = withDefinedIn; 055 return this; 056 } 057 058 public DescriptorRendererBuilder setModifiers(boolean modifiers) { 059 this.modifiers = modifiers; 060 return this; 061 } 062 063 public DescriptorRendererBuilder setStartFromName(boolean startFromName) { 064 this.startFromName = startFromName; 065 return this; 066 } 067 068 public DescriptorRendererBuilder setDebugMode(boolean debugMode) { 069 this.debugMode = debugMode; 070 return this; 071 } 072 073 public DescriptorRendererBuilder setClassWithPrimaryConstructor(boolean classWithPrimaryConstructor) { 074 this.classWithPrimaryConstructor = classWithPrimaryConstructor; 075 return this; 076 } 077 078 public DescriptorRendererBuilder setVerbose(boolean verbose) { 079 this.verbose = verbose; 080 return this; 081 } 082 083 public DescriptorRendererBuilder setUnitReturnType(boolean unitReturnType) { 084 this.unitReturnType = unitReturnType; 085 return this; 086 } 087 088 public DescriptorRendererBuilder setNormalizedVisibilities(boolean normalizedVisibilities) { 089 this.normalizedVisibilities = normalizedVisibilities; 090 return this; 091 } 092 093 public DescriptorRendererBuilder setShowInternalKeyword(boolean showInternalKeyword) { 094 this.showInternalKeyword = showInternalKeyword; 095 return this; 096 } 097 098 public DescriptorRendererBuilder setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy) { 099 this.overrideRenderingPolicy = overrideRenderingPolicy; 100 return this; 101 } 102 103 public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) { 104 this.valueParametersHandler = valueParametersHandler; 105 return this; 106 } 107 108 public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) { 109 this.textFormat = textFormat; 110 return this; 111 } 112 113 public DescriptorRendererBuilder setExcludedAnnotationClasses(@NotNull Collection<FqName> excludedAnnotationClasses) { 114 this.excludedAnnotationClasses = excludedAnnotationClasses; 115 return this; 116 } 117 118 public DescriptorRenderer build() { 119 return new DescriptorRendererImpl(shortNames, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, 120 verbose, unitReturnType, normalizedVisibilities, showInternalKeyword, overrideRenderingPolicy, 121 valueParametersHandler, textFormat, excludedAnnotationClasses); 122 } 123 124}