Snapshot dc8d47d344cb8e7b04ed2af7a93fd95627f38ee0 from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: I7d6b4a705cb79fae78d9e845acad2d50fa3f4402
diff --git a/.gitignore b/.gitignore
index 4b9f8a8..1589896 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,3 @@
.DS_Store
/test-system
/test-config
-.jps-build-data
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 25d4282..890698c 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -41,7 +41,6 @@
<option name="DEPRECATION" value="false" />
</component>
<component name="JavacSettings">
- <option name="DEPRECATION" value="false" />
<option name="MAXIMUM_HEAP_SIZE" value="400" />
</component>
</project>
diff --git a/.idea/copyright/aosp.xml b/.idea/copyright/aosp.xml
deleted file mode 100644
index 077aec6..0000000
--- a/.idea/copyright/aosp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<component name="CopyrightManager">
- <copyright>
- <option name="notice" value="Copyright (C) &#36;today.year The Android Open Source Project 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." />
- <option name="keyword" value="Copyright" />
- <option name="allowReplaceKeyword" value="" />
- <option name="myName" value="aosp" />
- <option name="myLocal" value="true" />
- </copyright>
-</component>
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
index 7d505fe..b84d8ef 100644
--- a/.idea/copyright/profiles_settings.xml
+++ b/.idea/copyright/profiles_settings.xml
@@ -1,8 +1,6 @@
<component name="CopyrightManager">
- <settings default="aosp">
- <module2copyright>
- <element module="aosp-code" copyright="aosp" />
- </module2copyright>
+ <settings default="apache 2 license">
+ <module2copyright />
<LanguageOptions name="__TEMPLATE__">
<option name="addBlankAfter" value="false" />
</LanguageOptions>
diff --git a/.idea/dictionaries/adt.xml b/.idea/dictionaries/adt.xml
deleted file mode 100644
index e25bf25..0000000
--- a/.idea/dictionaries/adt.xml
+++ /dev/null
@@ -1,321 +0,0 @@
-<component name="ProjectDictionaryState">
- <dictionary name="adt">
- <words>
- <w>&amp</w>
- <w>aapt</w>
- <w>aarrggbb</w>
- <w>accessors</w>
- <w>actionbar</w>
- <w>adb's</w>
- <w>adbhost</w>
- <w>addon</w>
- <w>addons</w>
- <w>addr</w>
- <w>aidl</w>
- <w>aload</w>
- <w>androiddebugkey</w>
- <w>anim</w>
- <w>aosp</w>
- <w>apkbuilder</w>
- <w>apos</w>
- <w>appname</w>
- <w>areturn</w>
- <w>argb</w>
- <w>argv</w>
- <w>armeabi</w>
- <w>ast's</w>
- <w>async</w>
- <w>attrs</w>
- <w>autofocus</w>
- <w>automator</w>
- <w>avd's</w>
- <w>avdname</w>
- <w>backfill</w>
- <w>basename</w>
- <w>basenames</w>
- <w>bicubic</w>
- <w>bilinear</w>
- <w>bindir</w>
- <w>bipush</w>
- <w>bitcodelib</w>
- <w>bitmask</w>
- <w>blockquote</w>
- <w>bluetooth</w>
- <w>booleans</w>
- <w>bootloader</w>
- <w>borderless</w>
- <w>bytecode</w>
- <w>calloc</w>
- <w>charsets</w>
- <w>checkable</w>
- <w>chksum</w>
- <w>classfile</w>
- <w>classname</w>
- <w>classpathentry</w>
- <w>clinit</w>
- <w>clipart</w>
- <w>closeables</w>
- <w>codenames</w>
- <w>combineaccessrules</w>
- <w>compat</w>
- <w>configurables</w>
- <w>conv</w>
- <w>crlf</w>
- <w>crypto</w>
- <w>cygpath</w>
- <w>cygwin</w>
- <w>dalvik</w>
- <w>ddmlib</w>
- <w>ddms</w>
- <w>debuggable</w>
- <w>densityless</w>
- <w>designtime</w>
- <w>dest</w>
- <w>dexdump</w>
- <w>digester</w>
- <w>dimen</w>
- <w>dirname</w>
- <w>disp</w>
- <w>donottranslate</w>
- <w>dpad</w>
- <w>drawables</w>
- <w>dropdown</w>
- <w>dumpsys</w>
- <w>eabi</w>
- <w>easymock</w>
- <w>emdash</w>
- <w>endian</w>
- <w>enqueued</w>
- <w>errno</w>
- <w>executables</w>
- <w>expectedly</w>
- <w>filenames</w>
- <w>filepath</w>
- <w>fixme</w>
- <w>fqcn</w>
- <w>framebuffer</w>
- <w>frameworkdir</w>
- <w>froyo</w>
- <w>fwvga</w>
- <w>gbdserver</w>
- <w>gdbserver</w>
- <w>genkey</w>
- <w>getenv</w>
- <w>getfield</w>
- <w>getprop</w>
- <w>getstatic</w>
- <w>globbing</w>
- <w>goto</w>
- <w>gradle</w>
- <w>guide's</w>
- <w>guillemets</w>
- <w>hardcode</w>
- <w>hardcoding</w>
- <w>hashcode</w>
- <w>hdpi</w>
- <w>holo</w>
- <w>horiz</w>
- <w>httpclient</w>
- <w>hvga</w>
- <w>iaload</w>
- <w>iastore</w>
- <w>iconst</w>
- <w>inflater</w>
- <w>infos</w>
- <w>inlined</w>
- <w>innerclass</w>
- <w>inputfile</w>
- <w>insn</w>
- <w>instantiatable</w>
- <w>instrumentations</w>
- <w>intelli</w>
- <w>interpolator</w>
- <w>ints</w>
- <w>invokestatic</w>
- <w>invokevirtual</w>
- <w>ipsum</w>
- <w>ireturn</w>
- <w>iterable</w>
- <w>jarfile</w>
- <w>jarlist</w>
- <w>jarpath</w>
- <w>javabuilder</w>
- <w>javanature</w>
- <w>jdwp</w>
- <w>jpeg</w>
- <w>junit</w>
- <w>keepclasseswithmembernames</w>
- <w>keepclasseswithmembers</w>
- <w>keygen</w>
- <w>keypass</w>
- <w>keysexposed</w>
- <w>keyshidden</w>
- <w>keyssoft</w>
- <w>keystore</w>
- <w>keytool</w>
- <w>kxml</w>
- <w>landroid</w>
- <w>layoublib</w>
- <w>layoutlib</w>
- <w>layoutlibs</w>
- <w>layoutopt</w>
- <w>layoutrules</w>
- <w>ldltr</w>
- <w>ldpi</w>
- <w>ldrtl</w>
- <w>levenshtein</w>
- <w>lexing</w>
- <w>libc</w>
- <w>licensable</w>
- <w>licensor</w>
- <w>linenumber</w>
- <w>ljava</w>
- <w>lombok</w>
- <w>lookups</w>
- <w>lookupswitch</w>
- <w>looper</w>
- <w>lorem</w>
- <w>lpackage</w>
- <w>makefile</w>
- <w>malloc</w>
- <w>manifestmerger</w>
- <w>manifmerger</w>
- <w>mdpi</w>
- <w>memalign</w>
- <w>minsdk</w>
- <w>mipmap</w>
- <w>mkdirs</w>
- <w>monospace</w>
- <w>moreunit</w>
- <w>multimap</w>
- <w>multipart</w>
- <w>multitouch</w>
- <w>nano</w>
- <w>nativelib</w>
- <w>navexposed</w>
- <w>navhidden</w>
- <w>ninepatch</w>
- <w>nodpi</w>
- <w>nokeys</w>
- <w>nonav</w>
- <w>notlong</w>
- <w>notnight</w>
- <w>notouch</w>
- <w>nullable</w>
- <w>nulling</w>
- <w>nullness</w>
- <w>objectweb</w>
- <w>opcode</w>
- <w>opcodes</w>
- <w>pathname</w>
- <w>picasa</w>
- <w>plugin's</w>
- <w>png's</w>
- <w>prebuilts</w>
- <w>prefs</w>
- <w>preload</w>
- <w>prepending</w>
- <w>printf</w>
- <w>println</w>
- <w>proc</w>
- <w>prog</w>
- <w>progdir</w>
- <w>programmatically</w>
- <w>proguard</w>
- <w>prolog</w>
- <w>qemu</w>
- <w>quickfix</w>
- <w>quickstart</w>
- <w>qvga</w>
- <w>rasterize</w>
- <w>rasterizer</w>
- <w>realloc</w>
- <w>recurse</w>
- <w>reflow</w>
- <w>reformats</w>
- <w>reimplement</w>
- <w>renderscript</w>
- <w>reparse</w>
- <w>resampling</w>
- <w>resizability</w>
- <w>resized</w>
- <w>rrggbb</w>
- <w>sccs</w>
- <w>screenshot</w>
- <w>scroller</w>
- <w>scrollview</w>
- <w>sdcard</w>
- <w>sdk's</w>
- <w>sdkbin</w>
- <w>sdklib</w>
- <w>sdkman</w>
- <w>sdks</w>
- <w>serialnumber</w>
- <w>severities</w>
- <w>sparsearray</w>
- <w>sqrt</w>
- <w>stacktrace</w>
- <w>stderr</w>
- <w>stdout</w>
- <w>stopship</w>
- <w>storepass</w>
- <w>storetype</w>
- <w>styleable</w>
- <w>subclassed</w>
- <w>subclassing</w>
- <w>subfolder</w>
- <w>submenu</w>
- <w>superset</w>
- <w>sysdir</w>
- <w>sysimg</w>
- <w>targetsdk</w>
- <w>testcase</w>
- <w>testroot</w>
- <w>testsuite</w>
- <w>tmpdir</w>
- <w>traceview</w>
- <w>tuple</w>
- <w>tvdpi</w>
- <w>uiautomator</w>
- <w>uname</w>
- <w>unarchive</w>
- <w>unary</w>
- <w>uncapitalized</w>
- <w>uncompressing</w>
- <w>unescape</w>
- <w>unescaping</w>
- <w>unformatted</w>
- <w>unlocalized</w>
- <w>unmanages</w>
- <w>unregister</w>
- <w>unregisters</w>
- <w>userdata</w>
- <w>versioncode</w>
- <w>vert</w>
- <w>viewport</w>
- <w>vmsig</w>
- <w>wakelock</w>
- <w>wakelocks</w>
- <w>wakeup</w>
- <w>webkit</w>
- <w>wikipedia</w>
- <w>workdir</w>
- <w>wqvga</w>
- <w>writeable</w>
- <w>wvga</w>
- <w>xdpi</w>
- <w>xerces</w>
- <w>xfermode</w>
- <w>xhdpi</w>
- <w>xhigh</w>
- <w>xlarge</w>
- <w>xliff</w>
- <w>xmlns</w>
- <w>xxhdpi</w>
- <w>xxhigh</w>
- <w>ydpi</w>
- <w>yyyy</w>
- <w>zipalign</w>
- </words>
- </dictionary>
-</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/idea_default.xml b/.idea/inspectionProfiles/idea_default.xml
index 52f7c31..b357b21 100644
--- a/.idea/inspectionProfiles/idea_default.xml
+++ b/.idea/inspectionProfiles/idea_default.xml
@@ -50,7 +50,7 @@
<inspection_tool class="ConstantConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ConstantConditions" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="runtime.classes" level="WARNING" enabled="false">
- <option name="SUGGEST_NULLABLE_ANNOTATIONS" value="true" />
+ <option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false" />
<option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" />
</scope>
<option name="SUGGEST_NULLABLE_ANNOTATIONS" value="true" />
@@ -317,10 +317,6 @@
<inspection_tool class="MethodNamesDifferOnlyByCase" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodOverloadsParentMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodOverridesStaticMethod" enabled="true" level="WARNING" enabled_by_default="true" />
- <inspection_tool class="MissingOverrideAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
- <option name="ignoreObjectMethods" value="true" />
- <option name="ignoreAnonymousClassMethods" value="false" />
- </inspection_tool>
<inspection_tool class="MisspelledCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MisspelledEquals" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MisspelledHashcode" enabled="true" level="WARNING" enabled_by_default="true" />
@@ -575,7 +571,7 @@
<inspection_tool class="UnnecessaryEnumModifier" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryFullyQualifiedName" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="Tests" level="WARNING" enabled="false">
- <option name="m_ignoreJavadoc" value="true" />
+ <option name="m_ignoreJavadoc" value="false" />
</scope>
<option name="m_ignoreJavadoc" value="true" />
</inspection_tool>
diff --git a/.idea/libraries/asm_tools.xml b/.idea/libraries/asm_tools.xml
deleted file mode 100644
index 6009e9f..0000000
--- a/.idea/libraries/asm_tools.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="libraryTable">
- <library name="asm-tools">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/asm-tools/asm-4.0.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/asm-tools/asm-analysis-4.0.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/asm-tools/asm-tree-4.0.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/asm-tools/src-4.0.zip!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/bouncy_castle.xml b/.idea/libraries/bouncy_castle.xml
deleted file mode 100644
index 70ec93b..0000000
--- a/.idea/libraries/bouncy_castle.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="libraryTable">
- <library name="bouncy-castle">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/m2/repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/m2/repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/commons_compress.xml b/.idea/libraries/commons_compress.xml
deleted file mode 100644
index be33df8..0000000
--- a/.idea/libraries/commons_compress.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<component name="libraryTable">
- <library name="commons-compress">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/commons-compress/commons-compress-1.0.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/easymock_tools.xml b/.idea/libraries/easymock_tools.xml
deleted file mode 100644
index d01b884..0000000
--- a/.idea/libraries/easymock_tools.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="libraryTable">
- <library name="easymock-tools">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/easymock-tools/easymock-3.1.jar!/" />
- </CLASSES>
- <JAVADOC>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/easymock-tools/easymock-3.1-javadoc.jar!/" />
- </JAVADOC>
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/easymock-tools/easymock-3.1-sources.jar!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/freemarker_2_3_19.xml b/.idea/libraries/freemarker_2_3_19.xml
deleted file mode 100644
index 8015e9e..0000000
--- a/.idea/libraries/freemarker_2_3_19.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component name="libraryTable">
- <library name="freemarker-2.3.19">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/freemarker/freemarker-2.3.19.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/freemarker/src.zip!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/guava_tools.xml b/.idea/libraries/guava_tools.xml
deleted file mode 100644
index 4e67511..0000000
--- a/.idea/libraries/guava_tools.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component name="libraryTable">
- <library name="guava-tools">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/guava-tools/guava-13.0.1.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/guava-tools/src.zip!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/http_client.xml b/.idea/libraries/http_client.xml
deleted file mode 100644
index 9f81f11..0000000
--- a/.idea/libraries/http_client.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<component name="libraryTable">
- <library name="http-client">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/commons-codec-1.4.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/commons-logging-1.1.1.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/httpclient-4.1.1.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/httpcore-4.1.jar!/" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/httpmime-4.1.1.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/commons-codec-1.4-src.zip!/commons-codec-1.4-src/src/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/commons-logging-1.1.1-src.zip!/commons-logging-1.1.1-src/src/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-client-4.1.1-src.zip!/httpcomponents-client-4.1.1/httpclient/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-client-4.1.1-src.zip!/httpcomponents-client-4.1.1/httpclient-cache/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-client-4.1.1-src.zip!/httpcomponents-client-4.1.1/httpmime/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-client-4.1.1-src.zip!/httpcomponents-client-4.1.1/httpclient-benchmark/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-client-4.1.1-src.zip!/httpcomponents-client-4.1.1/httpclient-contrib/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-core-4.1-src.zip!/httpcomponents-core-4.1/httpcore-contrib/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-core-4.1-src.zip!/httpcomponents-core-4.1/httpcore-nio/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-core-4.1-src.zip!/httpcomponents-core-4.1/httpcore-benchmark/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-core-4.1-src.zip!/httpcomponents-core-4.1/httpcore/src/main/java" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/http-client/src/httpcomponents-core-4.1-src.zip!/httpcomponents-core-4.1/httpcore-ab/src/main/java" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/junit3_tools.xml b/.idea/libraries/junit3_tools.xml
deleted file mode 100644
index b3dd3f3..0000000
--- a/.idea/libraries/junit3_tools.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<component name="libraryTable">
- <library name="junit3-tools">
- <CLASSES>
- <root url="jar://$APPLICATION_HOME_DIR$/lib/junit.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/kxml2.xml b/.idea/libraries/kxml2.xml
deleted file mode 100644
index 688c238..0000000
--- a/.idea/libraries/kxml2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="libraryTable">
- <library name="kxml2">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/kxml2-tools/kxml2-2.3.0.jar!/" />
- </CLASSES>
- <JAVADOC>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/kxml2-tools/kxml2-src-2.3.0.zip!/www/kxml2/javadoc" />
- </JAVADOC>
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/kxml2-tools/kxml2-src-2.3.0.zip!/src" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/libraries/lombok_ast.xml b/.idea/libraries/lombok_ast.xml
deleted file mode 100644
index 250dbb9..0000000
--- a/.idea/libraries/lombok_ast.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<component name="libraryTable">
- <library name="lombok-ast">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/src/template" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/src/ecjTransformer" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/src/javacTransformer" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/src/printer" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/src/main" />
- <root url="jar://$PROJECT_DIR$/../../prebuilts/tools/common/lombok-ast/lombok-ast-0.2.1-src.zip!/build/lombok.ast_generatedSource" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 60db4ae..804f4a7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,10 @@
<entry_points version="2.0" />
</component>
<component name="FrameworkDetectionExcludesConfiguration">
- <type id="android" />
+ <file type="android" url="file://$PROJECT_DIR$/plugins/android/testData/AndroidManifest.xml" />
+ <file type="android" url="file://$PROJECT_DIR$/plugins/android/testData/lint/global/buttonsOrder/AndroidManifest.xml" />
+ <file type="android" url="file://$PROJECT_DIR$/plugins/android/testData/lint/global/manifestOrder/AndroidManifest.xml" />
+ <file type="android" url="file://$PROJECT_DIR$/plugins/android/testData/resNavigation/AndroidManifest.xml" />
</component>
<component name="IdProvider" IDEtalkID="88DB5D232B345F18EEFB2825E88EC093" />
<component name="JavadocGenerationManager">
@@ -24,30 +27,6 @@
<option name="LOCALE" />
<option name="OPEN_IN_BROWSER" value="true" />
</component>
- <component name="NullableNotNullManager">
- <option name="myDefaultNullable" value="org.jetbrains.annotations.Nullable" />
- <option name="myDefaultNotNull" value="org.jetbrains.annotations.NotNull" />
- <option name="myNullables">
- <value>
- <list size="4">
- <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
- <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
- <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
- <item index="3" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
- </list>
- </value>
- </option>
- <option name="myNotNulls">
- <value>
- <list size="4">
- <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
- <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
- <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
- <item index="3" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
- </list>
- </value>
- </option>
- </component>
<component name="ProjectDetails">
<option name="projectName" value="idea-community" />
</component>
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 8e79a97..bacca10 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -9,28 +9,19 @@
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-tests/IntelliLang-tests.iml" filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-tests/IntelliLang-tests.iml" group="plugins/IntelliLang" />
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-xml.iml" filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-xml.iml" group="plugins/IntelliLang" />
<module fileurl="file://$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" filepath="$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/adt-branding/adt-branding.iml" filepath="$PROJECT_DIR$/../adt/idea/adt-branding/adt-branding.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/platform/analysis-api/analysis-api.iml" filepath="$PROJECT_DIR$/platform/analysis-api/analysis-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/analysis-impl/analysis-impl.iml" filepath="$PROJECT_DIR$/platform/analysis-impl/analysis-impl.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android/android.iml" filepath="$PROJECT_DIR$/../adt/idea/android/android.iml" group="plugins/Android" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android/common/android-common.iml" filepath="$PROJECT_DIR$/../adt/idea/android/common/android-common.iml" group="plugins/Android" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android-designer/android-designer.iml" filepath="$PROJECT_DIR$/../adt/idea/android-designer/android-designer.iml" group="plugins/Android" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android-gradle-jps/android-gradle-jps.iml" filepath="$PROJECT_DIR$/../adt/idea/android-gradle-jps/android-gradle-jps.iml" group="plugins/Android" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android/jps-plugin/android-jps-plugin.iml" filepath="$PROJECT_DIR$/../adt/idea/android/jps-plugin/android-jps-plugin.iml" group="plugins/Android" />
- <module fileurl="file://$PROJECT_DIR$/../adt/idea/android/rt/android-rt.iml" filepath="$PROJECT_DIR$/../adt/idea/android/rt/android-rt.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/platform/annotations/annotations.iml" filepath="$PROJECT_DIR$/platform/annotations/annotations.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/plugins/ant/ant.iml" filepath="$PROJECT_DIR$/plugins/ant/ant.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/ant/jps-plugin/ant-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/ant/jps-plugin/ant-jps-plugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/jps/antLayout/antlayout.iml" filepath="$PROJECT_DIR$/jps/antLayout/antlayout.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/plugins/google-app-engine/runtime/appEngine-runtime.iml" filepath="$PROJECT_DIR$/plugins/google-app-engine/runtime/appEngine-runtime.iml" group="plugins/GAE" />
- <module fileurl="file://$PROJECT_DIR$/../base/asset-studio/assetstudio.iml" filepath="$PROJECT_DIR$/../base/asset-studio/assetstudio.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/bindSvn/bindSvn.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/bindSvn/bindSvn.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/platform/boot/boot.iml" filepath="$PROJECT_DIR$/platform/boot/boot.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/bootstrap/bootstrap.iml" filepath="$PROJECT_DIR$/platform/bootstrap/bootstrap.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/build/build.iml" filepath="$PROJECT_DIR$/build/build.iml" />
<module fileurl="file://$PROJECT_DIR$/colorSchemes/colorSchemes.iml" filepath="$PROJECT_DIR$/colorSchemes/colorSchemes.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/plugins/commander/commander.iml" filepath="$PROJECT_DIR$/plugins/commander/commander.iml" group="plugins" />
- <module fileurl="file://$PROJECT_DIR$/../base/common/common.iml" filepath="$PROJECT_DIR$/../base/common/common.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/common-eclipse-util/common-eclipse-util.iml" filepath="$PROJECT_DIR$/plugins/eclipse/common-eclipse-util/common-eclipse-util.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/javaFX/common-javaFX-plugin/common-javaFX-plugin.iml" filepath="$PROJECT_DIR$/plugins/javaFX/common-javaFX-plugin/common-javaFX-plugin.iml" group="plugins/JavaFX" />
<module fileurl="file://$PROJECT_DIR$/community-main.iml" filepath="$PROJECT_DIR$/community-main.iml" />
@@ -45,7 +36,6 @@
<module fileurl="file://$PROJECT_DIR$/build/cucumber-test-runner/cucumber-test-runner.iml" filepath="$PROJECT_DIR$/build/cucumber-test-runner/cucumber-test-runner.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/cvs-core/cvs-core.iml" filepath="$PROJECT_DIR$/plugins/cvs/cvs-core/cvs-core.iml" group="plugins/VCS/cvs" />
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/cvs-plugin/cvs-plugin.iml" filepath="$PROJECT_DIR$/plugins/cvs/cvs-plugin/cvs-plugin.iml" group="plugins/VCS/cvs" />
- <module fileurl="file://$PROJECT_DIR$/../base/ddmlib/ddmlib.iml" filepath="$PROJECT_DIR$/../base/ddmlib/ddmlib.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/java/debugger/impl/debugger-impl.iml" filepath="$PROJECT_DIR$/java/debugger/impl/debugger-impl.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/debugger/openapi/debugger-openapi.iml" filepath="$PROJECT_DIR$/java/debugger/openapi/debugger-openapi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/plugins/devkit/devkit.iml" filepath="$PROJECT_DIR$/plugins/devkit/devkit.iml" group="plugins" />
@@ -53,9 +43,7 @@
<module fileurl="file://$PROJECT_DIR$/xml/dom-impl/dom-impl.iml" filepath="$PROJECT_DIR$/xml/dom-impl/dom-impl.iml" group="xml" />
<module fileurl="file://$PROJECT_DIR$/xml/dom-openapi/dom-openapi.iml" filepath="$PROJECT_DIR$/xml/dom-openapi/dom-openapi.iml" group="xml" />
<module fileurl="file://$PROJECT_DIR$/xml/dom-tests/dom-tests.iml" filepath="$PROJECT_DIR$/xml/dom-tests/dom-tests.iml" group="xml" />
- <module fileurl="file://$PROJECT_DIR$/../base/draw9patch/draw9patch.iml" filepath="$PROJECT_DIR$/../base/draw9patch/draw9patch.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/platform/dvcs/dvcs.iml" filepath="$PROJECT_DIR$/platform/dvcs/dvcs.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../base/device_validator/dvlib/dvlib.iml" filepath="$PROJECT_DIR$/../base/device_validator/dvlib/dvlib.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/eclipse.iml" filepath="$PROJECT_DIR$/plugins/eclipse/eclipse.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/jps-plugin/eclipse-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/eclipse/jps-plugin/eclipse-jps-plugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/java/execution/impl/execution-impl.iml" filepath="$PROJECT_DIR$/java/execution/impl/execution-impl.iml" group="java" />
@@ -110,13 +98,8 @@
<module fileurl="file://$PROJECT_DIR$/plugins/junit_rt/junit_rt.iml" filepath="$PROJECT_DIR$/plugins/junit_rt/junit_rt.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/platform/lang-api/lang-api.iml" filepath="$PROJECT_DIR$/platform/lang-api/lang-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/lang-impl/lang-impl.iml" filepath="$PROJECT_DIR$/platform/lang-impl/lang-impl.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../base/layoutlib-api/layoutlib-api.iml" filepath="$PROJECT_DIR$/../base/layoutlib-api/layoutlib-api.iml" group="plugins/Android/android-sdk" />
- <module fileurl="file://$PROJECT_DIR$/../base/lint/libs/lint-api/lint-api.iml" filepath="$PROJECT_DIR$/../base/lint/libs/lint-api/lint-api.iml" group="plugins/Android/android-sdk/lint" />
- <module fileurl="file://$PROJECT_DIR$/../base/lint/libs/lint-checks/lint-checks.iml" filepath="$PROJECT_DIR$/../base/lint/libs/lint-checks/lint-checks.iml" group="plugins/Android/android-sdk/lint" />
- <module fileurl="file://$PROJECT_DIR$/../base/lint/cli/lint-cli.iml" filepath="$PROJECT_DIR$/../base/lint/cli/lint-cli.iml" group="plugins/Android/android-sdk/lint" />
<module fileurl="file://$PROJECT_DIR$/platform/lvcs-api/lvcs-api.iml" filepath="$PROJECT_DIR$/platform/lvcs-api/lvcs-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/lvcs-impl/lvcs-impl.iml" filepath="$PROJECT_DIR$/platform/lvcs-impl/lvcs-impl.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../base/manifest-merger/manifest-merger.iml" filepath="$PROJECT_DIR$/../base/manifest-merger/manifest-merger.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/maven/maven.iml" filepath="$PROJECT_DIR$/plugins/maven/maven.iml" group="plugins/maven" />
<module fileurl="file://$PROJECT_DIR$/plugins/maven/artifact-resolver-m2/maven-artifact-resolver-m2.iml" filepath="$PROJECT_DIR$/plugins/maven/artifact-resolver-m2/maven-artifact-resolver-m2.iml" group="plugins/maven" />
<module fileurl="file://$PROJECT_DIR$/plugins/maven/artifact-resolver-m3/maven-artifact-resolver-m3.iml" filepath="$PROJECT_DIR$/plugins/maven/artifact-resolver-m3/maven-artifact-resolver-m3.iml" group="plugins/maven" />
@@ -124,7 +107,6 @@
<module fileurl="file://$PROJECT_DIR$/plugins/maven/maven-server-api/maven-server-api.iml" filepath="$PROJECT_DIR$/plugins/maven/maven-server-api/maven-server-api.iml" group="plugins/maven" />
<module fileurl="file://$PROJECT_DIR$/plugins/maven/maven2-server-impl/maven2-server-impl.iml" filepath="$PROJECT_DIR$/plugins/maven/maven2-server-impl/maven2-server-impl.iml" group="plugins/maven" />
<module fileurl="file://$PROJECT_DIR$/plugins/maven/maven3-server-impl/maven3-server-impl.iml" filepath="$PROJECT_DIR$/plugins/maven/maven3-server-impl/maven3-server-impl.iml" group="plugins/maven" />
- <module fileurl="file://$PROJECT_DIR$/../base/ninepatch/ninepatch.iml" filepath="$PROJECT_DIR$/../base/ninepatch/ninepatch.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/java/openapi/openapi.iml" filepath="$PROJECT_DIR$/java/openapi/openapi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-api/platform-api.iml" filepath="$PROJECT_DIR$/platform/platform-api/platform-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-impl/platform-impl.iml" filepath="$PROJECT_DIR$/platform/platform-impl/platform-impl.iml" group="platform" />
@@ -140,8 +122,6 @@
<module fileurl="file://$PROJECT_DIR$/platform/remote-servers/impl/remote-servers-impl.iml" filepath="$PROJECT_DIR$/platform/remote-servers/impl/remote-servers-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/resources/resources.iml" filepath="$PROJECT_DIR$/resources/resources.iml" />
<module fileurl="file://$PROJECT_DIR$/resources-en/resources-en.iml" filepath="$PROJECT_DIR$/resources-en/resources-en.iml" />
- <module fileurl="file://$PROJECT_DIR$/../base/sdk-common/sdk-common.iml" filepath="$PROJECT_DIR$/../base/sdk-common/sdk-common.iml" group="plugins/Android/android-sdk" />
- <module fileurl="file://$PROJECT_DIR$/../base/sdklib/sdklib.iml" filepath="$PROJECT_DIR$/../base/sdklib/sdklib.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/platform/smRunner/smRunner.iml" filepath="$PROJECT_DIR$/platform/smRunner/smRunner.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/smartcvs-src/smartcvs-src.iml" filepath="$PROJECT_DIR$/plugins/cvs/smartcvs-src/smartcvs-src.iml" group="plugins/VCS/cvs" />
<module fileurl="file://$PROJECT_DIR$/spellchecker/spellchecker.iml" filepath="$PROJECT_DIR$/spellchecker/spellchecker.iml" group="plugins" />
@@ -158,7 +138,6 @@
<module fileurl="file://$PROJECT_DIR$/plugins/testng/testng.iml" filepath="$PROJECT_DIR$/plugins/testng/testng.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/testng_rt/testng_rt.iml" filepath="$PROJECT_DIR$/plugins/testng_rt/testng_rt.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/platform/testFramework/bootstrap/tests_bootstrap.iml" filepath="$PROJECT_DIR$/platform/testFramework/bootstrap/tests_bootstrap.iml" group="platform" />
- <module fileurl="file://$PROJECT_DIR$/../base/testutils/testutils.iml" filepath="$PROJECT_DIR$/../base/testutils/testutils.iml" group="plugins/Android/android-sdk" />
<module fileurl="file://$PROJECT_DIR$/plugins/ui-designer/ui-designer.iml" filepath="$PROJECT_DIR$/plugins/ui-designer/ui-designer.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/ui-designer-core/ui-designer-core.iml" filepath="$PROJECT_DIR$/plugins/ui-designer-core/ui-designer-core.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/ui-designer/jps-plugin/ui-designer-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/ui-designer/jps-plugin/ui-designer-jps-plugin.iml" group="plugins" />
diff --git a/.idea/runConfigurations/AndroidStudio.xml b/.idea/runConfigurations/AndroidStudio.xml
deleted file mode 100644
index b9d00df..0000000
--- a/.idea/runConfigurations/AndroidStudio.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<component name="ProjectRunConfigurationManager">
- <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 -Dexternal.system.in.process=true -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" />
- <option name="ALTERNATIVE_JRE_PATH" value="" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="community-main" />
- <envs />
- <RunnerSettings RunnerId="Debug">
- <option name="DEBUG_PORT" value="" />
- <option name="TRANSPORT" value="0" />
- <option name="LOCAL" value="true" />
- </RunnerSettings>
- <RunnerSettings RunnerId="Run" />
- <ConfigurationWrapper RunnerId="Debug" />
- <ConfigurationWrapper RunnerId="Run" />
- <method />
- </configuration>
-</component>
\ No newline at end of file
diff --git a/.idea/scopes/androidplugin.xml b/.idea/scopes/androidplugin.xml
deleted file mode 100644
index dcc1341..0000000
--- a/.idea/scopes/androidplugin.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
- <scope name="androidplugin" pattern="file[group:Android]:*//*&&!file[group:android-sdk]:*//*" />
-</component>
\ No newline at end of file
diff --git a/.idea/scopes/aosp_code.xml b/.idea/scopes/aosp_code.xml
deleted file mode 100644
index abf77af..0000000
--- a/.idea/scopes/aosp_code.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
- <scope name="aosp-code" pattern="test[group:android-sdk]:*..*||src[group:android-sdk]:*..*" />
-</component>
\ No newline at end of file
diff --git a/.idea/scopes/obsoleteplugin.xml b/.idea/scopes/obsoleteplugin.xml
deleted file mode 100644
index 0537436..0000000
--- a/.idea/scopes/obsoleteplugin.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
- <scope name="obsoleteplugin" pattern="file[community-main]:plugins/android//*||file[community-main]:plugins/android-designer//*" />
-</component>
\ No newline at end of file
diff --git a/.idea/scopes/platform.xml b/.idea/scopes/platform.xml
deleted file mode 100644
index a0bafd1..0000000
--- a/.idea/scopes/platform.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
- <scope name="platform" pattern="src:*..*&&!src[group:Android]:*..*" />
-</component>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
index cb8806f..ec8ce05 100644
--- a/.idea/uiDesigner.xml
+++ b/.idea/uiDesigner.xml
@@ -138,9 +138,6 @@
<item class="com.intellij.ui.ReferenceEditorComboWithBrowseButton" icon="/com/intellij/uiDesigner/icons/panel.png" removable="true" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="7" anchor="0" fill="1" />
</item>
- <item class="com.intellij.ui.HyperlinkLabel" icon="" removable="true" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="0" />
- </item>
</group>
</component>
<component name="uidesigner-configuration">
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index d1499b1..275077f 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,8 +2,6 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
- <mapping directory="$PROJECT_DIR$/../adt/idea" vcs="Git" />
- <mapping directory="$PROJECT_DIR$/../base" vcs="Git" />
</component>
</project>
diff --git a/build/conf/mac/Contents/Info.plist b/build/conf/mac/Contents/Info.plist
index b57f202..0603a25 100644
--- a/build/conf/mac/Contents/Info.plist
+++ b/build/conf/mac/Contents/Info.plist
@@ -39,7 +39,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleGetInfoString</key>
- <string>@@bundle_name@@ @@version@@, build @@build@@. Copyright @@company_name@@, (c) @@min_year@@-@@max_year@@</string>
+ <string>@@bundle_name@@ @@version@@, build @@build@@. Copyright JetBrains s.r.o., (c) 2000-@@year@@</string>
<key>CFBundleShortVersionString</key>
<string>@@version@@</string>
<key>CFBundleVersion</key>
diff --git a/community-main.iml b/community-main.iml
index 9e92fe4..6494bb3 100644
--- a/community-main.iml
+++ b/community-main.iml
@@ -86,8 +86,6 @@
<orderEntry type="module" module-name="github" />
<orderEntry type="module" module-name="hg4idea" />
<orderEntry type="module" module-name="android" />
- <orderEntry type="module" module-name="android-designer" />
- <orderEntry type="module" module-name="adt-branding" />
<orderEntry type="module" module-name="relaxng" />
<orderEntry type="module" module-name="gradle" />
<orderEntry type="module" module-name="remote-servers-impl" />
diff --git a/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java b/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java
index cd41313..777105f 100644
--- a/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java
+++ b/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java
@@ -15,20 +15,15 @@
*/
package com.intellij.ide.actions;
-import com.intellij.facet.Facet;
-import com.intellij.facet.FacetManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.options.newEditor.OptionsEditorDialog;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
-import com.intellij.openapi.ui.Messages;
public class ShowStructureSettingsAction extends AnAction implements DumbAware {
public void actionPerformed(AnActionEvent e) {
@@ -37,37 +32,6 @@
project = ProjectManager.getInstance().getDefaultProject();
}
- // TEMPORARY HACK! DO NOT MERGE INTO INTELLIJ. This just works around a lot
- // of confusion caused by the fact that the structure dialog lets you edit
- // project state which is ignored by gradle, so temporarily disable this
- // dialog for Android-Gradle-based projects.
- if (isGradleProject(project)) {
- showDisabledProjectStructureDialogMessage();
- }
-
ShowSettingsUtil.getInstance().editConfigurable(project, OptionsEditorDialog.DIMENSION_KEY, ProjectStructureConfigurable.getInstance(project));
}
-
- public static void showDisabledProjectStructureDialogMessage() {
- Messages.showInfoMessage(
- "We will provide a UI to configure project settings later. " +
- "Until then, please manually edit your build.gradle file to " +
- "configure source folders, libraries and dependencies.\n\n" +
- "NOTE THAT EDITS MADE IN THE FOLLOWING DIALOG DO NOT AFFECT THE GRADLE BUILD.\n" +
- "The dialog can be used for temporary adjustments to SDKs etc.",
- "Project Structure");
- }
-
- public static boolean isGradleProject(Project project) {
- ModuleManager moduleManager = ModuleManager.getInstance(project);
- for (Module module : moduleManager.getModules()) {
- FacetManager facetManager = FacetManager.getInstance(module);
- for (Facet facet : facetManager.getAllFacets()) {
- if ("android-gradle".equals(facet.getType().getStringId())) {
- return true;
- }
- }
- }
- return false;
- }
}
\ No newline at end of file
diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java
index 612399a..e654eab 100644
--- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java
+++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java
@@ -16,7 +16,6 @@
package com.intellij.openapi.roots.ui.configuration;
import com.intellij.compiler.actions.ArtifactAwareProjectSettingsService;
-import com.intellij.ide.actions.ShowStructureSettingsAction;
import com.intellij.ide.projectView.impl.ModuleGroup;
import com.intellij.ide.util.projectWizard.JdkChooserPanel;
import com.intellij.openapi.module.Module;
@@ -66,7 +65,6 @@
@Override
public void openLibrary(@NotNull final Library library) {
- warnIfGradleProject();
final ProjectStructureConfigurable config = ProjectStructureConfigurable.getInstance(myProject);
ShowSettingsUtil.getInstance().editConfigurable(myProject, config, new Runnable() {
@Override
@@ -83,7 +81,6 @@
@Override
public void openModuleSettings(final Module module) {
- warnIfGradleProject();
ModulesConfigurator.showDialog(myProject, module.getName(), null);
}
@@ -94,7 +91,6 @@
@Override
public void openModuleLibrarySettings(final Module module) {
- warnIfGradleProject();
ModulesConfigurator.showDialog(myProject, module.getName(), ClasspathEditor.NAME);
}
@@ -105,7 +101,6 @@
@Override
public void openContentEntriesSettings(final Module module) {
- warnIfGradleProject();
ModulesConfigurator.showDialog(myProject, module.getName(), ContentEntriesEditor.NAME);
}
@@ -116,7 +111,6 @@
@Override
public void openModuleDependenciesSettings(@NotNull final Module module, @Nullable final OrderEntry orderEntry) {
- warnIfGradleProject();
ShowSettingsUtil.getInstance().editConfigurable(myProject, ProjectStructureConfigurable.getInstance(myProject), new Runnable() {
@Override
public void run() {
@@ -132,7 +126,6 @@
@Override
public void openLibraryOrSdkSettings(@NotNull final OrderEntry orderEntry) {
- warnIfGradleProject();
final ProjectStructureConfigurable config = ProjectStructureConfigurable.getInstance(myProject);
ShowSettingsUtil.getInstance().editConfigurable(myProject, config, new Runnable() {
@Override
@@ -173,14 +166,6 @@
@Override
public void openArtifactSettings(@Nullable Artifact artifact) {
- warnIfGradleProject();
ModulesConfigurator.showArtifactSettings(myProject, artifact);
}
-
- // TEMPORARY HACK!! REMOVE ME ASAP!
- private void warnIfGradleProject() {
- if (ShowStructureSettingsAction.isGradleProject(myProject)) {
- ShowStructureSettingsAction.showDisabledProjectStructureDialogMessage();
- }
- }
}
diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java
index d0aa4f96..2cbde60 100644
--- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java
+++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java
@@ -27,6 +27,7 @@
import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.JavaVersionService;
import com.intellij.openapi.util.Comparing;
+import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
@@ -59,49 +60,24 @@
public static HighlightInfo checkInferredTypeArguments(PsiMethod genericMethod,
PsiMethodCallExpression call,
PsiSubstitutor substitutor) {
- PsiTypeParameter[] typeParameters = genericMethod.getTypeParameters();
- for (PsiTypeParameter typeParameter : typeParameters) {
- PsiType substituted = substitutor.substitute(typeParameter);
- if (substituted == null) return null;
- substituted = PsiUtil.captureToplevelWildcards(substituted, call);
- PsiClassType[] extendsTypes = typeParameter.getExtendsListTypes();
- for (PsiClassType type : extendsTypes) {
- PsiType extendsType = substitutor.substitute(type);
- if (substituted instanceof PsiWildcardType) {
- if (((PsiWildcardType)substituted).isSuper()) {
- continue;
- }
- final PsiType extendsBound = ((PsiWildcardType)substituted).getExtendsBound();
- if (TypeConversionUtil.erasure(extendsType).equals(TypeConversionUtil.erasure(extendsBound))) {
- if (extendsBound instanceof PsiClassType) {
- PsiType[] parameters = ((PsiClassType)extendsBound).getParameters();
- if (parameters.length == 1) {
- PsiType argType = parameters[0];
- if (argType instanceof PsiCapturedWildcardType) {
- argType = ((PsiCapturedWildcardType)argType).getWildcard();
- }
- if (argType instanceof PsiWildcardType && !((PsiWildcardType)argType).isBounded()) continue;
- }
- }
- }
- }
- if (!TypeConversionUtil.isAssignable(extendsType, substituted, false)) {
- PsiClass boundClass = extendsType instanceof PsiClassType ? ((PsiClassType)extendsType).resolve() : null;
+ final Pair<PsiTypeParameter, PsiType> inferredTypeArgument =
+ GenericsUtil.findTypeParameterWithBoundError(genericMethod.getTypeParameters(), substitutor, call, false);
+ if (inferredTypeArgument != null) {
+ final PsiType extendsType = inferredTypeArgument.second;
+ final PsiTypeParameter typeParameter = inferredTypeArgument.first;
+ PsiClass boundClass = extendsType instanceof PsiClassType ? ((PsiClassType)extendsType).resolve() : null;
- @NonNls String messageKey = boundClass == null || typeParameter.isInterface() == boundClass.isInterface()
- ? "generics.inferred.type.for.type.parameter.is.not.within.its.bound.extend"
- : "generics.inferred.type.for.type.parameter.is.not.within.its.bound.implement";
+ @NonNls String messageKey = boundClass == null || typeParameter.isInterface() == boundClass.isInterface()
+ ? "generics.inferred.type.for.type.parameter.is.not.within.its.bound.extend"
+ : "generics.inferred.type.for.type.parameter.is.not.within.its.bound.implement";
- String description = JavaErrorMessages.message(
- messageKey,
- HighlightUtil.formatClass(typeParameter),
- JavaHighlightUtil.formatType(extendsType),
- JavaHighlightUtil.formatType(substituted)
- );
-
- return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(call).descriptionAndTooltip(description).create();
- }
- }
+ String description = JavaErrorMessages.message(
+ messageKey,
+ HighlightUtil.formatClass(typeParameter),
+ JavaHighlightUtil.formatType(extendsType),
+ JavaHighlightUtil.formatType(substitutor.substitute(typeParameter))
+ );
+ return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(call).descriptionAndTooltip(description).create();
}
return null;
diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/CommentFormatter.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/CommentFormatter.java
index 624c537..aaf47cf 100644
--- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/CommentFormatter.java
+++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/CommentFormatter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2013 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.
@@ -20,6 +20,7 @@
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.util.text.LineTokenizer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
@@ -45,7 +46,7 @@
public CommentFormatter(@NotNull Project project) {
mySettings = CodeStyleSettingsManager.getSettings(project);
- myParser = new JDParser(mySettings);
+ myParser = new JDParser(mySettings, LanguageLevelProjectExtension.getInstance(project).getLanguageLevel());
myProject = project;
}
diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/JDParser.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/JDParser.java
index f4ba000..5dbc025 100644
--- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/JDParser.java
+++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/javadoc/JDParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2013 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.
@@ -17,6 +17,7 @@
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -39,9 +40,11 @@
private static final String SELF_CLOSED_P_TAG = "<p/>";
private final CodeStyleSettings mySettings;
+ private final LanguageLevel myLanguageLevel;
- public JDParser(@NotNull CodeStyleSettings settings) {
+ public JDParser(@NotNull CodeStyleSettings settings, @NotNull LanguageLevel languageLevel) {
mySettings = settings;
+ myLanguageLevel = languageLevel;
}
private static final char lineSeparator = '\n';
@@ -514,7 +517,13 @@
if (line.length() == 0 && !mySettings.JD_KEEP_EMPTY_LINES) continue;
if (i != 0) sb.append(prefix);
if (line.length() == 0 && mySettings.JD_P_AT_EMPTY_LINES && !insidePreTag) {
- sb.append(SELF_CLOSED_P_TAG);
+ if (myLanguageLevel.isAtLeast(LanguageLevel.JDK_1_8)) {
+ //Self-closing elements are not allowed for javadoc tool from JDK8
+ sb.append(P_START_TAG);
+ }
+ else {
+ sb.append(SELF_CLOSED_P_TAG);
+ }
}
else {
sb.append(line);
diff --git a/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PathListReferenceProvider.java b/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PathListReferenceProvider.java
index b21c395..3685ef7 100644
--- a/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PathListReferenceProvider.java
+++ b/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PathListReferenceProvider.java
@@ -16,22 +16,18 @@
package com.intellij.psi.impl.source.resolve.reference.impl.providers;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiReference;
-import com.intellij.psi.ElementManipulator;
-import com.intellij.psi.ElementManipulators;
-import com.intellij.psi.impl.source.resolve.reference.PsiReferenceProviderBase;
+import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.util.text.CharFilter;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.psi.*;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ProcessingContext;
-import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.util.text.CharFilter;
-import com.intellij.openapi.util.TextRange;
import org.jetbrains.annotations.NotNull;
/**
* @author davdeev
*/
-public class PathListReferenceProvider extends PsiReferenceProviderBase {
+public class PathListReferenceProvider extends PsiReferenceProvider {
@Override
@NotNull
diff --git a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java
index c09660c..4132f23 100644
--- a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java
+++ b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java
@@ -249,10 +249,17 @@
final PsiSubstitutor substitutor,
final PsiElement context,
final boolean allowUncheckedConversion) {
+ return findTypeParameterWithBoundError(typeParams, substitutor, context, allowUncheckedConversion) == null;
+ }
+
+ public static Pair<PsiTypeParameter, PsiType> findTypeParameterWithBoundError(final PsiTypeParameter[] typeParams,
+ final PsiSubstitutor substitutor,
+ final PsiElement context,
+ final boolean allowUncheckedConversion) {
nextTypeParam:
for (PsiTypeParameter typeParameter : typeParams) {
PsiType substituted = substitutor.substitute(typeParameter);
- if (substituted == null) return true;
+ if (substituted == null) return null;
substituted = PsiUtil.captureToplevelWildcards(substituted, context);
PsiClassType[] extendsTypes = typeParameter.getExtendsListTypes();
@@ -263,7 +270,7 @@
continue;
}
final PsiType extendsBound = ((PsiWildcardType)substituted).getExtendsBound();
- if (TypeConversionUtil.erasure(extendsType).equals(TypeConversionUtil.erasure(extendsBound))) {
+ if (Comparing.equal(TypeConversionUtil.erasure(extendsType), TypeConversionUtil.erasure(extendsBound))) {
if (extendsBound instanceof PsiClassType) {
if (acceptExtendsBound((PsiClassType)extendsBound, 0)) continue;
} else if (extendsBound instanceof PsiIntersectionType) {
@@ -275,12 +282,12 @@
}
}
}
- if (!TypeConversionUtil.isAssignable(extendsType, substituted, allowUncheckedConversion)) {
- return false;
+ if (extendsType != null && !TypeConversionUtil.isAssignable(extendsType, substituted, allowUncheckedConversion)) {
+ return Pair.create(typeParameter, extendsType);
}
}
}
- return true;
+ return null;
}
private static boolean acceptExtendsBound(PsiClassType extendsBound, int depth) {
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java
index 6dde420..bbe39b3 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java
@@ -572,10 +572,6 @@
final boolean captureWildcard) {
if (arg instanceof PsiWildcardType && !captureWildcard) return FAILED_INFERENCE;
if (arg != PsiType.NULL) {
- if (arg instanceof PsiWildcardType) {
- final PsiType bound = ((PsiWildcardType)arg).getBound();
- if (bound instanceof PsiClassType && ((PsiClassType)bound).isRaw()) return Pair.create(null, constraintType);
- }
return new Pair<PsiType, ConstraintType>(arg, constraintType);
}
return null;
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112122.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112122.java
new file mode 100644
index 0000000..bb1e1ab
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112122.java
@@ -0,0 +1,16 @@
+class Cast<T> implements SemElement {
+
+ {
+ final SemKey<? extends Cast> key = null;
+ final Cast semElement = getSemElement(key);
+ }
+
+ public <T extends SemElement> T getSemElement(SemKey<T> key) {
+ return null;
+ }
+
+
+ class SemKey<T extends SemElement> {}
+}
+
+interface SemElement {}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEADEV15534.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEADEV15534.java
index d4042a5..0fc7639 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEADEV15534.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEADEV15534.java
@@ -18,7 +18,7 @@
list.add(t1);
SortTest<?> t2 = new SortTest<Integer>(0);
list.add(t2);
- <error descr="Inferred type 'SortTest<capture<?>>' for type parameter 'T' is not within its bound; should implement 'java.lang.Comparable<? super SortTest<?>>'">Collections.sort(list)</error>;
+ <error descr="Inferred type 'SortTest<?>' for type parameter 'T' is not within its bound; should implement 'java.lang.Comparable<? super SortTest<?>>'">Collections.sort(list)</error>;
t1.compareTo<error descr="'compareTo(SortTest<capture<? extends java.lang.Comparable<capture<?>>>>)' in 'SortTest' cannot be applied to '(SortTest<capture<?>>)'">(t2)</error>;
//this should be OK
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java
index 3fef647..a0c0ffa 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java
@@ -300,7 +300,8 @@
public void testIDEA67682() { doTest5(false); }
public void testIDEA57391() { doTest5(false); }
public void testIDEA110869() { doTest5(false); }
- public void testIDEA110947() { doTest5(false); }
+ public void _testIDEA110947() { doTest5(false); }
+ public void testIDEA112122() { doTest5(false); }
public void testNoInferenceFromTypeCast() { doTest5(false); }
public void testCaptureWildcardsInTypeCasts() { doTest5(false); }
public void testIDEA111085() { doTest5(false); }
diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavadocFormatterTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavadocFormatterTest.java
index 24adb29..d4c7274 100644
--- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavadocFormatterTest.java
+++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavadocFormatterTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2013 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.
@@ -17,6 +17,8 @@
import com.intellij.lang.java.JavaLanguage;
+import com.intellij.openapi.roots.LanguageLevelProjectExtension;
+import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
/**
@@ -95,6 +97,7 @@
getSettings().getRootSettings().ENABLE_JAVADOC_FORMATTING = true;
getSettings().getRootSettings().WRAP_COMMENTS = true;
getSettings().getRootSettings().RIGHT_MARGIN = 20;
+ LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
doTextTest("/**\n" + " * <p />\n" + " * Another paragraph of the description placed after blank line.\n" + " */\n" + "class A{}",
"/**\n" +
@@ -107,11 +110,31 @@
"class A {\n" +
"}");
}
-
+
+ public void testSCR2632_JDK8_LanguageLevel() throws Exception {
+ getSettings().getRootSettings().ENABLE_JAVADOC_FORMATTING = true;
+ getSettings().getRootSettings().WRAP_COMMENTS = true;
+ getSettings().getRootSettings().RIGHT_MARGIN = 20;
+ LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_8);
+
+ doTextTest("/**\n" + " * <p />\n" + " * Another paragraph of the description placed after blank line.\n" + " */\n" + "class A{}",
+ "/**\n" +
+ " * <p>\n" +
+ " * Another paragraph\n" +
+ " * of the description\n" +
+ " * placed after\n" +
+ " * blank line.\n" +
+ " */\n" +
+ "class A {\n" +
+ "}");
+ }
+
+
public void testParagraphTagGeneration() {
// Inspired by IDEA-61811
getSettings().getRootSettings().ENABLE_JAVADOC_FORMATTING = true;
getSettings().getRootSettings().JD_P_AT_EMPTY_LINES = true;
+ LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
doTextTest(
"/**\n" +
" * line 1\n" +
@@ -618,4 +641,47 @@
"}";
doTextTest(before, before);
}
+
+
+ public void testNotGenerateSelfClosingPTagIfLanguageLevelJava8() throws Exception {
+ getSettings().getRootSettings().JD_P_AT_EMPTY_LINES = true;
+ getSettings().getRootSettings().ENABLE_JAVADOC_FORMATTING = true;
+ String before = "/**\n" +
+ " * Super method\n" +
+ " *\n" +
+ " * Super multiple times\n" +
+ " */\n" +
+ "public void voo() {\n" +
+ "}\n";
+ String after = "/**\n" +
+ " * Super method\n" +
+ " * <p>\n" +
+ " * Super multiple times\n" +
+ " */\n" +
+ "public void voo() {\n" +
+ "}\n";
+ doClassTest(before, after);
+ }
+
+ public void testGenerateSelfClosingPTagIfLanguageLevelNotJava8() throws Exception {
+ getSettings().getRootSettings().JD_P_AT_EMPTY_LINES = true;
+ getSettings().getRootSettings().ENABLE_JAVADOC_FORMATTING = true;
+ LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
+ String before = "/**\n" +
+ " * Super method\n" +
+ " *\n" +
+ " * Super multiple times\n" +
+ " */\n" +
+ "public void voo() {\n" +
+ "}\n";
+ String after = "/**\n" +
+ " * Super method\n" +
+ " * <p/>\n" +
+ " * Super multiple times\n" +
+ " */\n" +
+ "public void voo() {\n" +
+ "}\n";
+ doClassTest(before, after);
+ }
+
}
\ No newline at end of file
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java
index 5b89e1c..bab6a66 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java
@@ -293,8 +293,7 @@
externalProjectPath,
callback,
false,
- true,
- false
+ true
);
}
catch (IllegalArgumentException e) {
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java
index dc8aff7..b9692ef 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java
@@ -244,7 +244,7 @@
if (!toRefresh.isEmpty()) {
counter[0] = toRefresh.size();
for (String path : toRefresh) {
- refreshProject(project, externalSystemId, path, callback, true, false, true);
+ refreshProject(project, externalSystemId, path, callback, true, false);
}
}
}
@@ -361,7 +361,25 @@
* @param externalProjectPath path of the target gradle project's file
* @param callback callback to be notified on refresh result
* @param resolveLibraries flag that identifies whether gradle libraries should be resolved during the refresh
- * @param refreshingAllProjects indicates 'refreshing all projects' action
+ * @return the most up-to-date gradle project (if any)
+ */
+ public static void refreshProject(@NotNull final Project project,
+ @NotNull final ProjectSystemId externalSystemId,
+ @NotNull final String externalProjectPath,
+ @NotNull final ExternalProjectRefreshCallback callback,
+ final boolean resolveLibraries,
+ final boolean modal) {
+ refreshProject(project, externalSystemId, externalProjectPath, callback, resolveLibraries, modal, true);
+ }
+
+ /**
+ * Queries slave gradle process to refresh target gradle project.
+ *
+ * @param project target intellij project to use
+ * @param externalProjectPath path of the target gradle project's file
+ * @param callback callback to be notified on refresh result
+ * @param resolveLibraries flag that identifies whether gradle libraries should be resolved during the refresh
+ * @param reportRefreshError prevent to show annoying error notification, e.g. if auto-import mode used
* @return the most up-to-date gradle project (if any)
*/
public static void refreshProject(@NotNull final Project project,
@@ -370,7 +388,7 @@
@NotNull final ExternalProjectRefreshCallback callback,
final boolean resolveLibraries,
final boolean modal,
- final boolean refreshingAllProjects)
+ final boolean reportRefreshError)
{
File projectFile = new File(externalProjectPath);
final String projectName;
@@ -415,7 +433,7 @@
}
AbstractExternalSystemSettings<?, ?, ?> settings = manager.getSettingsProvider().fun(project);
ExternalProjectSettings projectSettings = settings.getLinkedProjectSettings(externalProjectPath);
- if (projectSettings == null || (projectSettings.isUseAutoImport() && !refreshingAllProjects)) {
+ if (projectSettings == null || !reportRefreshError) {
return;
}
ExternalSystemIdeNotificationManager notificationManager = ServiceManager.getService(ExternalSystemIdeNotificationManager.class);
@@ -650,7 +668,7 @@
}
}
};
- refreshProject(project, externalSystemId, projectSettings.getExternalProjectPath(), callback, resolveLibraries, modal, false);
+ refreshProject(project, externalSystemId, projectSettings.getExternalProjectPath(), callback, resolveLibraries, modal);
}
private interface TaskUnderProgress {
diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java
index 537e85c..fd5eef8 100644
--- a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java
+++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java
@@ -118,9 +118,8 @@
final RefEntity refElement = refElementDescriptor.getUserObject();
InspectionToolPresentation presentation = context.getPresentation(toolWrapper);
if (context.getUIOptions().SHOW_ONLY_DIFF && presentation.getElementStatus(refElement) == FileStatus.NOT_CHANGED) return;
- if (toolWrapper instanceof LocalInspectionToolWrapper) {
- final CommonProblemDescriptor[] problems = refElementDescriptor.getProblemDescriptors();
- if (problems != null) {
+ final CommonProblemDescriptor[] problems = refElementDescriptor.getProblemDescriptors();
+ if (problems != null) {
final RefElementNode elemNode = addNodeToParent(container, presentation, pNode);
for (CommonProblemDescriptor problem : problems) {
assert problem != null;
@@ -132,7 +131,6 @@
elemNode.setProblem(problems[0]);
}
}
- }
}
else {
if (canPackageRepeat) {
diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java
index 7d0575d..b9aa7ec 100644
--- a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java
+++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java
@@ -79,11 +79,12 @@
return;
}
+ e.getPresentation().setVisible(false);
+ e.getPresentation().setEnabled(false);
+
final InspectionTree tree = view.getTree();
final InspectionToolWrapper toolWrapper = tree.getSelectedToolWrapper();
if (!view.isSingleToolInSelection() || toolWrapper != myToolWrapper) {
- e.getPresentation().setVisible(false);
- e.getPresentation().setEnabled(false);
return;
}
diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java
index 295e608..d50bddc 100644
--- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java
+++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java
@@ -165,7 +165,7 @@
public CommonProblemDescriptor[] getSelectedDescriptors() {
final InspectionToolWrapper toolWrapper = getSelectedToolWrapper();
- if (getSelectionCount() == 0 || !(toolWrapper instanceof LocalInspectionToolWrapper)) return EMPTY_DESCRIPTORS;
+ if (getSelectionCount() == 0) return EMPTY_DESCRIPTORS;
final TreePath[] paths = getSelectionPaths();
final LinkedHashSet<CommonProblemDescriptor> descriptors = new LinkedHashSet<CommonProblemDescriptor>();
for (TreePath path : paths) {
diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameToIgnoredDirectoryFileInputValidator.java b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameToIgnoredDirectoryFileInputValidator.java
index 64b8136..8af7040 100644
--- a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameToIgnoredDirectoryFileInputValidator.java
+++ b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameToIgnoredDirectoryFileInputValidator.java
@@ -46,6 +46,6 @@
@Override
public boolean isInputValid(String newName, PsiElement element, ProcessingContext context) {
- return newName != null && newName.length() > 0 && newName.indexOf('\\') < 0 && newName.indexOf('/') < 0;
+ return newName != null && newName.length() > 0 && newName.indexOf('\\') < 0 && newName.indexOf('/') < 0 && newName.indexOf('\n') < 0;
}
}
diff --git a/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java b/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java
index ef79094..1077453 100644
--- a/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java
+++ b/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java
@@ -235,11 +235,6 @@
setupEnvironment(builder.environment());
builder.directory(myWorkDirectory);
builder.redirectErrorStream(myRedirectErrorStream);
-
- LOG.info("Command: " + getPreparedCommandLine(Platform.current()));
- LOG.info("Working directory: " + myWorkDirectory);
- LOG.info("Environment: " + builder.environment());
-
return builder.start();
}
catch (IOException e) {
@@ -261,7 +256,7 @@
}
}
- void setupEnvironment(final Map<String, String> environment) {
+ private void setupEnvironment(final Map<String, String> environment) {
environment.clear();
if (myPassParentEnvironment) {
diff --git a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java
index 30dad25..e80a037 100644
--- a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java
+++ b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java
@@ -1012,11 +1012,6 @@
}
ErrorReportSubmitter submitter = null;
for (ErrorReportSubmitter reporter : reporters) {
- /** Android Studio: Always use the android error reporter */
- String canonicalName = reporter.getClass().getCanonicalName();
- if (canonicalName != null && canonicalName.contains("android")) {
- return reporter;
- }
final PluginDescriptor descriptor = reporter.getPluginDescriptor();
if (pluginId == null && (descriptor == null || PluginId.getId("com.intellij") == descriptor.getPluginId())
|| descriptor != null && Comparing.equal(pluginId, descriptor.getPluginId())) {
diff --git a/platform/platform-impl/src/com/intellij/ide/actions/CreateDesktopEntryAction.java b/platform/platform-impl/src/com/intellij/ide/actions/CreateDesktopEntryAction.java
index 48b9698..c84f7e2 100644
--- a/platform/platform-impl/src/com/intellij/ide/actions/CreateDesktopEntryAction.java
+++ b/platform/platform-impl/src/com/intellij/ide/actions/CreateDesktopEntryAction.java
@@ -198,10 +198,6 @@
execPath = binPath + '/' + productName.toLowerCase() + ".sh";
if (new File(execPath).canExecute()) return execPath;
- final String scriptName = ApplicationNamesInfo.getInstance().getScriptName();
- String scriptPath = binPath + '/' + scriptName + ".sh";
- if (new File(scriptPath).canExecute()) return scriptPath;
-
return null;
}
diff --git a/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java b/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java
index 4f4e5ab..c1e32c6 100644
--- a/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java
+++ b/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java
@@ -40,7 +40,6 @@
urlTemplate = urlTemplate
.replace("$BUILD", appInfo.getBuild().asString())
.replace("$TIMEZONE", System.getProperty("user.timezone"))
- .replace("$VERSION", appInfo.getFullVersion())
.replace("$EVAL", isEvaluationLicense() ? "true" : "false");
BrowserUtil.launchBrowser(urlTemplate);
}
diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsProjectComponent.java b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsProjectComponent.java
index 28a17e2..0e5ac83 100644
--- a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsProjectComponent.java
+++ b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsProjectComponent.java
@@ -71,7 +71,18 @@
StatisticsNotificationManager.showNotification(statisticsService, myProject);
}
else if (StatisticsUploadAssistant.isSendAllowed() && StatisticsUploadAssistant.isTimeToSend()) {
- runWithDelay(statisticsService);
+ StatisticsService serviceToUse = null;
+ StatisticsServiceEP[] extensions = StatisticsService.EP_NAME.getExtensions();
+ if (extensions.length > 1) {
+ LOG.warn(String.format("More than one stats service detected (%s). Falling back to the built-in one", Arrays.toString(extensions)));
+ }
+ else if (extensions.length == 1) {
+ serviceToUse = extensions[0].getInstance();
+ }
+ if (serviceToUse == null) {
+ serviceToUse = statisticsService;
+ }
+ runWithDelay(serviceToUse);
}
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java
index 0200ae0..dd2490f 100755
--- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java
@@ -378,9 +378,7 @@
@NonNls StringBuilder buffer = new StringBuilder();
buffer.append(getVersionName());
buffer.append(" ");
- // Android Studio: Show version numbers even though we are on EAP
- // if (getMajorVersion() != null && !isEAP() && !isBetaOrRC()) {
- if (getMajorVersion() != null) {
+ if (getMajorVersion() != null && !isEAP() && !isBetaOrRC()) {
buffer.append(getMajorVersion());
if (getMinorVersion() != null && getMinorVersion().length() > 0){
diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java
index 32d6e41..d8172a6 100644
--- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java
+++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java
@@ -15,7 +15,6 @@
*/
package com.intellij.openapi.updateSettings.impl;
-import com.google.common.net.HttpHeaders;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.plugins.*;
import com.intellij.ide.reporter.ConnectionException;
@@ -742,27 +741,7 @@
OutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
try {
- URL requestUrl = new URL(new URL(getPatchesUrl()), fileName);
- URLConnection connection;
-
- int followCount = 2;
- while(true) {
- connection = requestUrl.openConnection();
-
- if (connection instanceof HttpURLConnection) {
- HttpURLConnection hcnx = (HttpURLConnection)connection;
- int code = hcnx.getResponseCode();
- if (code >= 301 && code <= 307 && --followCount >= 0) {
- String loc = hcnx.getHeaderField(HttpHeaders.LOCATION);
- if (loc != null) {
- requestUrl = new URL(loc);
- continue;
- }
- }
- }
- break;
- }
-
+ URLConnection connection = new URL(new URL(getPatchesUrl()), fileName).openConnection();
try {
InputStream in = UrlConnectionUtil.getConnectionInputStreamWithException(connection, i);
try {
diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java
index 0c33e2c..d1010f5 100644
--- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java
+++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java
@@ -16,7 +16,6 @@
package com.intellij.openapi.updateSettings.impl;
-import com.google.common.net.HttpHeaders;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.reporter.ConnectionException;
import com.intellij.openapi.application.ApplicationManager;
@@ -25,7 +24,6 @@
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.net.HttpConfigurable;
-import org.apache.commons.httpclient.HttpStatus;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -33,9 +31,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
-import java.net.HttpURLConnection;
import java.net.URL;
-import java.net.URLConnection;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
@@ -71,27 +67,7 @@
URL requestUrl = prepareRequestUrl(updateUrl);
- URLConnection cnx;
- int followCount = 2;
- while(true) {
- cnx = requestUrl.openConnection();
-
- if (cnx instanceof HttpURLConnection) {
- HttpURLConnection hcnx = (HttpURLConnection)cnx;
- int code = hcnx.getResponseCode();
- if (code >= 301 && code <= 307 && --followCount >= 0) {
- String loc = hcnx.getHeaderField(HttpHeaders.LOCATION);
- if (loc != null) {
- prepareUrl(loc);
- requestUrl = prepareRequestUrl(loc);
- continue;
- }
- }
- }
- break;
- }
-
- final InputStream inputStream = cnx.getInputStream();
+ final InputStream inputStream = requestUrl.openStream();
Reader reader = new InputStreamReader(inputStream);
try {
return new UpdatesInfo(JDOMUtil.loadDocument(inputStream).getRootElement());
diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java
index 5942f08..9932590 100644
--- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java
@@ -72,7 +72,7 @@
private final List<String> myCustomComponentIds = new ArrayList<String>();
private final Set<IdeStatusBarImpl> myChildren = new HashSet<IdeStatusBarImpl>();
- private ToolWindowsWidget myToolWindowWidget;
+ //private ToolWindowsWidget myToolWindowWidget;
private static class WidgetBean {
JComponent component;
@@ -164,7 +164,7 @@
}
if (master == null) {
- addWidget(myToolWindowWidget = new ToolWindowsWidget(this), Position.LEFT);
+ addWidget(new ToolWindowsWidget(this), Position.LEFT);
}
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
@@ -254,28 +254,28 @@
myCustomComponentIds.add(customId);
}
- @Override
- protected void processMouseMotionEvent(MouseEvent e) {
- final Point point = e.getPoint();
- if (myToolWindowWidget != null) {
- if(point.x < 42 && 0 <= point.y && point.y <= getHeight()) {
- myToolWindowWidget.mouseEntered();
- } else {
- myToolWindowWidget.mouseExited();
- }
- }
- super.processMouseMotionEvent(e);
- }
+ //@Override
+ //protected void processMouseMotionEvent(MouseEvent e) {
+ // final Point point = e.getPoint();
+ // if (myToolWindowWidget != null) {
+ // if(point.x < 42 && 0 <= point.y && point.y <= getHeight()) {
+ // myToolWindowWidget.mouseEntered();
+ // } else {
+ // myToolWindowWidget.mouseExited();
+ // }
+ // }
+ // super.processMouseMotionEvent(e);
+ //}
- @Override
- protected void processMouseEvent(MouseEvent e) {
- if (e.getID() == MouseEvent.MOUSE_EXITED && myToolWindowWidget != null) {
- if (!new Rectangle(0,0,22, getHeight()).contains(e.getPoint())) {
- myToolWindowWidget.mouseExited();
- }
- }
- super.processMouseEvent(e);
- }
+ //@Override
+ //protected void processMouseEvent(MouseEvent e) {
+ // if (e.getID() == MouseEvent.MOUSE_EXITED && myToolWindowWidget != null) {
+ // if (!new Rectangle(0,0,22, getHeight()).contains(e.getPoint())) {
+ // myToolWindowWidget.mouseExited();
+ // }
+ // }
+ // super.processMouseEvent(e);
+ //}
@Override
public void removeCustomIndicationComponent(@NotNull final JComponent c) {
diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java
index 7680beb..1ebb011 100644
--- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java
+++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java
@@ -16,6 +16,7 @@
package com.intellij.openapi.wm.impl.status;
import com.intellij.icons.AllIcons;
+import com.intellij.ide.IdeEventQueue;
import com.intellij.ide.ui.UISettings;
import com.intellij.ide.ui.UISettingsListener;
import com.intellij.openapi.Disposable;
@@ -38,7 +39,6 @@
import javax.swing.*;
import java.awt.*;
-import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -52,6 +52,7 @@
private final Alarm myAlarm;
private StatusBar myStatusBar;
private JBPopup popup;
+ private boolean wasExited = false;
ToolWindowsWidget(Disposable parent) {
new BaseButtonBehavior(this, TimedDeadzone.NULL) {
@@ -61,95 +62,116 @@
}
}.setActionTrigger(MouseEvent.MOUSE_PRESSED);
+ IdeEventQueue.getInstance().addDispatcher(new IdeEventQueue.EventDispatcher() {
+ @Override
+ public boolean dispatch(AWTEvent e) {
+ if (e instanceof MouseEvent) {
+ if (e.getID() == MouseEvent.MOUSE_MOVED && isShowing()) {
+ Point p = ((MouseEvent)e).getLocationOnScreen();
+ Point screen = ToolWindowsWidget.this.getLocationOnScreen();
+ if (new Rectangle(screen.x - 4, screen.y - 2, getWidth() + 4, getHeight() + 4).contains(p)) {
+ mouseEntered();
+ wasExited = false;
+ } else {
+ if (!wasExited) {
+ wasExited = mouseExited(p);
+ }
+ }
+ }
+ }
+ return false;
+ }
+ }, parent);
+
UISettings.getInstance().addUISettingsListener(this, this);
KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", this);
myAlarm = new Alarm(parent);
}
- public void mouseExited() {
+ public boolean mouseExited(Point currentLocationOnScreen) {
myAlarm.cancelAllRequests();
+ if (popup != null && popup.isVisible()) {
+ final Point screen = popup.getLocationOnScreen();
+ final Rectangle popupScreenRect = new Rectangle(screen.x, screen.y, popup.getSize().width, popup.getSize().height);
+ if (! popupScreenRect.contains(currentLocationOnScreen)) {
+ myAlarm.cancelAllRequests();
+ myAlarm.addRequest(new Runnable() {
+ @Override
+ public void run() {
+ if (popup != null && popup.isVisible()) {
+ popup.cancel();
+ }
+ }
+ }, 150);
+ return true;
+ }
+ }
+ return false;
}
public void mouseEntered() {
- if (myAlarm.getActiveRequestCount() == 0)
- myAlarm.addRequest(new Runnable() {
- @Override
- public void run() {
- DefaultListModel model = new DefaultListModel();
- final IdeFrameImpl frame = UIUtil.getParentOfType(IdeFrameImpl.class, ToolWindowsWidget.this);
- if (frame == null) return;
- final ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(frame.getProject());
- for (String id : toolWindowManager.getToolWindowIds()) {
- final ToolWindow tw = toolWindowManager.getToolWindow(id);
- if (tw.isAvailable()) {
- model.addElement(tw);
- }
- }
-
- final JBList list = new JBList(model);
- list.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent e) {
- myAlarm.cancelAllRequests();
+ if (myAlarm.getActiveRequestCount() == 0) {
+ myAlarm.addRequest(new Runnable() {
+ @Override
+ public void run() {
+ DefaultListModel model = new DefaultListModel();
+ final IdeFrameImpl frame = UIUtil.getParentOfType(IdeFrameImpl.class, ToolWindowsWidget.this);
+ if (frame == null) return;
+ final ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(frame.getProject());
+ for (String id : toolWindowManager.getToolWindowIds()) {
+ final ToolWindow tw = toolWindowManager.getToolWindow(id);
+ if (tw.isAvailable()) {
+ model.addElement(tw);
+ }
}
- @Override
- public void mouseExited(MouseEvent e) {
- myAlarm.addRequest(new Runnable() {
+ final JBList list = new JBList(model);
+ list.setCellRenderer(new ListCellRenderer() {
+ final JBLabel label = new JBLabel();
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ final ToolWindow toolWindow = (ToolWindow)value;
+ label.setText(toolWindow instanceof ToolWindowImpl ? ((ToolWindowImpl)toolWindow).getId() : toolWindow.getTitle());
+ label.setIcon(toolWindow.getIcon());
+ label.setBorder(IdeBorderFactory.createEmptyBorder(4, 10, 4, 10));
+ label.setForeground(UIUtil.getListForeground(isSelected));
+ label.setBackground(UIUtil.getListBackground(isSelected));
+ final JPanel panel = new JPanel(new BorderLayout());
+ panel.add(label, BorderLayout.CENTER);
+ panel.setBackground(UIUtil.getListBackground(isSelected));
+ return panel;
+ }
+ });
+
+ final Dimension size = list.getPreferredSize();
+ final JComponent c = ToolWindowsWidget.this;
+ final RelativePoint point = new RelativePoint(c, new Point(-4, -4 - size.height));
+
+
+ if (popup != null && popup.isVisible()) {
+ return;
+ }
+
+ list.setSelectedIndex(list.getItemsCount() - 1);
+ popup = JBPopupFactory.getInstance().createListPopupBuilder(list)
+ .setAutoselectOnMouseMove(true)
+ .setItemChoosenCallback(new Runnable() {
@Override
public void run() {
- if (popup != null && popup.isVisible()) {
- popup.cancel();
+ if (popup != null) popup.closeOk(null);
+ final Object value = list.getSelectedValue();
+ if (value instanceof ToolWindow) {
+ ((ToolWindow)value).activate(null, true, true);
}
}
- }, 300);
- }
- });
- list.setCellRenderer(new ListCellRenderer() {
- final JBLabel label = new JBLabel();
+ })
+ .createPopup();
- @Override
- public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
- final ToolWindow toolWindow = (ToolWindow)value;
- label.setText(toolWindow instanceof ToolWindowImpl ? ((ToolWindowImpl)toolWindow).getId() : toolWindow.getTitle());
- label.setIcon(toolWindow.getIcon());
- label.setBorder(IdeBorderFactory.createEmptyBorder(4, 10, 4, 10));
- label.setForeground(UIUtil.getListForeground(isSelected));
- label.setBackground(UIUtil.getListBackground(isSelected));
- final JPanel panel = new JPanel(new BorderLayout());
- panel.add(label, BorderLayout.CENTER);
- panel.setBackground(UIUtil.getListBackground(isSelected));
- return panel;
- }
- });
-
- final Dimension size = list.getPreferredSize();
- final JComponent c = ToolWindowsWidget.this;
- final RelativePoint point = new RelativePoint(c, new Point(-4, -10 - size.height));
-
-
- if (popup != null && popup.isVisible()) {
- return;
+ popup.show(point);
}
-
- list.setSelectedIndex(list.getItemsCount() - 1);
- popup = JBPopupFactory.getInstance().createListPopupBuilder(list)
- .setAutoselectOnMouseMove(true)
- .setItemChoosenCallback(new Runnable() {
- @Override
- public void run() {
- if (popup != null) popup.closeOk(null);
- final Object value = list.getSelectedValue();
- if (value instanceof ToolWindow) {
- ((ToolWindow)value).activate(null, true, true);
- }
- }
- })
- .createPopup();
-
- popup.show(point);
- }
- }, 300);
+ }, 300);
+ }
}
@Override
diff --git a/platform/platform-resources-en/src/messages/UIBundle.properties b/platform/platform-resources-en/src/messages/UIBundle.properties
index 14c7351..04a5c32 100644
--- a/platform/platform-resources-en/src/messages/UIBundle.properties
+++ b/platform/platform-resources-en/src/messages/UIBundle.properties
@@ -89,7 +89,7 @@
file.chooser.default.title=Select Path
file.chooser.save.dialog.default.title=Select File to Save
-file.chooser.save.dialog.confirmation={0} is already exists.\nDo you want to replace it?
+file.chooser.save.dialog.confirmation={0} already exists.\nDo you want to replace it?
file.chooser.save.dialog.confirmation.title=Confirm Save as
file.chooser.select.object.title=Select {0}
delete.dialog.title=Delete
diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentRuntime.java b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentRuntime.java
index 6bae6c8..7a6cbd1 100644
--- a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentRuntime.java
+++ b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentRuntime.java
@@ -6,13 +6,12 @@
/**
* @author nik
*/
-public class DeploymentRuntime {
+public abstract class DeploymentRuntime {
public boolean isUndeploySupported() {
- return false;
+ return true;
}
- public void undeploy(@NotNull UndeploymentTaskCallback callback) {
- }
+ public abstract void undeploy(@NotNull UndeploymentTaskCallback callback);
public interface UndeploymentTaskCallback extends RemoteOperationCallback {
void succeeded();
diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java
index b54e564..499ec74 100644
--- a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java
+++ b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java
@@ -2,12 +2,9 @@
import com.intellij.remoteServer.configuration.deployment.DeploymentConfiguration;
import com.intellij.remoteServer.configuration.deployment.DeploymentSource;
-import com.intellij.remoteServer.runtime.Deployment;
import com.intellij.remoteServer.runtime.RemoteOperationCallback;
import org.jetbrains.annotations.NotNull;
-import java.util.List;
-
/**
* @author nik
*/
@@ -15,7 +12,7 @@
public abstract void deploy(@NotNull DeploymentTask<D> task, @NotNull DeploymentOperationCallback callback);
- public abstract void computeDeployments(@NotNull ComputeDeploymentsCallback deployments);
+ public abstract void computeDeployments(@NotNull ComputeDeploymentsCallback callback);
@NotNull
public String getDeploymentName(@NotNull DeploymentSource source) {
@@ -29,6 +26,7 @@
}
public interface ComputeDeploymentsCallback extends RemoteOperationCallback {
- void succeeded(@NotNull List<Deployment> deployments);
+ void addDeployment(@NotNull String deploymentName);
+ void succeeded();
}
}
diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java
index f4de05e..ea83602 100644
--- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java
+++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java
@@ -121,11 +121,18 @@
@Override
public void connected(@NotNull ServerRuntimeInstance<D> instance) {
instance.computeDeployments(new ServerRuntimeInstance.ComputeDeploymentsCallback() {
+ private final List<Deployment> myDeployments = new ArrayList<Deployment>();
+
@Override
- public void succeeded(@NotNull List<Deployment> deployments) {
+ public void addDeployment(@NotNull String deploymentName) {
+ myDeployments.add(new DeploymentImpl(deploymentName, DeploymentStatus.DEPLOYED, null, null));
+ }
+
+ @Override
+ public void succeeded() {
synchronized (myRemoteDeployments) {
myRemoteDeployments.clear();
- for (Deployment deployment : deployments) {
+ for (Deployment deployment : myDeployments) {
myRemoteDeployments.put(deployment.getName(), deployment);
}
}
@@ -155,7 +162,7 @@
runtime.undeploy(new DeploymentRuntime.UndeploymentTaskCallback() {
@Override
public void succeeded() {
- myLocalDeployments.put(deploymentName, new DeploymentImpl(deploymentName, DeploymentStatus.NOT_DEPLOYED, null, null));
+ myLocalDeployments.remove(deploymentName);
myEventDispatcher.queueDeploymentsChanged(ServerConnectionImpl.this);
}
diff --git a/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListProcessor.java b/platform/util/src/com/intellij/openapi/util/text/DelimitedListProcessor.java
similarity index 97%
rename from xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListProcessor.java
rename to platform/util/src/com/intellij/openapi/util/text/DelimitedListProcessor.java
index ba05968..07142b4 100644
--- a/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListProcessor.java
+++ b/platform/util/src/com/intellij/openapi/util/text/DelimitedListProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.util.xml.converters;
+package com.intellij.openapi.util.text;
import org.jetbrains.annotations.NotNull;
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 82bd5a4..afafbaf 100644
--- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java
+++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java
@@ -248,7 +248,6 @@
return html.replaceAll("<(.|\n)*?>", "");
}
- @Nullable
public static String toLowerCase(@Nullable final String str) {
//noinspection ConstantConditions
return str == null ? null : str.toLowerCase();
diff --git a/plugins/android/lib/guava-13.0.1.jar b/plugins/android/lib/guava-13.0.1.jar
deleted file mode 100644
index 09c5449..0000000
--- a/plugins/android/lib/guava-13.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/android/lib/jarutils.jar b/plugins/android/lib/jarutils.jar
deleted file mode 100644
index 1259ccf..0000000
--- a/plugins/android/lib/jarutils.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/github/src/META-INF/github-tracker.xml b/plugins/github/src/META-INF/github-tracker.xml
index e33dd36..9264670 100644
--- a/plugins/github/src/META-INF/github-tracker.xml
+++ b/plugins/github/src/META-INF/github-tracker.xml
@@ -1,6 +1,6 @@
<idea-plugin version="2">
<extensions defaultExtensionNs="com.intellij">
- <checkoutCompletedListener implementation="org.jetbrains.plugins.github.GithubCheckoutListener"
+ <checkoutCompletedListener implementation="org.jetbrains.plugins.github.extensions.GithubCheckoutListener"
order="after PlatformProjectCheckoutListener"/>
<tasks.repositoryType implementation="org.jetbrains.plugins.github.tasks.GithubRepositoryType"/>
</extensions>
diff --git a/plugins/github/src/META-INF/plugin.xml b/plugins/github/src/META-INF/plugin.xml
index cc74486..86240aa 100644
--- a/plugins/github/src/META-INF/plugin.xml
+++ b/plugins/github/src/META-INF/plugin.xml
@@ -10,19 +10,19 @@
<extensions defaultExtensionNs="com.intellij">
<errorHandler implementation="com.intellij.diagnostic.ITNReporter"/>
- <checkoutProvider implementation="org.jetbrains.plugins.github.GithubCheckoutProvider"/>
- <applicationService serviceInterface="org.jetbrains.plugins.github.GithubSettings"
- serviceImplementation="org.jetbrains.plugins.github.GithubSettings"/>
- <vcsAnnotationGutterActionProvider implementation="org.jetbrains.plugins.github.GithubAnnotationGutterActionProvider" />
- <checkoutCompletedListener implementation="org.jetbrains.plugins.github.GithubCheckoutListener" order="after PlatformProjectCheckoutListener"/>
+ <checkoutProvider implementation="org.jetbrains.plugins.github.extensions.GithubCheckoutProvider"/>
+ <applicationService serviceInterface="org.jetbrains.plugins.github.util.GithubSettings"
+ serviceImplementation="org.jetbrains.plugins.github.util.GithubSettings"/>
+ <vcsAnnotationGutterActionProvider implementation="org.jetbrains.plugins.github.extensions.GithubAnnotationGutterActionProvider" />
+ <checkoutCompletedListener implementation="org.jetbrains.plugins.github.extensions.GithubCheckoutListener" order="after PlatformProjectCheckoutListener"/>
<vcsConfigurableProvider implementation="org.jetbrains.plugins.github.ui.GithubSettingsConfigurable"/>
- <applicationService serviceInterface="org.jetbrains.plugins.github.GithubSslSupport"
- serviceImplementation="org.jetbrains.plugins.github.GithubSslSupport"/>
+ <applicationService serviceInterface="org.jetbrains.plugins.github.util.GithubSslSupport"
+ serviceImplementation="org.jetbrains.plugins.github.util.GithubSslSupport"/>
</extensions>
<extensions defaultExtensionNs="Git4Idea">
- <GitHttpAuthDataProvider implementation="org.jetbrains.plugins.github.GithubHttpAuthDataProvider" />
+ <GitHttpAuthDataProvider implementation="org.jetbrains.plugins.github.extensions.GithubHttpAuthDataProvider" />
</extensions>
<actions>
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCreateGistAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubCreateGistAction.java
index 0ca65ea..5983302 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubCreateGistAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubCreateGistAction.java
@@ -25,7 +25,6 @@
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
@@ -34,12 +33,17 @@
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.ThrowableConvertor;
import icons.GithubIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubGist;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
import org.jetbrains.plugins.github.ui.GithubCreateGistDialog;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUtil;
import java.io.IOException;
import java.util.*;
@@ -106,17 +110,27 @@
return;
}
- final GithubAuthData auth = dialog.isAnonymous() ? GithubAuthData.createAnonymous() : getValidAuthData(project);
- if (auth == null) {
- return;
+ GithubAuthData auth = GithubAuthData.createAnonymous();
+ if (!dialog.isAnonymous()) {
+ try {
+ auth = getValidAuthData(project);
+ }
+ catch (GithubAuthenticationCanceledException e) {
+ return;
+ }
+ catch (IOException e) {
+ GithubNotifications.showError(project, "Can't create gist", e);
+ return;
+ }
}
final Ref<String> url = new Ref<String>();
+ final GithubAuthData finalAuth = auth;
new Task.Backgroundable(project, "Creating Gist...") {
@Override
public void run(@NotNull ProgressIndicator indicator) {
List<FileContent> contents = collectContents(project, editor, file, files);
- String gistUrl = createGist(project, auth, contents, dialog.isPrivate(), dialog.getDescription(), dialog.getFileName());
+ String gistUrl = createGist(project, finalAuth, contents, dialog.isPrivate(), dialog.getDescription(), dialog.getFileName());
url.set(gistUrl);
}
@@ -135,15 +149,15 @@
}.queue();
}
- @Nullable
- private static GithubAuthData getValidAuthData(@NotNull final Project project) {
- final Ref<GithubAuthData> authDataRef = new Ref<GithubAuthData>();
- ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- authDataRef.set(GithubUtil.getValidAuthDataFromConfig(project, indicator));
- }
- });
- return authDataRef.get();
+ @NotNull
+ private static GithubAuthData getValidAuthData(@NotNull final Project project) throws IOException {
+ return GithubUtil.computeValueInModal(project, "Access to GitHub",
+ new ThrowableConvertor<ProgressIndicator, GithubAuthData, IOException>() {
+ @Override
+ public GithubAuthData convert(ProgressIndicator indicator) throws IOException {
+ return GithubUtil.getValidAuthDataFromConfig(project, indicator);
+ }
+ });
}
@NotNull
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java
index 99bf9af..ec135c2 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java
@@ -21,7 +21,6 @@
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
@@ -39,6 +38,7 @@
import com.intellij.util.Function;
import com.intellij.util.ThrowableConsumer;
+import com.intellij.util.ThrowableConvertor;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashSet;
import com.intellij.util.ui.UIUtil;
@@ -58,7 +58,12 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.*;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
import org.jetbrains.plugins.github.ui.GithubCreatePullRequestDialog;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
import javax.swing.*;
import java.awt.*;
@@ -66,7 +71,7 @@
import java.util.*;
import java.util.List;
-import static org.jetbrains.plugins.github.GithubUtil.setVisibleEnabled;
+import static org.jetbrains.plugins.github.util.GithubUtil.setVisibleEnabled;
/**
* @author Aleksey Pivovarov
@@ -212,35 +217,31 @@
private static GithubInfo loadGithubInfoWithModal(@NotNull final Project project,
@NotNull final GithubFullPath userAndRepo,
@Nullable final GithubFullPath upstreamUserAndRepo) {
- final Ref<GithubInfo> githubInfoRef = new Ref<GithubInfo>();
- final Ref<IOException> exceptionRef = new Ref<IOException>();
- ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- try {
- final Ref<GithubRepoDetailed> reposRef = new Ref<GithubRepoDetailed>();
- final GithubAuthData auth =
- GithubUtil.runAndGetValidAuth(project, indicator, new ThrowableConsumer<GithubAuthData, IOException>() {
- @Override
- public void consume(GithubAuthData authData) throws IOException {
- reposRef.set(GithubApiUtil.getDetailedRepoInfo(authData, userAndRepo.getUser(), userAndRepo.getRepository()));
- }
- });
- List<RemoteBranch> branches = loadAvailableBranchesFromGithub(project, auth, reposRef.get(), upstreamUserAndRepo);
- githubInfoRef.set(new GithubInfo(auth, reposRef.get(), branches));
- }
- catch (IOException e) {
- exceptionRef.set(e);
- }
- }
- });
- if (!exceptionRef.isNull()) {
- if (exceptionRef.get() instanceof GithubAuthenticationCanceledException) {
- return null;
- }
- GithubNotifications.showErrorDialog(project, CANNOT_CREATE_PULL_REQUEST, exceptionRef.get());
+ try {
+ return GithubUtil
+ .computeValueInModal(project, "Access to GitHub", new ThrowableConvertor<ProgressIndicator, GithubInfo, IOException>() {
+ @Override
+ public GithubInfo convert(ProgressIndicator indicator) throws IOException {
+ final Ref<GithubRepoDetailed> reposRef = new Ref<GithubRepoDetailed>();
+ final GithubAuthData auth =
+ GithubUtil.runAndGetValidAuth(project, indicator, new ThrowableConsumer<GithubAuthData, IOException>() {
+ @Override
+ public void consume(GithubAuthData authData) throws IOException {
+ reposRef.set(GithubApiUtil.getDetailedRepoInfo(authData, userAndRepo.getUser(), userAndRepo.getRepository()));
+ }
+ });
+ List<RemoteBranch> branches = loadAvailableBranchesFromGithub(project, auth, reposRef.get(), upstreamUserAndRepo);
+ return new GithubInfo(auth, reposRef.get(), branches);
+ }
+ });
+ }
+ catch (GithubAuthenticationCanceledException e) {
return null;
}
- return githubInfoRef.get();
+ catch (IOException e) {
+ GithubNotifications.showErrorDialog(project, CANNOT_CREATE_PULL_REQUEST, e);
+ return null;
+ }
}
@Nullable
@@ -436,21 +437,21 @@
@NotNull final GitRepository repository,
@NotNull final String currentBranch,
@NotNull final String targetBranch) {
- final Ref<DiffInfo> infoRef = new Ref<DiffInfo>();
- ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- try {
+ try {
+ return GithubUtil.computeValueInModal(project, "Access to Git", new ThrowableConvertor<ProgressIndicator, DiffInfo, VcsException>() {
+ @Override
+ public DiffInfo convert(ProgressIndicator indicator) throws VcsException {
List<GitCommit> commits = GitHistoryUtils.history(project, repository.getRoot(), targetBranch + "..");
Collection<Change> diff =
GitChangeUtils.getDiff(repository.getProject(), repository.getRoot(), targetBranch, currentBranch, null);
- infoRef.set(new DiffInfo(targetBranch, currentBranch, commits, diff));
+ return new DiffInfo(targetBranch, currentBranch, commits, diff);
}
- catch (VcsException e) {
- LOG.info(e);
- }
- }
- });
- return infoRef.get();
+ });
+ }
+ catch (VcsException e) {
+ LOG.info(e);
+ return null;
+ }
}
private static class GithubCreatePullRequestDiffDialog extends DialogWrapper {
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubOpenInBrowserAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubOpenInBrowserAction.java
index f1b7d30..4399bae 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubOpenInBrowserAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubOpenInBrowserAction.java
@@ -33,8 +33,11 @@
import icons.GithubIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
-import static org.jetbrains.plugins.github.GithubUtil.setVisibleEnabled;
+import static org.jetbrains.plugins.github.util.GithubUtil.setVisibleEnabled;
/**
* Created by IntelliJ IDEA.
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java
index a9edef5..1db546b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java
@@ -44,11 +44,13 @@
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubFullPath;
import org.jetbrains.plugins.github.api.GithubRepoDetailed;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
+import org.jetbrains.plugins.github.util.*;
import java.io.IOException;
import java.util.Collections;
-import static org.jetbrains.plugins.github.GithubUtil.setVisibleEnabled;
+import static org.jetbrains.plugins.github.util.GithubUtil.setVisibleEnabled;
/**
* Created by IntelliJ IDEA.
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java
index 3893969..5aa1934 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java
@@ -20,7 +20,6 @@
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
@@ -33,6 +32,7 @@
import com.intellij.openapi.vcs.ui.CommitMessage;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ThrowableConsumer;
+import com.intellij.util.ThrowableConvertor;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashSet;
import com.intellij.vcsUtil.VcsFileUtil;
@@ -51,13 +51,18 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.*;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
import org.jetbrains.plugins.github.ui.GithubShareDialog;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
import javax.swing.*;
import java.io.IOException;
import java.util.*;
-import static org.jetbrains.plugins.github.GithubUtil.setVisibleEnabled;
+import static org.jetbrains.plugins.github.util.GithubUtil.setVisibleEnabled;
/**
* @author oleg
@@ -192,42 +197,38 @@
@Nullable
private static GithubInfo loadGithubInfoWithModal(@NotNull final Project project) {
- final Ref<GithubInfo> githubInfoRef = new Ref<GithubInfo>();
- final Ref<IOException> exceptionRef = new Ref<IOException>();
- ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- try {
- // get existing github repos (network) and validate auth data
- final Ref<List<GithubRepo>> availableReposRef = new Ref<List<GithubRepo>>();
- final GithubAuthData auth =
- GithubUtil.runAndGetValidAuth(project, indicator, new ThrowableConsumer<GithubAuthData, IOException>() {
- @Override
- public void consume(GithubAuthData authData) throws IOException {
- availableReposRef.set(GithubApiUtil.getAvailableRepos(authData));
- }
- });
- final HashSet<String> names = new HashSet<String>();
- for (GithubRepo info : availableReposRef.get()) {
- names.add(info.getName());
- }
+ try {
+ return GithubUtil
+ .computeValueInModal(project, "Access to GitHub", new ThrowableConvertor<ProgressIndicator, GithubInfo, IOException>() {
+ @Override
+ public GithubInfo convert(ProgressIndicator indicator) throws IOException {
+ // get existing github repos (network) and validate auth data
+ final Ref<List<GithubRepo>> availableReposRef = new Ref<List<GithubRepo>>();
+ final GithubAuthData auth =
+ GithubUtil.runAndGetValidAuth(project, indicator, new ThrowableConsumer<GithubAuthData, IOException>() {
+ @Override
+ public void consume(GithubAuthData authData) throws IOException {
+ availableReposRef.set(GithubApiUtil.getUserRepos(authData));
+ }
+ });
+ final HashSet<String> names = new HashSet<String>();
+ for (GithubRepo info : availableReposRef.get()) {
+ names.add(info.getName());
+ }
- // check access to private repos (network)
- final GithubUserDetailed userInfo = GithubApiUtil.getCurrentUserDetailed(auth);
- githubInfoRef.set(new GithubInfo(auth, userInfo, names));
- }
- catch (IOException e) {
- exceptionRef.set(e);
- }
- }
- });
- if (!exceptionRef.isNull()) {
- if (exceptionRef.get() instanceof GithubAuthenticationCanceledException) {
- return null;
- }
- GithubNotifications.showErrorDialog(project, "Failed to connect to GitHub", exceptionRef.get());
+ // check access to private repos (network)
+ final GithubUserDetailed userInfo = GithubApiUtil.getCurrentUserDetailed(auth);
+ return new GithubInfo(auth, userInfo, names);
+ }
+ });
+ }
+ catch (GithubAuthenticationCanceledException e) {
return null;
}
- return githubInfoRef.get();
+ catch (IOException e) {
+ GithubNotifications.showErrorDialog(project, "Failed to connect to GitHub", e);
+ return null;
+ }
}
@Nullable
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserAction.java
index 4e8970e..1dc7aad 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserAction.java
@@ -22,6 +22,9 @@
import git4idea.repo.GitRepository;
import icons.GithubIcons;
import org.jetbrains.plugins.github.api.GithubFullPath;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
/**
* @author Kirill Likhodedov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromAnnotateAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromAnnotateAction.java
index 9f0b394..0b02a0b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromAnnotateAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromAnnotateAction.java
@@ -30,6 +30,7 @@
import git4idea.repo.GitRepository;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.github.util.GithubUtil;
/**
* @author Kirill Likhodedov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromLogAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromLogAction.java
index dfb4727..139716e 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromLogAction.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShowCommitInBrowserFromLogAction.java
@@ -25,6 +25,7 @@
import git4idea.repo.GitRepository;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.github.util.GithubUtil;
/**
* @author Kirill Likhodedov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java
index 50da928..ba7a8cd 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java
@@ -26,12 +26,15 @@
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.*;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationException;
+import org.jetbrains.plugins.github.exceptions.GithubJsonException;
+import org.jetbrains.plugins.github.exceptions.GithubStatusCodeException;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubSslSupport;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
+import java.io.*;
import java.net.URLEncoder;
import java.util.*;
@@ -234,7 +237,7 @@
return new JsonParser().parse(reader);
}
catch (JsonSyntaxException jse) {
- throw new JsonException(String.format("Couldn't parse GitHub response:%n%s", githubResponse), jse);
+ throw new GithubJsonException("Couldn't parse GitHub response", jse);
}
finally {
reader.close();
@@ -274,12 +277,12 @@
*/
static <Raw extends DataConstructor, Result> Result createDataFromRaw(@NotNull Raw rawObject, @NotNull Class<Result> resultClass)
- throws JsonException {
+ throws GithubJsonException {
try {
return rawObject.create(resultClass);
}
catch (Exception e) {
- throw new JsonException("Json parse error", e);
+ throw new GithubJsonException("Json parse error", e);
}
}
@@ -316,7 +319,7 @@
}
if (!response.getJsonElement().isJsonArray()) {
- throw new JsonException("Wrong json type: expected JsonArray");
+ throw new GithubJsonException("Wrong json type: expected JsonArray", new Exception(response.getJsonElement().toString()));
}
myNextPage = response.getNextPage();
@@ -345,7 +348,7 @@
@NotNull
private static <T> T fromJson(@Nullable JsonElement json, @NotNull Class<T> classT) throws IOException {
if (json == null) {
- throw new JsonException("Unexpected empty response");
+ throw new GithubJsonException("Unexpected empty response");
}
T res;
@@ -355,13 +358,13 @@
res = (T)gson.fromJson(json, classT);
}
catch (ClassCastException e) {
- throw new JsonException("Parse exception while converting JSON to object " + classT.toString(), e);
+ throw new GithubJsonException("Parse exception while converting JSON to object " + classT.toString(), e);
}
catch (JsonParseException e) {
- throw new JsonException("Parse exception while converting JSON to object " + classT.toString(), e);
+ throw new GithubJsonException("Parse exception while converting JSON to object " + classT.toString(), e);
}
if (res == null) {
- throw new JsonException("Empty Json response");
+ throw new GithubJsonException("Empty Json response");
}
return res;
}
@@ -432,19 +435,8 @@
}
@NotNull
- public static List<GithubRepo> getAvailableRepos(@NotNull GithubAuthData auth) throws IOException {
- return doGetAvailableRepos(auth, null);
- }
-
- @NotNull
- public static List<GithubRepo> getAvailableRepos(@NotNull GithubAuthData auth, @NotNull String user) throws IOException {
- return doGetAvailableRepos(auth, user);
- }
-
- @NotNull
- private static List<GithubRepo> doGetAvailableRepos(@NotNull GithubAuthData auth, @Nullable String user) throws IOException {
- String path = user == null ? "/user/repos" : "/users/" + user + "/repos?" + PER_PAGE;
-
+ public static List<GithubRepo> getUserRepos(@NotNull GithubAuthData auth) throws IOException {
+ String path = "/user/repos?" + PER_PAGE;
PagedRequest<GithubRepo> request = new PagedRequest<GithubRepo>(path, GithubRepo.class, GithubRepoRaw[].class);
@@ -452,6 +444,37 @@
}
@NotNull
+ public static List<GithubRepo> getUserRepos(@NotNull GithubAuthData auth, @NotNull String user) throws IOException {
+ String path = "/users/" + user + "/repos?" + PER_PAGE;
+
+ PagedRequest<GithubRepo> request = new PagedRequest<GithubRepo>(path, GithubRepo.class, GithubRepoRaw[].class);
+
+ return request.getAll(auth);
+ }
+
+ @NotNull
+ public static List<GithubRepo> getAvailableRepos(@NotNull GithubAuthData auth) throws IOException {
+ List<GithubRepo> repos = new ArrayList<GithubRepo>();
+
+ repos.addAll(getUserRepos(auth));
+
+ String path = "/user/orgs?" + PER_PAGE;
+ PagedRequest<GithubOrg> request = new PagedRequest<GithubOrg>(path, GithubOrg.class, GithubOrgRaw[].class);
+
+ for (GithubOrg org : request.getAll(auth)) {
+ String pathOrg = "/orgs/" + org.getLogin() + "/repos?type=member&" + PER_PAGE;
+ PagedRequest<GithubRepo> requestOrg = new PagedRequest<GithubRepo>(pathOrg, GithubRepo.class, GithubRepoRaw[].class);
+ repos.addAll(requestOrg.getAll(auth));
+ }
+
+ String pathWatched = "/user/subscriptions?" + PER_PAGE;
+ PagedRequest<GithubRepo> requestWatched = new PagedRequest<GithubRepo>(pathWatched, GithubRepo.class, GithubRepoRaw[].class);
+ repos.addAll(requestWatched.getAll(auth));
+
+ return repos;
+ }
+
+ @NotNull
public static GithubRepoDetailed getDetailedRepoInfo(@NotNull GithubAuthData auth, @NotNull String owner, @NotNull String name)
throws IOException {
final String request = "/repos/" + owner + "/" + name;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubBranchRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubBranchRaw.java
index 4187ae0..e1892c6 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubBranchRaw.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubBranchRaw.java
@@ -22,7 +22,7 @@
* @author Aleksey Pivovarov
*/
@SuppressWarnings("UnusedDeclaration")
-public class GithubBranchRaw implements DataConstructor {
+class GithubBranchRaw implements DataConstructor {
@Nullable public String name;
@SuppressWarnings("ConstantConditions")
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubFileRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubFileRaw.java
index 52e351f..d0ae9cf 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubFileRaw.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubFileRaw.java
@@ -22,7 +22,7 @@
* @author Aleksey Pivovarov
*/
@SuppressWarnings("UnusedDeclaration")
-public class GithubFileRaw implements DataConstructor {
+class GithubFileRaw implements DataConstructor {
@Nullable public String filename;
@Nullable public Integer additions;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubIssuesSearchResultRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubIssuesSearchResultRaw.java
index 60c9131..7656832c 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubIssuesSearchResultRaw.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubIssuesSearchResultRaw.java
@@ -24,7 +24,7 @@
* @author Aleksey Pivovarov
*/
@SuppressWarnings("UnusedDeclaration")
-public class GithubIssuesSearchResultRaw implements DataConstructor {
+class GithubIssuesSearchResultRaw implements DataConstructor {
List<GithubIssueRaw> items;
@NotNull
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubOrg.java
similarity index 69%
copy from plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java
copy to plugins/github/src/org/jetbrains/plugins/github/api/GithubOrg.java
index 3b15c00..7a691fb 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubOrg.java
@@ -15,20 +15,20 @@
*/
package org.jetbrains.plugins.github.api;
-import java.io.IOException;
+import org.jetbrains.annotations.NotNull;
/**
* @author Aleksey Pivovarov
*/
-public class GithubStatusCodeException extends IOException {
- private final int myStatusCode;
+public class GithubOrg {
+ @NotNull String myLogin;
- public GithubStatusCodeException(String message, int statusCode) {
- super(message);
- myStatusCode = statusCode;
+ public GithubOrg(@NotNull String login) {
+ myLogin = login;
}
- public int getStatusCode() {
- return myStatusCode;
+ @NotNull
+ public String getLogin() {
+ return myLogin;
}
}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubOrgRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubOrgRaw.java
new file mode 100644
index 0000000..db4bf16
--- /dev/null
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubOrgRaw.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.github.api;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author Aleksey Pivovarov
+ */
+@SuppressWarnings("UnusedDeclaration")
+class GithubOrgRaw implements DataConstructor {
+ @Nullable public String login;
+ @Nullable public Long id;
+ @Nullable public String url;
+
+ @SuppressWarnings("ConstantConditions")
+ @NotNull
+ public GithubOrg createGithubOrg() {
+ return new GithubOrg(login);
+ }
+
+ @SuppressWarnings("unchecked")
+ @NotNull
+ @Override
+ public <T> T create(@NotNull Class<T> resultClass) {
+ if (resultClass.isAssignableFrom(GithubOrg.class)) {
+ return (T)createGithubOrg();
+ }
+
+ throw new ClassCastException(this.getClass().getName() + ": bad class type: " + resultClass.getName());
+ }
+}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubPullRequestRequest.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubPullRequestRequest.java
index 65662c5..4465f08 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubPullRequestRequest.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubPullRequestRequest.java
@@ -20,7 +20,7 @@
/**
* @author Aleksey Pivovarov
*/
-public class GithubPullRequestRequest {
+class GithubPullRequestRequest {
@NotNull String title;
@NotNull String body;
@NotNull String head; // branch with changes
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoOrg.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoOrg.java
new file mode 100644
index 0000000..fda0462
--- /dev/null
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoOrg.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.github.api;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author Aleksey Pivovarov
+ */
+public class GithubRepoOrg extends GithubRepo {
+ @NotNull Permissions myPermissions;
+
+ public static class Permissions {
+ private boolean myAdmin;
+ private boolean myPull;
+ private boolean myPush;
+
+ public Permissions(boolean admin, boolean pull, boolean push) {
+ myAdmin = admin;
+ myPull = pull;
+ myPush = push;
+ }
+
+ public boolean isAdmin() {
+ return myAdmin;
+ }
+
+ public boolean isPull() {
+ return myPull;
+ }
+
+ public boolean isPush() {
+ return myPush;
+ }
+ }
+
+ public GithubRepoOrg(@NotNull String name,
+ @Nullable String description,
+ boolean isPrivate,
+ boolean isFork,
+ @NotNull String htmlUrl,
+ @NotNull String cloneUrl,
+ @Nullable String defaultBranch,
+ @NotNull GithubUser owner,
+ @NotNull Permissions permissions) {
+ super(name, description, isPrivate, isFork, htmlUrl, cloneUrl, defaultBranch, owner);
+ myPermissions = permissions;
+ }
+}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoRaw.java
index 585890d..513f87b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoRaw.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubRepoRaw.java
@@ -72,6 +72,20 @@
@Nullable public Date createdAt;
@Nullable public Date updatedAt;
+ @Nullable public Permissions permissions;
+
+ public static class Permissions {
+ @Nullable public Boolean admin;
+ @Nullable public Boolean pull;
+ @Nullable public Boolean push;
+
+ @SuppressWarnings("ConstantConditions")
+ @NotNull
+ public GithubRepoOrg.Permissions create() {
+ return new GithubRepoOrg.Permissions(admin, pull, push);
+ }
+ }
+
@SuppressWarnings("ConstantConditions")
@NotNull
public GithubRepo createRepo() {
@@ -80,6 +94,13 @@
@SuppressWarnings("ConstantConditions")
@NotNull
+ public GithubRepoOrg createRepoOrg() {
+ return new GithubRepoOrg(name, description, isPrivate, isFork, htmlUrl, cloneUrl, defaultBranch, owner.createUser(),
+ permissions.create());
+ }
+
+ @SuppressWarnings("ConstantConditions")
+ @NotNull
public GithubRepoDetailed createRepoDetailed() {
GithubRepo parent = this.parent == null ? null : this.parent.createRepo();
GithubRepo source = this.source == null ? null : this.source.createRepo();
@@ -94,6 +115,9 @@
if (resultClass.isAssignableFrom(GithubRepo.class)) {
return (T)createRepo();
}
+ if (resultClass.isAssignableFrom(GithubRepoOrg.class)) {
+ return (T)createRepoOrg();
+ }
if (resultClass.isAssignableFrom(GithubRepoDetailed.class)) {
return (T)createRepoDetailed();
}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationCanceledException.java b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationCanceledException.java
similarity index 95%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationCanceledException.java
rename to plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationCanceledException.java
index ad78491..69ccfbc 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationCanceledException.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationCanceledException.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.exceptions;
/**
* @author Aleksey Pivovarov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationException.java b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationException.java
similarity index 95%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationException.java
rename to plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationException.java
index 70057ce..31f9490 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthenticationException.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubAuthenticationException.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.exceptions;
import java.io.IOException;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/JsonException.java b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubJsonException.java
similarity index 72%
rename from plugins/github/src/org/jetbrains/plugins/github/api/JsonException.java
rename to plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubJsonException.java
index b73c68b..47cc54b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/JsonException.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubJsonException.java
@@ -13,27 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github.api;
+package org.jetbrains.plugins.github.exceptions;
import java.io.IOException;
/**
* @author Aleksey Pivovarov
*/
-public class JsonException extends IOException {
- public JsonException() {
+public class GithubJsonException extends IOException {
+ public GithubJsonException() {
super();
}
- public JsonException(String message) {
+ public GithubJsonException(String message) {
super(message);
}
- public JsonException(String message, Throwable cause) {
+ public GithubJsonException(String message, Throwable cause) {
super(message, cause);
}
- public JsonException(Throwable cause) {
+ public GithubJsonException(Throwable cause) {
super(cause);
}
}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubStatusCodeException.java
similarity index 94%
rename from plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java
rename to plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubStatusCodeException.java
index 3b15c00..bfa074a 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubStatusCodeException.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/exceptions/GithubStatusCodeException.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github.api;
+package org.jetbrains.plugins.github.exceptions;
import java.io.IOException;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubAnnotationGutterActionProvider.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubAnnotationGutterActionProvider.java
similarity index 95%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubAnnotationGutterActionProvider.java
rename to plugins/github/src/org/jetbrains/plugins/github/extensions/GithubAnnotationGutterActionProvider.java
index 08cab1d..06a3e8b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubAnnotationGutterActionProvider.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubAnnotationGutterActionProvider.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.extensions;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.vcs.annotate.AnnotationGutterActionProvider;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutListener.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutListener.java
similarity index 94%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutListener.java
rename to plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutListener.java
index b0fcf5f..6af65ac 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutListener.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutListener.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.extensions;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
@@ -11,6 +11,8 @@
import org.jetbrains.plugins.github.api.GithubFullPath;
import org.jetbrains.plugins.github.tasks.GithubRepository;
import org.jetbrains.plugins.github.tasks.GithubRepositoryType;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
+import org.jetbrains.plugins.github.util.GithubUtil;
import java.io.File;
import java.util.ArrayList;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java
similarity index 69%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java
rename to plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java
index f717a01..5858a65 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java
@@ -13,18 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.extensions;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.progress.ProgressManager;
-import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vcs.CheckoutProvider;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.ThrowableConsumer;
+import com.intellij.util.ThrowableConvertor;
import git4idea.actions.BasicAction;
import git4idea.checkout.GitCheckoutProvider;
import git4idea.checkout.GitCloneDialog;
@@ -33,6 +30,10 @@
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubRepo;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUtil;
import java.io.File;
import java.io.IOException;
@@ -52,27 +53,26 @@
}
BasicAction.saveAll();
- final Ref<List<GithubRepo>> repositoryInfoRef = new Ref<List<GithubRepo>>();
- ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- try {
- GithubUtil.runAndGetValidAuth(project, indicator, new ThrowableConsumer<GithubAuthData, IOException>() {
- @Override
- public void consume(GithubAuthData authData) throws IOException {
- repositoryInfoRef.set(GithubApiUtil.getAvailableRepos(authData));
- }
+ List<GithubRepo> availableRepos;
+ try {
+ availableRepos = GithubUtil
+ .computeValueInModal(project, "Access to GitHub", new ThrowableConvertor<ProgressIndicator, List<GithubRepo>, IOException>() {
+ @Override
+ public List<GithubRepo> convert(ProgressIndicator indicator) throws IOException {
+ return GithubUtil.runWithValidAuth(project, indicator, new ThrowableConvertor<GithubAuthData, List<GithubRepo>, IOException>() {
+ @Override
+ public List<GithubRepo> convert(GithubAuthData authData) throws IOException {
+ return GithubApiUtil.getAvailableRepos(authData);
+ }
});
- }
- catch (GithubAuthenticationCanceledException e) {
- // no error message
- }
- catch (IOException e) {
- GithubNotifications.showError(project, "Couldn't get the list of GitHub repositories", e);
- }
- }
- });
- final List<GithubRepo> availableRepos = repositoryInfoRef.get();
- if (availableRepos == null){
+ }
+ });
+ }
+ catch (GithubAuthenticationCanceledException e) {
+ return;
+ }
+ catch (IOException e) {
+ GithubNotifications.showError(project, "Couldn't get the list of GitHub repositories", e);
return;
}
Collections.sort(availableRepos, new Comparator<GithubRepo>() {
@@ -85,6 +85,7 @@
final GitCloneDialog dialog = new GitCloneDialog(project);
// Add predefined repositories to history
+ dialog.prependToHistory("-----------------------------------------------");
for (int i = availableRepos.size() - 1; i>=0; i--){
dialog.prependToHistory(availableRepos.get(i).getCloneUrl());
}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubHttpAuthDataProvider.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java
similarity index 89%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubHttpAuthDataProvider.java
rename to plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java
index b13c9a0..403a92a 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubHttpAuthDataProvider.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java
@@ -13,13 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.extensions;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.AuthData;
import git4idea.jgit.GitHttpAuthDataProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubUrlUtil;
/**
* @author Kirill Likhodedov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepository.java b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepository.java
index 8cac256..4f46266 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepository.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepository.java
@@ -18,8 +18,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.GithubApiUtil;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubUtil;
import org.jetbrains.plugins.github.api.GithubIssue;
import org.jetbrains.plugins.github.api.GithubIssueComment;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java
index 663f6a7..fe63449 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java
@@ -1,7 +1,6 @@
package org.jetbrains.plugins.github.tasks;
import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Ref;
@@ -14,10 +13,10 @@
import com.intellij.util.ui.FormBuilder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubAuthenticationCanceledException;
-import org.jetbrains.plugins.github.GithubNotifications;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubUtil;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import javax.swing.*;
@@ -108,35 +107,27 @@
}
private void generateToken() {
- final Ref<String> tokenRef = new Ref<String>();
- final Ref<IOException> exceptionRef = new Ref<IOException>();
- ProgressManager.getInstance().run(new Task.Modal(myProject, "Access to GitHub", true) {
- public void run(@NotNull ProgressIndicator indicator) {
- try {
- tokenRef.set(GithubUtil.runWithValidBasicAuthForHost(myProject, indicator, getHost(),
- new ThrowableConvertor<GithubAuthData, String, IOException>() {
- @NotNull
- @Override
- public String convert(GithubAuthData auth) throws IOException {
- return GithubApiUtil
- .getReadOnlyToken(auth, getRepoAuthor(), getRepoName(),
- "Intellij tasks plugin");
- }
- }));
- }
- catch (IOException e) {
- exceptionRef.set(e);
- }
- }
- });
- if (!exceptionRef.isNull()) {
- if (exceptionRef.get() instanceof GithubAuthenticationCanceledException) {
- return;
- }
- GithubNotifications.showErrorDialog(myProject, "Can't get access token", exceptionRef.get());
- return;
+ try {
+ myToken.setText(
+ GithubUtil.computeValueInModal(myProject, "Access to GitHub", new ThrowableConvertor<ProgressIndicator, String, IOException>() {
+ @Override
+ public String convert(ProgressIndicator indicator) throws IOException {
+ return GithubUtil
+ .runWithValidBasicAuthForHost(myProject, indicator, getHost(), new ThrowableConvertor<GithubAuthData, String, IOException>() {
+ @NotNull
+ @Override
+ public String convert(GithubAuthData auth) throws IOException {
+ return GithubApiUtil.getReadOnlyToken(auth, getRepoAuthor(), getRepoName(), "Intellij tasks plugin");
+ }
+ });
+ }
+ }));
}
- myToken.setText(tokenRef.get());
+ catch (GithubAuthenticationCanceledException ignore) {
+ }
+ catch (IOException e) {
+ GithubNotifications.showErrorDialog(myProject, "Can't get access token", e);
+ }
}
@Override
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubBasicLoginDialog.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubBasicLoginDialog.java
index da9a7e9..fac45c5 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubBasicLoginDialog.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubBasicLoginDialog.java
@@ -17,8 +17,8 @@
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubSettings;
/**
* @author Aleksey Pivovarov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreateGistDialog.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreateGistDialog.java
index a1efdcf..f3d6c5a 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreateGistDialog.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreateGistDialog.java
@@ -21,7 +21,7 @@
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubSettings;
import javax.swing.*;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreatePullRequestDialog.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreatePullRequestDialog.java
index 0c9d6da..528437e 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreatePullRequestDialog.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCreatePullRequestDialog.java
@@ -23,7 +23,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
-import org.jetbrains.plugins.github.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubSettings;
import javax.swing.*;
import java.util.Collection;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginDialog.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginDialog.java
index e7968be..5c31857 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginDialog.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginDialog.java
@@ -5,9 +5,9 @@
import com.intellij.openapi.ui.DialogWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubSettings;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubUtil;
import javax.swing.*;
import java.io.IOException;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java
index bebf6f7..9141ea7 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java
@@ -25,8 +25,8 @@
import com.intellij.util.ui.table.ComponentsListFocusTraversalPolicy;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubUtil;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java
index f4c312d..87e137b 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java
@@ -7,7 +7,7 @@
import com.intellij.openapi.vcs.VcsConfigurableProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubSettings;
import javax.swing.*;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java
index 7780797..b1f08bc 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java
@@ -18,17 +18,17 @@
import com.intellij.ide.BrowserUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.ui.ComboBox;
-import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.HyperlinkAdapter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubAuthenticationException;
-import org.jetbrains.plugins.github.GithubSettings;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationException;
+import org.jetbrains.plugins.github.util.GithubNotifications;
+import org.jetbrains.plugins.github.util.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubUtil;
import org.jetbrains.plugins.github.api.GithubUser;
import javax.swing.*;
@@ -84,18 +84,18 @@
try {
GithubUser user = GithubUtil.checkAuthData(getAuthData());
if (GithubAuthData.AuthType.TOKEN.equals(getAuthType())) {
- Messages.showInfoMessage(myPane, "Connection successful for user " + user.getLogin(), "Success");
+ GithubNotifications.showInfoDialog(myPane, "Connection successful for user " + user.getLogin(), "Success");
}
else {
- Messages.showInfoMessage(myPane, "Connection successful", "Success");
+ GithubNotifications.showInfoDialog(myPane, "Connection successful", "Success");
}
}
catch (GithubAuthenticationException ex) {
- Messages.showErrorDialog(myPane, "Can't login using given credentials: " + ex.getMessage(), "Login Failure");
+ GithubNotifications.showErrorDialog(myPane, "Can't login using given credentials: " + ex.getMessage(), "Login Failure");
}
catch (IOException ex) {
LOG.info(ex);
- Messages.showErrorDialog(myPane, "Can't login: " + GithubUtil.getErrorTextFromException(ex), "Login Failure");
+ GithubNotifications.showErrorDialog(myPane, "Can't login: " + GithubUtil.getErrorTextFromException(ex), "Login Failure");
}
}
});
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthData.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java
similarity index 98%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubAuthData.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java
index c8b16eb..5de9a65 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubAuthData.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubNotifications.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubNotifications.java
similarity index 85%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubNotifications.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubNotifications.java
index 790ae36..8cb16c4 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubNotifications.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubNotifications.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import com.intellij.notification.Notification;
import com.intellij.notification.NotificationListener;
@@ -25,6 +25,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.awt.*;
+
/**
* @author Aleksey Pivovarov
*/
@@ -102,11 +104,21 @@
Messages.showInfoMessage(project, message, title);
}
+ public static void showInfoDialog(final @NotNull Component component, final @NotNull String title, final @NotNull String message) {
+ LOG.info(title + "; " + message);
+ Messages.showInfoMessage(component, message, title);
+ }
+
public static void showWarningDialog(final @Nullable Project project, final @NotNull String title, final @NotNull String message) {
LOG.info(title + "; " + message);
Messages.showWarningDialog(project, message, title);
}
+ public static void showWarningDialog(final @NotNull Component component, final @NotNull String title, final @NotNull String message) {
+ LOG.info(title + "; " + message);
+ Messages.showWarningDialog(component, message, title);
+ }
+
public static void showErrorDialog(final @Nullable Project project, final @NotNull String title, final @NotNull String message) {
LOG.info(title + "; " + message);
Messages.showErrorDialog(project, message, title);
@@ -117,6 +129,16 @@
Messages.showErrorDialog(project, e.getMessage(), title);
}
+ public static void showErrorDialog(final @NotNull Component component, final @NotNull String title, final @NotNull String message) {
+ LOG.info(title + "; " + message);
+ Messages.showErrorDialog(component, message, title);
+ }
+
+ public static void showErrorDialog(final @NotNull Component component, final @NotNull String title, final @NotNull Exception e) {
+ LOG.info(title, e);
+ Messages.showInfoMessage(component, e.getMessage(), title);
+ }
+
public static int showYesNoDialog(final @Nullable Project project, final @NotNull String title, final @NotNull String message) {
return Messages.showYesNoDialog(project, message, title, Messages.getQuestionIcon());
}
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java
similarity index 98%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java
index 5b599b2..4afb2a9 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import com.intellij.ide.passwordSafe.PasswordSafe;
import com.intellij.ide.passwordSafe.PasswordSafeException;
@@ -29,7 +29,7 @@
import java.util.ArrayList;
import java.util.Collection;
-import static org.jetbrains.plugins.github.GithubAuthData.AuthType;
+import static org.jetbrains.plugins.github.util.GithubAuthData.AuthType;
/**
* @author oleg
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubSslSupport.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSslSupport.java
similarity index 98%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubSslSupport.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubSslSupport.java
index 4e20aef2..d2aa2f1 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubSslSupport.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSslSupport.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.ui.Messages;
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubUrlUtil.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubUrlUtil.java
similarity index 97%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubUrlUtil.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubUrlUtil.java
index 4b11cc5..78d3ab9 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubUrlUtil.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubUrlUtil.java
@@ -13,13 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubFullPath;
+import org.jetbrains.plugins.github.util.GithubSettings;
/**
* @author Aleksey Pivovarov
diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubUtil.java
similarity index 86%
rename from plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java
rename to plugins/github/src/org/jetbrains/plugins/github/util/GithubUtil.java
index da71c4a..829fac7 100644
--- a/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java
+++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubUtil.java
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.github;
+package org.jetbrains.plugins.github.util;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
+import com.intellij.openapi.progress.ProgressManager;
+import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.Ref;
@@ -26,6 +28,7 @@
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ThrowableConsumer;
import com.intellij.util.ThrowableConvertor;
+import com.intellij.util.ThrowableRunnable;
import git4idea.GitUtil;
import git4idea.config.GitVcsApplicationSettings;
import git4idea.config.GitVersion;
@@ -37,8 +40,11 @@
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubUserDetailed;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationCanceledException;
+import org.jetbrains.plugins.github.exceptions.GithubAuthenticationException;
import org.jetbrains.plugins.github.ui.GithubBasicLoginDialog;
import org.jetbrains.plugins.github.ui.GithubLoginDialog;
+import org.jetbrains.plugins.github.util.*;
import java.io.IOException;
import java.util.List;
@@ -69,9 +75,6 @@
}
catch (GithubAuthenticationException e) {
auth = getValidAuthData(project, indicator);
- if (auth == null) {
- throw new GithubAuthenticationCanceledException("Can't get valid credentials");
- }
task.consume(auth);
return auth;
}
@@ -96,9 +99,6 @@
}
catch (GithubAuthenticationException e) {
auth = getValidAuthData(project, indicator);
- if (auth == null) {
- throw new GithubAuthenticationCanceledException("Can't get valid credentials");
- }
return task.convert(auth);
}
catch (IOException e) {
@@ -126,9 +126,6 @@
}
catch (GithubAuthenticationException e) {
auth = getValidBasicAuthDataForHost(project, indicator, host);
- if (auth == null) {
- throw new GithubAuthenticationCanceledException("Can't get valid credentials");
- }
return task.convert(auth);
}
catch (IOException e) {
@@ -157,8 +154,9 @@
/**
* @return null if user canceled login dialog. Valid GithubAuthData otherwise.
*/
- @Nullable
- public static GithubAuthData getValidAuthData(@Nullable Project project, @NotNull ProgressIndicator indicator) {
+ @NotNull
+ public static GithubAuthData getValidAuthData(@Nullable Project project, @NotNull ProgressIndicator indicator)
+ throws GithubAuthenticationCanceledException {
final GithubLoginDialog dialog = new GithubLoginDialog(project);
ApplicationManager.getApplication().invokeAndWait(new Runnable() {
@Override
@@ -167,7 +165,7 @@
}
}, indicator.getModalityState());
if (!dialog.isOK()) {
- return null;
+ throw new GithubAuthenticationCanceledException("Can't get valid credentials");
}
return dialog.getAuthData();
}
@@ -175,10 +173,10 @@
/**
* @return null if user canceled login dialog. Valid GithubAuthData otherwise.
*/
- @Nullable
+ @NotNull
public static GithubAuthData getValidBasicAuthDataForHost(@Nullable Project project,
- @NotNull ProgressIndicator indicator,
- @NotNull String host) {
+ @NotNull ProgressIndicator indicator, @NotNull String host)
+ throws GithubAuthenticationCanceledException {
final GithubLoginDialog dialog = new GithubBasicLoginDialog(project);
dialog.lockHost(host);
ApplicationManager.getApplication().invokeAndWait(new Runnable() {
@@ -188,13 +186,14 @@
}
}, indicator.getModalityState());
if (!dialog.isOK()) {
- return null;
+ throw new GithubAuthenticationCanceledException("Can't get valid credentials");
}
return dialog.getAuthData();
}
- @Nullable
- public static GithubAuthData getValidAuthDataFromConfig(@Nullable Project project, @NotNull ProgressIndicator indicator) {
+ @NotNull
+ public static GithubAuthData getValidAuthDataFromConfig(@Nullable Project project, @NotNull ProgressIndicator indicator)
+ throws IOException {
GithubAuthData auth = GithubSettings.getInstance().getAuthData();
try {
checkAuthData(auth);
@@ -203,10 +202,6 @@
catch (GithubAuthenticationException e) {
return getValidAuthData(project, indicator);
}
- catch (IOException e) {
- LOG.info("Connection error", e);
- return null;
- }
}
@NotNull
@@ -242,6 +237,34 @@
return GithubApiUtil.getCurrentUserDetailed(auth);
}
+ public static <T, E extends Throwable> T computeValueInModal(@NotNull Project project,
+ @NotNull String caption,
+ @NotNull final ThrowableConvertor<ProgressIndicator, T, E> task) throws E {
+ final Ref<T> dataRef = new Ref<T>();
+ final Ref<E> exceptionRef = new Ref<E>();
+ ProgressManager.getInstance().run(new Task.Modal(project, caption, true) {
+ public void run(@NotNull ProgressIndicator indicator) {
+ try {
+ dataRef.set(task.convert(indicator));
+ }
+ catch (Error e) {
+ throw e;
+ }
+ catch (RuntimeException e) {
+ throw e;
+ }
+ catch (Throwable e) {
+ //noinspection unchecked
+ exceptionRef.set((E)e);
+ }
+ }
+ });
+ if (!exceptionRef.isNull()) {
+ throw exceptionRef.get();
+ }
+ return dataRef.get();
+ }
+
/*
* Git utils
*/
@@ -343,5 +366,4 @@
}
return manager.getRepositoryForFile(project.getBaseDir());
}
-
}
diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubCreateGistTest.java b/plugins/github/test/org/jetbrains/plugins/github/GithubCreateGistTest.java
index ee0060a..7968008 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/GithubCreateGistTest.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/GithubCreateGistTest.java
@@ -16,6 +16,7 @@
package org.jetbrains.plugins.github;
import com.intellij.notification.NotificationType;
+import org.jetbrains.plugins.github.util.GithubAuthData;
import java.util.Collections;
import java.util.List;
diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubCreatePullRequestTestBase.java b/plugins/github/test/org/jetbrains/plugins/github/GithubCreatePullRequestTestBase.java
index 939fd8e..5058513 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/GithubCreatePullRequestTestBase.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/GithubCreatePullRequestTestBase.java
@@ -26,6 +26,7 @@
import git4idea.test.TestDialogHandler;
import org.jetbrains.plugins.github.test.GithubTest;
import org.jetbrains.plugins.github.ui.GithubCreatePullRequestDialog;
+import org.jetbrains.plugins.github.util.GithubUtil;
import java.util.Random;
diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubRequestPagingTest.java b/plugins/github/test/org/jetbrains/plugins/github/GithubRequestPagingTest.java
index 5b06666..c72cbc3 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/GithubRequestPagingTest.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/GithubRequestPagingTest.java
@@ -36,7 +36,7 @@
public void testAvailableRepos() throws Throwable {
- List<GithubRepo> availableRepos = GithubApiUtil.getAvailableRepos(myGitHubSettings.getAuthData(), myLogin2);
+ List<GithubRepo> availableRepos = GithubApiUtil.getUserRepos(myGitHubSettings.getAuthData(), myLogin2);
List<String> realData = new ArrayList<String>();
for (GithubRepo info : availableRepos) {
realData.add(info.getName());
diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java
index 756fabc..fe2f40a 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java
@@ -5,6 +5,7 @@
import git4idea.commands.Git;
import org.jetbrains.plugins.github.api.GithubApiUtil;
import org.jetbrains.plugins.github.api.GithubRepoDetailed;
+import org.jetbrains.plugins.github.util.GithubAuthData;
import java.io.IOException;
diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubUrlUtilTest.java b/plugins/github/test/org/jetbrains/plugins/github/GithubUrlUtilTest.java
index b8506d6..0c8c501 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/GithubUrlUtilTest.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/GithubUrlUtilTest.java
@@ -25,7 +25,7 @@
import java.util.ArrayList;
import java.util.List;
-import static org.jetbrains.plugins.github.GithubUrlUtil.*;
+import static org.jetbrains.plugins.github.util.GithubUrlUtil.*;
/**
* @author Aleksey Pivovarov
diff --git a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java
index ab83293..0f2da38 100644
--- a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java
+++ b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java
@@ -42,9 +42,9 @@
import git4idea.test.TestNotificator;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.github.GithubAuthData;
-import org.jetbrains.plugins.github.GithubSettings;
-import org.jetbrains.plugins.github.GithubUtil;
+import org.jetbrains.plugins.github.util.GithubAuthData;
+import org.jetbrains.plugins.github.util.GithubSettings;
+import org.jetbrains.plugins.github.util.GithubUtil;
import static org.junit.Assume.assumeNotNull;
diff --git a/plugins/google-app-engine/source/com/intellij/appengine/actions/AppEngineUploader.java b/plugins/google-app-engine/source/com/intellij/appengine/actions/AppEngineUploader.java
index 803bdc3..dea389a 100644
--- a/plugins/google-app-engine/source/com/intellij/appengine/actions/AppEngineUploader.java
+++ b/plugins/google-app-engine/source/com/intellij/appengine/actions/AppEngineUploader.java
@@ -304,7 +304,16 @@
public void processTerminated(ProcessEvent event) {
int exitCode = event.getExitCode();
if (exitCode == 0) {
- myCallback.succeeded(new DeploymentRuntime());
+ myCallback.succeeded(new DeploymentRuntime() {
+ @Override
+ public boolean isUndeploySupported() {
+ return false;
+ }
+
+ @Override
+ public void undeploy(@NotNull UndeploymentTaskCallback callback) {
+ }
+ });
}
else {
myCallback.errorOccurred("Process terminated with exit code " + exitCode);
diff --git a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java
index 855ed7a..5d92076 100644
--- a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java
+++ b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java
@@ -24,12 +24,10 @@
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.remoteServer.ServerType;
import com.intellij.remoteServer.configuration.deployment.*;
-import com.intellij.remoteServer.runtime.Deployment;
import com.intellij.remoteServer.runtime.ServerConnector;
import com.intellij.remoteServer.runtime.ServerTaskExecutor;
import com.intellij.remoteServer.runtime.deployment.DeploymentTask;
import com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance;
-import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.FormBuilder;
import icons.GoogleAppEngineIcons;
import org.jetbrains.annotations.NotNull;
@@ -179,8 +177,8 @@
}
@Override
- public void computeDeployments(@NotNull ComputeDeploymentsCallback deployments) {
- deployments.succeeded(ContainerUtil.<Deployment>emptyList());
+ public void computeDeployments(@NotNull ComputeDeploymentsCallback callback) {
+ callback.succeeded();
}
@Override
diff --git a/plugins/gradle/gradle.iml b/plugins/gradle/gradle.iml
index b0e85e5..510f93a 100644
--- a/plugins/gradle/gradle.iml
+++ b/plugins/gradle/gradle.iml
@@ -25,233 +25,15 @@
<orderEntry type="module-library" exported="">
<library name="Gradle">
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/gradle-base-services-1.7.jar!/" />
- <root url="jar://$MODULE_DIR$/lib/gradle-core-1.7.jar!/" />
- <root url="jar://$MODULE_DIR$/lib/gradle-messaging-1.7.jar!/" />
- <root url="jar://$MODULE_DIR$/lib/gradle-tooling-api-1.7.jar!/" />
- <root url="jar://$MODULE_DIR$/lib/gradle-wrapper-1.7.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-base-services-1.8-20130730220035+0000.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-core-1.8-20130730220035+0000.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-messaging-1.8-20130730220035+0000.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-tooling-api-1.8-20130730220035+0000.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-wrapper-1.8-20130730220035+0000.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/buildSrc/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/buildSrc/src/test/resources" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ui/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ui/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ui/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/cli/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/cpp/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/cpp/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ear/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/main/resources" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/idea/IdeaIntegrationTest/canCreateAndDeleteMetaData/api/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/eclipse/EclipseIntegrationTest/canCreateAndDeleteMetaData/api/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/eclipse/EclipseIntegrationTest/canCreateAndDeleteMetaData/api/src/integTest/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/eclipse/EclipseIntegrationTest/canCreateAndDeleteMetaData/webAppJava6/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/eclipse/EclipseIntegrationTest/canCreateAndDeleteMetaData/groovyproject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ide/src/integTest/resources/org/gradle/plugins/ide/eclipse/EclipseIntegrationTest/canCreateAndDeleteMetaData/webAppWithVars/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ivy/src/main/java/org/gradle/api/publish/ivy/tasks" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ivy/src/main/java/org/gradle/api/publish/ivy/plugins" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/ivy/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core/src/testFixtures/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/ear/earWithWar/war/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/ear/earCustomized/war/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/base/prod/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/base/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/onlyif/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/onlyif/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/apiAndImpl/src/api/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/apiAndImpl/src/impl/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/apiAndImpl/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/quickstart/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/shared/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/buildSrc/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/buildSrc/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/services/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/services/webservice/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/multiproject/services/webservice/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/testListener/src/test/java/org/gradle" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/customizedLayout/src/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/customizedLayout/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/withIntegrationTests/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/withIntegrationTests/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/java/withIntegrationTests/src/integration-test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/antlr/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/maven/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/maven/pomGeneration/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/scala/mixedJavaAndScala/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/scala/mixedJavaAndScala/src/main/scala" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/sonar/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/sonar/quickstart/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/multiproject/testproject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/multiproject/testproject/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/multiproject/testproject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/multiproject/testproject/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/multiproject/groovycDetector/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/mixedJavaAndGroovy/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/groovy/mixedJavaAndGroovy/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/signing/maven/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/signing/conditional/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/junit/categories/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/jacoco/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/jacoco/quickstart/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/jacoco/application/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/groups/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/suitexmlbuilder/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/suitexmlbuilder/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/java-jdk14-passing/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/java-jdk14-passing/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/java-jdk15-passing/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testng/java-jdk15-passing/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testReport/core/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/testing/testReport/util/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/ant/useExternalAntTaskWithConfig/src" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/java/sourceSets/src/intTest/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/api/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/shared/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/services/personService/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/java/services/personService/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/webDist/date/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/webDist/hello/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/javaWithCustomConf/api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/userguide/multiproject/dependencies/javaWithCustomConf/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/ivypublish/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/ivypublish/subproject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/idea/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/model/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/eclipse/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/runBuild/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/customModel/plugin/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/toolingApi/customModel/tooling/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/application/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/codeQuality/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/sonarRunner/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/sonarRunner/quickstart/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/maven-publish/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/maven-publish/javaProject/subproject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/buildDashboard/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/webApplication/customised/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/webApplication/customised/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/webApplication/quickstart/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/docs/src/samples/clientModuleDependencies/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/osgi/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/osgi/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/antlr/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/jetty/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/maven/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/maven/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/scala/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/scala/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/scala/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/scala/src/integTest/resources/org/gradle/scala/compile/jdk6/ZincScalaCompilerJdk6IntegrationTest/compilesJavaCodeIncrementally/src/main/scala" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/scala/src/integTest/resources/org/gradle/scala/compile/IncrementalScalaCompileIntegrationTest/recompilesSourceWhenPropertiesChange/src/main/scala" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/nested/nested2/nestedProject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/nested/nested2/nestedProject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/skippedProject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/skippedProject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/customizedProject/src" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/customizedProject/test" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/javaProjectWithJacoco/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/sonar/runner/SonarRunnerSmokeIntegrationTest/shared/javaProjectWithJacoco/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/nested/nested2/nestedProject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/nested/nested2/nestedProject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/skippedProject/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/skippedProject/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/customizedProject/src" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/customizedProject/test" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/javaProjectWithJacoco/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/sonar/src/integTest/resources/org/gradle/api/plugins/sonar/SonarSmokeIntegrationTest/shared/javaProjectWithJacoco/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/jacoco/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/native/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesDependentClasses/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesDependentClasses" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesSourceWhenPropertiesChange/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesDependentClassesAcrossProjectBoundaries/app/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesDependentClassesAcrossProjectBoundaries/lib/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/java/compile/IncrementalJavaCompileIntegrationTest/recompilesDependentClassesAcrossProjectBoundaries" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/groovy/compile/GroovyCompilerIntegrationSpec/canUseThirdPartyAstTransform/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/groovy/compile/GroovyCompilerIntegrationSpec/canUseAstTransformThatReferencesGroovyTestCase/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/groovy/compile/ApiGroovyCompilerIntegrationSpec/canJointCompileWithJavaCompilerExecutable/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/groovy/compile/BasicGroovyCompilerIntegrationSpec/compileBadJavaCode/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/groovy/compile/IncrementalGroovyCompileIntegrationTest/recompilesSourceWhenPropertiesChange/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/compile/daemon/ParallelCompilerDaemonIntegrationTest/shared" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/javadoc/JavadocIntegrationTest/handlesTagsAndTaglets/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/javadoc/JavadocIntegrationTest/handlesTagsAndTaglets/src/taglet/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/javadoc/JavadocIntegrationTest/canCombineLocalOptionWithOtherOptions/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/javadoc/JavadocIntegrationTest/canCombineLocalOptionWithOtherOptions/src/taglet/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources/org/gradle/testing/junit/JUnitIntegrationTest/junit3Tests/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/integTest/resources" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/plugins/src/testFixtures/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/publish/src/main/groovy/org/gradle/api/publish/plugins" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/publish/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/wrapper/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/wrapper/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/announce/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/launcher/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/launcher/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/open-api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/open-api/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core-impl/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/core-impl/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/messaging/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/messaging/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/reporting/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/ExecIntegrationTest/shared/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/ProjectLayoutIntegrationTest/canUseANonStandardBuildDir/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/ProjectLayoutIntegrationTest/canUseANonStandardBuildDir/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/IncrementalTestIntegrationTest/shared/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/IncrementalTestIntegrationTest/doesNotRunStaleTests/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/IncrementalTestIntegrationTest/executesTestsWhenSourceChanges/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/IncrementalTestIntegrationTest/executesTestsWhenSourceChanges" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/integ-test/src/integTest/resources/org/gradle/integtests/IncrementalTestIntegrationTest/executesTestsWhenTestFrameworkChanges/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/javascript/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/testjar/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/testjar/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/multiModule/webinar-api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/multiModule/webinar-impl/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/multiModule/webinar-impl/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/singleModule/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/singleModule/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/enforcerplugin/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/flatmultimodule/webinar-api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/flatmultimodule/webinar-impl/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-setup/src/integTest/resources/org/gradle/buildsetup/plugins/MavenConversionIntegrationTest/flatmultimodule/webinar-impl/src/test/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/diagnostics/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/diagnostics/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/diagnostics/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/performance/src/configPlugin" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/performance/src/testFixtures/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/tooling-api/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/tooling-api/src/integTest/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/code-quality/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/language-jvm/src/main/groovy/org/gradle/language/jvm/tasks" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/language-jvm/src/main/groovy/org/gradle/language/jvm/plugins" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/language-jvm/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/base-services/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/base-services/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/language-base/src/main/groovy/org/gradle/language/base/plugins" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/language-base/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-comparison/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-comparison/src/integTest/resources/org/gradle/api/plugins/buildcomparison/gradle/BuildComparisonIntegrationSpec/compareArchives/source/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/build-comparison/src/integTest/resources/org/gradle/api/plugins/buildcomparison/gradle/BuildComparisonIntegrationSpec/compareArchives/target/src/main/java" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/internal-testing/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/base-services-groovy/src/main/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/base-services-groovy/src/test/groovy" />
- <root url="jar://$MODULE_DIR$/lib/gradle-1.7-src.zip!/gradle-1.7/subprojects/internal-integ-testing/src/main/groovy" />
+ <root url="jar://$MODULE_DIR$/lib/gradle-1.8-20130730220035+0000-src.zip!/" />
</SOURCES>
</library>
</orderEntry>
diff --git a/plugins/gradle/lib/gradle-1.7-src.zip b/plugins/gradle/lib/gradle-1.7-src.zip
deleted file mode 100644
index d35500b..0000000
--- a/plugins/gradle/lib/gradle-1.7-src.zip
+++ /dev/null
Binary files differ
diff --git a/plugins/gradle/lib/gradle-1.8-20130730220035+0000-src.zip b/plugins/gradle/lib/gradle-1.8-20130730220035+0000-src.zip
new file mode 100644
index 0000000..52be3d1
--- /dev/null
+++ b/plugins/gradle/lib/gradle-1.8-20130730220035+0000-src.zip
Binary files differ
diff --git a/plugins/gradle/lib/gradle-base-services-1.7.jar b/plugins/gradle/lib/gradle-base-services-1.8-20130730220035+0000.jar
similarity index 61%
rename from plugins/gradle/lib/gradle-base-services-1.7.jar
rename to plugins/gradle/lib/gradle-base-services-1.8-20130730220035+0000.jar
index 2593b2b..3eb0bb7e 100644
--- a/plugins/gradle/lib/gradle-base-services-1.7.jar
+++ b/plugins/gradle/lib/gradle-base-services-1.8-20130730220035+0000.jar
Binary files differ
diff --git a/plugins/gradle/lib/gradle-core-1.7.jar b/plugins/gradle/lib/gradle-core-1.8-20130730220035+0000.jar
similarity index 60%
rename from plugins/gradle/lib/gradle-core-1.7.jar
rename to plugins/gradle/lib/gradle-core-1.8-20130730220035+0000.jar
index e9b7019..a184975 100644
--- a/plugins/gradle/lib/gradle-core-1.7.jar
+++ b/plugins/gradle/lib/gradle-core-1.8-20130730220035+0000.jar
Binary files differ
diff --git a/plugins/gradle/lib/gradle-messaging-1.7.jar b/plugins/gradle/lib/gradle-messaging-1.8-20130730220035+0000.jar
similarity index 86%
rename from plugins/gradle/lib/gradle-messaging-1.7.jar
rename to plugins/gradle/lib/gradle-messaging-1.8-20130730220035+0000.jar
index 4cbb72c..f76ab9e 100644
--- a/plugins/gradle/lib/gradle-messaging-1.7.jar
+++ b/plugins/gradle/lib/gradle-messaging-1.8-20130730220035+0000.jar
Binary files differ
diff --git a/plugins/gradle/lib/gradle-tooling-api-1.7.jar b/plugins/gradle/lib/gradle-tooling-api-1.7.jar
deleted file mode 100644
index 0695d34..0000000
--- a/plugins/gradle/lib/gradle-tooling-api-1.7.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/gradle/lib/gradle-tooling-api-1.8-20130730220035+0000.jar b/plugins/gradle/lib/gradle-tooling-api-1.8-20130730220035+0000.jar
new file mode 100644
index 0000000..48e428c
--- /dev/null
+++ b/plugins/gradle/lib/gradle-tooling-api-1.8-20130730220035+0000.jar
Binary files differ
diff --git a/plugins/gradle/lib/gradle-wrapper-1.7.jar b/plugins/gradle/lib/gradle-wrapper-1.7.jar
deleted file mode 100644
index cda194d..0000000
--- a/plugins/gradle/lib/gradle-wrapper-1.7.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/gradle/lib/gradle-wrapper-1.8-20130730220035+0000.jar b/plugins/gradle/lib/gradle-wrapper-1.8-20130730220035+0000.jar
new file mode 100644
index 0000000..17d29fc
--- /dev/null
+++ b/plugins/gradle/lib/gradle-wrapper-1.8-20130730220035+0000.jar
Binary files differ
diff --git a/plugins/gradle/src/META-INF/plugin.xml b/plugins/gradle/src/META-INF/plugin.xml
index 458486a..a065418 100644
--- a/plugins/gradle/src/META-INF/plugin.xml
+++ b/plugins/gradle/src/META-INF/plugin.xml
@@ -25,8 +25,15 @@
<extensionPoints>
<extensionPoint name="projectResolve" interface="org.jetbrains.plugins.gradle.service.project.GradleProjectResolverExtension"/>
+ <extensionPoint name="resolve.contributor" interface="org.jetbrains.plugins.gradle.service.resolve.GradleMethodContextContributor"/>
</extensionPoints>
+ <extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
+ <resolve.contributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleRepositoriesContributor"/>
+ <resolve.contributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleDependenciesContributor"/>
+ <resolve.contributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleRootContributor"/>
+ </extensions>
+
<extensions defaultExtensionNs="com.intellij">
<errorHandler implementation="com.intellij.diagnostic.ITNReporter"/>
<projectImportProvider implementation="org.jetbrains.plugins.gradle.service.project.wizard.GradleProjectImportProvider"/>
@@ -63,10 +70,9 @@
<groovyFrameworkConfigNotification implementation="org.jetbrains.plugins.gradle.config.GradleGroovyConfigNotification"/>
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleScriptContributor"/>
- <methodDescriptor class="org.gradle.api.Project"
- name="apply"
- namedArgsProvider="org.jetbrains.plugins.gradle.service.resolve.GradleProjectApplyArgsProvider"/>
-
+ <methodDescriptor class="org.gradle.api.Project" name="apply">
+ <namedArgument name="plugin" values="java,groovy,idea,eclipse,scala"/>
+ </methodDescriptor>
</extensions>
</idea-plugin>
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleLibraryPresentationProvider.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleLibraryPresentationProvider.java
index c9ec846..c3036d2 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleLibraryPresentationProvider.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleLibraryPresentationProvider.java
@@ -15,7 +15,6 @@
*/
package org.jetbrains.plugins.gradle.config;
-import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.LibraryKind;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor;
@@ -26,8 +25,8 @@
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.gradle.util.GradleConstants;
import org.jetbrains.plugins.gradle.service.GradleInstallationManager;
+import org.jetbrains.plugins.gradle.util.GradleConstants;
import org.jetbrains.plugins.groovy.config.GroovyLibraryPresentationProviderBase;
import javax.swing.*;
@@ -90,7 +89,7 @@
@NotNull
@Override
public String getLibraryCategoryName() {
- return ExternalSystemBundle.message(GradleConstants.SYSTEM_ID.getReadableName());
+ return "Gradle";
}
@Override
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleExecutionHelper.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleExecutionHelper.java
index caf662d..6a0b53f 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleExecutionHelper.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleExecutionHelper.java
@@ -15,11 +15,15 @@
*/
package org.jetbrains.plugins.gradle.service.project;
+import com.intellij.execution.configurations.CommandLineTokenizer;
import com.intellij.openapi.externalSystem.model.ExternalSystemException;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationEvent;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.util.ArrayUtilRt;
import com.intellij.util.Function;
+import com.intellij.util.containers.ContainerUtilRt;
import org.gradle.tooling.*;
import org.gradle.tooling.internal.consumer.DefaultGradleConnector;
import org.gradle.tooling.model.idea.BasicIdeaProject;
@@ -30,6 +34,8 @@
import java.io.File;
import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -45,19 +51,21 @@
@NotNull ExternalSystemTaskNotificationListener listener,
boolean downloadLibraries)
{
- return getModelBuilder(downloadLibraries ? IdeaProject.class : BasicIdeaProject.class, id, settings, connection, listener);
+ return getModelBuilder(downloadLibraries ? IdeaProject.class : BasicIdeaProject.class, id, settings, connection, listener,
+ Collections.<String>emptyList());
}
-
+
@SuppressWarnings("MethodMayBeStatic")
@NotNull
public <T> ModelBuilder<T> getModelBuilder(@NotNull Class<T> modelType,
@NotNull final ExternalSystemTaskId id,
@Nullable GradleExecutionSettings settings,
@NotNull ProjectConnection connection,
- @NotNull ExternalSystemTaskNotificationListener listener)
+ @NotNull ExternalSystemTaskNotificationListener listener,
+ @NotNull List<String> extraJvmArgs)
{
ModelBuilder<T> result = connection.model(modelType);
- prepare(result, id, settings, listener);
+ prepare(result, id, settings, listener, extraJvmArgs);
return result;
}
@@ -69,7 +77,7 @@
@NotNull ExternalSystemTaskNotificationListener listener)
{
BuildLauncher result = connection.newBuild();
- prepare(result, id, settings, listener);
+ prepare(result, id, settings, listener, Collections.<String>emptyList());
return result;
}
@@ -77,15 +85,30 @@
public static void prepare(@NotNull LongRunningOperation operation,
@NotNull final ExternalSystemTaskId id,
@Nullable GradleExecutionSettings settings,
- @NotNull final ExternalSystemTaskNotificationListener listener)
+ @NotNull final ExternalSystemTaskNotificationListener listener,
+ @NotNull List<String> extraJvmArgs)
{
if (settings == null) {
return;
}
+ List<String> jvmArgs = ContainerUtilRt.newArrayList();
+
String vmOptions = settings.getDaemonVmOptions();
- if (vmOptions != null) {
- operation.setJvmArguments(vmOptions.trim());
+ if (!StringUtil.isEmpty(vmOptions)) {
+ CommandLineTokenizer tokenizer = new CommandLineTokenizer(vmOptions);
+ while(tokenizer.hasMoreTokens()) {
+ String vmOption = tokenizer.nextToken();
+ if (!StringUtil.isEmpty(vmOption)) {
+ jvmArgs.add(vmOption);
+ }
+ }
+ }
+
+ jvmArgs.addAll(extraJvmArgs);
+
+ if (!jvmArgs.isEmpty()) {
+ operation.setJvmArguments(ArrayUtilRt.toStringArray(jvmArgs));
}
listener.onStart(id);
@@ -108,9 +131,6 @@
try {
return f.fun(connection);
}
- catch (ExternalSystemException e) {
- throw e;
- }
catch (Throwable e) {
throw new ExternalSystemException(e);
}
@@ -123,7 +143,7 @@
}
}
}
-
+
/**
* Allows to retrieve gradle api connection to use for the given project.
*
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleDependenciesContributor.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleDependenciesContributor.java
new file mode 100644
index 0000000..2b980cc
--- /dev/null
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleDependenciesContributor.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.gradle.service.resolve;
+
+import com.intellij.psi.*;
+import com.intellij.psi.scope.PsiScopeProcessor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.gradle.api.artifacts.dsl.DependencyHandler;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
+import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList;
+import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArgument;
+import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall;
+import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager;
+import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightMethodBuilder;
+import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightParameter;
+
+import java.util.List;
+
+/**
+ * @author Denis Zhdanov
+ * @since 8/14/13 12:58 PM
+ */
+public class GradleDependenciesContributor implements GradleMethodContextContributor {
+
+ @Override
+ public void process(@NotNull List<String> methodCallInfo,
+ @NotNull PsiScopeProcessor processor,
+ @NotNull ResolveState state,
+ @NotNull PsiElement place)
+ {
+ if (methodCallInfo.isEmpty()) {
+ return;
+ }
+
+ int i = methodCallInfo.indexOf("dependencies");
+ if (i != 1) {
+ return;
+ }
+
+ // Assuming that the method call is addition of new dependency into configuration.
+ GroovyPsiManager psiManager = GroovyPsiManager.getInstance(place.getProject());
+ PsiClass contributorClass = psiManager.findClassWithCache(DependencyHandler.class.getName(), place.getResolveScope());
+ if (contributorClass == null) {
+ return;
+ }
+ processDependencyAddition(methodCallInfo.get(0), contributorClass, processor, state, place);
+ }
+
+ private static void processDependencyAddition(@NotNull String gradleConfigurationName,
+ @NotNull PsiClass dependencyHandlerClass,
+ @NotNull PsiScopeProcessor processor,
+ @NotNull ResolveState state,
+ @NotNull PsiElement place)
+ {
+ GrLightMethodBuilder builder = new GrLightMethodBuilder(place.getManager(), gradleConfigurationName);
+ PsiClassType type = PsiType.getJavaLangObject(place.getManager(), place.getResolveScope());
+ builder.addParameter(new GrLightParameter("dependencyInfo", type, builder));
+ processor.execute(builder, state);
+
+ GrMethodCall call = PsiTreeUtil.getParentOfType(place, GrMethodCall.class);
+ if (call == null) {
+ return;
+ }
+ GrArgumentList args = call.getArgumentList();
+ if (args == null) {
+ return;
+ }
+ int argsCount = 0;
+ boolean namedArgProcessed = false;
+ for (GroovyPsiElement arg : args.getAllArguments()) {
+ if (arg instanceof GrNamedArgument) {
+ if (!namedArgProcessed) {
+ namedArgProcessed = true;
+ argsCount++;
+ }
+ }
+ else {
+ argsCount++;
+ }
+ }
+
+ argsCount++; // Configuration name is delivered as an argument.
+
+ for (PsiMethod method : dependencyHandlerClass.findMethodsByName("add", false)) {
+ if (method.getParameterList().getParametersCount() == argsCount) {
+ builder.setNavigationElement(method);
+ }
+ }
+ }
+}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleMethodContextContributor.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleMethodContextContributor.java
index f7a29c2..06dbb75 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleMethodContextContributor.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleMethodContextContributor.java
@@ -15,12 +15,15 @@
*/
package org.jetbrains.plugins.gradle.service.resolve;
+import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.PsiElement;
import com.intellij.psi.ResolveState;
import com.intellij.psi.scope.PsiScopeProcessor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.lang.resolve.NonCodeMembersContributor;
+import java.util.List;
+
/**
* This interface narrows {@link NonCodeMembersContributor} to a closure executed inside particular method call at a gradle script.
* <p/>
@@ -42,14 +45,19 @@
*/
public interface GradleMethodContextContributor {
+ ExtensionPointName<GradleMethodContextContributor> EP_NAME = ExtensionPointName.create("org.jetbrains.plugins.gradle.resolve.contributor");
+
/**
* Tries to resolve target element.
*
- * @param processor the processor receiving the declarations.
- * @param state current resolve state
- * @param place the original element from which the tree up walk was initiated.
+ * @param methodCallInfo information about method call hierarchy which points to the target place. Every entry is a method name
+ * and the deepest one is assumed to be added the head
+ * @param processor the processor receiving the declarations.
+ * @param state current resolve state
+ * @param place the original element from which the tree up walk was initiated.
*/
- void process(@NotNull PsiScopeProcessor processor,
+ void process(@NotNull List<String> methodCallInfo,
+ @NotNull PsiScopeProcessor processor,
@NotNull ResolveState state,
@NotNull PsiElement place);
}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleProjectApplyArgsProvider.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleProjectApplyArgsProvider.java
deleted file mode 100644
index 3f1792b..0000000
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleProjectApplyArgsProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2000-2013 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 org.jetbrains.plugins.gradle.service.resolve;
-
-import com.intellij.psi.PsiElement;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.groovy.extensions.GroovyNamedArgumentProvider;
-import org.jetbrains.plugins.groovy.extensions.NamedArgumentDescriptor;
-import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
-
-import java.util.Map;
-
-/**
- * @author Denis Zhdanov
- * @since 7/23/13 5:53 PM
- */
-public class GradleProjectApplyArgsProvider extends GroovyNamedArgumentProvider {
-
- @Override
- public void getNamedArguments(@NotNull GrCall call,
- @Nullable PsiElement resolve,
- @Nullable String argumentName,
- boolean forCompletion,
- Map<String, NamedArgumentDescriptor> result)
- {
- result.put("plugin", new NamedArgumentDescriptor());
- }
-}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRepositoriesContributor.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRepositoriesContributor.java
new file mode 100644
index 0000000..db58a1a
--- /dev/null
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRepositoriesContributor.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.gradle.service.resolve;
+
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.ResolveState;
+import com.intellij.psi.scope.PsiScopeProcessor;
+import com.intellij.util.containers.Stack;
+import org.gradle.api.artifacts.dsl.RepositoryHandler;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager;
+
+import java.util.List;
+
+/**
+ * @author Denis Zhdanov
+ * @since 8/14/13 12:56 PM
+ */
+public class GradleRepositoriesContributor implements GradleMethodContextContributor {
+
+ @Override
+ public void process(@NotNull List<String> methodCallInfo,
+ @NotNull PsiScopeProcessor processor,
+ @NotNull ResolveState state,
+ @NotNull PsiElement place)
+ {
+ if (methodCallInfo.isEmpty() || methodCallInfo.size() < 2 || !"repositories".equals(methodCallInfo.get(1))) {
+ return;
+ }
+ GroovyPsiManager psiManager = GroovyPsiManager.getInstance(place.getProject());
+ PsiClass contributorClass = psiManager.findClassWithCache(RepositoryHandler.class.getName(), place.getResolveScope());
+ if (contributorClass != null) {
+ contributorClass.processDeclarations(processor, state, null, place);
+ }
+ }
+}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRootContributor.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRootContributor.java
new file mode 100644
index 0000000..2e5613f
--- /dev/null
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleRootContributor.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.gradle.service.resolve;
+
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.ResolveState;
+import com.intellij.psi.scope.PsiScopeProcessor;
+import com.intellij.util.containers.Stack;
+import org.gradle.api.Project;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager;
+
+import java.util.List;
+
+/**
+ * @author Denis Zhdanov
+ * @since 8/14/13 1:03 PM
+ */
+public class GradleRootContributor implements GradleMethodContextContributor {
+
+ @Override
+ public void process(@NotNull List<String> methodCallInfo,
+ @NotNull PsiScopeProcessor processor,
+ @NotNull ResolveState state,
+ @NotNull PsiElement place) {
+ if (methodCallInfo.size() > 1) {
+ return;
+ }
+
+ GroovyPsiManager psiManager = GroovyPsiManager.getInstance(place.getProject());
+ PsiClass contributorClass = psiManager.findClassWithCache(Project.class.getName(), place.getResolveScope());
+ if (contributorClass != null) {
+ contributorClass.processDeclarations(processor, state, null, place);
+ }
+ }
+}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleScriptContributor.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleScriptContributor.java
index 2dc07f9..29bce66 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleScriptContributor.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleScriptContributor.java
@@ -19,16 +19,15 @@
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.containers.ContainerUtilRt;
-import org.jetbrains.annotations.NonNls;
+import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.gradle.util.GradleConstants;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall;
-import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager;
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass;
import org.jetbrains.plugins.groovy.lang.resolve.NonCodeMembersContributor;
-import java.util.Map;
+import java.util.List;
/**
* @author Denis Zhdanov
@@ -36,21 +35,13 @@
*/
public class GradleScriptContributor extends NonCodeMembersContributor {
- // TODO den add doc
- @NotNull private static final Map<String, String> CONTRIBUTORS = ContainerUtilRt.newHashMap();
- static {
- CONTRIBUTORS.put("repositories", "org.gradle.api.artifacts.dsl.RepositoryHandler");
- CONTRIBUTORS.put("dependencies", "org.gradle.api.artifacts.dsl.DependencyHandler");
- }
-
- @NotNull @NonNls private static final String ROOT_CONTRIBUTOR_CLASS_NAME = "org.gradle.api.Project";
-
@Override
public void processDynamicElements(@NotNull PsiType qualifierType,
PsiClass aClass,
PsiScopeProcessor processor,
PsiElement place,
- ResolveState state) {
+ ResolveState state)
+ {
if (place == null) {
return;
}
@@ -64,29 +55,23 @@
return;
}
- GroovyPsiManager psiManager = GroovyPsiManager.getInstance(aClass.getProject());
- String contributorClassName = ROOT_CONTRIBUTOR_CLASS_NAME;
+ List<String> methodInfo = ContainerUtilRt.newArrayList();
for (GrMethodCall current = PsiTreeUtil.getParentOfType(place, GrMethodCall.class);
current != null;
current = PsiTreeUtil.getParentOfType(current, GrMethodCall.class))
{
GrExpression expression = current.getInvokedExpression();
- if (expression != null) {
- String text = expression.getText();
- if (text == null || text.equals(place.getText())) {
- continue;
- }
- String s = CONTRIBUTORS.get(text);
- if (s != null) {
- contributorClassName = s;
- break;
- }
+ if (expression == null) {
+ continue;
+ }
+ String text = expression.getText();
+ if (text != null) {
+ methodInfo.add(text);
}
}
- PsiClass contributorClass = psiManager.findClassWithCache(contributorClassName, place.getResolveScope());
- if (contributorClass != null) {
- contributorClass.processDeclarations(processor, state, null, place);
+ for (GradleMethodContextContributor contributor : GradleMethodContextContributor.EP_NAME.getExtensions()) {
+ contributor.process(methodInfo, processor, state, place);
}
}
}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleUtil.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleUtil.java
index 703c2db..63cd133 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleUtil.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleUtil.java
@@ -12,6 +12,7 @@
import com.intellij.util.containers.ContainerUtilRt;
import com.intellij.util.containers.Stack;
import org.gradle.tooling.model.GradleProject;
+import org.gradle.tooling.model.GradleScript;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -171,6 +172,27 @@
*/
@NotNull
public static String getConfigPath(@NotNull GradleProject subProject, @NotNull String rootProjectPath) {
+ try {
+ GradleScript script = subProject.getBuildScript();
+ if (script != null) {
+ File file = script.getSourceFile();
+ if (file != null) {
+ if (file.isFile()) {
+ // The file points to 'build.gradle' at the moment but we keep it's parent dir path instead.
+ file = file.getParentFile();
+ }
+ return ExternalSystemApiUtil.toCanonicalPath(file.getCanonicalPath());
+ }
+ }
+ }
+ catch (Exception e) {
+ // As said by gradle team: 'One thing I'm interested in is whether you have any thoughts about how the tooling API should
+ // deal with missing details from the model - for example, when asking for details about the build scripts when using
+ // a version of Gradle that does not supply that information. Currently, you'll get a `UnsupportedOperationException`
+ // when you call the `getBuildScript()` method'.
+ //
+ // So, just ignore it and assume that the user didn't define any custom build file name.
+ }
File rootProjectParent = new File(rootProjectPath).getParentFile();
StringBuilder buffer = new StringBuilder(FileUtil.toCanonicalPath(rootProjectParent.getAbsolutePath()));
Stack<String> stack = ContainerUtilRt.newStack();
diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml
index bbf316d7..b09ae2e 100644
--- a/plugins/groovy/src/META-INF/plugin.xml
+++ b/plugins/groovy/src/META-INF/plugin.xml
@@ -151,8 +151,11 @@
<typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrBooleanTypeConverter"/>
<typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrGenericTypeConverter"/>
<typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.ClosureToSamConverter"/>
-
+ <typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrStringConverter"/>
+ <typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrContainerConverter"/>
<typeConverter implementation="org.jetbrains.plugins.groovy.gpp.GppTypeConverter"/>
+ <typeConverter implementation="org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrNumberConverter"/>
+
<expectedTypesContributor implementation="org.jetbrains.plugins.groovy.gpp.GppExpectedTypesContributor"/>
<variableEnhancer implementation="org.jetbrains.plugins.groovy.gpp.GppClosureParameterTypeProvider"/>
<classSubstitutor implementation="org.jetbrains.plugins.groovy.gpp.GppClassSubstitutor"/>
@@ -198,9 +201,7 @@
<testGenerator language="Groovy" implementationClass="org.jetbrains.plugins.groovy.testIntegration.GroovyTestGenerator"/>
<constructorBodyGenerator language="Groovy"
implementationClass="org.jetbrains.plugins.groovy.annotator.intentions.dynamic.GrConstructorBodyGenerator"/>
- <!-- In Android Studio, we don't want editor notifications to setup Groovy Path when *.gradle files are opened. This is a temporary
- hack to remove this until we figure out how to disable it just for gradle scripts.
- <editorNotificationProvider implementation="org.jetbrains.plugins.groovy.annotator.ConfigureGroovyLibraryNotificationProvider"/> -->
+ <editorNotificationProvider implementation="org.jetbrains.plugins.groovy.annotator.ConfigureGroovyLibraryNotificationProvider"/>
<refactoring.introduceParameterMethodUsagesProcessor
implementation="org.jetbrains.plugins.groovy.refactoring.introduce.parameter.java2groovy.GroovyIntroduceParameterMethodUsagesProcessor"/>
<refactoring.changeSignatureUsageProcessor
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/DefaultGroovyFrameworkConfigNotification.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/DefaultGroovyFrameworkConfigNotification.java
index bad8a50..eee671f 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/DefaultGroovyFrameworkConfigNotification.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/DefaultGroovyFrameworkConfigNotification.java
@@ -15,13 +15,14 @@
*/
package org.jetbrains.plugins.groovy.annotator;
-import com.intellij.ide.util.frameworkSupport.AddFrameworkSupportDialog;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.libraries.Library;
+import com.intellij.openapi.roots.ui.configuration.libraries.AddCustomLibraryDialog;
import com.intellij.ui.EditorNotificationPanel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.GroovyBundle;
import org.jetbrains.plugins.groovy.config.GroovyConfigUtils;
+import org.jetbrains.plugins.groovy.config.GroovyLibraryDescription;
/**
* @author sergey.evdokimov
@@ -46,10 +47,7 @@
panel.createActionLabel(GroovyBundle.message("configure.groovy.library"), new Runnable() {
@Override
public void run() {
- AddFrameworkSupportDialog dialog = AddFrameworkSupportDialog.createDialog(module);
- if (dialog != null) {
- dialog.show();
- }
+ AddCustomLibraryDialog.createDialog(new GroovyLibraryDescription(), module, null).show();
}
});
return panel;
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyInArgumentCheckInspection.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyInArgumentCheckInspection.java
index 453d6f8..141f315 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyInArgumentCheckInspection.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyInArgumentCheckInspection.java
@@ -90,7 +90,7 @@
if (component == null) return;
- if (TypesUtil.isAssignable(component, ltype, expression)) return;
+ if (TypesUtil.isAssignableWithoutConversions(component, ltype, expression)) return;
registerError(expression, ltype, rtype);
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodDescriptor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodDescriptor.java
index 9d7f9a5..4f06c15 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodDescriptor.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodDescriptor.java
@@ -71,6 +71,9 @@
@Attribute("referenceProvider")
public String referenceProvider;
+ @Attribute("values")
+ public String values;
+
protected Iterable<String> getNames() {
assert !StringUtil.isEmptyOrSpaces(name);
return StringUtil.tokenize(name, ATTR_NAMES_DELIMITER);
@@ -100,23 +103,6 @@
}
}
- public Map<String, String> getNamedArgumentsReferenceProviders() {
- if (myArguments == null) return Collections.emptyMap();
-
- Map<String, String> res = new HashMap<String, String>();
-
- for (NamedArgument argument : myArguments) {
- if (argument.referenceProvider != null) {
- for (String name : argument.getNames()) {
- Object oldValue = res.put(name, argument.referenceProvider);
- assert oldValue == null;
- }
- }
- }
-
- return res;
- }
-
@Nullable
public Map<String, NamedArgumentDescriptor> getArgumentsMap() {
if (myArguments == null && namedArgs == null) {
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodInfo.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodInfo.java
index 655e6cb..ae2972e 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodInfo.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/extensions/GroovyMethodInfo.java
@@ -12,6 +12,7 @@
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightMethodBuilder;
import org.jetbrains.plugins.groovy.refactoring.GroovyNamesUtil;
import org.jetbrains.plugins.groovy.util.ClassInstanceCache;
+import org.jetbrains.plugins.groovy.util.FixedValuesReferenceProvider;
import java.lang.reflect.Modifier;
import java.util.*;
@@ -37,7 +38,7 @@
private final String myNamedArgProviderClassName;
private GroovyNamedArgumentProvider myNamedArgProviderInstance;
- private Map<String, String> myNamedArgReferenceProviderClassNames;
+ private Map<String, NamedArgumentReference> myNamedArgReferenceProviders;
private static void ensureInit() {
if (METHOD_INFOS != null) return;
@@ -136,9 +137,9 @@
myNamedArguments = method.getArgumentsMap();
myNamedArgProviderClassName = method.namedArgsProvider;
- myNamedArgReferenceProviderClassNames = method.getNamedArgumentsReferenceProviders();
+ myNamedArgReferenceProviders = getNamedArgumentsReferenceProviders(method);
- myAllSupportedNamedArguments.addAll(myNamedArgReferenceProviderClassNames.keySet());
+ myAllSupportedNamedArguments.addAll(myNamedArgReferenceProviders.keySet());
if (ApplicationManager.getApplication().isInternal()) {
// Check classes to avoid typo.
@@ -147,8 +148,8 @@
assertClassExists(myReturnTypeCalculatorClassName, PairFunction.class);
- for (String className : myNamedArgReferenceProviderClassNames.values()) {
- assertClassExists(className, PsiReferenceProvider.class, GroovyNamedArgumentReferenceProvider.class);
+ for (NamedArgumentReference r : myNamedArgReferenceProviders.values()) {
+ assertClassExists(r.myProviderClassName, PsiReferenceProvider.class, GroovyNamedArgumentReferenceProvider.class);
}
}
}
@@ -171,6 +172,39 @@
}
}
+ private static Map<String, NamedArgumentReference> getNamedArgumentsReferenceProviders(GroovyMethodDescriptor methodDescriptor) {
+ if (methodDescriptor.myArguments == null) return Collections.emptyMap();
+
+ Map<String, NamedArgumentReference> res = new HashMap<String, NamedArgumentReference>();
+
+ for (GroovyMethodDescriptor.NamedArgument argument : methodDescriptor.myArguments) {
+ NamedArgumentReference r;
+
+ if (argument.referenceProvider != null) {
+ assert argument.values == null;
+ r = new NamedArgumentReference(argument.referenceProvider);
+ }
+ else if (argument.values != null) {
+ List<String> values = new ArrayList<String>();
+ for (StringTokenizer st = new StringTokenizer(argument.values, " ,;"); st.hasMoreTokens(); ) {
+ values.add(st.nextToken());
+ }
+
+ r = new NamedArgumentReference(values.toArray(new String[values.size()]));
+ }
+ else {
+ continue;
+ }
+
+ for (String name : argument.getNames()) {
+ Object oldValue = res.put(name, r);
+ assert oldValue == null;
+ }
+ }
+
+ return res;
+ }
+
private static void addMethodDescriptor(Map<String, Map<String, List<GroovyMethodInfo>>> res,
GroovyMethodDescriptor method,
@NotNull ClassLoader classLoader,
@@ -235,10 +269,10 @@
*/
@Nullable
public Object getNamedArgReferenceProvider(String namedArgumentName) {
- String className = myNamedArgReferenceProviderClassNames.get(namedArgumentName);
- if (className == null) return null;
+ NamedArgumentReference r = myNamedArgReferenceProviders.get(namedArgumentName);
+ if (r == null) return null;
- return ClassInstanceCache.getInstance(className, myClassLoader);
+ return r.getProvider(myClassLoader);
}
@Nullable
@@ -275,4 +309,40 @@
return true;
}
+
+ private static class NamedArgumentReference {
+ private final String myProviderClassName;
+ private final String[] myValues;
+
+ private volatile Object myProvider;
+
+ public NamedArgumentReference(String providerClassName) {
+ myProviderClassName = providerClassName;
+ myValues = null;
+ }
+
+ public NamedArgumentReference(String[] values) {
+ myValues = values;
+ myProviderClassName = null;
+ }
+
+ private Object doGetProvider(ClassLoader classLoader) {
+ if (myProviderClassName != null) {
+ return ClassInstanceCache.getInstance(myProviderClassName, classLoader);
+ }
+
+ return new FixedValuesReferenceProvider(myValues);
+ }
+
+ // @return instance of PsiReferenceProvider or GroovyNamedArgumentReferenceProvider or null.
+ public Object getProvider(ClassLoader classLoader) {
+ Object res = myProvider;
+ if (res == null) {
+ res = doGetProvider(classLoader);
+ myProvider = res;
+ }
+
+ return res;
+ }
+ }
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java
index 25cbf3a..b3955ee 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java
@@ -48,7 +48,6 @@
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
import org.jetbrains.plugins.groovy.lang.psi.impl.*;
import org.jetbrains.plugins.groovy.lang.psi.impl.signatures.GrClosureSignatureImpl;
-import org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.ClosureParameterEnhancer;
import org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.GrTypeConverter;
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames;
import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil;
@@ -257,51 +256,31 @@
return true;
}
- if (rType == PsiType.NULL) {
- return !(lType instanceof PsiPrimitiveType);
- }
-
- if (isNumericType(lType) && isNumericType(rType)) {
+ if (isAssignableWithoutConversions(lType, rType, context)) {
return true;
}
- if (isClassType(lType, JAVA_LANG_STRING)) {
- return true;
+ Boolean byConversionInMethodCall = isAssignableByConversion(lType, rType, context, true);
+ if (byConversionInMethodCall != null) {
+ return byConversionInMethodCall.booleanValue();
+ }
+
+ if (lType instanceof PsiPrimitiveType && rType == PsiType.NULL) { //check it because now we will wrap primitive type.
+ return false;
}
final PsiManager manager = context.getManager();
final GlobalSearchScope scope = context.getResolveScope();
- if (lType instanceof PsiArrayType) {
- PsiType lComponentType = ((PsiArrayType)lType).getComponentType();
- PsiType rComponentType = ClosureParameterEnhancer.findTypeForIteration(rType, context);
- if (rComponentType != null && isAssignable(lComponentType, rComponentType, context)) {
- return true;
- }
- }
-
- if (unboxPrimitiveTypeWrapper(lType) == PsiType.CHAR &&
- (isClassType(rType, JAVA_LANG_STRING) || isClassType(rType, GROOVY_LANG_GSTRING))) {
- return true;
- }
-
- if (isAssignableByMethodCallConversion(lType, rType, context)) return true;
-
lType = boxPrimitiveType(lType, manager, scope);
rType = boxPrimitiveType(rType, manager, scope);
if (lType.isAssignableFrom(rType)) {
return true;
}
- if (context instanceof GroovyPsiElement) {
- for (GrTypeConverter converter : GrTypeConverter.EP_NAME.getExtensions()) {
- if (!converter.isAllowedInMethodCall()) {
- Boolean result = converter.isConvertible(lType, rType, (GroovyPsiElement)context);
- if (result != null) {
- return result;
- }
- }
- }
+ Boolean byConversion = isAssignableByConversion(lType, rType, context, false);
+ if (byConversion != null) {
+ return byConversion.booleanValue();
}
return false;
@@ -316,7 +295,7 @@
if (rType instanceof PsiIntersectionType) {
for (PsiType child : ((PsiIntersectionType)rType).getConjuncts()) {
- if (isAssignable(lType, child, context)) {
+ if (isAssignableByMethodCallConversion(lType, child, context)) {
return true;
}
}
@@ -324,24 +303,33 @@
}
if (lType instanceof PsiIntersectionType) {
for (PsiType child : ((PsiIntersectionType)lType).getConjuncts()) {
- if (!isAssignable(child, rType, context)) {
+ if (!isAssignableByMethodCallConversion(child, rType, context)) {
return false;
}
}
return true;
}
- if (rType == PsiType.NULL) {
- return !(lType instanceof PsiPrimitiveType);
- }
-
if (isAssignableWithoutConversions(lType, rType, context)) {
return true;
}
+ Boolean byConversion = isAssignableByConversion(lType, rType, context, true);
+ if (byConversion != null) {
+ return byConversion.booleanValue();
+ }
+
+ return false;
+ }
+
+ @Nullable
+ private static Boolean isAssignableByConversion(@NotNull PsiType lType,
+ @NotNull PsiType rType,
+ @NotNull PsiElement context,
+ boolean inMethodCall) {
if (context instanceof GroovyPsiElement) {
for (GrTypeConverter converter : GrTypeConverter.EP_NAME.getExtensions()) {
- if (converter.isAllowedInMethodCall()) {
+ if (inMethodCall == converter.isAllowedInMethodCall()) {
final Boolean result = converter.isConvertible(lType, rType, (GroovyPsiElement)context);
if (result != null) {
return result;
@@ -349,8 +337,7 @@
}
}
}
-
- return false;
+ return null;
}
public static boolean isAssignableWithoutConversions(@Nullable PsiType lType,
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrContainerConverter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrContainerConverter.java
new file mode 100644
index 0000000..fc92a50
--- /dev/null
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrContainerConverter.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.groovy.lang.psi.typeEnhancers;
+
+import com.intellij.psi.PsiArrayType;
+import com.intellij.psi.PsiType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
+import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
+
+/**
+ * Created by Max Medvedev on 8/15/13
+ */
+public class GrContainerConverter extends GrTypeConverter {
+ @Override
+ public boolean isAllowedInMethodCall() {
+ return false;
+ }
+
+ @Nullable
+ @Override
+ public Boolean isConvertible(@NotNull PsiType lType, @NotNull PsiType rType, @NotNull GroovyPsiElement context) {
+ if (lType instanceof PsiArrayType) {
+ PsiType lComponentType = ((PsiArrayType)lType).getComponentType();
+ PsiType rComponentType = ClosureParameterEnhancer.findTypeForIteration(rType, context);
+ if (rComponentType != null && TypesUtil.isAssignable(lComponentType, rComponentType, context)) {
+ return Boolean.TRUE;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrNumberConverter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrNumberConverter.java
new file mode 100644
index 0000000..65ac67d
--- /dev/null
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrNumberConverter.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.groovy.lang.psi.typeEnhancers;
+
+import com.intellij.psi.PsiType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
+import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
+
+/**
+ * Created by Max Medvedev on 8/16/13
+ */
+public class GrNumberConverter extends GrTypeConverter {
+ @Override
+ public boolean isAllowedInMethodCall() {
+ return false;
+ }
+
+ @Nullable
+ @Override
+ public Boolean isConvertible(@NotNull PsiType lType, @NotNull PsiType rType, @NotNull GroovyPsiElement context) {
+ if (TypesUtil.isNumericType(lType) && TypesUtil.isNumericType(rType)) {
+ return Boolean.TRUE;
+ }
+
+ return null;
+ }
+}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrStringConverter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrStringConverter.java
new file mode 100644
index 0000000..377c093
--- /dev/null
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/GrStringConverter.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2000-2013 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 org.jetbrains.plugins.groovy.lang.psi.typeEnhancers;
+
+import com.intellij.psi.PsiType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
+
+import static com.intellij.psi.CommonClassNames.JAVA_LANG_STRING;
+import static org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil.isClassType;
+import static org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil.unboxPrimitiveTypeWrapper;
+import static org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames.GROOVY_LANG_GSTRING;
+
+/**
+ * Created by Max Medvedev on 8/15/13
+ */
+public class GrStringConverter extends GrTypeConverter {
+ @Override
+ public boolean isAllowedInMethodCall() {
+ return false;
+ }
+
+ @Nullable
+ @Override
+ public Boolean isConvertible(@NotNull PsiType lType, @NotNull PsiType rType, @NotNull GroovyPsiElement context) {
+ if (isClassType(lType, JAVA_LANG_STRING)) {
+ return Boolean.TRUE;
+ }
+
+ if (unboxPrimitiveTypeWrapper(lType) == PsiType.CHAR &&
+ (isClassType(rType, JAVA_LANG_STRING) || isClassType(rType, GROOVY_LANG_GSTRING))) {
+ return Boolean.TRUE;
+ }
+
+ return null;
+ }
+}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GrVariableInliner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GrVariableInliner.java
index 91d423e..7110ced 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GrVariableInliner.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GrVariableInliner.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2013 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.
@@ -23,6 +23,7 @@
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiSubstitutor;
+import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.refactoring.util.CommonRefactoringUtil;
@@ -40,9 +41,9 @@
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringBundle;
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil;
+import org.jetbrains.plugins.groovy.refactoring.introduce.GrIntroduceHandlerBase;
import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.LOG;
-import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.skipParentheses;
/**
* @author Max Medvedev
@@ -59,7 +60,9 @@
initializer = variable.getInitializerGroovy();
LOG.assertTrue(initializer != null);
}
- myTempExpr = (GrExpression)skipParentheses(initializer, false);
+
+ myTempExpr = GrIntroduceHandlerBase.insertExplicitCastIfNeeded(variable, initializer);
+
}
@Nullable
@@ -112,6 +115,7 @@
GrExpression newExpr = exprToBeReplaced.replaceWithExpression((GrExpression)initializer.copy(), true);
final Project project = usage.getProject();
+ JavaCodeStyleManager.getInstance(project).shortenClassReferences(newExpr);
Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
GroovyRefactoringUtil.highlightOccurrences(project, editor, new PsiElement[]{newExpr});
WindowManager.getInstance().getStatusBar(project).setInfo(GroovyRefactoringBundle.message("press.escape.to.remove.the.highlighting"));
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineLocalProcessor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineLocalProcessor.java
index b0173f0..ee4038d 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineLocalProcessor.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineLocalProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2013 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.
@@ -47,6 +47,7 @@
import org.jetbrains.plugins.groovy.lang.psi.controlFlow.impl.ControlFlowBuilder;
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringBundle;
+import org.jetbrains.plugins.groovy.refactoring.introduce.GrIntroduceHandlerBase;
import java.util.ArrayList;
import java.util.BitSet;
@@ -194,11 +195,14 @@
protected void performRefactoring(UsageInfo[] usages) {
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
+ final GrExpression initializer = mySettings.getInitializer();
+
+ GrExpression initializerToUse = GrIntroduceHandlerBase.insertExplicitCastIfNeeded(myLocal, mySettings.getInitializer());
+
for (UsageInfo usage : usages) {
- GrVariableInliner.inlineReference(usage, myLocal, mySettings.getInitializer());
+ GrVariableInliner.inlineReference(usage, myLocal, initializerToUse);
}
- final GrExpression initializer = mySettings.getInitializer();
final PsiElement initializerParent = initializer.getParent();
if (initializerParent instanceof GrAssignmentExpression) {
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/GrIntroduceHandlerBase.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/GrIntroduceHandlerBase.java
index f2fee48..bed8605 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/GrIntroduceHandlerBase.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/GrIntroduceHandlerBase.java
@@ -62,6 +62,7 @@
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrStringInjection;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
+import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.GrStringUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
import org.jetbrains.plugins.groovy.refactoring.GrRefactoringError;
@@ -71,6 +72,8 @@
import java.util.*;
+import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.skipParentheses;
+
/**
* @author Maxim.Medvedev
*/
@@ -82,6 +85,38 @@
}
};
+ public static GrExpression insertExplicitCastIfNeeded(GrVariable variable, GrExpression initializer) {
+ PsiType ltype = findLValueType(initializer);
+ PsiType rtype = initializer.getType();
+
+ GrExpression rawExpr = (GrExpression)skipParentheses(initializer, false);
+
+ if (ltype == null || TypesUtil.isAssignableWithoutConversions(ltype, rtype, initializer) || !TypesUtil.isAssignable(ltype, rtype, initializer)) {
+ return rawExpr;
+ }
+ else { // implicit coercion should be replaced with explicit cast
+ GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(variable.getProject());
+ GrSafeCastExpression cast =
+ (GrSafeCastExpression)factory.createExpressionFromText("a as B");
+ cast.getOperand().replaceWithExpression(rawExpr, false);
+ cast.getCastTypeElement().replace(factory.createTypeElement(ltype));
+ return cast;
+ }
+ }
+
+ @Nullable
+ private static PsiType findLValueType(GrExpression initializer) {
+ if (initializer.getParent() instanceof GrAssignmentExpression && ((GrAssignmentExpression)initializer.getParent()).getRValue() == initializer) {
+ return ((GrAssignmentExpression)initializer.getParent()).getLValue().getNominalType();
+ }
+ else if (initializer.getParent() instanceof GrVariable) {
+ return ((GrVariable)initializer.getParent()).getDeclaredType();
+ }
+ else {
+ return null;
+ }
+ }
+
@NotNull
protected abstract String getRefactoringName();
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/util/FixedValuesReferenceProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/util/FixedValuesReferenceProvider.java
new file mode 100644
index 0000000..5ccdd81
--- /dev/null
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/util/FixedValuesReferenceProvider.java
@@ -0,0 +1,48 @@
+package org.jetbrains.plugins.groovy.util;
+
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiReference;
+import com.intellij.psi.PsiReferenceBase;
+import com.intellij.psi.PsiReferenceProvider;
+import com.intellij.util.ProcessingContext;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author Sergey Evdokimov
+ */
+public class FixedValuesReferenceProvider extends PsiReferenceProvider {
+
+ private final String[] myValues;
+
+ private boolean mySoft;
+
+ public FixedValuesReferenceProvider(@NotNull String[] values) {
+ this(values, false);
+ }
+
+ public FixedValuesReferenceProvider(@NotNull String[] values, boolean soft) {
+ myValues = values;
+ mySoft = soft;
+ }
+
+ @NotNull
+ @Override
+ public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
+ return new PsiReference[]{
+ new PsiReferenceBase<PsiElement>(element, mySoft) {
+ @Nullable
+ @Override
+ public PsiElement resolve() {
+ return null;
+ }
+
+ @NotNull
+ @Override
+ public Object[] getVariants() {
+ return myValues;
+ }
+ }
+ };
+ }
+}
diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineVariableTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineVariableTest.groovy
index 789ef53..a0a96d2 100644
--- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineVariableTest.groovy
+++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineVariableTest.groovy
@@ -1,5 +1,6 @@
/*
- * Copyright 2000-2007 JetBrains s.r.o.
+ * Copyright 2000-2013 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
@@ -71,6 +72,9 @@
public void testUndefinedVarInline() {doTest()}
+ public void testImplicitCast() { doTest() }
+ public void testImplicitCast2() { doTest() }
+
protected void doFieldTest() {
InlineMethodTest.doInlineTest(myFixture, testDataPath + getTestName(true) + ".test", new GroovyInlineHandler());
}
diff --git a/plugins/groovy/testdata/groovy/refactoring/inlineLocal/ImplicitCast.test b/plugins/groovy/testdata/groovy/refactoring/inlineLocal/ImplicitCast.test
new file mode 100644
index 0000000..9cfa98f
--- /dev/null
+++ b/plugins/groovy/testdata/groovy/refactoring/inlineLocal/ImplicitCast.test
@@ -0,0 +1,5 @@
+String s = 2
+
+print <selection>s</selection>
+-----
+print 2 as String
diff --git a/plugins/groovy/testdata/groovy/refactoring/inlineLocal/implicitCast2.test b/plugins/groovy/testdata/groovy/refactoring/inlineLocal/implicitCast2.test
new file mode 100644
index 0000000..871700e
--- /dev/null
+++ b/plugins/groovy/testdata/groovy/refactoring/inlineLocal/implicitCast2.test
@@ -0,0 +1,6 @@
+String s = 'a'
+s = 2
+print <selection>s</selection>
+-----
+String s = 'a'
+print 2 as String
diff --git a/plugins/groovy/testdata/highlighting/MemberShipOperatorCheck.groovy b/plugins/groovy/testdata/highlighting/MemberShipOperatorCheck.groovy
index 816c31c..8e5bb16 100644
--- a/plugins/groovy/testdata/highlighting/MemberShipOperatorCheck.groovy
+++ b/plugins/groovy/testdata/highlighting/MemberShipOperatorCheck.groovy
@@ -21,10 +21,10 @@
}
print (1 in [1])
-print (1 in ['a'])
+print (<warning descr="'ArrayList<String>' cannot contain 'Integer'">1 in ['a']</warning>)
print (1 in 1)
print (<warning descr="'ArrayList<Integer>' cannot contain 'ArrayList<Integer>'">[2] in [2]</warning>)
print (1 in new ArrayList())
print (<warning descr="'Integer' cannot contain 'Date'">new Date() in 2</warning>)
-print (<warning>'a' in [1]</warning>)
\ No newline at end of file
+print (<warning descr="'ArrayList<Integer>' cannot contain 'String'">'a' in [1]</warning>)
\ No newline at end of file
diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java
index a88550b..7d902cf 100644
--- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java
+++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java
@@ -245,6 +245,10 @@
doTest();
}
+ public void testReadOnly1() throws Exception {
+ doTest();
+ }
+
public void testScriptSource() throws Exception {
doTest("s1.js");
}
diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXUnresolvedFxIdReferenceInspectionTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXUnresolvedFxIdReferenceInspectionTest.java
index 831169f..5a49915 100644
--- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXUnresolvedFxIdReferenceInspectionTest.java
+++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXUnresolvedFxIdReferenceInspectionTest.java
@@ -43,6 +43,17 @@
assertEmpty(intentionActions);
}
+ public void testFieldsFromControllerSuper() throws Exception {
+ myFixture.addClass("import javafx.scene.control.RadioButton;\n" +
+ "public class SuperController {\n" +
+ " public RadioButton option1;\n" +
+ "}\n");
+ myFixture.addClass("public class Controller extends SuperController {}");
+ final String testFxml = getTestName(true) + ".fxml";
+ myFixture.configureByFile(testFxml);
+ myFixture.testHighlighting(true, false, false, testFxml);
+ }
+
private void doTest(final String controllerName) {
myFixture.configureByFiles(getTestName(true) + ".fxml", controllerName + ".java");
final IntentionAction singleIntention = myFixture.findSingleIntention(getHint("unknown"));
diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java
index f680469..0becfab 100644
--- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java
+++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java
@@ -187,7 +187,7 @@
public static PsiMethod findPropertySetter(String attributeName, PsiClass classWithStaticProperty) {
final String setterName = PropertyUtil.suggestSetterName(StringUtil.getShortName(attributeName));
final PsiMethod[] setters = classWithStaticProperty.findMethodsByName(setterName, true);
- if (setters.length == 1) {
+ if (setters.length >= 1) {
return setters[0];
}
return null;
diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxFieldIdReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxFieldIdReferenceProvider.java
index 3ec363f..09cd1a5 100644
--- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxFieldIdReferenceProvider.java
+++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxFieldIdReferenceProvider.java
@@ -36,7 +36,7 @@
protected PsiReference[] getReferencesByElement(@NotNull final PsiClass aClass,
final XmlAttributeValue xmlAttributeValue,
ProcessingContext context) {
- final PsiField field = aClass.findFieldByName(xmlAttributeValue.getValue(), false);
+ final PsiField field = aClass.findFieldByName(xmlAttributeValue.getValue(), true);
return new PsiReference[]{new JavaFxControllerFieldRef(xmlAttributeValue, field, aClass)};
}
diff --git a/plugins/javaFX/testData/highlighting/readOnly1.fxml b/plugins/javaFX/testData/highlighting/readOnly1.fxml
new file mode 100644
index 0000000..a5fb9ae
--- /dev/null
+++ b/plugins/javaFX/testData/highlighting/readOnly1.fxml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import javafx.scene.layout.StackPane?>
+<StackPane xmlns:fx="http://javafx.com/fxml">
+ <RadioButton fx:id="option1" disable="true" mnemonicParsing="false" text="Option 1">
+ <toggleGroup>
+ <ToggleGroup fx:id="toggleGroup1"/>
+ </toggleGroup>
+ </RadioButton>
+ <RadioButton fx:id="option2" disable="true" mnemonicParsing="false" text="Option 2" toggleGroup="$toggleGroup1"/>
+</StackPane>
diff --git a/plugins/javaFX/testData/inspections/unresolvedFxId/fieldsFromControllerSuper.fxml b/plugins/javaFX/testData/inspections/unresolvedFxId/fieldsFromControllerSuper.fxml
new file mode 100644
index 0000000..12139f3
--- /dev/null
+++ b/plugins/javaFX/testData/inspections/unresolvedFxId/fieldsFromControllerSuper.fxml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import javafx.scene.layout.StackPane?>
+<StackPane xmlns:fx="http://javafx.com/fxml" fx:controller="Controller">
+ <RadioButton fx:id="option1" disable="true" mnemonicParsing="false" text="Option 1">
+ <toggleGroup>
+ <ToggleGroup fx:id="<warning descr="Unresolved fx:id reference">toggleGroup1</warning>"/>
+ </toggleGroup>
+ </RadioButton>
+ <RadioButton fx:id="<warning descr="Unresolved fx:id reference">option2</warning>" disable="true" mnemonicParsing="false" text="$option1" toggleGroup="$toggleGroup1"/>
+</StackPane>
diff --git a/plugins/tasks/tasks-tests/test/com/intellij/tasks/vcs/TaskBranchesTest.java b/plugins/tasks/tasks-tests/test/com/intellij/tasks/vcs/TaskBranchesTest.java
index 1dbfff0..1261d12 100644
--- a/plugins/tasks/tasks-tests/test/com/intellij/tasks/vcs/TaskBranchesTest.java
+++ b/plugins/tasks/tasks-tests/test/com/intellij/tasks/vcs/TaskBranchesTest.java
@@ -25,7 +25,9 @@
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import git4idea.branch.GitBranchesCollection;
+import git4idea.config.GitVcsSettings;
import git4idea.repo.GitRepository;
+import git4idea.test.GitExecutor;
import git4idea.test.GitTestUtil;
import java.io.File;
@@ -125,5 +127,6 @@
protected void setUp() throws Exception {
super.setUp();
myTaskManager = (TaskManagerImpl)TaskManager.getManager(getProject());
+ GitVcsSettings.getInstance(myProject).getAppSettings().setPathToGit(GitExecutor.GIT_EXECUTABLE);
}
}
diff --git a/plugins/terminal/lib/jediterm-pty-0.08.jar b/plugins/terminal/lib/jediterm-pty-0.08.jar
index 5fe6a5f..e9bf336 100644
--- a/plugins/terminal/lib/jediterm-pty-0.08.jar
+++ b/plugins/terminal/lib/jediterm-pty-0.08.jar
Binary files differ
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/AbstractTerminalRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/AbstractTerminalRunner.java
index 926fbd1..0ddfd9f 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/AbstractTerminalRunner.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/AbstractTerminalRunner.java
@@ -14,11 +14,13 @@
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.util.ui.UIUtil;
import com.jediterm.terminal.TtyConnector;
+import com.jediterm.terminal.emulator.ColorPalette;
import com.jediterm.terminal.ui.AbstractSystemSettingsProvider;
import com.jediterm.terminal.ui.TerminalSession;
import com.jediterm.terminal.ui.TerminalWidget;
@@ -43,9 +45,9 @@
}
public void run() {
- ProgressManager.getInstance().run(new Task.Backgroundable(myProject, "Connecting to terminal", false) {
+ ProgressManager.getInstance().run(new Task.Backgroundable(myProject, "Running the terminal", false) {
public void run(@NotNull final ProgressIndicator indicator) {
- indicator.setText("Connecting to terminal...");
+ indicator.setText("Running the terminal...");
try {
doRun();
}
@@ -85,7 +87,7 @@
protected abstract ProcessHandler createProcessHandler(T process);
- public TerminalWidget createTerminalWidget() {
+ public JBTabbedTerminalWidget createTerminalWidget() {
JBTerminalSystemSettingsProvider provider = new JBTerminalSystemSettingsProvider();
JBTabbedTerminalWidget terminalWidget = new JBTabbedTerminalWidget(provider);
provider.setTerminalWidget(terminalWidget);
@@ -126,8 +128,7 @@
}
public static void openSession(TerminalWidget terminal, TtyConnector ttyConnector) {
- TerminalSession session = terminal.createTerminalSession();
- session.setTtyConnector(ttyConnector);
+ TerminalSession session = terminal.createTerminalSession(ttyConnector);
session.start();
}
@@ -184,6 +185,11 @@
return getKeyStrokesByActionId("$Paste");
}
+ @Override
+ public ColorPalette getPalette() {
+ return SystemInfo.isWindows ? ColorPalette.WINDOWS_PALETTE : ColorPalette.XTERM_PALETTE;
+ }
+
private KeyStroke[] getKeyStrokesByActionId(String actionId) {
java.util.List<KeyStroke> keyStrokes = new ArrayList<KeyStroke>();
Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts(actionId);
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java
index 20866c6..7a83c32 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java
@@ -27,6 +27,7 @@
import com.intellij.openapi.ide.CopyPasteManager;
import com.intellij.util.ui.GraphicsUtil;
import com.intellij.util.ui.UIUtil;
+import com.jediterm.terminal.TerminalColor;
import com.jediterm.terminal.TextStyle;
import com.jediterm.terminal.display.BackBuffer;
import com.jediterm.terminal.display.StyleState;
@@ -52,20 +53,21 @@
@NotNull EditorColorsScheme scheme) {
super(settingsProvider, backBuffer, styleState);
myColorScheme = scheme;
-
- styleState.setDefaultStyle(new TextStyle(myColorScheme.getDefaultForeground(), myColorScheme.getDefaultBackground()));
- setSelectionColor(new TextStyle(myColorScheme.getColor(EditorColors.SELECTION_FOREGROUND_COLOR),
- myColorScheme.getColor(EditorColors.SELECTION_BACKGROUND_COLOR)));
-
+ styleState.setDefaultStyle(new TextStyle(TerminalColor.awt(myColorScheme.getDefaultForeground()), TerminalColor.awt(
+ myColorScheme.getDefaultBackground())));
+
+ setSelectionColor(new TextStyle(TerminalColor.awt(myColorScheme.getColor(EditorColors.SELECTION_FOREGROUND_COLOR)),
+ TerminalColor.awt(myColorScheme.getColor(EditorColors.SELECTION_BACKGROUND_COLOR))));
+
setLineSpace(myColorScheme.getConsoleLineSpacing());
}
protected Font createFont() {
Font normalFont = Font.decode(getFontName());
-
+
if (normalFont == null) {
normalFont = super.createFont();
}
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalToolWindowFactory.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalToolWindowFactory.java
index 5b4cf95..ad7d06a 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalToolWindowFactory.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalToolWindowFactory.java
@@ -11,6 +11,6 @@
@Override
public void createToolWindowContent(Project project, ToolWindow toolWindow) {
TerminalView terminalView = TerminalView.getInstance();
- terminalView.createTerminal(project, toolWindow);
+ terminalView.initTerminal(project, toolWindow);
}
}
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
index 34757ae..73c8d69 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
@@ -23,21 +23,27 @@
*/
public class TerminalView {
- private TerminalWidget myTerminalWidget;
+ private JBTabbedTerminalWidget myTerminalWidget;
+ private Project myProject;
- public void createTerminal(Project project, ToolWindow toolWindow) {
-
+ public void initTerminal(Project project, ToolWindow toolWindow) {
+ myProject = project;
LocalTerminalDirectRunner terminalRunner = OpenLocalTerminalAction.createTerminalRunner(project);
-
+
+ toolWindow.setToHideOnEmptyContent(true);
+
if (terminalRunner != null) {
myTerminalWidget = terminalRunner.createTerminalWidget();
}
- final Content content = createToolWindowContentPanel(terminalRunner, myTerminalWidget);
+ Content content = createToolWindowContentPanel(terminalRunner, myTerminalWidget, toolWindow);
+
toolWindow.getContentManager().addContent(content);
}
- private Content createToolWindowContentPanel(@Nullable LocalTerminalDirectRunner terminalRunner, TerminalWidget terminalWidget) {
+ private Content createToolWindowContentPanel(@Nullable LocalTerminalDirectRunner terminalRunner,
+ JBTabbedTerminalWidget terminalWidget,
+ ToolWindow toolWindow) {
SimpleToolWindowPanel panel = new SimpleToolWindowPanel(false, true) {
@Override
public Object getData(@NonNls String dataId) {
@@ -50,12 +56,13 @@
panel.addFocusListener(createFocusListener());
}
- ActionToolbar toolbar = createToolbar(terminalRunner, terminalWidget);
+ ActionToolbar toolbar = createToolbar(terminalRunner, terminalWidget, toolWindow);
toolbar.getComponent().addFocusListener(createFocusListener());
toolbar.setTargetComponent(panel);
panel.setToolbar(toolbar.getComponent());
final Content content = ContentFactory.SERVICE.getInstance().createContent(panel, "", false);
+ content.setCloseable(true);
if (getComponentToFocus() != null) {
content.setPreferredFocusableComponent(getComponentToFocus());
@@ -89,18 +96,18 @@
openSession(terminal, terminalRunner);
}
- private void openSession(ToolWindow terminal, AbstractTerminalRunner terminalRunner) {
+ private void openSession(ToolWindow toolWindow, AbstractTerminalRunner terminalRunner) {
if (myTerminalWidget == null) {
myTerminalWidget = terminalRunner.createTerminalWidget();
- terminal.getContentManager().removeAllContents(true);
- final Content content = createToolWindowContentPanel(null, myTerminalWidget);
- terminal.getContentManager().addContent(content);
+ toolWindow.getContentManager().removeAllContents(true);
+ final Content content = createToolWindowContentPanel(null, myTerminalWidget, toolWindow);
+ toolWindow.getContentManager().addContent(content);
}
else {
terminalRunner.openSession(myTerminalWidget);
}
- terminal.activate(new Runnable() {
+ toolWindow.activate(new Runnable() {
@Override
public void run() {
@@ -112,26 +119,25 @@
return ServiceManager.getService(TerminalView.class);
}
- private static ActionToolbar createToolbar(@Nullable final LocalTerminalDirectRunner terminalRunner,
- final TerminalWidget terminal) {
+ private ActionToolbar createToolbar(@Nullable final LocalTerminalDirectRunner terminalRunner,
+ final JBTabbedTerminalWidget terminal, ToolWindow toolWindow) {
DefaultActionGroup group = new DefaultActionGroup();
if (terminalRunner != null) {
group.add(new NewSession(terminalRunner, terminal));
+ group.add(new CloseSession(terminal, toolWindow));
}
return ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, false);
}
- public void createNewSession(Project project, AbstractTerminalRunner terminalRunner) {
- ToolWindow terminal = ToolWindowManager.getInstance(project).getToolWindow("Terminal");
+ public void createNewSession(Project project, final AbstractTerminalRunner terminalRunner) {
+ final ToolWindow toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal");
- openSession(terminal, terminalRunner);
-
- terminal.activate(new Runnable() {
+ toolWindow.activate(new Runnable() {
@Override
public void run() {
-
+ openSession(toolWindow, terminalRunner);
}
}, true);
}
@@ -151,4 +157,33 @@
myTerminalRunner.openSession(myTerminal);
}
}
+
+ private class CloseSession extends AnAction {
+ private final JBTabbedTerminalWidget myTerminal;
+ private ToolWindow myToolWindow;
+
+ public CloseSession(JBTabbedTerminalWidget terminal, ToolWindow toolWindow) {
+ super("Close Session", "Close Terminal Session", AllIcons.Actions.Delete);
+ myTerminal = terminal;
+ myToolWindow = toolWindow;
+ }
+
+ @Override
+ public void actionPerformed(AnActionEvent e) {
+ boolean singleSession = myTerminal.isSingleSession();
+
+ myTerminal.closeCurrentSession();
+
+ if (singleSession) {
+ myToolWindow.getContentManager().removeAllContents(true);
+
+ myToolWindow.getActivation().doWhenDone(new Runnable() {
+ @Override
+ public void run() {
+ initTerminal(myProject, myToolWindow);
+ }
+ });
+ }
+ }
+ }
}
diff --git a/plugins/testng/src/com/theoryinpractice/testng/TestNGReferenceContributor.java b/plugins/testng/src/com/theoryinpractice/testng/TestNGReferenceContributor.java
index c167004..f91e7fc 100644
--- a/plugins/testng/src/com/theoryinpractice/testng/TestNGReferenceContributor.java
+++ b/plugins/testng/src/com/theoryinpractice/testng/TestNGReferenceContributor.java
@@ -36,7 +36,6 @@
import com.intellij.psi.*;
import com.intellij.psi.filters.ElementFilter;
import com.intellij.psi.filters.position.FilterPattern;
-import com.intellij.psi.impl.source.resolve.reference.PsiReferenceProviderBase;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.ArrayUtil;
@@ -57,26 +56,26 @@
}
public void registerReferenceProviders(PsiReferenceRegistrar registrar) {
- registrar.registerReferenceProvider(getElementPattern("dependsOnMethods"), new PsiReferenceProviderBase() {
+ registrar.registerReferenceProvider(getElementPattern("dependsOnMethods"), new PsiReferenceProvider() {
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new MethodReference[]{new MethodReference((PsiLiteralExpression)element)};
}
});
- registrar.registerReferenceProvider(getElementPattern("dataProvider"), new PsiReferenceProviderBase() {
+ registrar.registerReferenceProvider(getElementPattern("dataProvider"), new PsiReferenceProvider() {
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new DataProviderReference[]{new DataProviderReference((PsiLiteralExpression)element)};
}
});
- registrar.registerReferenceProvider(getElementPattern("groups"), new PsiReferenceProviderBase() {
+ registrar.registerReferenceProvider(getElementPattern("groups"), new PsiReferenceProvider() {
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new GroupReference[]{new GroupReference(element.getProject(), (PsiLiteralExpression)element)};
}
});
- registrar.registerReferenceProvider(getElementPattern("dependsOnGroups"), new PsiReferenceProviderBase() {
+ registrar.registerReferenceProvider(getElementPattern("dependsOnGroups"), new PsiReferenceProvider() {
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new GroupReference[]{new GroupReference(element.getProject(), (PsiLiteralExpression)element)};
diff --git a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/tools/CreationTool.java b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/tools/CreationTool.java
index 5f301ac7..83ed504 100644
--- a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/tools/CreationTool.java
+++ b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/tools/CreationTool.java
@@ -16,10 +16,8 @@
package com.intellij.designer.designSurface.tools;
import com.intellij.designer.designSurface.OperationContext;
-import com.intellij.designer.model.RadComponent;
import java.util.Collections;
-import java.util.List;
/**
* @author Alexander Lobas
@@ -51,11 +49,6 @@
@Override
protected void updateTarget() {
- if (myTargetOperation != null && myContext != null) {
- List<RadComponent> components = myContext.getComponents();
- if (components != null && !components.isEmpty()) {
- myTargetOperation.setComponent(components.get(0));
- }
- }
+ myTargetOperation.setComponent(myContext.getComponents().get(0));
}
}
\ No newline at end of file
diff --git a/resources-en/src/tips/Welcome.html b/resources-en/src/tips/Welcome.html
index 6d8381a..7301e94 100644
--- a/resources-en/src/tips/Welcome.html
+++ b/resources-en/src/tips/Welcome.html
@@ -4,7 +4,7 @@
</head>
<body>
<h1>
- Welcome to <span class="product">&productName;</span> <span class="version">&majorVersion;.&minorVersion;<</span></h1>
+ Welcome to <span class="product">&productName;</span> <span class="version">&majorVersion;</span></h1>
<p>
You can quickly get familiar with the main features of the IDE by reading these tips. You may try out
the features described in the tips while this dialog stays open on the screen. If you close the dialog,
diff --git a/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListConverter.java b/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListConverter.java
index c15924c..0794955 100644
--- a/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListConverter.java
+++ b/xml/dom-openapi/src/com/intellij/util/xml/converters/DelimitedListConverter.java
@@ -25,6 +25,7 @@
import com.intellij.codeInsight.daemon.EmptyResolveMessageProvider;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.util.text.DelimitedListProcessor;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DelimitedListProcessorTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DelimitedListProcessorTest.java
index a206e43..0dd231e 100644
--- a/xml/dom-tests/tests/com/intellij/util/xml/DelimitedListProcessorTest.java
+++ b/xml/dom-tests/tests/com/intellij/util/xml/DelimitedListProcessorTest.java
@@ -1,6 +1,6 @@
package com.intellij.util.xml;
-import com.intellij.util.xml.converters.DelimitedListProcessor;
+import com.intellij.openapi.util.text.DelimitedListProcessor;
import junit.framework.TestCase;
import java.util.ArrayList;
diff --git a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlGtTypedHandler.java b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlGtTypedHandler.java
index 11677b3..71cba6f 100644
--- a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlGtTypedHandler.java
+++ b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlGtTypedHandler.java
@@ -47,7 +47,12 @@
public class XmlGtTypedHandler extends TypedHandlerDelegate {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.editorActions.TypedHandler");
- public Result beforeCharTyped(final char c, final Project project, final Editor editor, final PsiFile editedFile, final FileType fileType) {
+ public Result beforeCharTyped(final char c, final Project project, Editor editor, PsiFile editedFile, final FileType fileType) {
+ final Editor injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, editedFile);
+ if (editor != injectedEditor) {
+ editor = injectedEditor;
+ editedFile = PsiDocumentManager.getInstance(project).getPsiFile(injectedEditor.getDocument());
+ }
final WebEditorOptions webEditorOptions = WebEditorOptions.getInstance();
if (c == '>' && webEditorOptions != null && webEditorOptions.isAutomaticallyInsertClosingTag() && fileContainsXmlLanguage(editedFile)) {
PsiDocumentManager.getInstance(project).commitAllDocuments();
@@ -66,13 +71,6 @@
// <xml_code><caret><outer_element>
elementAtCaret = element = provider.findElementAt(offset - 1, XMLLanguage.class);
}
- if (element == null && offset > 0) {
- // seems like an injection in a template file
- final PsiElement injectedElement = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset);
- if (injectedElement != null && injectedElement.getContainingFile() instanceof XmlFile) {
- elementAtCaret = element = injectedElement;
- }
- }
if (!(element instanceof PsiWhiteSpace)) {
boolean nonAcceptableDelimiter = true;
diff --git a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/IdReferenceProvider.java b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/IdReferenceProvider.java
index f7dd52a..f8b1453 100644
--- a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/IdReferenceProvider.java
+++ b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/IdReferenceProvider.java
@@ -19,7 +19,6 @@
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceProvider;
import com.intellij.psi.filters.ElementFilter;
-import com.intellij.psi.impl.source.resolve.reference.PsiReferenceProviderBase;
import com.intellij.psi.templateLanguages.OuterLanguageElement;
import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlAttributeValue;
diff --git a/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java b/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java
index 0a43ad1..023e3a9 100644
--- a/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java
+++ b/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java
@@ -226,28 +226,28 @@
if (descriptor == null) return;
final XmlAttributeDescriptor attributeDescriptor = descriptor.getAttributeDescriptor(attribute);
- if (attributeDescriptor == null) return;
-
- if (attributeDescriptor.hasIdType()) {
- updateMap(attribute, value, false);
- }
- else {
- final PsiReference[] references = value.getReferences();
- for (PsiReference r : references) {
- if (r instanceof IdReferenceProvider.GlobalAttributeValueSelfReference /*&& !r.isSoft()*/) {
- updateMap(attribute, value, r.isSoft());
- }
- else if (r instanceof SchemaPrefixReference) {
- SchemaPrefix prefix = ((SchemaPrefixReference)r).resolve();
- if (prefix != null) {
- myHolder.addUsedPrefix(prefix.getName());
+ if (attributeDescriptor != null) {
+ if (attributeDescriptor.hasIdType()) {
+ updateMap(attribute, value, false);
+ }
+ else {
+ final PsiReference[] references = value.getReferences();
+ for (PsiReference r : references) {
+ if (r instanceof IdReferenceProvider.GlobalAttributeValueSelfReference /*&& !r.isSoft()*/) {
+ updateMap(attribute, value, r.isSoft());
+ }
+ else if (r instanceof SchemaPrefixReference) {
+ SchemaPrefix prefix = ((SchemaPrefixReference)r).resolve();
+ if (prefix != null) {
+ myHolder.addUsedPrefix(prefix.getName());
+ }
}
}
}
- }
- if (attributeDescriptor.hasIdRefType() && PsiTreeUtil.getChildOfType(value, OuterLanguageElement.class) == null) {
- myHolder.registerIdReference(value);
+ if (attributeDescriptor.hasIdRefType() && PsiTreeUtil.getChildOfType(value, OuterLanguageElement.class) == null) {
+ myHolder.registerIdReference(value);
+ }
}
String s = value.getValue();
diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/references/IdRefProvider.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/references/IdRefProvider.java
index af803b4..d3857c7 100644
--- a/xml/relaxng/src/org/intellij/plugins/relaxNG/references/IdRefProvider.java
+++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/references/IdRefProvider.java
@@ -23,7 +23,7 @@
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceBase;
-import com.intellij.psi.impl.source.resolve.reference.PsiReferenceProviderBase;
+import com.intellij.psi.PsiReferenceProvider;
import com.intellij.psi.impl.source.resolve.reference.impl.providers.AttributeValueSelfReference;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttribute;
@@ -40,7 +40,7 @@
import static com.intellij.patterns.XmlPatterns.xmlAttribute;
import static com.intellij.patterns.XmlPatterns.xmlAttributeValue;
-public class IdRefProvider extends PsiReferenceProviderBase {
+public class IdRefProvider extends PsiReferenceProvider {
public static final HasIdRefTypeCondition HAS_ID_REF_TYPE = new HasIdRefTypeCondition();
public static final HasIdTypeCondition HAS_ID_TYPE = new HasIdTypeCondition();
diff --git a/xml/tests/src/com/intellij/xml/XmlNamespacesTest.java b/xml/tests/src/com/intellij/xml/XmlNamespacesTest.java
index e457bdc1..5e0932b 100644
--- a/xml/tests/src/com/intellij/xml/XmlNamespacesTest.java
+++ b/xml/tests/src/com/intellij/xml/XmlNamespacesTest.java
@@ -216,6 +216,10 @@
myFixture.checkResultByFile("spring_after.xml");
}
+ public void testXsiType() throws Exception {
+ myFixture.testHighlighting("import.xml", "import.xsd");
+ }
+
private void doUnusedDeclarationTest(String text, String after, String name) throws Exception {
doUnusedDeclarationTest(text, after, name, true);
}
diff --git a/xml/tests/testData/unusedNs/import.xml b/xml/tests/testData/unusedNs/import.xml
new file mode 100644
index 0000000..9468f0f
--- /dev/null
+++ b/xml/tests/testData/unusedNs/import.xml
@@ -0,0 +1,5 @@
+<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="myNamespace"
+ xmlns:c="myNamespace"
+ xsi:type="c:CType">
+</A>
\ No newline at end of file
diff --git a/xml/tests/testData/unusedNs/import.xsd b/xml/tests/testData/unusedNs/import.xsd
new file mode 100644
index 0000000..e40fae5
--- /dev/null
+++ b/xml/tests/testData/unusedNs/import.xsd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
+ version="eeee" blockDefault="#all" finalDefault="" targetNamespace="myNamespace">
+
+ <xsd:simpleType name="CType"></xsd:simpleType>
+</xsd:schema>
\ No newline at end of file