diff --git a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form index d3fac3319a2f..144b2ab5be50 100644 --- a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form +++ b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form @@ -3,7 +3,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -235,20 +235,41 @@ - + - + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java index 5d457c5ee6ca..8f1241f5603e 100644 --- a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java +++ b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java @@ -54,6 +54,7 @@ public class CodeStyleGenerationConfigurable implements Configurable { private JCheckBox myCbUseExternalAnnotations; private JCheckBox myInsertOverrideAnnotationCheckBox; private JPanel myMembersPanel; + private JCheckBox myRepeatSynchronizedCheckBox; public CodeStyleGenerationConfigurable(CodeStyleSettings settings) { mySettings = settings; @@ -226,6 +227,7 @@ public class CodeStyleGenerationConfigurable implements Configurable { myCbUseExternalAnnotations.setSelected(settings.USE_EXTERNAL_ANNOTATIONS); myInsertOverrideAnnotationCheckBox.setSelected(settings.INSERT_OVERRIDE_ANNOTATION); + myRepeatSynchronizedCheckBox.setSelected(settings.REPEAT_SYNCHRONIZED); } public void reset() { @@ -253,6 +255,7 @@ public class CodeStyleGenerationConfigurable implements Configurable { settings.USE_EXTERNAL_ANNOTATIONS = myCbUseExternalAnnotations.isSelected(); settings.INSERT_OVERRIDE_ANNOTATION = myInsertOverrideAnnotationCheckBox.isSelected(); + settings.REPEAT_SYNCHRONIZED = myRepeatSynchronizedCheckBox.isSelected(); myMembersOrderList.apply(settings); @@ -287,6 +290,7 @@ public class CodeStyleGenerationConfigurable implements Configurable { isModified |= isModified(myCbUseExternalAnnotations, settings.USE_EXTERNAL_ANNOTATIONS); isModified |= isModified(myInsertOverrideAnnotationCheckBox, settings.INSERT_OVERRIDE_ANNOTATION); + isModified |= isModified(myRepeatSynchronizedCheckBox, settings.REPEAT_SYNCHRONIZED); isModified |= myMembersOrderList.isModified(settings); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java index 08e87459fa0e..5f894b93a429 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java @@ -305,6 +305,10 @@ public class OverrideImplementUtil { } annotateOnOverrideImplement(result, aClass, method, insertOverrideIfPossible); + + if (CodeStyleSettingsManager.getSettings(aClass.getProject()).REPEAT_SYNCHRONIZED && method.hasModifierProperty(PsiModifier.SYNCHRONIZED)) { + result.getModifierList().setModifierProperty(PsiModifier.SYNCHRONIZED, true); + } final PsiCodeBlock body = JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createCodeBlockFromText("{}", null); PsiCodeBlock oldbody = result.getBody(); diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java index a5938986e813..07e9cd2ba37d 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java @@ -207,6 +207,9 @@ public class CodeStyleSettings extends CommonCodeStyleSettings implements Clonea public boolean USE_EXTERNAL_ANNOTATIONS = false; public boolean INSERT_OVERRIDE_ANNOTATION = true; +//----------------- override ------------------- + public boolean REPEAT_SYNCHRONIZED = true; + //----------------- IMPORTS -------------------- public boolean LAYOUT_STATIC_IMPORTS_SEPARATELY = true; diff --git a/plugins/testng/lib/src/testng.zip b/plugins/testng/lib/src/testng.zip index c20697953852..e510ff8091c5 100644 Binary files a/plugins/testng/lib/src/testng.zip and b/plugins/testng/lib/src/testng.zip differ diff --git a/plugins/testng/lib/testng-jdk15.jar b/plugins/testng/lib/testng-jdk15.jar index 505188be0e5d..8f7d5f46cc4c 100644 Binary files a/plugins/testng/lib/testng-jdk15.jar and b/plugins/testng/lib/testng-jdk15.jar differ