merge in studio-1.0-release history after reset to 5ac71ace49c4def516f41f8c209cf4d39a3caefa
diff --git a/.idea/dictionaries/adt.xml b/.idea/dictionaries/adt.xml
index 6d2101d..6a73baa 100644
--- a/.idea/dictionaries/adt.xml
+++ b/.idea/dictionaries/adt.xml
@@ -190,6 +190,7 @@
<w>manifmerger</w>
<w>mdpi</w>
<w>memalign</w>
+ <w>minify</w>
<w>minsdk</w>
<w>mipmap</w>
<w>mkdirs</w>
diff --git a/.idea/modules.xml b/.idea/modules.xml
index ab47413..76bb0a2 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -74,7 +74,6 @@
<module fileurl="file://$PROJECT_DIR$/../studio/google/cloud/tools/google-cloud-tools.iml" filepath="$PROJECT_DIR$/../studio/google/cloud/tools/google-cloud-tools.iml" group="plugins/Google" />
<module fileurl="file://$PROJECT_DIR$/../studio/google/login/google-login.iml" filepath="$PROJECT_DIR$/../studio/google/login/google-login.iml" group="plugins/Google" />
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/gradle.iml" filepath="$PROJECT_DIR$/plugins/gradle/gradle.iml" group="community/plugins/gradle" />
- <module fileurl="file://$PROJECT_DIR$/../base/gradle-import/gradle-import.iml" filepath="$PROJECT_DIR$/../base/gradle-import/gradle-import.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/tooling-extension-api/gradle-tooling-extension-api.iml" filepath="$PROJECT_DIR$/plugins/gradle/tooling-extension-api/gradle-tooling-extension-api.iml" group="community/plugins/gradle" />
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/tooling-extension-impl/gradle-tooling-extension-impl.iml" filepath="$PROJECT_DIR$/plugins/gradle/tooling-extension-impl/gradle-tooling-extension-impl.iml" group="community/plugins/gradle" />
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/jps-plugin/groovy-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/groovy/jps-plugin/groovy-jps-plugin.iml" group="plugins/Groovy" />
diff --git a/.idea/runConfigurations/AndroidStudio.xml b/.idea/runConfigurations/AndroidStudio.xml
index 4bd761b..c62432d 100644
--- a/.idea/runConfigurations/AndroidStudio.xml
+++ b/.idea/runConfigurations/AndroidStudio.xml
@@ -2,7 +2,7 @@
<configuration default="false" name="AndroidStudio" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
- <option name="VM_PARAMETERS" value="-ea -Xbootclasspath/p:../out/classes/production/boot -Xms384m -Xmx768m -Didea.is.internal=true -XX:MaxPermSize=384m -Dapple.awt.graphics.UseQuartz=true -Didea.platform.prefix=AndroidStudio -Dandroid.extra_templates.path=../../../sdk/templates -Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.apple.menu.about.name=AndroidStudio -Dsun.awt.disablegrab=true -Dadt.renderLog=true" />
+ <option name="VM_PARAMETERS" value="-ea -Xbootclasspath/p:../out/classes/production/boot -Xms384m -Xmx768m -Didea.is.internal=true -XX:MaxPermSize=384m -Dapple.awt.graphics.UseQuartz=true -Didea.platform.prefix=AndroidStudio -Dandroid.extra_templates.path=../../../sdk/templates -Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.apple.menu.about.name=AndroidStudio -Dsun.awt.disablegrab=true" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
diff --git a/java/java-psi-impl/src/com/intellij/psi/scope/processor/MethodResolverProcessor.java b/java/java-psi-impl/src/com/intellij/psi/scope/processor/MethodResolverProcessor.java
index b73f87b..43bf4879 100644
--- a/java/java-psi-impl/src/com/intellij/psi/scope/processor/MethodResolverProcessor.java
+++ b/java/java-psi-impl/src/com/intellij/psi/scope/processor/MethodResolverProcessor.java
@@ -15,16 +15,21 @@
*/
package com.intellij.psi.scope.processor;
+import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.*;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.scope.JavaScopeProcessorEvent;
import com.intellij.psi.scope.PsiConflictResolver;
import com.intellij.psi.scope.conflictResolvers.JavaMethodsConflictResolver;
import com.intellij.psi.util.PsiUtil;
+import com.intellij.util.ArrayUtil;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
public class MethodResolverProcessor extends MethodCandidatesProcessor {
+
+ private static final ExtensionPointName<PsiConflictResolver> EP_NAME = ExtensionPointName.create("com.intellij.methodConflictResolver");
+
private boolean myStopAcceptingCandidates = false;
public MethodResolverProcessor(@NotNull PsiMethodCallExpression place, @NotNull PsiFile placeFile) {
@@ -34,14 +39,17 @@
public MethodResolverProcessor(@NotNull PsiCallExpression place,
@NotNull PsiExpressionList argumentList,
@NotNull PsiFile placeFile){
- this(place, placeFile, new PsiConflictResolver[]{new JavaMethodsConflictResolver(argumentList, PsiUtil.getLanguageLevel(placeFile))});
+ this(place, placeFile, ArrayUtil.append(EP_NAME.getExtensions(),
+ new JavaMethodsConflictResolver(argumentList, PsiUtil.getLanguageLevel(placeFile))));
setArgumentList(argumentList);
obtainTypeArguments(place);
}
public MethodResolverProcessor(PsiClass classConstr, @NotNull PsiExpressionList argumentList, @NotNull PsiElement place, @NotNull PsiFile placeFile) {
- super(place, placeFile, new PsiConflictResolver[]{new JavaMethodsConflictResolver(argumentList,
- PsiUtil.getLanguageLevel(placeFile))}, new SmartList<CandidateInfo>());
+ super(place,
+ placeFile,
+ ArrayUtil.append(EP_NAME.getExtensions(), new JavaMethodsConflictResolver(argumentList, PsiUtil.getLanguageLevel(placeFile))),
+ new SmartList<CandidateInfo>());
setIsConstructor(true);
setAccessClass(classConstr);
setArgumentList(argumentList);
diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java
index 01ec034..03f630c 100644
--- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java
+++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java
@@ -155,7 +155,8 @@
static final DataKey<ProjectViewImpl> DATA_KEY = DataKey.create("com.intellij.ide.projectView.impl.ProjectViewImpl");
private DefaultActionGroup myActionGroup;
- private String mySavedPaneId = "AndroidView"; // was ProjectViewPane.ID, but in Android Studio, we want the Android View to be the default
+ // was ProjectViewPane.ID, but in Android Studio, we want the Android View to be the default
+ private String mySavedPaneId = Boolean.getBoolean("studio.projectview") ? ProjectViewPane.ID : "AndroidView";
private String mySavedPaneSubId;
//private static final Icon COMPACT_EMPTY_MIDDLE_PACKAGES_ICON = IconLoader.getIcon("/objectBrowser/compactEmptyPackages.png");
//private static final Icon HIDE_EMPTY_MIDDLE_PACKAGES_ICON = IconLoader.getIcon("/objectBrowser/hideEmptyPackages.png");
diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml
index a5b2759..f1de3133 100644
--- a/resources/src/META-INF/IdeaPlugin.xml
+++ b/resources/src/META-INF/IdeaPlugin.xml
@@ -212,6 +212,7 @@
<with attribute="implementationClass" implements="com.intellij.refactoring.encapsulateFields.EncapsulateFieldHelper"/>
</extensionPoint>
+ <extensionPoint name="methodConflictResolver" interface="com.intellij.psi.scope.PsiConflictResolver"/>
<extensionPoint name="psi.classFileDecompiler" interface="com.intellij.psi.compiled.ClassFileDecompilers$Decompiler"/>
<!-- deprecated API -->
<!--suppress DeprecatedClassUsageInspection -->
diff --git a/updater/src/com/intellij/updater/BaseUpdateAction.java b/updater/src/com/intellij/updater/BaseUpdateAction.java
index 0fb6452..854c65d 100644
--- a/updater/src/com/intellij/updater/BaseUpdateAction.java
+++ b/updater/src/com/intellij/updater/BaseUpdateAction.java
@@ -93,7 +93,7 @@
byte[] newerFileBuffer = JBDiff.bsdiff(olderFileIn, newerFileIn, diffOutput);
diffOutput.close();
- if (!isCritical() || diffOutput.size() < newerFileBuffer.length) {
+ if (!isCritical() && diffOutput.size() < newerFileBuffer.length) {
patchOutput.write(1);
Utils.copyBytesToStream(diffOutput, patchOutput);
}
diff --git a/updater/testSrc/com/intellij/updater/PatchFileCreatorTest.java b/updater/testSrc/com/intellij/updater/PatchFileCreatorTest.java
index 6253b2a..b79f764 100644
--- a/updater/testSrc/com/intellij/updater/PatchFileCreatorTest.java
+++ b/updater/testSrc/com/intellij/updater/PatchFileCreatorTest.java
@@ -132,12 +132,23 @@
@Test
public void testApplyingWithCriticalFiles() throws Exception {
myPatchSpec.setCriticalFiles(Arrays.asList("lib/annotations.jar"));
- PatchFileCreator.create(myPatchSpec, myFile, TEST_UI);
+ Patch patch = PatchFileCreator.create(myPatchSpec, myFile, TEST_UI);
- PatchFileCreator.PreparationResult preparationResult = PatchFileCreator.prepareAndValidate(myFile, myOlderDir, TEST_UI);
+ assertAppliedAndRevertedCorrectly(patch, PatchFileCreator.prepareAndValidate(myFile, myOlderDir, TEST_UI));
+ }
- assertTrue(PatchFileCreator.apply(preparationResult, new HashMap<String, ValidationResult.Option>(), TEST_UI));
- assertAppliedCorrectly();
+ @Test
+ public void testApplyingWithModifiedCriticalFiles() throws Exception {
+ myPatchSpec.setStrict(true);
+ myPatchSpec.setCriticalFiles(Arrays.asList("lib/annotations.jar"));
+ Patch patch = PatchFileCreator.create(myPatchSpec, myFile, TEST_UI);
+
+ RandomAccessFile raf = new RandomAccessFile(new File(myOlderDir, "lib/annotations.jar"), "rw");
+ raf.seek(20);
+ raf.write(42);
+ raf.close();
+
+ assertAppliedAndRevertedCorrectly(patch, PatchFileCreator.prepareAndValidate(myFile, myOlderDir, TEST_UI));
}
@Test
@@ -382,12 +393,19 @@
Map<String, Long> target = patch.digestFiles(myNewerDir, Collections.<String>emptyList(), false, TEST_UI);
File backup = getTempFile("backup");
+ HashMap<String, ValidationResult.Option> options = new HashMap<String, ValidationResult.Option>();
for (ValidationResult each : preparationResult.validationResults) {
- assertTrue(each.toString(), each.kind != ValidationResult.Kind.ERROR);
+ if (patch.isStrict()) {
+ assertFalse(each.options.contains(ValidationResult.Option.NONE));
+ assertTrue(each.options.size() > 0);
+ options.put(each.path, each.options.get(0));
+ } else {
+ assertTrue(each.toString(), each.kind != ValidationResult.Kind.ERROR);
+ }
}
List<PatchAction> appliedActions =
- PatchFileCreator.apply(preparationResult, new HashMap<String, ValidationResult.Option>(), backup, TEST_UI).appliedActions;
+ PatchFileCreator.apply(preparationResult, options, backup, TEST_UI).appliedActions;
Map<String, Long> patched = patch.digestFiles(myOlderDir, Collections.<String>emptyList(), false, TEST_UI);
if (patch.isStrict()) {