Merge remote branch 'origin/master'

This commit is contained in:
irengrig
2012-06-14 19:25:27 +04:00
53 changed files with 1528 additions and 309 deletions
+232 -130
View File
@@ -2,136 +2,238 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/plugins/InspectionGadgets/InspectionGadgetsPlugin.iml" filepath="$PROJECT_DIR$/plugins/InspectionGadgets/InspectionGadgetsPlugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang.iml" filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang.iml" group="plugins/IntelliLang" />
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-java.iml" filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-java.iml" group="plugins/IntelliLang" />
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-javaee.iml" filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-javaee.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$/plugins/IntentionPowerPak/IntentionPowerPackPlugin.iml" filepath="$PROJECT_DIR$/plugins/IntentionPowerPak/IntentionPowerPackPlugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" filepath="$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/android/android.iml" filepath="$PROJECT_DIR$/plugins/android/android.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/plugins/android/common/android-common.iml" filepath="$PROJECT_DIR$/plugins/android/common/android-common.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-designer/android-designer.iml" filepath="$PROJECT_DIR$/plugins/android-designer/android-designer.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/plugins/android/jps-plugin/android-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/android/jps-plugin/android-jps-plugin.iml" group="plugins/Android" />
<module fileurl="file://$PROJECT_DIR$/plugins/android/rt/android-rt.iml" filepath="$PROJECT_DIR$/plugins/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$/jps/antLayout/antlayout.iml" filepath="$PROJECT_DIR$/jps/antLayout/antlayout.iml" />
<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$/plugins/commander/commander.iml" filepath="$PROJECT_DIR$/plugins/commander/commander.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/community-main.iml" filepath="$PROJECT_DIR$/community-main.iml" />
<module fileurl="file://$PROJECT_DIR$/community-resources/community-resources.iml" filepath="$PROJECT_DIR$/community-resources/community-resources.iml" />
<module fileurl="file://$PROJECT_DIR$/java/compiler/impl/compiler-impl.iml" filepath="$PROJECT_DIR$/java/compiler/impl/compiler-impl.iml" group="java/compiler" />
<module fileurl="file://$PROJECT_DIR$/java/compiler/openapi/compiler-openapi.iml" filepath="$PROJECT_DIR$/java/compiler/openapi/compiler-openapi.iml" group="java/compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/copyright/copyright.iml" filepath="$PROJECT_DIR$/plugins/copyright/copyright.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/platform/core-api/core-api.iml" filepath="$PROJECT_DIR$/platform/core-api/core-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/core-impl/core-impl.iml" filepath="$PROJECT_DIR$/platform/core-impl/core-impl.iml" group="platform" />
<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$/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" />
<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$/plugins/eclipse/eclipse.iml" filepath="$PROJECT_DIR$/plugins/eclipse/eclipse.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" />
<module fileurl="file://$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml" filepath="$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/platform/extensions/extensions.iml" filepath="$PROJECT_DIR$/platform/extensions/extensions.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/java/compiler/forms-compiler/forms-compiler.iml" filepath="$PROJECT_DIR$/java/compiler/forms-compiler/forms-compiler.iml" group="java/compiler" />
<module fileurl="file://$PROJECT_DIR$/platform/forms_rt/forms_rt.iml" filepath="$PROJECT_DIR$/platform/forms_rt/forms_rt.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml" filepath="$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/git4idea/git4idea.iml" filepath="$PROJECT_DIR$/plugins/git4idea/git4idea.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/git4idea/rt/git4idea-rt.iml" filepath="$PROJECT_DIR$/plugins/git4idea/rt/git4idea-rt.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/github/github.iml" filepath="$PROJECT_DIR$/plugins/github/github.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/gradle.iml" filepath="$PROJECT_DIR$/plugins/gradle/gradle.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/rt/groovy_rt.iml" filepath="$PROJECT_DIR$/plugins/groovy/rt/groovy_rt.iml" group="plugins/Groovy" />
<module fileurl="file://$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml" filepath="$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/platform/icons/icons.iml" filepath="$PROJECT_DIR$/platform/icons/icons.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/java/idea-ui/idea-ui.iml" filepath="$PROJECT_DIR$/java/idea-ui/idea-ui.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/images/images.iml" filepath="$PROJECT_DIR$/images/images.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/indexing-api/indexing-api.iml" filepath="$PROJECT_DIR$/platform/indexing-api/indexing-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/indexing-impl/indexing-impl.iml" filepath="$PROJECT_DIR$/platform/indexing-impl/indexing-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/java/compiler/instrumentation-util/instrumentation-util.iml" filepath="$PROJECT_DIR$/java/compiler/instrumentation-util/instrumentation-util.iml" group="java/compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/java-i18n/java-i18n.iml" filepath="$PROJECT_DIR$/plugins/java-i18n/java-i18n.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/java/java-impl/java-impl.iml" filepath="$PROJECT_DIR$/java/java-impl/java-impl.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/java-indexing-impl/java-indexing-impl.iml" filepath="$PROJECT_DIR$/java/java-indexing-impl/java-indexing-impl.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/java-psi-api/java-psi-api.iml" filepath="$PROJECT_DIR$/java/java-psi-api/java-psi-api.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/java-psi-impl/java-psi-impl.iml" filepath="$PROJECT_DIR$/java/java-psi-impl/java-psi-impl.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/java-runtime/java-runtime.iml" filepath="$PROJECT_DIR$/java/java-runtime/java-runtime.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/java-tests/java-tests.iml" filepath="$PROJECT_DIR$/java/java-tests/java-tests.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/compiler/javac2/javac2.iml" filepath="$PROJECT_DIR$/java/compiler/javac2/javac2.iml" group="java/compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml" filepath="$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml" group="plugins/VCS/cvs" />
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/jetgroovy.iml" filepath="$PROJECT_DIR$/plugins/groovy/jetgroovy.iml" group="plugins/Groovy" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/jira-connector/jira-connector.iml" filepath="$PROJECT_DIR$/plugins/tasks/jira-connector/jira-connector.iml" group="plugins/tasks" />
<module fileurl="file://$PROJECT_DIR$/jps/jps.iml" filepath="$PROJECT_DIR$/jps/jps.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/plugins/appLauncher/jps-appLauncher.iml" filepath="$PROJECT_DIR$/jps/plugins/appLauncher/jps-appLauncher.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/jps-builders/jps-builders.iml" filepath="$PROJECT_DIR$/jps/jps-builders/jps-builders.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/model/jps-model.iml" filepath="$PROJECT_DIR$/jps/model/jps-model.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/model-api/jps-model-api.iml" filepath="$PROJECT_DIR$/jps/model-api/jps-model-api.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/model-impl/jps-model-impl.iml" filepath="$PROJECT_DIR$/jps/model-impl/jps-model-impl.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/plugins/scala/jps-scala.iml" filepath="$PROJECT_DIR$/jps/plugins/scala/jps-scala.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/jps/jps-tests.iml" filepath="$PROJECT_DIR$/jps/jps-tests.iml" group="jps" />
<module fileurl="file://$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" filepath="$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/plugins/junit/junit.iml" filepath="$PROJECT_DIR$/plugins/junit/junit.iml" group="plugins" />
<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$/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$/plugins/maven/maven.iml" filepath="$PROJECT_DIR$/plugins/maven/maven.iml" group="plugins" />
<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" />
<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" />
<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" />
<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" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-main/platform-main.iml" filepath="$PROJECT_DIR$/platform/platform-main/platform-main.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-resources/platform-resources.iml" filepath="$PROJECT_DIR$/platform/platform-resources/platform-resources.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-resources-en/platform-resources-en.iml" filepath="$PROJECT_DIR$/platform/platform-resources-en/platform-resources-en.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/platform-tests/platform-tests.iml" filepath="$PROJECT_DIR$/platform/platform-tests/platform-tests.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml" filepath="$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml" filepath="$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/plugins/properties/properties.iml" filepath="$PROJECT_DIR$/plugins/properties/properties.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/rearranger/rearranger.iml" filepath="$PROJECT_DIR$/plugins/rearranger/rearranger.iml" />
<module fileurl="file://$PROJECT_DIR$/xml/relaxng/relaxng.iml" filepath="$PROJECT_DIR$/xml/relaxng/relaxng.iml" group="plugins" />
<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$/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$/plugins/spellchecker/spellchecker.iml" filepath="$PROJECT_DIR$/plugins/spellchecker/spellchecker.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml" filepath="$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml" group="plugins/tasks" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-core/tasks-core.iml" filepath="$PROJECT_DIR$/plugins/tasks/tasks-core/tasks-core.iml" group="plugins/tasks" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-java/tasks-java.iml" filepath="$PROJECT_DIR$/plugins/tasks/tasks-java/tasks-java.iml" group="plugins/tasks" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-tests/tasks-tests.iml" filepath="$PROJECT_DIR$/plugins/tasks/tasks-tests/tasks-tests.iml" group="plugins/tasks" />
<module fileurl="file://$PROJECT_DIR$/platform/testFramework/testFramework.iml" filepath="$PROJECT_DIR$/platform/testFramework/testFramework.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/java/testFramework/testFramework-java.iml" filepath="$PROJECT_DIR$/java/testFramework/testFramework-java.iml" group="java" />
<module fileurl="file://$PROJECT_DIR$/platform/testRunner/testRunner.iml" filepath="$PROJECT_DIR$/platform/testRunner/testRunner.iml" group="platform" />
<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$/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/ui-designer-new/ui-designer-new.iml" filepath="$PROJECT_DIR$/plugins/ui-designer/ui-designer-new/ui-designer-new.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/platform/usageView/usageView.iml" filepath="$PROJECT_DIR$/platform/usageView/usageView.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/util/util.iml" filepath="$PROJECT_DIR$/platform/util/util.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/util-rt/util-rt.iml" filepath="$PROJECT_DIR$/platform/util-rt/util-rt.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/vcs-api/vcs-api.iml" filepath="$PROJECT_DIR$/platform/vcs-api/vcs-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/vcs-impl/vcs-impl.iml" filepath="$PROJECT_DIR$/platform/vcs-impl/vcs-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/xdebugger-api/xdebugger-api.iml" filepath="$PROJECT_DIR$/platform/xdebugger-api/xdebugger-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/xdebugger-impl/xdebugger-impl.iml" filepath="$PROJECT_DIR$/platform/xdebugger-impl/xdebugger-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/xml/impl/xml.iml" filepath="$PROJECT_DIR$/xml/impl/xml.iml" group="xml" />
<module fileurl="file://$PROJECT_DIR$/xml/openapi/xml-openapi.iml" filepath="$PROJECT_DIR$/xml/openapi/xml-openapi.iml" group="xml" />
<module fileurl="file://$PROJECT_DIR$/xml/tests/xml-tests.iml" filepath="$PROJECT_DIR$/xml/tests/xml-tests.iml" group="xml" />
<module fileurl="file://$PROJECT_DIR$/plugins/xpath/xpath.iml" filepath="$PROJECT_DIR$/plugins/xpath/xpath.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/xslt-debugger.iml" filepath="$PROJECT_DIR$/plugins/xslt-debugger/xslt-debugger.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/engine/xslt-debugger-engine.iml" filepath="$PROJECT_DIR$/plugins/xslt-debugger/engine/xslt-debugger-engine.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/engine/impl/xslt-debugger-engine-impl.iml" filepath="$PROJECT_DIR$/plugins/xslt-debugger/engine/impl/xslt-debugger-engine-impl.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/xpath/xslt-rt/xslt-rt.iml" filepath="$PROJECT_DIR$/plugins/xpath/xslt-rt/xslt-rt.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/InspectionGadgets/InspectionGadgetsPlugin.iml"
filepath="$PROJECT_DIR$/plugins/InspectionGadgets/InspectionGadgetsPlugin.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang.iml"
filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang.iml" group="plugins/IntelliLang"/>
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-java.iml"
filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-java.iml" group="plugins/IntelliLang"/>
<module fileurl="file://$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-javaee.iml"
filepath="$PROJECT_DIR$/plugins/IntelliLang/IntelliLang-javaee.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$/plugins/IntentionPowerPak/IntentionPowerPackPlugin.iml"
filepath="$PROJECT_DIR$/plugins/IntentionPowerPak/IntentionPowerPackPlugin.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" filepath="$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml"/>
<module fileurl="file://$PROJECT_DIR$/plugins/android/android.iml" filepath="$PROJECT_DIR$/plugins/android/android.iml"
group="plugins/Android"/>
<module fileurl="file://$PROJECT_DIR$/plugins/android/common/android-common.iml"
filepath="$PROJECT_DIR$/plugins/android/common/android-common.iml" group="plugins/Android"/>
<module fileurl="file://$PROJECT_DIR$/plugins/android-designer/android-designer.iml"
filepath="$PROJECT_DIR$/plugins/android-designer/android-designer.iml" group="plugins/Android"/>
<module fileurl="file://$PROJECT_DIR$/plugins/android/jps-plugin/android-jps-plugin.iml"
filepath="$PROJECT_DIR$/plugins/android/jps-plugin/android-jps-plugin.iml" group="plugins/Android"/>
<module fileurl="file://$PROJECT_DIR$/plugins/android/rt/android-rt.iml" filepath="$PROJECT_DIR$/plugins/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$/jps/antLayout/antlayout.iml" filepath="$PROJECT_DIR$/jps/antLayout/antlayout.iml"/>
<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$/plugins/commander/commander.iml" filepath="$PROJECT_DIR$/plugins/commander/commander.iml"
group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/community-main.iml" filepath="$PROJECT_DIR$/community-main.iml"/>
<module fileurl="file://$PROJECT_DIR$/community-resources/community-resources.iml"
filepath="$PROJECT_DIR$/community-resources/community-resources.iml"/>
<module fileurl="file://$PROJECT_DIR$/java/compiler/impl/compiler-impl.iml"
filepath="$PROJECT_DIR$/java/compiler/impl/compiler-impl.iml" group="java/compiler"/>
<module fileurl="file://$PROJECT_DIR$/java/compiler/openapi/compiler-openapi.iml"
filepath="$PROJECT_DIR$/java/compiler/openapi/compiler-openapi.iml" group="java/compiler"/>
<module fileurl="file://$PROJECT_DIR$/plugins/copyright/copyright.iml" filepath="$PROJECT_DIR$/plugins/copyright/copyright.iml"
group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/platform/core-api/core-api.iml" filepath="$PROJECT_DIR$/platform/core-api/core-api.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/core-impl/core-impl.iml" filepath="$PROJECT_DIR$/platform/core-impl/core-impl.iml"
group="platform"/>
<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$/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"/>
<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$/plugins/eclipse/eclipse.iml" filepath="$PROJECT_DIR$/plugins/eclipse/eclipse.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"/>
<module fileurl="file://$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml"
filepath="$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/platform/extensions/extensions.iml" filepath="$PROJECT_DIR$/platform/extensions/extensions.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/java/compiler/forms-compiler/forms-compiler.iml"
filepath="$PROJECT_DIR$/java/compiler/forms-compiler/forms-compiler.iml" group="java/compiler"/>
<module fileurl="file://$PROJECT_DIR$/platform/forms_rt/forms_rt.iml" filepath="$PROJECT_DIR$/platform/forms_rt/forms_rt.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml"
filepath="$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/git4idea/git4idea.iml" filepath="$PROJECT_DIR$/plugins/git4idea/git4idea.iml"
group="plugins/VCS"/>
<module fileurl="file://$PROJECT_DIR$/plugins/git4idea/rt/git4idea-rt.iml"
filepath="$PROJECT_DIR$/plugins/git4idea/rt/git4idea-rt.iml" group="plugins/VCS"/>
<module fileurl="file://$PROJECT_DIR$/plugins/github/github.iml" filepath="$PROJECT_DIR$/plugins/github/github.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/gradle.iml" filepath="$PROJECT_DIR$/plugins/gradle/gradle.iml"/>
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/rt/groovy_rt.iml" filepath="$PROJECT_DIR$/plugins/groovy/rt/groovy_rt.iml"
group="plugins/Groovy"/>
<module fileurl="file://$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml" filepath="$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml"
group="plugins/VCS"/>
<module fileurl="file://$PROJECT_DIR$/platform/icons/icons.iml" filepath="$PROJECT_DIR$/platform/icons/icons.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/java/idea-ui/idea-ui.iml" filepath="$PROJECT_DIR$/java/idea-ui/idea-ui.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/images/images.iml" filepath="$PROJECT_DIR$/images/images.iml"/>
<module fileurl="file://$PROJECT_DIR$/platform/indexing-api/indexing-api.iml"
filepath="$PROJECT_DIR$/platform/indexing-api/indexing-api.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/indexing-impl/indexing-impl.iml"
filepath="$PROJECT_DIR$/platform/indexing-impl/indexing-impl.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/java/compiler/instrumentation-util/instrumentation-util.iml"
filepath="$PROJECT_DIR$/java/compiler/instrumentation-util/instrumentation-util.iml" group="java/compiler"/>
<module fileurl="file://$PROJECT_DIR$/plugins/java-i18n/java-i18n.iml" filepath="$PROJECT_DIR$/plugins/java-i18n/java-i18n.iml"
group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/java/java-impl/java-impl.iml" filepath="$PROJECT_DIR$/java/java-impl/java-impl.iml"
group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/java-indexing-impl/java-indexing-impl.iml"
filepath="$PROJECT_DIR$/java/java-indexing-impl/java-indexing-impl.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/java-psi-api/java-psi-api.iml" filepath="$PROJECT_DIR$/java/java-psi-api/java-psi-api.iml"
group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/java-psi-impl/java-psi-impl.iml"
filepath="$PROJECT_DIR$/java/java-psi-impl/java-psi-impl.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/java-runtime/java-runtime.iml" filepath="$PROJECT_DIR$/java/java-runtime/java-runtime.iml"
group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/java-tests/java-tests.iml" filepath="$PROJECT_DIR$/java/java-tests/java-tests.iml"
group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/compiler/javac2/javac2.iml" filepath="$PROJECT_DIR$/java/compiler/javac2/javac2.iml"
group="java/compiler"/>
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml"
filepath="$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml" group="plugins/VCS/cvs"/>
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/jetgroovy.iml" filepath="$PROJECT_DIR$/plugins/groovy/jetgroovy.iml"
group="plugins/Groovy"/>
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/jira-connector/jira-connector.iml"
filepath="$PROJECT_DIR$/plugins/tasks/jira-connector/jira-connector.iml" group="plugins/tasks"/>
<module fileurl="file://$PROJECT_DIR$/jps/jps.iml" filepath="$PROJECT_DIR$/jps/jps.iml" group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/plugins/appLauncher/jps-appLauncher.iml"
filepath="$PROJECT_DIR$/jps/plugins/appLauncher/jps-appLauncher.iml" group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/jps-builders/jps-builders.iml" filepath="$PROJECT_DIR$/jps/jps-builders/jps-builders.iml"
group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/model/jps-model.iml" filepath="$PROJECT_DIR$/jps/model/jps-model.iml" group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/model-api/jps-model-api.iml" filepath="$PROJECT_DIR$/jps/model-api/jps-model-api.iml"
group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/model-impl/jps-model-impl.iml" filepath="$PROJECT_DIR$/jps/model-impl/jps-model-impl.iml"
group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/model-serialization/jps-model-serialization.iml"
filepath="$PROJECT_DIR$/jps/model-serialization/jps-model-serialization.iml" group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/plugins/scala/jps-scala.iml" filepath="$PROJECT_DIR$/jps/plugins/scala/jps-scala.iml"
group="jps"/>
<module fileurl="file://$PROJECT_DIR$/jps/jps-tests.iml" filepath="$PROJECT_DIR$/jps/jps-tests.iml" group="jps"/>
<module fileurl="file://$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml"
filepath="$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml"
group="java"/>
<module fileurl="file://$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" filepath="$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/plugins/junit/junit.iml" filepath="$PROJECT_DIR$/plugins/junit/junit.iml" group="plugins"/>
<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$/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$/plugins/maven/maven.iml" filepath="$PROJECT_DIR$/plugins/maven/maven.iml" group="plugins"/>
<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"/>
<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"/>
<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"/>
<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"/>
<module fileurl="file://$PROJECT_DIR$/platform/platform-main/platform-main.iml"
filepath="$PROJECT_DIR$/platform/platform-main/platform-main.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/platform-resources/platform-resources.iml"
filepath="$PROJECT_DIR$/platform/platform-resources/platform-resources.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/platform-resources-en/platform-resources-en.iml"
filepath="$PROJECT_DIR$/platform/platform-resources-en/platform-resources-en.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/platform-tests/platform-tests.iml"
filepath="$PROJECT_DIR$/platform/platform-tests/platform-tests.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml"
filepath="$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml"
filepath="$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/plugins/properties/properties.iml" filepath="$PROJECT_DIR$/plugins/properties/properties.iml"
group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/rearranger/rearranger.iml" filepath="$PROJECT_DIR$/plugins/rearranger/rearranger.iml"/>
<module fileurl="file://$PROJECT_DIR$/xml/relaxng/relaxng.iml" filepath="$PROJECT_DIR$/xml/relaxng/relaxng.iml" group="plugins"/>
<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$/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$/plugins/spellchecker/spellchecker.iml"
filepath="$PROJECT_DIR$/plugins/spellchecker/spellchecker.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml"
group="plugins/VCS"/>
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml"
filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml" group="plugins/VCS"/>
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml"
filepath="$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml" group="plugins/tasks"/>
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-core/tasks-core.iml"
filepath="$PROJECT_DIR$/plugins/tasks/tasks-core/tasks-core.iml" group="plugins/tasks"/>
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-java/tasks-java.iml"
filepath="$PROJECT_DIR$/plugins/tasks/tasks-java/tasks-java.iml" group="plugins/tasks"/>
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-tests/tasks-tests.iml"
filepath="$PROJECT_DIR$/plugins/tasks/tasks-tests/tasks-tests.iml" group="plugins/tasks"/>
<module fileurl="file://$PROJECT_DIR$/platform/testFramework/testFramework.iml"
filepath="$PROJECT_DIR$/platform/testFramework/testFramework.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/java/testFramework/testFramework-java.iml"
filepath="$PROJECT_DIR$/java/testFramework/testFramework-java.iml" group="java"/>
<module fileurl="file://$PROJECT_DIR$/platform/testRunner/testRunner.iml" filepath="$PROJECT_DIR$/platform/testRunner/testRunner.iml"
group="platform"/>
<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$/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/ui-designer-new/ui-designer-new.iml"
filepath="$PROJECT_DIR$/plugins/ui-designer/ui-designer-new/ui-designer-new.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/platform/usageView/usageView.iml" filepath="$PROJECT_DIR$/platform/usageView/usageView.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/util/util.iml" filepath="$PROJECT_DIR$/platform/util/util.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/util-rt/util-rt.iml" filepath="$PROJECT_DIR$/platform/util-rt/util-rt.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/vcs-api/vcs-api.iml" filepath="$PROJECT_DIR$/platform/vcs-api/vcs-api.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/vcs-impl/vcs-impl.iml" filepath="$PROJECT_DIR$/platform/vcs-impl/vcs-impl.iml"
group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/xdebugger-api/xdebugger-api.iml"
filepath="$PROJECT_DIR$/platform/xdebugger-api/xdebugger-api.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/platform/xdebugger-impl/xdebugger-impl.iml"
filepath="$PROJECT_DIR$/platform/xdebugger-impl/xdebugger-impl.iml" group="platform"/>
<module fileurl="file://$PROJECT_DIR$/xml/impl/xml.iml" filepath="$PROJECT_DIR$/xml/impl/xml.iml" group="xml"/>
<module fileurl="file://$PROJECT_DIR$/xml/openapi/xml-openapi.iml" filepath="$PROJECT_DIR$/xml/openapi/xml-openapi.iml" group="xml"/>
<module fileurl="file://$PROJECT_DIR$/xml/tests/xml-tests.iml" filepath="$PROJECT_DIR$/xml/tests/xml-tests.iml" group="xml"/>
<module fileurl="file://$PROJECT_DIR$/plugins/xpath/xpath.iml" filepath="$PROJECT_DIR$/plugins/xpath/xpath.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/xslt-debugger.iml"
filepath="$PROJECT_DIR$/plugins/xslt-debugger/xslt-debugger.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/engine/xslt-debugger-engine.iml"
filepath="$PROJECT_DIR$/plugins/xslt-debugger/engine/xslt-debugger-engine.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/xslt-debugger/engine/impl/xslt-debugger-engine-impl.iml"
filepath="$PROJECT_DIR$/plugins/xslt-debugger/engine/impl/xslt-debugger-engine-impl.iml" group="plugins"/>
<module fileurl="file://$PROJECT_DIR$/plugins/xpath/xslt-rt/xslt-rt.iml" filepath="$PROJECT_DIR$/plugins/xpath/xslt-rt/xslt-rt.iml"
group="plugins"/>
</modules>
</component>
</project>
@@ -1,8 +1,12 @@
package org.jetbrains.jps.model;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryReference;
import org.jetbrains.jps.model.library.JpsLibraryType;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleReference;
import org.jetbrains.jps.model.module.JpsModuleType;
import org.jetbrains.jps.service.JpsServiceManager;
/**
@@ -13,6 +17,10 @@ public abstract class JpsElementFactory {
return JpsServiceManager.getInstance().getService(JpsElementFactory.class);
}
public abstract JpsModule createModule(String name, JpsModuleType<?> type);
public abstract JpsLibrary createLibrary(@NotNull String name, @NotNull JpsLibraryType<?> type);
@NotNull
public abstract JpsModuleReference createModuleReference(@NotNull String moduleName);
@@ -20,4 +28,9 @@ public abstract class JpsElementFactory {
public abstract JpsLibraryReference createLibraryReference(@NotNull String libraryName,
@NotNull JpsElementReference<? extends JpsCompositeElement> parentReference);
@NotNull
public abstract JpsElementReference<JpsProject> createProjectReference();
@NotNull
public abstract JpsElementReference<JpsGlobal> createGlobalReference();
}
@@ -24,4 +24,8 @@ public interface JpsProject extends JpsCompositeElement, JpsReferenceableElement
@NotNull
List<? extends JpsModule> getModules();
void addModule(JpsModule module);
void addLibrary(JpsLibrary library);
}
@@ -0,0 +1,18 @@
package org.jetbrains.jps.model.java;
import org.jetbrains.jps.model.JpsElement;
/**
* @author nik
*/
//todo[nik] move to j2me plugin
public interface ExplodedDirectoryModuleExtension extends JpsElement {
String getExplodedUrl();
void setExplodedUrl(String explodedUrl);
boolean isExcludeExploded();
void setExcludeExploded(boolean excludeExploded);
}
@@ -0,0 +1,10 @@
package org.jetbrains.jps.model.java;
import org.jetbrains.jps.model.library.JpsOrderRootType;
/**
* @author nik
*/
public class JpsAnnotationRootType extends JpsOrderRootType {
public static final JpsAnnotationRootType INSTANCE = new JpsAnnotationRootType();
}
@@ -0,0 +1,31 @@
package org.jetbrains.jps.model.java;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementKind;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.service.JpsServiceManager;
/**
* @author nik
*/
public abstract class JpsJavaExtensionService {
public static JpsJavaExtensionService getInstance() {
return JpsServiceManager.getInstance().getService(JpsJavaExtensionService.class);
}
@NotNull
public abstract JpsJavaModuleExtension getOrCreateModuleExtension(@NotNull JpsModule module);
@NotNull
public abstract JpsJavaDependencyExtension getOrCreateDependencyExtension(@NotNull JpsDependencyElement dependency);
@NotNull
public abstract JpsElementKind<? extends JpsJavaModuleExtension> getModuleExtensionKind();
@NotNull
public abstract JpsElementKind<? extends JpsJavaDependencyExtension> getDependencyExtensionKind();
@NotNull
public abstract ExplodedDirectoryModuleExtension getOrCreateExplodedDirectoryExtension(@NotNull JpsModule module);
}
@@ -1,11 +1,15 @@
package org.jetbrains.jps.model.java;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsUrlList;
/**
* @author nik
*/
public interface JavaModuleExtension extends JpsElement {
public interface JpsJavaModuleExtension extends JpsElement {
JpsUrlList getJavadocRoots();
JpsUrlList getAnnotationRoots();
String getOutputUrl();
@@ -18,4 +22,12 @@ public interface JavaModuleExtension extends JpsElement {
LanguageLevel getLanguageLevel();
void setLanguageLevel(LanguageLevel languageLevel);
boolean isInheritOutput();
void setInheritOutput(boolean inheritOutput);
boolean isExcludeOutput();
void setExcludeOutput(boolean excludeOutput);
}
@@ -4,14 +4,16 @@ package org.jetbrains.jps.model.library;
* @author nik
*/
public class JpsLibraryRootType {
public static final JpsLibraryRootType COMPILED = new JpsLibraryRootType(JpsOrderRootType.COMPILED, false);
public static final JpsLibraryRootType SOURCES = new JpsLibraryRootType(JpsOrderRootType.SOURCES, false);
public static final JpsLibraryRootType COMPILED = new JpsLibraryRootType(JpsOrderRootType.COMPILED, false, false);
public static final JpsLibraryRootType SOURCES = new JpsLibraryRootType(JpsOrderRootType.SOURCES, false, false);
private final boolean myJarDirectory;
private final boolean myRecursive;
private final JpsOrderRootType myType;
public JpsLibraryRootType(JpsOrderRootType type, boolean jarDirectory) {
myType = type;
public JpsLibraryRootType(JpsOrderRootType type, boolean jarDirectory, boolean recursive) {
myJarDirectory = jarDirectory;
myRecursive = recursive;
myType = type;
}
public boolean isJarDirectory() {
@@ -21,4 +23,8 @@ public class JpsLibraryRootType {
public JpsOrderRootType getType() {
return myType;
}
public boolean isRecursive() {
return myRecursive;
}
}
@@ -42,6 +42,9 @@ public interface JpsModule extends JpsNamedElement, JpsReferenceableElement<JpsM
@NotNull
JpsLibrary addModuleLibrary(@NotNull JpsLibraryType<?> type, @NotNull String name);
@NotNull
JpsLibrary addModuleLibrary(@NotNull JpsLibrary library);
void delete();
@NotNull
@@ -12,8 +12,11 @@ public abstract class JpsServiceManager {
public abstract <T> T getService(Class<T> serviceClass);
public abstract <T> Iterable<T> getExtensions(Class<T> extensionClass);
private static class InstanceHolder {
private static final JpsServiceManager INSTANCE;
static {
INSTANCE = ServiceLoader.load(JpsServiceManager.class).iterator().next();
}
@@ -0,0 +1 @@
org.jetbrains.jps.model.java.impl.JpsJavaExtensionServiceImpl
@@ -2,15 +2,32 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryReference;
import org.jetbrains.jps.model.library.JpsLibraryType;
import org.jetbrains.jps.model.library.impl.JpsLibraryImpl;
import org.jetbrains.jps.model.library.impl.JpsLibraryReferenceImpl;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleReference;
import org.jetbrains.jps.model.module.JpsModuleType;
import org.jetbrains.jps.model.module.impl.JpsModuleImpl;
import org.jetbrains.jps.model.module.impl.JpsModuleReferenceImpl;
/**
* @author nik
*/
public class JpsElementFactoryImpl extends JpsElementFactory {
@Override
public JpsModule createModule(String name, JpsModuleType<?> type) {
return new JpsModuleImpl(type, name);
}
@Override
public JpsLibrary createLibrary(@NotNull String name, @NotNull JpsLibraryType<?> type) {
return new JpsLibraryImpl(name, type);
}
@NotNull
@Override
public JpsModuleReference createModuleReference(@NotNull String moduleName) {
@@ -23,4 +40,16 @@ public class JpsElementFactoryImpl extends JpsElementFactory {
@NotNull JpsElementReference<? extends JpsCompositeElement> parentReference) {
return new JpsLibraryReferenceImpl(libraryName, parentReference);
}
@NotNull
@Override
public JpsElementReference<JpsProject> createProjectReference() {
return new JpsProjectElementReference();
}
@NotNull
@Override
public JpsElementReference<JpsGlobal> createGlobalReference() {
return new JpsGlobalElementReference();
}
}
@@ -23,7 +23,7 @@ public class JpsGlobalImpl extends JpsRootElementBase<JpsGlobalImpl> implements
@NotNull
@Override
public JpsLibrary addLibrary(@NotNull JpsLibraryType libraryType, @NotNull final String name) {
final JpsElementCollectionImpl<JpsLibraryImpl> collection = myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
final JpsElementCollectionImpl<JpsLibrary> collection = myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
return collection.addChild(new JpsLibraryImpl(name, libraryType));
}
@@ -17,7 +17,8 @@ import java.util.List;
* @author nik
*/
public class JpsProjectImpl extends JpsRootElementBase<JpsProjectImpl> implements JpsProject {
private static final JpsElementCollectionKind<JpsElementReference<?>> EXTERNAL_REFERENCES_COLLECTION_KIND = new JpsElementCollectionKind<JpsElementReference<?>>(new JpsElementKindBase<JpsElementReference<?>>("external reference"));
private static final JpsElementCollectionKind<JpsElementReference<?>> EXTERNAL_REFERENCES_COLLECTION_KIND =
new JpsElementCollectionKind<JpsElementReference<?>>(new JpsElementKindBase<JpsElementReference<?>>("external reference"));
public JpsProjectImpl(JpsModel model, JpsEventDispatcher eventDispatcher) {
super(model, eventDispatcher);
@@ -37,14 +38,14 @@ public class JpsProjectImpl extends JpsRootElementBase<JpsProjectImpl> implement
@NotNull
@Override
public JpsModule addModule(@NotNull JpsModuleType<?> moduleType, @NotNull final String name) {
final JpsElementCollectionImpl<JpsModuleImpl> collection = myContainer.getChild(JpsModuleKind.MODULE_COLLECTION_KIND);
final JpsElementCollectionImpl<JpsModule> collection = myContainer.getChild(JpsModuleKind.MODULE_COLLECTION_KIND);
return collection.addChild(new JpsModuleImpl(moduleType, name));
}
@NotNull
@Override
public JpsLibrary addLibrary(@NotNull JpsLibraryType<?> libraryType, @NotNull final String name) {
final JpsElementCollectionImpl<JpsLibraryImpl> collection = myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
final JpsElementCollectionImpl<JpsLibrary> collection = myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
return collection.addChild(new JpsLibraryImpl(name, libraryType));
}
@@ -60,6 +61,16 @@ public class JpsProjectImpl extends JpsRootElementBase<JpsProjectImpl> implement
return myContainer.getChild(JpsModuleKind.MODULE_COLLECTION_KIND).getElements();
}
@Override
public void addModule(JpsModule module) {
myContainer.getChild(JpsModuleKind.MODULE_COLLECTION_KIND).addChild(module);
}
@Override
public void addLibrary(JpsLibrary library) {
myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND).addChild(library);
}
@NotNull
@Override
public JpsElementReference<JpsProject> createReference() {
@@ -0,0 +1,20 @@
package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.JpsUrlList;
/**
* @author nik
*/
public class JpsUrlListKind extends JpsElementKindBase<JpsUrlList> implements JpsElementCreator<JpsUrlList> {
public JpsUrlListKind(String debugName) {
super(debugName);
}
@NotNull
@Override
public JpsUrlList create() {
return new JpsUrlListImpl();
}
}
@@ -0,0 +1,65 @@
package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.java.ExplodedDirectoryModuleExtension;
/**
* @author nik
*/
public class ExplodedDirectoryModuleExtensionImpl extends JpsElementBase<ExplodedDirectoryModuleExtensionImpl> implements
ExplodedDirectoryModuleExtension {
public static final JpsElementKindBase<ExplodedDirectoryModuleExtension> KIND =
new JpsElementKindBase<ExplodedDirectoryModuleExtension>("exploded directory");
private String myExplodedUrl;
private boolean myExcludeExploded;
public ExplodedDirectoryModuleExtensionImpl() {
}
public ExplodedDirectoryModuleExtensionImpl(ExplodedDirectoryModuleExtensionImpl original) {
myExcludeExploded = original.myExcludeExploded;
myExplodedUrl = original.myExplodedUrl;
}
@Override
public String getExplodedUrl() {
return myExplodedUrl;
}
@Override
public void setExplodedUrl(String explodedUrl) {
if (!Comparing.equal(myExplodedUrl, explodedUrl)) {
myExplodedUrl = explodedUrl;
fireElementChanged();
}
}
@Override
public boolean isExcludeExploded() {
return myExcludeExploded;
}
@Override
public void setExcludeExploded(boolean excludeExploded) {
if (myExcludeExploded != excludeExploded) {
myExcludeExploded = excludeExploded;
fireElementChanged();
}
}
@NotNull
@Override
public ExplodedDirectoryModuleExtensionImpl createCopy() {
return new ExplodedDirectoryModuleExtensionImpl(this);
}
@Override
public void applyChanges(@NotNull ExplodedDirectoryModuleExtensionImpl modified) {
setExcludeExploded(modified.myExcludeExploded);
setExplodedUrl(modified.myExplodedUrl);
}
}
@@ -1,76 +0,0 @@
package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.java.JavaModuleExtension;
import org.jetbrains.jps.model.java.LanguageLevel;
/**
* @author nik
*/
public class JavaModuleExtensionImpl extends JpsElementBase<JavaModuleExtensionImpl> implements JavaModuleExtension {
private String myOutputUrl;
private String myTestOutputUrl;
private LanguageLevel myLanguageLevel;
public JavaModuleExtensionImpl() {
}
public JavaModuleExtensionImpl(JavaModuleExtensionImpl original) {
myOutputUrl = original.myOutputUrl;
myTestOutputUrl = original.myTestOutputUrl;
myLanguageLevel = original.myLanguageLevel;
}
@NotNull
@Override
public JavaModuleExtensionImpl createCopy() {
return new JavaModuleExtensionImpl(this);
}
@Override
public String getOutputUrl() {
return myOutputUrl;
}
@Override
public void setOutputUrl(String outputUrl) {
if (!Comparing.equal(myOutputUrl, outputUrl)) {
myOutputUrl = outputUrl;
fireElementChanged();
}
}
@Override
public String getTestOutputUrl() {
return myTestOutputUrl;
}
@Override
public void setTestOutputUrl(String testOutputUrl) {
if (!Comparing.equal(myTestOutputUrl, testOutputUrl)) {
myTestOutputUrl = testOutputUrl;
fireElementChanged();
}
}
@Override
public LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
@Override
public void setLanguageLevel(LanguageLevel languageLevel) {
if (!Comparing.equal(myLanguageLevel, languageLevel)) {
myLanguageLevel = languageLevel;
fireElementChanged();
}
}
public void applyChanges(@NotNull JavaModuleExtensionImpl modified) {
setLanguageLevel(modified.myLanguageLevel);
setOutputUrl(modified.myOutputUrl);
setTestOutputUrl(modified.myTestOutputUrl);
}
}
@@ -1,33 +1,23 @@
package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.java.JavaModuleExtension;
import org.jetbrains.jps.model.module.JpsModule;
/**
* @author nik
*/
public class JavaModuleExtensionKind extends JpsElementKindBase<JavaModuleExtensionImpl> implements JpsElementCreator<JavaModuleExtensionImpl> {
private static final JavaModuleExtensionKind INSTANCE = new JavaModuleExtensionKind();
public class JavaModuleExtensionKind extends JpsElementKindBase<JpsJavaModuleExtensionImpl>
implements JpsElementCreator<JpsJavaModuleExtensionImpl> {
public static final JavaModuleExtensionKind INSTANCE = new JavaModuleExtensionKind();
public JavaModuleExtensionKind() {
private JavaModuleExtensionKind() {
super("java module extension");
}
@NotNull
@Override
public JavaModuleExtensionImpl create() {
return new JavaModuleExtensionImpl();
}
@NotNull
public static JavaModuleExtension getExtension(@NotNull JpsModule module) {
JavaModuleExtension child = module.getContainer().getChild(INSTANCE);
if (child == null) {
child = module.getContainer().setChild(INSTANCE);
}
return child;
public JpsJavaModuleExtensionImpl create() {
return new JpsJavaModuleExtensionImpl();
}
}
@@ -1,19 +1,18 @@
package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
import org.jetbrains.jps.model.module.JpsDependencyElement;
/**
* @author nik
*/
public class JpsJavaDependencyExtensionKind extends JpsElementKindBase<JpsJavaDependencyExtensionImpl> implements JpsElementCreator<JpsJavaDependencyExtensionImpl> {
public class JpsJavaDependencyExtensionKind extends JpsElementKindBase<JpsJavaDependencyExtensionImpl>
implements JpsElementCreator<JpsJavaDependencyExtensionImpl> {
public static final JpsJavaDependencyExtensionKind INSTANCE = new JpsJavaDependencyExtensionKind();
public JpsJavaDependencyExtensionKind() {
private JpsJavaDependencyExtensionKind() {
super("java dependency extension");
}
@@ -22,12 +21,4 @@ public class JpsJavaDependencyExtensionKind extends JpsElementKindBase<JpsJavaDe
public JpsJavaDependencyExtensionImpl create() {
return new JpsJavaDependencyExtensionImpl(false, JpsJavaDependencyScope.COMPILE);
}
public static JpsJavaDependencyExtension getExtension(@NotNull JpsDependencyElement element) {
JpsJavaDependencyExtensionImpl extension = element.getContainer().getChild(INSTANCE);
if (extension == null) {
extension = element.getContainer().setChild(INSTANCE);
}
return extension;
}
}
@@ -0,0 +1,57 @@
package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementKind;
import org.jetbrains.jps.model.java.ExplodedDirectoryModuleExtension;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
/**
* @author nik
*/
public class JpsJavaExtensionServiceImpl extends JpsJavaExtensionService {
@NotNull
@Override
public JpsJavaModuleExtension getOrCreateModuleExtension(@NotNull JpsModule module) {
JpsJavaModuleExtension child = module.getContainer().getChild(JavaModuleExtensionKind.INSTANCE);
if (child == null) {
child = module.getContainer().setChild(JavaModuleExtensionKind.INSTANCE);
}
return child;
}
@NotNull
@Override
public JpsJavaDependencyExtension getOrCreateDependencyExtension(@NotNull JpsDependencyElement dependency) {
JpsJavaDependencyExtensionImpl extension = dependency.getContainer().getChild(JpsJavaDependencyExtensionKind.INSTANCE);
if (extension == null) {
extension = dependency.getContainer().setChild(JpsJavaDependencyExtensionKind.INSTANCE);
}
return extension;
}
@NotNull
@Override
public JpsElementKind<? extends JpsJavaModuleExtension> getModuleExtensionKind() {
return JavaModuleExtensionKind.INSTANCE;
}
@NotNull
@Override
public JpsElementKind<? extends JpsJavaDependencyExtension> getDependencyExtensionKind() {
return JpsJavaDependencyExtensionKind.INSTANCE;
}
@Override
@NotNull
public ExplodedDirectoryModuleExtension getOrCreateExplodedDirectoryExtension(@NotNull JpsModule module) {
ExplodedDirectoryModuleExtension extension = module.getContainer().getChild(ExplodedDirectoryModuleExtensionImpl.KIND);
if (extension == null) {
extension = module.getContainer().setChild(ExplodedDirectoryModuleExtensionImpl.KIND, new ExplodedDirectoryModuleExtensionImpl());
}
return extension;
}
}
@@ -0,0 +1,121 @@
package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsUrlList;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsUrlListKind;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
import org.jetbrains.jps.model.java.LanguageLevel;
/**
* @author nik
*/
public class JpsJavaModuleExtensionImpl extends JpsCompositeElementBase<JpsJavaModuleExtensionImpl> implements JpsJavaModuleExtension {
private static final JpsUrlListKind JAVADOC_ROOTS_KIND = new JpsUrlListKind("javadoc roots");
private static final JpsUrlListKind ANNOTATIONS_ROOTS_KIND = new JpsUrlListKind("annotation roots");
private String myOutputUrl;
private String myTestOutputUrl;
private boolean myInheritOutput;
private boolean myExcludeOutput;
private LanguageLevel myLanguageLevel;
public JpsJavaModuleExtensionImpl() {
myContainer.setChild(JAVADOC_ROOTS_KIND);
myContainer.setChild(ANNOTATIONS_ROOTS_KIND);
}
public JpsJavaModuleExtensionImpl(JpsJavaModuleExtensionImpl original) {
super(original);
myOutputUrl = original.myOutputUrl;
myTestOutputUrl = original.myTestOutputUrl;
myLanguageLevel = original.myLanguageLevel;
}
@NotNull
@Override
public JpsJavaModuleExtensionImpl createCopy() {
return new JpsJavaModuleExtensionImpl(this);
}
@Override
public JpsUrlList getAnnotationRoots() {
return myContainer.getChild(ANNOTATIONS_ROOTS_KIND);
}
@Override
public JpsUrlList getJavadocRoots() {
return myContainer.getChild(JAVADOC_ROOTS_KIND);
}
@Override
public String getOutputUrl() {
return myOutputUrl;
}
@Override
public void setOutputUrl(String outputUrl) {
if (!Comparing.equal(myOutputUrl, outputUrl)) {
myOutputUrl = outputUrl;
fireElementChanged();
}
}
@Override
public String getTestOutputUrl() {
return myTestOutputUrl;
}
@Override
public void setTestOutputUrl(String testOutputUrl) {
if (!Comparing.equal(myTestOutputUrl, testOutputUrl)) {
myTestOutputUrl = testOutputUrl;
fireElementChanged();
}
}
@Override
public LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
@Override
public void setLanguageLevel(LanguageLevel languageLevel) {
if (!Comparing.equal(myLanguageLevel, languageLevel)) {
myLanguageLevel = languageLevel;
fireElementChanged();
}
}
public void applyChanges(@NotNull JpsJavaModuleExtensionImpl modified) {
setLanguageLevel(modified.myLanguageLevel);
setOutputUrl(modified.myOutputUrl);
setTestOutputUrl(modified.myTestOutputUrl);
}
@Override
public boolean isInheritOutput() {
return myInheritOutput;
}
@Override
public void setInheritOutput(boolean inheritOutput) {
if (myInheritOutput != inheritOutput) {
myInheritOutput = inheritOutput;
fireElementChanged();
}
}
@Override
public boolean isExcludeOutput() {
return myExcludeOutput;
}
@Override
public void setExcludeOutput(boolean excludeOutput) {
if (myExcludeOutput != excludeOutput) {
myExcludeOutput = excludeOutput;
fireElementChanged();
}
}
}
@@ -15,7 +15,8 @@ import java.util.List;
* @author nik
*/
public class JpsLibraryImpl extends JpsNamedCompositeElementBase<JpsLibraryImpl, JpsProjectImpl> implements JpsLibrary {
private static final JpsElementCollectionKind<JpsLibraryRootImpl> LIBRARY_ROOTS_COLLECTION = new JpsElementCollectionKind<JpsLibraryRootImpl>(JpsLibraryRootKind.INSTANCE);
private static final JpsElementCollectionKind<JpsLibraryRootImpl> LIBRARY_ROOTS_COLLECTION =
new JpsElementCollectionKind<JpsLibraryRootImpl>(JpsLibraryRootKind.INSTANCE);
private static final JpsTypedDataKind<JpsLibraryType<?>> TYPED_DATA_KIND = new JpsTypedDataKind<JpsLibraryType<?>>();
public JpsLibraryImpl(@NotNull String name, @NotNull JpsLibraryType<?> type) {
@@ -65,9 +66,9 @@ public class JpsLibraryImpl extends JpsNamedCompositeElementBase<JpsLibraryImpl,
getParent().removeChild(this);
}
public JpsElementCollectionImpl<JpsLibraryImpl> getParent() {
public JpsElementCollectionImpl<JpsLibrary> getParent() {
//noinspection unchecked
return (JpsElementCollectionImpl<JpsLibraryImpl>)myParent;
return (JpsElementCollectionImpl<JpsLibrary>)myParent;
}
@NotNull
@@ -80,7 +81,8 @@ public class JpsLibraryImpl extends JpsNamedCompositeElementBase<JpsLibraryImpl,
@Override
public JpsLibraryReference createReference() {
//noinspection unchecked
final JpsElementReference<JpsCompositeElement> parentReference = ((JpsReferenceableElement<JpsCompositeElement>)getParent().getParent()).createReference();
final JpsElementReference<JpsCompositeElement> parentReference =
((JpsReferenceableElement<JpsCompositeElement>)getParent().getParent()).createReference();
return new JpsLibraryReferenceImpl(getName(), parentReference);
}
}
@@ -1,29 +1,30 @@
package org.jetbrains.jps.model.library.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementCollectionKind;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryListener;
/**
* @author nik
*/
public class JpsLibraryKind extends JpsElementKindBase<JpsLibraryImpl> {
public class JpsLibraryKind extends JpsElementKindBase<JpsLibrary> {
public static final JpsLibraryKind INSTANCE = new JpsLibraryKind();
public static final JpsElementCollectionKind<JpsLibraryImpl> LIBRARIES_COLLECTION_KIND = new JpsElementCollectionKind<JpsLibraryImpl>(INSTANCE);
public static final JpsElementCollectionKind<JpsLibrary> LIBRARIES_COLLECTION_KIND = new JpsElementCollectionKind<JpsLibrary>(INSTANCE);
private JpsLibraryKind() {
super("library");
}
@Override
public void fireElementAdded(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsLibraryImpl element) {
public void fireElementAdded(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsLibrary element) {
dispatcher.getPublisher(JpsLibraryListener.class).libraryAdded(element);
}
@Override
public void fireElementRemoved(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsLibraryImpl element) {
public void fireElementRemoved(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsLibrary element) {
dispatcher.getPublisher(JpsLibraryListener.class).libraryRemoved(element);
}
}
@@ -16,16 +16,17 @@ import java.util.List;
*/
public class JpsModuleImpl extends JpsNamedCompositeElementBase<JpsModuleImpl, JpsProjectImpl> implements JpsModule {
private static final JpsTypedDataKind<JpsModuleType<?>> TYPED_DATA_KIND = new JpsTypedDataKind<JpsModuleType<?>>();
private static final JpsElementKind<JpsUrlListImpl> CONTENT_ROOTS_KIND = new JpsElementKindBase<JpsUrlListImpl>("content roots");
private static final JpsElementKind<JpsUrlListImpl> EXCLUDED_ROOTS_KIND = new JpsElementKindBase<JpsUrlListImpl>("excluded roots");
public static final JpsElementKind<JpsDependenciesListImpl> DEPENDENCIES_LIST_KIND = new JpsElementKindBase<JpsDependenciesListImpl>("dependencies");
private static final JpsUrlListKind CONTENT_ROOTS_KIND = new JpsUrlListKind("content roots");
private static final JpsUrlListKind EXCLUDED_ROOTS_KIND = new JpsUrlListKind("excluded roots");
public static final JpsElementKind<JpsDependenciesListImpl> DEPENDENCIES_LIST_KIND =
new JpsElementKindBase<JpsDependenciesListImpl>("dependencies");
public JpsModuleImpl(JpsModuleType type,
@NotNull String name) {
super(name);
myContainer.setChild(TYPED_DATA_KIND, new JpsTypedDataImpl<JpsModuleType<?>>(type));
myContainer.setChild(CONTENT_ROOTS_KIND, new JpsUrlListImpl());
myContainer.setChild(EXCLUDED_ROOTS_KIND, new JpsUrlListImpl());
myContainer.setChild(CONTENT_ROOTS_KIND);
myContainer.setChild(EXCLUDED_ROOTS_KIND);
myContainer.setChild(DEPENDENCIES_LIST_KIND, new JpsDependenciesListImpl());
myContainer.setChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
myContainer.setChild(JpsModuleSourceRootKind.ROOT_COLLECTION_KIND);
@@ -115,7 +116,12 @@ public class JpsModuleImpl extends JpsNamedCompositeElementBase<JpsModuleImpl, J
@NotNull
@Override
public JpsLibrary addModuleLibrary(@NotNull JpsLibraryType<?> type, @NotNull String name) {
final JpsElementCollectionImpl<JpsLibraryImpl> collection = myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND);
return collection.addChild(new JpsLibraryImpl(name, type));
return addModuleLibrary(new JpsLibraryImpl(name, type));
}
@NotNull
@Override
public JpsLibrary addModuleLibrary(final @NotNull JpsLibrary library) {
return myContainer.getChild(JpsLibraryKind.LIBRARIES_COLLECTION_KIND).addChild(library);
}
}
@@ -2,29 +2,30 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementKind;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementCollectionKind;
import org.jetbrains.jps.model.impl.JpsElementKindBase;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleListener;
/**
* @author nik
*/
public class JpsModuleKind extends JpsElementKindBase<JpsModuleImpl> {
public static final JpsElementKind<JpsModuleImpl> INSTANCE = new JpsModuleKind();
public static final JpsElementCollectionKind<JpsModuleImpl> MODULE_COLLECTION_KIND = new JpsElementCollectionKind<JpsModuleImpl>(INSTANCE);
public class JpsModuleKind extends JpsElementKindBase<JpsModule> {
public static final JpsElementKind<JpsModule> INSTANCE = new JpsModuleKind();
public static final JpsElementCollectionKind<JpsModule> MODULE_COLLECTION_KIND = new JpsElementCollectionKind<JpsModule>(INSTANCE);
public JpsModuleKind() {
super("module");
}
@Override
public void fireElementAdded(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsModuleImpl element) {
public void fireElementAdded(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsModule element) {
dispatcher.getPublisher(JpsModuleListener.class).moduleAdded(element);
}
@Override
public void fireElementRemoved(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsModuleImpl element) {
public void fireElementRemoved(@NotNull JpsEventDispatcher dispatcher, @NotNull JpsModule element) {
dispatcher.getPublisher(JpsModuleListener.class).moduleRemoved(element);
}
}
@@ -3,6 +3,7 @@ package org.jetbrains.jps.service.impl;
import org.jetbrains.jps.service.JpsServiceManager;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;
@@ -12,6 +13,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class JpsServiceManagerImpl extends JpsServiceManager {
private final ConcurrentHashMap<Class, Object> myServices = new ConcurrentHashMap<Class, Object>();
private final ConcurrentHashMap<Class, List<Object>> myExtensions = new ConcurrentHashMap<Class, List<Object>>();
@Override
public <T> T getService(Class<T> serviceClass) {
@@ -24,10 +26,16 @@ public class JpsServiceManagerImpl extends JpsServiceManager {
}
service = iterator.next();
if (iterator.hasNext()) {
throw new ServiceConfigurationError("More than one implementation for " + serviceClass + " found: " + service.getClass() + " and " + iterator.next().getClass());
throw new ServiceConfigurationError(
"More than one implementation for " + serviceClass + " found: " + service.getClass() + " and " + iterator.next().getClass());
}
myServices.putIfAbsent(serviceClass, service);
}
return service;
}
@Override
public <T> Iterable<T> getExtensions(Class<T> extensionClass) {
return ServiceLoader.load(extensionClass);
}
}
@@ -1,11 +1,6 @@
package org.jetbrains.jps.model;
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
import org.jetbrains.jps.model.java.JpsJavaModuleType;
import org.jetbrains.jps.model.java.impl.JavaModuleExtensionKind;
import org.jetbrains.jps.model.java.impl.JpsJavaDependencyExtensionKind;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsLibraryDependency;
@@ -17,8 +12,10 @@ import org.jetbrains.jps.model.module.JpsModule;
public class JpsJavaExtensionTest extends JpsModelTestCase {
public void testModule() {
final JpsModule module = myModel.getProject().addModule(JpsJavaModuleType.INSTANCE, "m");
JavaModuleExtensionKind.getExtension(module).setOutputUrl("file://path");
assertEquals("file://path", JavaModuleExtensionKind.getExtension(module).getOutputUrl());
final JpsJavaModuleExtension extension = JpsJavaExtensionService.getInstance().getOrCreateModuleExtension(module);
extension.setOutputUrl("file://path");
assertEquals("file://path",
module.getContainer().getChild(JpsJavaExtensionService.getInstance().getModuleExtensionKind()).getOutputUrl());
}
public void testDependency() {
@@ -26,12 +23,14 @@ public class JpsJavaExtensionTest extends JpsModelTestCase {
final JpsModule module = model.getProject().addModule(JpsJavaModuleType.INSTANCE, "m");
final JpsLibrary library = model.getProject().addLibrary(JpsJavaLibraryType.INSTANCE, "l");
final JpsLibraryDependency dependency = module.getDependenciesList().addLibraryDependency(library);
JpsJavaDependencyExtensionKind.getExtension(dependency).setScope(JpsJavaDependencyScope.TEST);
JpsJavaDependencyExtensionKind.getExtension(dependency).setExported(true);
JpsJavaExtensionService.getInstance().getOrCreateDependencyExtension(dependency).setScope(JpsJavaDependencyScope.TEST);
JpsJavaExtensionService.getInstance().getOrCreateDependencyExtension(dependency).setExported(true);
model.commit();
final JpsDependencyElement dep = assertOneElement(assertOneElement(myModel.getProject().getModules()).getDependenciesList().getDependencies());
final JpsJavaDependencyExtension extension = dep.getContainer().getChild(JpsJavaDependencyExtensionKind.INSTANCE);
final JpsDependencyElement dep =
assertOneElement(assertOneElement(myModel.getProject().getModules()).getDependenciesList().getDependencies());
final JpsJavaDependencyExtension extension =
dep.getContainer().getChild(JpsJavaExtensionService.getInstance().getDependencyExtensionKind());
assertTrue(extension.isExported());
assertSame(JpsJavaDependencyScope.TEST, extension.getScope());
}
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/testSrc" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="jps-model-api" />
<orderEntry type="library" name="JDOM" level="project" />
<orderEntry type="module" module-name="projectModel-impl" />
<orderEntry type="module" module-name="jps-model-impl" scope="TEST" />
<orderEntry type="module" module-name="testFramework" scope="TEST" />
</component>
</module>
@@ -0,0 +1 @@
org.jetbrains.jps.model.serialization.java.JpsJavaModelLoaderExtension
@@ -0,0 +1,84 @@
package org.jetbrains.jps.model.serialization;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.util.containers.MultiMap;
import org.jdom.Element;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryRootType;
import org.jetbrains.jps.model.library.JpsLibraryType;
import org.jetbrains.jps.model.library.JpsOrderRootType;
import org.jetbrains.jps.service.JpsServiceManager;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author nik
*/
public class JpsLibraryTableLoader {
private static final Map<String, JpsOrderRootType> PREDEFINED_ROOT_TYPES = new HashMap<String, JpsOrderRootType>();
static {
PREDEFINED_ROOT_TYPES.put("CLASSES", JpsOrderRootType.COMPILED);
PREDEFINED_ROOT_TYPES.put("SOURCES", JpsOrderRootType.SOURCES);
}
public static void loadLibraries(Element libraryTableElement, List<JpsLibrary> result) {
for (Element libraryElement : JDOMUtil.getChildren(libraryTableElement, "library")) {
JpsLibrary library = loadLibrary(libraryElement);
result.add(library);
}
}
public static JpsLibrary loadLibrary(Element libraryElement) {
String name = libraryElement.getAttributeValue("name");
String typeId = libraryElement.getAttributeValue("type");
JpsLibrary library = JpsElementFactory.getInstance().createLibrary(name, getLibraryType(typeId));
MultiMap<JpsOrderRootType, String> jarDirectories = new MultiMap<JpsOrderRootType, String>();
MultiMap<JpsOrderRootType, String> recursiveJarDirectories = new MultiMap<JpsOrderRootType, String>();
for (Element jarDirectory : JDOMUtil.getChildren(libraryElement, "jarDirectory")) {
String url = jarDirectory.getAttributeValue("url");
String rootType = jarDirectory.getAttributeValue("type");
boolean recursive = Boolean.parseBoolean(jarDirectory.getAttributeValue("recursive"));
jarDirectories.putValue(getRootType(rootType), url);
if (recursive) {
recursiveJarDirectories.putValue(getRootType(rootType), url);
}
}
for (Element rootsElement : JDOMUtil.getChildren(libraryElement)) {
final String rootTypeId = rootsElement.getName();
if (!rootTypeId.equals("jarDirectory")) {
final JpsOrderRootType rootType = getRootType(rootTypeId);
for (Element rootElement : JDOMUtil.getChildren(rootsElement, "root")) {
String url = rootElement.getAttributeValue("url");
final boolean jarDirectory = jarDirectories.get(rootType).contains(url);
final boolean recursive = recursiveJarDirectories.get(rootType).contains(url);
library.addUrl(url, new JpsLibraryRootType(rootType, jarDirectory, recursive));
}
}
}
return library;
}
private static JpsOrderRootType getRootType(String rootTypeId) {
final JpsOrderRootType type = PREDEFINED_ROOT_TYPES.get(rootTypeId);
if (type != null) {
return type;
}
for (JpsModelLoaderExtension extension : JpsServiceManager.getInstance().getExtensions(JpsModelLoaderExtension.class)) {
final JpsOrderRootType rootType = extension.getRootType(rootTypeId);
if (rootType != null) {
return rootType;
}
}
return JpsOrderRootType.COMPILED;
}
private static JpsLibraryType<?> getLibraryType(String typeId) {
return JpsJavaLibraryType.INSTANCE;
}
}
@@ -0,0 +1,38 @@
package org.jetbrains.jps.model.serialization;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsCompositeElement;
import org.jetbrains.jps.model.JpsElementReference;
import org.jetbrains.jps.model.library.JpsOrderRootType;
import org.jetbrains.jps.model.library.JpsSdkType;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
/**
* @author nik
*/
public abstract class JpsModelLoaderExtension {
public void loadRootModel(@NotNull JpsModule module, @NotNull Element rootModel) {
}
@Nullable
public JpsOrderRootType getRootType(@NotNull String typeId) {
return null;
}
@Nullable
public JpsSdkType<?> getSdkType(@NotNull String typeId) {
return null;
}
public void loadModuleDependencyProperties(JpsDependencyElement dependency, Element orderEntry) {
}
@Nullable
public JpsElementReference<? extends JpsCompositeElement> createLibraryTableReference(String tableLevel) {
return null;
}
}
@@ -0,0 +1,15 @@
package org.jetbrains.jps.model.serialization;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
/**
* @author nik
*/
public abstract class JpsModuleComponentSerializer {
@NotNull
public abstract String getComponentName();
public abstract void loadComponent(@NotNull Element component);
}
@@ -0,0 +1,120 @@
package org.jetbrains.jps.model.serialization;
import org.jdom.Element;
import org.jetbrains.jps.model.JpsCompositeElement;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.JpsElementReference;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsSdkType;
import org.jetbrains.jps.model.module.*;
import org.jetbrains.jps.service.JpsServiceManager;
import static com.intellij.openapi.util.JDOMUtil.getChildren;
/**
* @author nik
*/
public class JpsModuleLoader {
private static final String URL_ATTRIBUTE = "url";
public static void loadRootModel(JpsModule module, Element rootModelComponent) {
for (Element contentElement : getChildren(rootModelComponent, "content")) {
final String url = contentElement.getAttributeValue(URL_ATTRIBUTE);
module.getContentRootsList().addUrl(url);
for (Element sourceElement : getChildren(contentElement, "sourceFolder")) {
final String sourceUrl = sourceElement.getAttributeValue(URL_ATTRIBUTE);
final String packagePrefix = sourceElement.getAttributeValue("packagePrefix");
final boolean testSource = Boolean.parseBoolean(sourceElement.getAttributeValue("isTestSource"));
final JavaSourceRootType rootType = testSource ? JavaSourceRootType.SOURCE : JavaSourceRootType.TEST_SOURCE;
module.addSourceRoot(rootType, sourceUrl, new JavaSourceRootProperties(packagePrefix));
}
for (Element excludeElement : getChildren(contentElement, "excludeFolder")) {
module.getExcludeRootsList().addUrl(excludeElement.getAttributeValue(URL_ATTRIBUTE));
}
}
final JpsDependenciesList dependenciesList = module.getDependenciesList();
final JpsElementFactory elementFactory = JpsElementFactory.getInstance();
int moduleLibraryNum = 0;
for (Element orderEntry : getChildren(rootModelComponent, "orderEntry")) {
String type = orderEntry.getAttributeValue("type");
if ("sourceFolder".equals(type)) {
dependenciesList.addModuleSourceDependency();
}
else if ("jdk".equals(type)) {
String sdkName = orderEntry.getAttributeValue("jdkName");
String sdkTypeId = orderEntry.getAttributeValue("jskType");
final JpsSdkType<?> sdkType = getSdkType(sdkTypeId);
dependenciesList.addSdkDependency(sdkType);
module.getSdkReferencesTable()
.setSdkReference(sdkType, elementFactory.createLibraryReference(sdkName, elementFactory.createGlobalReference()));
}
else if ("inheritedJdk".equals(type)) {
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
}
else if ("library".equals(type)) {
String name = orderEntry.getAttributeValue("name");
String level = orderEntry.getAttributeValue("level");
final JpsLibraryDependency dependency =
dependenciesList.addLibraryDependency(elementFactory.createLibraryReference(name, createLibraryTableReference(level)));
loadModuleDependencyProperties(dependency, orderEntry);
}
else if ("module-library".equals(type)) {
final Element moduleLibraryElement = orderEntry.getChild("library");
final JpsLibrary library = JpsLibraryTableLoader.loadLibrary(moduleLibraryElement);
module.addModuleLibrary(library);
final JpsLibraryDependency dependency = dependenciesList.addLibraryDependency(library);
loadModuleDependencyProperties(dependency, orderEntry);
moduleLibraryNum++;
}
else if ("module".equals(type)) {
String name = orderEntry.getAttributeValue("module-name");
final JpsModuleDependency dependency = dependenciesList.addModuleDependency(elementFactory.createModuleReference(name));
loadModuleDependencyProperties(dependency, orderEntry);
}
}
for (JpsModelLoaderExtension extension : getLoaderExtensions()) {
extension.loadRootModel(module, rootModelComponent);
}
}
private static void loadModuleDependencyProperties(JpsDependencyElement dependency, Element orderEntry) {
for (JpsModelLoaderExtension extension : getLoaderExtensions()) {
extension.loadModuleDependencyProperties(dependency, orderEntry);
}
}
private static JpsElementReference<? extends JpsCompositeElement> createLibraryTableReference(String level) {
JpsElementFactory elementFactory = JpsElementFactory.getInstance();
if (level.equals("project")) {
return elementFactory.createProjectReference();
}
if (level.equals("application")) {
return elementFactory.createGlobalReference();
}
for (JpsModelLoaderExtension extension : getLoaderExtensions()) {
final JpsElementReference<? extends JpsCompositeElement> reference = extension.createLibraryTableReference(level);
if (reference != null) {
return reference;
}
}
throw new UnsupportedOperationException();
}
private static Iterable<JpsModelLoaderExtension> getLoaderExtensions() {
return JpsServiceManager.getInstance().getExtensions(JpsModelLoaderExtension.class);
}
public static JpsSdkType<?> getSdkType(String typeId) {
for (JpsModelLoaderExtension extension : getLoaderExtensions()) {
final JpsSdkType<?> type = extension.getSdkType(typeId);
if (type != null) {
return type;
}
}
return JpsJavaSdkType.INSTANCE;
}
}
@@ -0,0 +1,144 @@
package org.jetbrains.jps.model.serialization;
import com.intellij.openapi.components.ExpandMacroToPathMap;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.JpsGlobal;
import org.jetbrains.jps.model.JpsProject;
import org.jetbrains.jps.model.java.JpsJavaModuleType;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleType;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
/**
* @author nik
*/
public class JpsProjectLoader {
private final JpsGlobal myGlobal;
private final JpsProject myProject;
private ExpandMacroToPathMap myMacroToPathMap;
public JpsProjectLoader(JpsGlobal global, JpsProject project) {
myGlobal = global;
myProject = project;
}
public static void loadProject(JpsGlobal global, final JpsProject project, String projectPath) throws IOException {
new JpsProjectLoader(global, project).loadFromPath(projectPath);
}
public void loadFromPath(String path) throws IOException {
File file = new File(path).getCanonicalFile();
if (file.isFile() && path.endsWith(".ipr")) {
loadFromIpr(file);
}
else if (file.getName().equals(".idea")) {
loadFromDirectory(file);
}
else {
File ideaDirectory = new File(file, ".idea");
if (ideaDirectory.exists()) {
loadFromDirectory(ideaDirectory);
}
else {
throw new IOException("Cannot find IntelliJ IDEA project files at " + path);
}
}
}
private void loadFromDirectory(File dir) {
initMacroMap(dir.getParentFile());
loadModules(loadRootElement(new File(dir, "modules.xml")));
final File[] libraryFiles = new File(dir, "libraries").listFiles();
if (libraryFiles != null) {
for (File libraryFile : libraryFiles) {
if (isXmlFile(libraryFile)) {
loadProjectLibraries(loadRootElement(libraryFile));
}
}
}
}
private void loadFromIpr(File iprFile) {
initMacroMap(iprFile.getParentFile());
final Element root = loadRootElement(iprFile);
loadModules(root);
loadProjectLibraries(findComponent(root, "libraryTable"));
}
private void initMacroMap(File projectBaseDir) {
myMacroToPathMap = new ExpandMacroToPathMap();
myMacroToPathMap.addMacroExpand("PROJECT_DIR", FileUtil.toSystemIndependentName(projectBaseDir.getAbsolutePath()));
}
private Element loadRootElement(final File file) {
try {
final Element element = JDOMUtil.loadDocument(file).getRootElement();
myMacroToPathMap.substitute(element, SystemInfo.isFileSystemCaseSensitive);
return element;
}
catch (JDOMException e) {
throw new RuntimeException(e);
}
catch (IOException e) {
throw new RuntimeException(e);
}
}
private static boolean isXmlFile(File file) {
return file.isFile() && FileUtil.getNameWithoutExtension(file).equalsIgnoreCase("xml");
}
private void loadProjectLibraries(Element libraryTableElement) {
final ArrayList<JpsLibrary> libraries = new ArrayList<JpsLibrary>();
JpsLibraryTableLoader.loadLibraries(libraryTableElement, libraries);
for (JpsLibrary library : libraries) {
myProject.addLibrary(library);
}
}
private void loadModules(Element root) {
Element componentRoot = findComponent(root, "ProjectModuleManager");
if (componentRoot == null) return;
final Element modules = componentRoot.getChild("modules");
for (Element moduleElement : JDOMUtil.getChildren(modules, "module")) {
final String path = moduleElement.getAttributeValue("filepath");
JpsModule module = loadModule(path);
myProject.addModule(module);
}
}
private JpsModule loadModule(String path) {
final File file = new File(path);
String name = FileUtil.getNameWithoutExtension(file);
final Element moduleRoot = loadRootElement(file);
final String typeId = moduleRoot.getAttributeValue("type");
final JpsModule module = JpsElementFactory.getInstance().createModule(name, getModuleType(typeId));
JpsModuleLoader.loadRootModel(module, findComponent(moduleRoot, "NewModuleRootManager"));
return module;
}
@Nullable
private static Element findComponent(Element root, String componentName) {
for (Element element : JDOMUtil.getChildren(root, "component")) {
if (componentName.equals(element.getAttributeValue("name"))) {
return element;
}
}
return null;
}
private static JpsModuleType<?> getModuleType(@NotNull String typeId) {
return JpsJavaModuleType.INSTANCE;
}
}
@@ -0,0 +1,83 @@
package org.jetbrains.jps.model.serialization.java;
import com.intellij.openapi.util.JDOMUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsUrlList;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.library.JpsOrderRootType;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.serialization.JpsModelLoaderExtension;
/**
* @author nik
*/
public class JpsJavaModelLoaderExtension extends JpsModelLoaderExtension {
@Override
public void loadRootModel(@NotNull JpsModule module, @NotNull Element rootModel) {
loadExplodedDirectoryExtension(module, rootModel);
loadJavaModuleExtension(module, rootModel);
}
@Override
public void loadModuleDependencyProperties(JpsDependencyElement dependency, Element entry) {
boolean exported = entry.getAttributeValue("exported") != null;
String scopeName = entry.getAttributeValue("scope");
JpsJavaDependencyScope scope = scopeName != null ? JpsJavaDependencyScope.valueOf(scopeName) : JpsJavaDependencyScope.COMPILE;
final JpsJavaDependencyExtension extension = JpsJavaExtensionService.getInstance().getOrCreateDependencyExtension(dependency);
extension.setExported(exported);
extension.setScope(scope);
}
@Override
public JpsOrderRootType getRootType(@NotNull String typeId) {
if (typeId.equals("JAVADOC")) {
return JpsOrderRootType.DOCUMENTATION;
}
else if (typeId.equals("ANNOTATIONS")) {
return JpsAnnotationRootType.INSTANCE;
}
return null;
}
private static void loadExplodedDirectoryExtension(JpsModule module, Element rootModelComponent) {
final Element exploded = rootModelComponent.getChild("exploded");
if (exploded != null) {
final ExplodedDirectoryModuleExtension extension =
JpsJavaExtensionService.getInstance().getOrCreateExplodedDirectoryExtension(module);
extension.setExcludeExploded(rootModelComponent.getChild("exclude-exploded") != null);
extension.setExplodedUrl(exploded.getAttributeValue("url"));
}
}
private static void loadJavaModuleExtension(JpsModule module, Element rootModelComponent) {
final JpsJavaModuleExtension extension = JpsJavaExtensionService.getInstance().getOrCreateModuleExtension(module);
final Element outputTag = rootModelComponent.getChild("output");
if (outputTag != null) {
extension.setOutputUrl(outputTag.getAttributeValue("url"));
}
final Element testOutputTag = rootModelComponent.getChild("output-test");
if (testOutputTag != null) {
extension.setOutputUrl(testOutputTag.getAttributeValue("url"));
}
extension.setInheritOutput(Boolean.parseBoolean(rootModelComponent.getAttributeValue("inherit-compiler-output")));
extension.setExcludeOutput(rootModelComponent.getChild("exclude-output") != null);
loadAdditionalRoots(rootModelComponent, "annotation-paths", extension.getAnnotationRoots());
loadAdditionalRoots(rootModelComponent, "javadoc-paths", extension.getJavadocRoots());
final String languageLevel = rootModelComponent.getAttributeValue("LANGUAGE_LEVEL");
if (languageLevel != null) {
extension.setLanguageLevel(LanguageLevel.valueOf(languageLevel));
}
}
private static void loadAdditionalRoots(Element rootModelComponent, final String rootsTagName, final JpsUrlList result) {
final Element roots = rootModelComponent.getChild(rootsTagName);
for (Element root : JDOMUtil.getChildren(roots, "root")) {
result.addUrl(root.getAttributeValue("url"));
}
}
}
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/web" relative="/" />
</webroots>
<context-artifact name="explodedWar" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="junit" level="project" />
<orderEntry type="library" name="jdom" level="application" />
</component>
</module>
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ArtifactManager">
<artifact type="exploded-war" name="explodedWar">
<output-path>$PROJECT_DIR$/out/artifacts/explodedWar</output-path>
<root id="root">
<element id="javaee-facet-resources" facet="iprProject/web/Web" />
<element id="directory" name="WEB-INF">
<element id="directory" name="classes">
<element id="module-output" name="iprProject" />
</element>
<element id="directory" name="lib">
<element id="library" level="project" name="junit" />
<element id="library" level="application" name="jdom" />
</element>
</element>
</root>
</artifact>
<artifact type="jar" name="archive">
<output-path>$PROJECT_DIR$/out/artifacts/archive</output-path>
<root id="archive" name="archive.jar">
<element id="directory" name="files">
<element id="artifact" artifact-name="files" />
</element>
<element id="archive" name="sources.zip">
<element id="dir-copy" path="$PROJECT_DIR$/src" />
</element>
</root>
</artifact>
<artifact name="files">
<output-path>$PROJECT_DIR$/out/artifacts/files</output-path>
<root id="root">
<element id="file-copy" path="$PROJECT_DIR$/data/f.txt" output-file-name="g.txt" />
<element id="file-copy" path="$PROJECT_DIR$/data/f.txt" />
<element id="directory" name="dir">
<element id="dir-copy" path="$PROJECT_DIR$/data" />
</element>
</root>
</artifact>
</component>
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/iprProject.iml" filepath="$PROJECT_DIR$/iprProject.iml" />
</modules>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="libraryTable">
<library name="junit">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/junit.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
</project>
@@ -0,0 +1,31 @@
package org.jetbrains.jps.model.serialization;
import com.intellij.openapi.application.PathManager;
import org.jetbrains.jps.model.JpsModelTestCase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.module.JpsModule;
import java.io.IOException;
/**
* @author nik
*/
public class JpsModuleSerializationTest extends JpsModelTestCase {
public void test() {
loadProject("iprProject/iprProject.ipr");
final JpsModule module = assertOneElement(myModel.getProject().getModules());
assertEquals("iprProject", module.getName());
final JpsLibrary library = assertOneElement(myModel.getProject().getLibraries());
assertEquals("junit", library.getName());
}
private void loadProject(final String path) {
try {
final String projectPath = PathManager.getHomePath() + "/community/jps/model-serialization/testData/" + path;
JpsProjectLoader.loadProject(myModel.getGlobal(), myModel.getProject(), projectPath);
}
catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@@ -23,8 +23,9 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
@@ -88,11 +89,11 @@ public class MarkRootAction extends AnAction {
}
@Nullable
private static ContentEntry findContentEntry(ModifiableRootModel model, VirtualFile vFile) {
public static ContentEntry findContentEntry(@NotNull ModuleRootModel model, @NotNull VirtualFile vFile) {
final ContentEntry[] contentEntries = model.getContentEntries();
for (ContentEntry contentEntry : contentEntries) {
final VirtualFile contentEntryFile = contentEntry.getFile();
if (contentEntryFile != null && VfsUtil.isAncestor(contentEntryFile, vFile, false)) {
if (contentEntryFile != null && VfsUtilCore.isAncestor(contentEntryFile, vFile, false)) {
return contentEntry;
}
}
@@ -90,7 +90,8 @@ public class SMTestRunnerConnectionUtil {
runnerSettings,
configurationSettings,
new CompositeTestLocationProvider(locator),
false);
false,
null);
}
public static SMTRunnerConsoleView createConsoleWithCustomLocator(@NotNull final String testFrameworkName,
@@ -98,7 +99,8 @@ public class SMTestRunnerConnectionUtil {
final RunnerSettings runnerSettings,
final ConfigurationPerRunnerSettings configurationSettings,
@Nullable final TestLocationProvider locator,
final boolean idBasedTreeConstruction) {
final boolean idBasedTreeConstruction,
@Nullable final TestProxyPrinterProvider printerProvider) {
// Console
final String splitterPropertyName = testFrameworkName + ".Splitter.Proportion";
final SMTRunnerConsoleView console =
@@ -109,7 +111,8 @@ public class SMTestRunnerConnectionUtil {
super.attachToProcess(processHandler);
attachEventsProcessors(consoleProperties, getResultsViewer(),
getResultsViewer().getStatisticsPane(),
processHandler, testFrameworkName, locator, idBasedTreeConstruction);
processHandler, testFrameworkName, locator, idBasedTreeConstruction,
printerProvider);
}
};
console.setHelpId("reference.runToolWindow.testResultsTab");
@@ -213,7 +216,8 @@ public class SMTestRunnerConnectionUtil {
final ProcessHandler processHandler,
@NotNull final String testFrameworkName,
@Nullable final TestLocationProvider locator,
boolean idBasedTreeConstruction) {
boolean idBasedTreeConstruction,
@Nullable TestProxyPrinterProvider printerProvider) {
//build messages consumer
final OutputToGeneralTestEventsConverter outputConsumer;
if (consoleProperties instanceof SMCustomMessagesParsing) {
@@ -233,6 +237,9 @@ public class SMTestRunnerConnectionUtil {
if (locator != null) {
eventsProcessor.setLocator(locator);
}
if (printerProvider != null) {
eventsProcessor.setPrinterProvider(printerProvider);
}
// ui actions
final SMTRunnerUIActionsHandler uiActionsHandler = new SMTRunnerUIActionsHandler(consoleProperties);
@@ -18,6 +18,7 @@ package com.intellij.execution.testframework.sm.runner;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.execution.testframework.Printer;
import com.intellij.execution.testframework.sm.SMRunnerUtil;
import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil;
import com.intellij.execution.testframework.sm.runner.events.*;
@@ -48,6 +49,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor implements GeneralTestEven
private final String myTestFrameworkName;
private boolean myIsTestingFinished = false;
private TestLocationProvider myLocator = null;
private TestProxyPrinterProvider myTestProxyPrinterProvider = null;
public GeneralIdBasedToSMTRunnerEventsConvertor(@NotNull SMTestProxy.SMRootTestProxy testsRootProxy,
@NotNull String testFrameworkName) {
@@ -112,6 +114,11 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor implements GeneralTestEven
});
}
@Override
public void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider) {
myTestProxyPrinterProvider = printerProvider;
}
public void onTestStarted(@NotNull final TestStartedEvent testStartedEvent) {
SMRunnerUtil.addToInvokeLater(new Runnable() {
public void run() {
@@ -145,6 +152,14 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor implements GeneralTestEven
}
SMTestProxy childProxy = new SMTestProxy(startedNodeEvent.getName(), suite, startedNodeEvent.getLocationUrl(), true);
TestProxyPrinterProvider printerProvider = myTestProxyPrinterProvider;
String nodeType = startedNodeEvent.getNodeType();
if (printerProvider != null && nodeType != null) {
Printer printer = printerProvider.getPrinterByType(nodeType, startedNodeEvent.getNodeArgs());
if (printer != null) {
childProxy.setPreferredPrinter(printer);
}
}
childNode = new Node(startedNodeEvent.getId(), parentNode, childProxy);
myNodeByIdMap.put(nodeId, childNode);
myRunningNodes.add(childNode);
@@ -74,4 +74,6 @@ public interface GeneralTestEventsProcessor extends Disposable {
void addEventsListener(@NotNull SMTRunnerEventsListener viewer);
void onFinishTesting();
void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider);
}
@@ -113,6 +113,10 @@ public class GeneralToSMTRunnerEventsConvertor implements GeneralTestEventsProce
});
}
@Override
public void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider) {
}
public void onTestStarted(@NotNull final TestStartedEvent testStartedEvent) {
SMRunnerUtil.addToInvokeLater(new Runnable() {
public void run() {
@@ -60,6 +60,7 @@ public class SMTestProxy extends AbstractTestProxy {
private boolean myIsEmpty = true;
TestLocationProvider myLocator = null;
private final boolean myPreservePresentableName;
private Printer myPreferredPrinter = null;
public SMTestProxy(final String testName, final boolean isSuite,
@Nullable final String locationUrl) {
@@ -79,6 +80,10 @@ public class SMTestProxy extends AbstractTestProxy {
myLocator = locator;
}
public void setPreferredPrinter(@NotNull Printer preferredPrinter) {
myPreferredPrinter = preferredPrinter;
}
public boolean isInProgress() {
//final SMTestProxy parent = getParent();
@@ -172,8 +177,24 @@ public class SMTestProxy extends AbstractTestProxy {
// if parent is being printed then all childs output
// should be also send to the same printer
child.setPrinter(myPrinter);
if (myPreferredPrinter != null && child.myPreferredPrinter == null) {
child.setPreferredPrinter(myPreferredPrinter);
}
}
@Nullable
private Printer getRightPrinter(@Nullable Printer printer) {
if (myPreferredPrinter != null && printer != null) {
return myPreferredPrinter;
}
return printer;
}
public void setPrinter(Printer printer) {
super.setPrinter(getRightPrinter(printer));
}
public String getName() {
return myName;
}
@@ -397,13 +418,14 @@ public class SMTestProxy extends AbstractTestProxy {
* @param printer Printer
*/
public void printOn(final Printer printer) {
super.printOn(printer);
final Printer rightPrinter = getRightPrinter(printer);
super.printOn(rightPrinter);
invokeInAlarm(new Runnable() {
@Override
public void run() {
//Tests State, that provide and formats additional output
myState.printOn(printer);
myState.printOn(rightPrinter);
}
});
}
@@ -0,0 +1,30 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.execution.testframework.sm.runner;
import com.intellij.execution.testframework.Printer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Sergey Simonchik
*/
public interface TestProxyPrinterProvider {
@Nullable
Printer getPrinterByType(@NotNull String nodeType, @Nullable String arguments);
}
@@ -26,14 +26,20 @@ public abstract class BaseStartedNodeEvent extends TreeNodeEvent {
private final int myParentId;
private final String myLocationUrl;
private final String myNodeType;
private final String myNodeArgs;
protected BaseStartedNodeEvent(@NotNull String name,
int id,
int parentId,
@Nullable final String locationUrl) {
@Nullable final String locationUrl,
@Nullable String nodeType,
@Nullable String nodeArgs) {
super(name, id);
myParentId = parentId;
myLocationUrl = locationUrl;
myNodeType = nodeType;
myNodeArgs = nodeArgs;
validate();
}
@@ -58,6 +64,16 @@ public abstract class BaseStartedNodeEvent extends TreeNodeEvent {
return myLocationUrl;
}
@Nullable
public String getNodeType() {
return myNodeType;
}
@Nullable
public String getNodeArgs() {
return myNodeArgs;
}
@Override
protected void appendToStringInfo(@NotNull StringBuilder buf) {
append(buf, "parentId", myParentId);
@@ -68,4 +84,14 @@ public abstract class BaseStartedNodeEvent extends TreeNodeEvent {
return TreeNodeEvent.getIntAttribute(message, "parentNodeId");
}
@Nullable
public static String getNodeType(@NotNull MessageWithAttributes message) {
return message.getAttributes().get("nodeType");
}
@Nullable
public static String getNodeArgs(@NotNull MessageWithAttributes message) {
return message.getAttributes().get("nodeArgs");
}
}
@@ -26,11 +26,15 @@ public class TestStartedEvent extends BaseStartedNodeEvent {
public TestStartedEvent(@NotNull TestStarted testStarted,
@Nullable String locationUrl) {
super(testStarted.getTestName(), TreeNodeEvent.getNodeId(testStarted),
getParentNodeId(testStarted), locationUrl);
super(testStarted.getTestName(),
TreeNodeEvent.getNodeId(testStarted),
getParentNodeId(testStarted),
locationUrl,
BaseStartedNodeEvent.getNodeType(testStarted),
BaseStartedNodeEvent.getNodeArgs(testStarted));
}
public TestStartedEvent(@NotNull String name, @Nullable String locationUrl) {
super(name, -1, -1, locationUrl);
super(name, -1, -1, locationUrl, null, null);
}
}
@@ -26,12 +26,16 @@ public class TestSuiteStartedEvent extends BaseStartedNodeEvent {
public TestSuiteStartedEvent(@NotNull TestSuiteStarted suiteStarted,
@Nullable String locationUrl) {
super(suiteStarted.getSuiteName(), TreeNodeEvent.getNodeId(suiteStarted),
getParentNodeId(suiteStarted), locationUrl);
super(suiteStarted.getSuiteName(),
TreeNodeEvent.getNodeId(suiteStarted),
getParentNodeId(suiteStarted),
locationUrl,
BaseStartedNodeEvent.getNodeType(suiteStarted),
BaseStartedNodeEvent.getNodeArgs(suiteStarted));
}
public TestSuiteStartedEvent(@NotNull String name, @Nullable String locationUrl) {
super(name, -1, -1, locationUrl);
super(name, -1, -1, locationUrl, null, null);
}
}
@@ -100,6 +100,10 @@ public class MockGeneralTestEventsProcessorAdapter implements GeneralTestEventsP
public void onFinishTesting() {
}
@Override
public void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider) {
}
@Override
public void dispose() {
myOutputBuffer.setLength(0);
@@ -85,10 +85,7 @@ public final class PropertyTable extends JBTable implements ComponentSelectionLi
public PropertyTable() {
setModel(myModel);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTableHeader tableHeader = getTableHeader();
tableHeader.setVisible(false);
tableHeader.setPreferredSize(new Dimension());
showColumns(false);
addMouseListener(new MouseTableListener());
getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@@ -103,6 +100,12 @@ public final class PropertyTable extends JBTable implements ComponentSelectionLi
// TODO: Updates UI after LAF updated
}
public void showColumns(boolean value) {
JTableHeader tableHeader = getTableHeader();
tableHeader.setVisible(value);
tableHeader.setPreferredSize(value ? null : new Dimension());
}
public void initQuickFixManager(JViewport viewPort) {
myQuickFixManager = new QuickFixManager(this, viewPort);
}
@@ -16,10 +16,7 @@
package com.intellij.designer.propertyTable;
import com.intellij.designer.DesignerBundle;
import com.intellij.designer.propertyTable.actions.IPropertyTableAction;
import com.intellij.designer.propertyTable.actions.RestoreDefault;
import com.intellij.designer.propertyTable.actions.ShowExpert;
import com.intellij.designer.propertyTable.actions.ShowJavadoc;
import com.intellij.designer.propertyTable.actions.*;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.impl.ActionButton;
import com.intellij.ui.IdeBorderFactory;
@@ -61,10 +58,6 @@ public final class PropertyTablePanel extends JPanel implements ListSelectionLis
actionGroup.add(new ShowExpert(myPropertyTable));
PopupHandler.installPopupHandler(myPropertyTable, actionGroup,
ActionPlaces.GUI_DESIGNER_PROPERTY_INSPECTOR_POPUP,
actionManager);
myActions = actionGroup.getChildren(null);
for (int i = 0; i < myActions.length; i++) {
AnAction action = myActions[i];
@@ -75,6 +68,12 @@ public final class PropertyTablePanel extends JPanel implements ListSelectionLis
}
}
actionGroup.add(new ShowColumns(myPropertyTable));
PopupHandler.installPopupHandler(myPropertyTable, actionGroup,
ActionPlaces.GUI_DESIGNER_PROPERTY_INSPECTOR_POPUP,
actionManager);
myPropertyTable.getSelectionModel().addListSelectionListener(this);
valueChanged(null);
@@ -0,0 +1,48 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.designer.propertyTable.actions;
import com.intellij.designer.DesignerBundle;
import com.intellij.designer.propertyTable.PropertyTable;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.actionSystem.ToggleAction;
/**
* @author Alexander Lobas
*/
public class ShowColumns extends ToggleAction {
private final PropertyTable myTable;
public ShowColumns(PropertyTable table) {
myTable = table;
Presentation presentation = getTemplatePresentation();
String text = DesignerBundle.message("designer.properties.show.columns");
presentation.setText(text);
presentation.setDescription(text);
}
@Override
public boolean isSelected(AnActionEvent e) {
return myTable.getTableHeader().isVisible();
}
@Override
public void setSelected(AnActionEvent e, boolean state) {
myTable.showColumns(state);
}
}
@@ -7,7 +7,8 @@ command.set.property.value=Set Property Value
designer.properties.title=Properties
designer.properties.show.expert=Show expert properties
designer.properties.show.javadoc=Show Documentation
designer.properties.show.columns=Show columns
designer.properties.show.javadoc=Show documentation
designer.properties.javadoc.title=<html><body>Documentation for <b>{0}</b> property</body></html>
designer.properties.restore_default=Restore default value
designer.properties.column1=Property