From 5c25d6531496fae8a98a685b57c6da9eee099d74 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Sun, 22 Aug 2010 23:49:47 +0400 Subject: [PATCH] replace simple anonymous Functions --- .../impl/quickfix/CreateFromUsageUtils.java | 6 +--- .../quickfix/CreateMethodFromUsageFix.java | 8 ++--- .../LightAdvHighlightingPerformanceTest.java | 7 +--- .../intellij/openapi/paths/PathReference.java | 22 +++--------- .../intellij/formatting/FormatTextRanges.java | 6 +--- .../ui/speedSearch/ListWithFilter.java | 7 ++-- .../openapi/command/impl/UndoRedo.java | 6 +--- .../ExpectedHighlightingData.java | 9 +++-- .../src/com/intellij/openapi/util/Pair.java | 11 ++++++ .../openapi/util/text/StringUtil.java | 21 ++++++++--- .../com/intellij/util/ConstantFunction.java | 1 + .../util/src/com/intellij/util/Function.java | 28 +++++++++++++-- .../com/intellij/util/NotNullFunction.java | 13 +++---- .../util/NullableConstantFunction.java | 36 +++++++++++++++++++ .../inject/InjectLanguageAction.java | 7 ++-- .../refactoring/GroovyRefactoringUtil.java | 17 ++++----- .../execution/junit/TestsPattern.java | 8 ++--- .../idea/maven/model/MavenArtifactNode.java | 6 +--- .../idea/svn/history/SvnChangeList.java | 8 ++--- .../org/jetbrains/idea/svn/SvnRenameTest.java | 6 +--- .../xpath/context/functions/Function.java | 6 +--- .../util/xml/impl/StaticGenericInfo.java | 18 ++-------- .../NavigationGutterIconBuilder.java | 14 +++++--- 23 files changed, 139 insertions(+), 132 deletions(-) create mode 100644 platform/util/src/com/intellij/util/NullableConstantFunction.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java index 1176657dce4a..8a90c3070009 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java @@ -206,11 +206,7 @@ public class CreateFromUsageUtils { public static void setupMethodParameters(final PsiMethod method, final TemplateBuilder builder, final PsiElement contextElement, final PsiSubstitutor substitutor, final PsiExpression[] arguments) { - setupMethodParameters(method, builder, contextElement, substitutor, ContainerUtil.map2List(arguments, new Function>() { - public Pair fun(PsiExpression psiExpression) { - return Pair.create(psiExpression, null); - } - })); + setupMethodParameters(method, builder, contextElement, substitutor, ContainerUtil.map2List(arguments, Pair.createFunction(PsiExpression.class, ((PsiType)null)))); } public static void setupMethodParameters(final PsiMethod method, final TemplateBuilder builder, final PsiElement contextElement, diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java index b418627e735e..a952618918ac 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java @@ -180,11 +180,9 @@ public class CreateMethodFromUsageFix extends CreateFromUsageBaseFix { PsiExpression[] arguments = expression.getArgumentList().getExpressions(); doCreate(targetClass, method, shouldBeAbstract(targetClass), - ContainerUtil.map2List(arguments, new Function>() { - public Pair fun(PsiExpression psiExpression) { - return Pair.create(psiExpression, null); - } - }), getTargetSubstitutor(expression), CreateFromUsageUtils.guessExpectedTypes(expression, true), + ContainerUtil.map2List(arguments, Pair.createFunction(PsiExpression.class, ((PsiType)null))), + getTargetSubstitutor(expression), + CreateFromUsageUtils.guessExpectedTypes(expression, true), context); } catch (IncorrectOperationException e) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingPerformanceTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingPerformanceTest.java index 5f44831ec83d..9176f4ce8707 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingPerformanceTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingPerformanceTest.java @@ -108,12 +108,7 @@ public class LightAdvHighlightingPerformanceTest extends LightDaemonAnalyzerTest return o1.toString().compareTo(o2.toString()); } }); - String s = StringUtil.join(errors, new Function() { - @Override - public String fun(HighlightInfo info) { - return info.toString(); - } - }, "\n"); + final String s = StringUtil.join(errors, StringUtil.createToStringFunction(HighlightInfo.class), "\n"); System.out.println(msg+":\n-----------------------------------------"); System.out.println(s); System.out.println("\n--------------------------------------------"); diff --git a/platform/lang-api/src/com/intellij/openapi/paths/PathReference.java b/platform/lang-api/src/com/intellij/openapi/paths/PathReference.java index 2c2437a1c6a0..dc94ea8a22ca 100644 --- a/platform/lang-api/src/com/intellij/openapi/paths/PathReference.java +++ b/platform/lang-api/src/com/intellij/openapi/paths/PathReference.java @@ -16,11 +16,12 @@ package com.intellij.openapi.paths; +import com.intellij.openapi.util.Iconable; +import com.intellij.openapi.util.NullableLazyValue; import com.intellij.psi.PsiElement; import com.intellij.util.Function; +import com.intellij.util.NullableConstantFunction; import com.intellij.util.NullableFunction; -import com.intellij.openapi.util.NullableLazyValue; -import com.intellij.openapi.util.Iconable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,11 +31,7 @@ import javax.swing.*; * @author Dmitry Avdeev */ public class PathReference { - public static final NullableFunction NULL_ICON = new NullableFunction() { - public Icon fun(final PathReference webPath) { - return null; - } - }; + public static final NullableFunction NULL_ICON = new NullableConstantFunction((Icon)null); private final String myPath; private final NullableLazyValue myIcon; @@ -79,17 +76,6 @@ public class PathReference { return url; } - public static final class ConstFunction implements Function { - private final Icon myValue; - public ConstFunction(final Icon value) { - myValue = value; - } - - public Icon fun(final PathReference webPath) { - return myValue; - } - } - public static class ResolveFunction implements NullableFunction { public static final ResolveFunction NULL_RESOLVE_FUNCTION = new ResolveFunction(null); private final Icon myDefaultIcon; diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatTextRanges.java b/platform/lang-impl/src/com/intellij/formatting/FormatTextRanges.java index c2911f3ab9c4..e0f17cc45708 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatTextRanges.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatTextRanges.java @@ -199,10 +199,6 @@ public class FormatTextRanges { @Override public String toString() { - return "FormatTextRanges{" + StringUtil.join(myRanges, new Function() { - public String fun(FormatTextRange formatTextRange) { - return formatTextRange.toString(); - } - }, ","); + return "FormatTextRanges{" + StringUtil.join(myRanges, StringUtil.createToStringFunction(FormatTextRange.class), ","); } } diff --git a/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java b/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java index 0bf94fa98ab8..bec6bfb7b44b 100644 --- a/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java +++ b/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java @@ -20,6 +20,7 @@ package com.intellij.ui.speedSearch; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.LightColors; import com.intellij.ui.ScrollPaneFactory; import com.intellij.util.Function; @@ -37,11 +38,7 @@ public class ListWithFilter extends JPanel { private final MySpeedSearch mySpeedSearch; public static JComponent wrap(JList list) { - return wrap(list, ScrollPaneFactory.createScrollPane(list), new Function() { - public String fun(Object o) { - return o.toString(); - } - }); + return wrap(list, ScrollPaneFactory.createScrollPane(list), StringUtil.createToStringFunction(Object.class)); } public static JComponent wrap(JList list, JScrollPane scroller, Function namer) { diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoRedo.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoRedo.java index c265c4b2e94a..f0fb1a53073b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoRedo.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoRedo.java @@ -170,11 +170,7 @@ abstract class UndoRedo { private void reportCannotUndo(String message, Collection problemFiles) { if (ApplicationManager.getApplication().isUnitTestMode()) { - throw new RuntimeException(message + "\n" + StringUtil.join(problemFiles, new Function() { - public String fun(DocumentReference each) { - return each.toString(); - } - }, "\n")); + throw new RuntimeException(message + "\n" + StringUtil.join(problemFiles, StringUtil.createToStringFunction(DocumentReference.class), "\n")); } new CannotUndoReportDialog(myManager.getProject(), message, problemFiles).show(); } diff --git a/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java b/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java index b5b51b4e7aeb..d9f20936dfb2 100644 --- a/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java +++ b/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java @@ -38,6 +38,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.util.ConstantFunction; import com.intellij.util.Function; import gnu.trove.THashMap; import gnu.trove.THashSet; @@ -162,11 +163,9 @@ public class ExpectedHighlightingData { document.replaceString(startOffset, endOffset, content); endOffset -= endTag.length(); - LineMarkerInfo markerInfo = new LineMarkerInfo(myFile, new TextRange(startOffset,endOffset), null, Pass.LINE_MARKERS, new Function() { - public String fun(PsiElement psiElement) { - return descr; - } - }, null, GutterIconRenderer.Alignment.RIGHT); + LineMarkerInfo markerInfo = new LineMarkerInfo(myFile, new TextRange(startOffset,endOffset), null, Pass.LINE_MARKERS, + new ConstantFunction(descr), null, + GutterIconRenderer.Alignment.RIGHT); lineMarkerInfos.put(document.createRangeMarker(startOffset, endOffset), markerInfo); text = document.getText(); diff --git a/platform/util/src/com/intellij/openapi/util/Pair.java b/platform/util/src/com/intellij/openapi/util/Pair.java index ba8e304ec334..8eb05055b6b7 100644 --- a/platform/util/src/com/intellij/openapi/util/Pair.java +++ b/platform/util/src/com/intellij/openapi/util/Pair.java @@ -15,7 +15,9 @@ */ package com.intellij.openapi.util; +import com.intellij.util.Function; import org.apache.commons.lang.builder.HashCodeBuilder; +import org.jetbrains.annotations.Nullable; /** * @@ -43,6 +45,15 @@ public class Pair { return new Pair(first, second); } + public static Function> createFunction(Class cls, @Nullable final B value) { + return new Function>() { + @Override + public Pair fun(A a) { + return Pair.create(a, value); + } + }; + } + public final boolean equals(Object o){ return o instanceof Pair && Comparing.equal(first, ((Pair)o).first) && Comparing.equal(second, ((Pair)o).second); } diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index 3541a7ee4d1b..9529e56aa24d 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -18,10 +18,7 @@ package com.intellij.openapi.util.text; import com.intellij.CommonBundle; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.TextRange; -import com.intellij.util.ArrayUtil; -import com.intellij.util.ExceptionUtil; -import com.intellij.util.Function; -import com.intellij.util.SmartList; +import com.intellij.util.*; import com.intellij.util.text.CharArrayCharSequence; import com.intellij.util.text.LineReader; import org.jetbrains.annotations.NonNls; @@ -37,10 +34,26 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; //TeamCity inherits StringUtil: do not add private constructors!!! +@SuppressWarnings({"UtilityClassWithoutPrivateConstructor"}) public class StringUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.util.text.StringUtil"); @NonNls private static final String VOWELS = "aeiouy"; private static final Pattern EOL_SPLIT_PATTERN = Pattern.compile(" *(\r|\n|\r\n)+ *"); + public static final NotNullFunction QUOTER = new NotNullFunction() { + @NotNull + public String fun(String s) { + return "\"" + s + "\""; + } + }; + + public static Function createToStringFunction(Class cls) { + return new Function() { + @Override + public String fun(T o) { + return o.toString(); + } + }; + } public static String replace(@NonNls @NotNull String text, @NonNls @NotNull String oldS, @NonNls @Nullable String newS) { return replace(text, oldS, newS, false); diff --git a/platform/util/src/com/intellij/util/ConstantFunction.java b/platform/util/src/com/intellij/util/ConstantFunction.java index 8affabfb6914..fef39bea9d47 100644 --- a/platform/util/src/com/intellij/util/ConstantFunction.java +++ b/platform/util/src/com/intellij/util/ConstantFunction.java @@ -16,6 +16,7 @@ package com.intellij.util; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author Konstantin Bulenkov diff --git a/platform/util/src/com/intellij/util/Function.java b/platform/util/src/com/intellij/util/Function.java index bf414602e87e..426d3123be25 100644 --- a/platform/util/src/com/intellij/util/Function.java +++ b/platform/util/src/com/intellij/util/Function.java @@ -15,11 +15,14 @@ */ package com.intellij.util; +import java.util.Collection; + /** * @author max + * @author Konstantin Bulenkov */ -public interface Function { - RESULT fun(PARAM param); +public interface Function { + Result fun(Param param); Function ID = new Function() { public Object fun(final Object o) { @@ -27,4 +30,25 @@ public interface Function { } }; Function NULL = NullableFunction.NULL; + + final class Self implements Function { + @Override + public R fun(P p) { + return (R)p; + } + } + + final class First implements Function { + @Override + public R fun(P[] ps) { + return (R)ps[0]; + } + } + + final class FirstInCollection implements Function, R> { + @Override + public R fun(Collection

ps) { + return (R)ps.iterator().next(); + } + } } diff --git a/platform/util/src/com/intellij/util/NotNullFunction.java b/platform/util/src/com/intellij/util/NotNullFunction.java index 6281a4c8aef6..cae730360bd4 100644 --- a/platform/util/src/com/intellij/util/NotNullFunction.java +++ b/platform/util/src/com/intellij/util/NotNullFunction.java @@ -18,16 +18,11 @@ package com.intellij.util; import org.jetbrains.annotations.NotNull; /** + * * @author peter + * @author Konstantin Bulenkov */ -public interface NotNullFunction extends Function { - NotNullFunction ID = new NotNullFunction() { - @NotNull - public Object fun(final Object o) { - return o; - } - }; - +public interface NotNullFunction extends NullableFunction { @NotNull - Img fun(final Dom dom); + Result fun(final Param dom); } diff --git a/platform/util/src/com/intellij/util/NullableConstantFunction.java b/platform/util/src/com/intellij/util/NullableConstantFunction.java new file mode 100644 index 000000000000..29062a60be58 --- /dev/null +++ b/platform/util/src/com/intellij/util/NullableConstantFunction.java @@ -0,0 +1,36 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.util; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author Konstantin Bulenkov + */ +public final class NullableConstantFunction implements NullableFunction { + private final Result value; + + public NullableConstantFunction(@Nullable Result value) { + this.value = value; + } + + @Nullable + @Override + public Result fun(Param param) { + return value; + } +} diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectLanguageAction.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectLanguageAction.java index 36b012b60073..8719cbdb552d 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectLanguageAction.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectLanguageAction.java @@ -142,11 +142,8 @@ public class InjectLanguageAction implements IntentionAction { final String string = (String)list.getSelectedValue(); onChosen.process(string); } - }).setFilteringEnabled(new Function() { - public String fun(Object o) { - return (String)o; - } - }).createPopup().showInBestPositionFor(DataManager.getInstance().getDataContext()); + }).setFilteringEnabled(new Function.Self()) + .createPopup().showInBestPositionFor(DataManager.getInstance().getDataContext()); return true; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java index 99eb0d8870f4..d66a864f6450 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java @@ -26,17 +26,14 @@ import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.impl.source.tree.LeafPsiElement; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.PsiTreeUtil; -import static com.intellij.refactoring.util.RefactoringUtil.*; -import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.*; - import com.intellij.util.ArrayUtil; -import com.intellij.util.Function; import com.intellij.util.ReflectionCache; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -61,22 +58,20 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefini import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrEnumConstant; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrDeclarationHolder; -import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import java.util.*; +import static com.intellij.refactoring.util.RefactoringUtil.*; +import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.isNewLine; +import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.skipParentheses; + /** * @author ilyas */ public abstract class GroovyRefactoringUtil { public static final Collection KEYWORDS = ContainerUtil.map( - GroovyTokenTypes.KEYWORDS.getTypes(), - new Function() { - public String fun(IElementType type) { - return type.toString(); - } - }); + GroovyTokenTypes.KEYWORDS.getTypes(), StringUtil.createToStringFunction(IElementType.class)); private static final String[] finalModifiers = new String[]{PsiModifier.FINAL}; diff --git a/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java b/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java index c863ab15fa76..47fe6f47d091 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java @@ -65,11 +65,7 @@ public class TestsPattern extends TestObject { } } } - addClassesListToJavaParameters(classNames, new Function() { - public String fun(String className) { - return className; - } - }, "", true, isJUnit4); + addClassesListToJavaParameters(classNames, new Function.Self(), "", true, isJUnit4); } @Override @@ -112,4 +108,4 @@ public class TestsPattern extends TestObject { } } } -} \ No newline at end of file +} diff --git a/plugins/maven/facade-api/src/org/jetbrains/idea/maven/model/MavenArtifactNode.java b/plugins/maven/facade-api/src/org/jetbrains/idea/maven/model/MavenArtifactNode.java index e7f87d623f69..29fd98793cf2 100644 --- a/plugins/maven/facade-api/src/org/jetbrains/idea/maven/model/MavenArtifactNode.java +++ b/plugins/maven/facade-api/src/org/jetbrains/idea/maven/model/MavenArtifactNode.java @@ -104,11 +104,7 @@ public class MavenArtifactNode implements Serializable { } public static String formatNodesList(List nodes) { - return StringUtil.join(nodes, new Function() { - public String fun(MavenArtifactNode each) { - return each.toString(); - } - }, ","); + return StringUtil.join(nodes, StringUtil.createToStringFunction(MavenArtifactNode.class), ","); } @Override diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnChangeList.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnChangeList.java index b2d507e3143e..9798792c16e3 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnChangeList.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnChangeList.java @@ -32,6 +32,7 @@ import com.intellij.openapi.vcs.changes.ContentRevision; import com.intellij.openapi.vcs.changes.ExternallyRenamedChange; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ConstantFunction; import com.intellij.util.NotNullFunction; import com.intellij.util.io.IOUtil; import org.jetbrains.annotations.NotNull; @@ -429,12 +430,7 @@ public class SvnChangeList implements CommittedChangeList { private SvnRepositoryContentRevision createRevision(final String path, final boolean isBeforeRevision, final boolean isDir) { return SvnRepositoryContentRevision.create(myVcs, myRepositoryRoot, path, - getLocalPath(path, new NotNullFunction() { - @NotNull - public Boolean fun(final File file) { - return isDir; - } - }), getRevision(isBeforeRevision)); + getLocalPath(path, new ConstantFunction(isDir)), getRevision(isBeforeRevision)); } } diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java index e3df89886bb2..5bbedcffee07 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java @@ -172,11 +172,7 @@ public class SvnRenameTest extends SvnTestCase { } private String listToString(final List changes) { - return "{" + StringUtil.join(changes, new Function() { - public String fun(final Change change) { - return change.toString(); - } - }, ",") + "}"; + return "{" + StringUtil.join(changes, StringUtil.createToStringFunction(Change.class), ",") + "}"; } // IDEADEV-19223 diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/context/functions/Function.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/context/functions/Function.java index c8afba82e979..171e7cb2702a 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/context/functions/Function.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/context/functions/Function.java @@ -55,11 +55,7 @@ public class Function { public String buildSignature(String name) { final StringBuilder sb = new StringBuilder(name).append("("); - sb.append(StringUtil.join(Arrays.asList(parameters), new com.intellij.util.Function() { - public String fun(Parameter s) { - return s.toString(); - } - }, ", ")); + sb.append(StringUtil.join(Arrays.asList(parameters), StringUtil.createToStringFunction(Parameter.class), ", ")); return sb.append(")").toString(); } } diff --git a/xml/dom-impl/src/com/intellij/util/xml/impl/StaticGenericInfo.java b/xml/dom-impl/src/com/intellij/util/xml/impl/StaticGenericInfo.java index 0958a9a55227..e4ccf3066b99 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/impl/StaticGenericInfo.java +++ b/xml/dom-impl/src/com/intellij/util/xml/impl/StaticGenericInfo.java @@ -159,11 +159,7 @@ public class StaticGenericInfo extends DomGenericInfoEx { private static Function getTypeGetter(final JavaMethod method) { final Class[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length >= 1 && parameterTypes[0].equals(Class.class)) { - return new Function() { - public Type fun(final Object[] s) { - return (Type)s[0]; - } - }; + return new Function.First(); } if (parameterTypes.length == 2 && parameterTypes[1].equals(Class.class)) { @@ -185,11 +181,7 @@ public class StaticGenericInfo extends DomGenericInfoEx { private static Function getIndexGetter(final JavaMethod method) { final Class[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length >= 1 && parameterTypes[0].equals(int.class)) { - return new Function() { - public Integer fun(final Object[] s) { - return (Integer)s[0]; - } - }; + return new Function.First(); } if (parameterTypes.length == 2 && parameterTypes[1].equals(int.class)) { @@ -200,11 +192,7 @@ public class StaticGenericInfo extends DomGenericInfoEx { }; } - return new Function() { - public Integer fun(final Object[] s) { - return Integer.MAX_VALUE; - } - }; + return new ConstantFunction(Integer.MAX_VALUE); } @Nullable diff --git a/xml/dom-openapi/src/com/intellij/codeInsight/navigation/NavigationGutterIconBuilder.java b/xml/dom-openapi/src/com/intellij/codeInsight/navigation/NavigationGutterIconBuilder.java index 5066558334ce..d0b1953656fb 100644 --- a/xml/dom-openapi/src/com/intellij/codeInsight/navigation/NavigationGutterIconBuilder.java +++ b/xml/dom-openapi/src/com/intellij/codeInsight/navigation/NavigationGutterIconBuilder.java @@ -16,6 +16,7 @@ import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.psi.PsiElement; import com.intellij.psi.SmartPointerManager; import com.intellij.psi.SmartPsiElementPointer; +import com.intellij.util.ConstantFunction; import com.intellij.util.NotNullFunction; import com.intellij.util.NullableFunction; import com.intellij.util.containers.ContainerUtil; @@ -155,11 +156,14 @@ public class NavigationGutterIconBuilder { public LineMarkerInfo createLineMarkerInfo(PsiElement element) { final MyNavigationGutterIconRenderer renderer = createGutterIconRenderer(element.getProject()); - return new LineMarkerInfo(element, element.getTextRange(), renderer.getIcon(), Pass.UPDATE_OVERRIDEN_MARKERS, new NullableFunction() { - public String fun(final PsiElement element) { - return renderer.getTooltipText(); - } - }, renderer, renderer.getAlignment()); + final String tooltip = renderer.getTooltipText(); + return new LineMarkerInfo(element, + element.getTextRange(), + renderer.getIcon(), + Pass.UPDATE_OVERRIDEN_MARKERS, + tooltip == null ? null : new ConstantFunction(tooltip), + renderer, + renderer.getAlignment()); } private MyNavigationGutterIconRenderer createGutterIconRenderer(final Project project) {