diff options
author | Xor Boole <mcyoung@mit.edu> | 2015-02-20 19:52:58 -0500 |
---|---|---|
committer | Xor Boole <mcyoung@mit.edu> | 2015-02-20 19:52:58 -0500 |
commit | df545f4fc89a706003b939b32d4f0bae1574dca5 (patch) | |
tree | 349acf02f5b409ed5c5f2c77105d5722db7c183d | |
download | plugin-annotations-df545f4fc89a706003b939b32d4f0bae1574dca5.tar plugin-annotations-df545f4fc89a706003b939b32d4f0bae1574dca5.tar.gz plugin-annotations-df545f4fc89a706003b939b32d4f0bae1574dca5.tar.lz plugin-annotations-df545f4fc89a706003b939b32d4f0bae1574dca5.tar.xz plugin-annotations-df545f4fc89a706003b939b32d4f0bae1574dca5.zip |
Initial Commit
58 files changed, 1689 insertions, 0 deletions
diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..88f0cf8 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +PluginAnnotations
\ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1238a1f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <option name="DEFAULT_COMPILER" value="Javac" /> + <resourceExtensions /> + <wildcardResourcePatterns> + <entry name="!?*.java" /> + <entry name="!?*.form" /> + <entry name="!?*.class" /> + <entry name="!?*.groovy" /> + <entry name="!?*.scala" /> + <entry name="!?*.flex" /> + <entry name="!?*.kt" /> + <entry name="!?*.clj" /> + </wildcardResourcePatterns> + <annotationProcessing> + <profile default="true" name="Default" enabled="false"> + <processorPath useClasspath="true" /> + </profile> + <profile default="false" name="Maven default annotation processors profile" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + <processorPath useClasspath="true" /> + <module name="PluginAnnotations" /> + </profile> + </annotationProcessing> + <bytecodeTargetLevel> + <module name="PluginAnnotations" target="1.6" /> + </bytecodeTargetLevel> + </component> +</project> + diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ +<component name="CopyrightManager"> + <settings default="" /> +</component>
\ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..74c0d0a --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false"> + <file url="file://$PROJECT_DIR$" charset="UTF-8" /> + </component> +</project> + diff --git a/.idea/libraries/Maven__com_google_guava_guava_17_0.xml b/.idea/libraries/Maven__com_google_guava_guava_17_0.xml new file mode 100644 index 0000000..2a9069c --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_17_0.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: com.google.guava:guava:17.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml new file mode 100644 index 0000000..f3f3738 --- /dev/null +++ b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: com.googlecode.json-simple:json-simple:1.1.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml new file mode 100644 index 0000000..2ec8376 --- /dev/null +++ b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: commons-lang:commons-lang:2.6"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml b/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml new file mode 100644 index 0000000..e60370e --- /dev/null +++ b/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: javax.persistence:persistence-api:1.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_10.xml b/.idea/libraries/Maven__junit_junit_4_10.xml new file mode 100644 index 0000000..ed8bf5f --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_10.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: junit:junit:4.10"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml b/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml new file mode 100644 index 0000000..91f161a --- /dev/null +++ b/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.avaje:ebean:2.8.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_bukkit_bukkit_1_8_R0_1_SNAPSHOT.xml b/.idea/libraries/Maven__org_bukkit_bukkit_1_8_R0_1_SNAPSHOT.xml new file mode 100644 index 0000000..624897d --- /dev/null +++ b/.idea/libraries/Maven__org_bukkit_bukkit_1_8_R0_1_SNAPSHOT.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.bukkit:bukkit:1.8-R0.1-SNAPSHOT"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/bukkit/bukkit/1.8-R0.1-SNAPSHOT/bukkit-1.8-R0.1-SNAPSHOT.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/bukkit/bukkit/1.8-R0.1-SNAPSHOT/bukkit-1.8-R0.1-SNAPSHOT-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/bukkit/bukkit/1.8-R0.1-SNAPSHOT/bukkit-1.8-R0.1-SNAPSHOT-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml new file mode 100644 index 0000000..acdf443 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.hamcrest:hamcrest-core:1.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_14.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_14.xml new file mode 100644 index 0000000..d9fbe59 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_14.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.yaml:snakeyaml:1.14"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.14/snakeyaml-1.14.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.14/snakeyaml-1.14-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.14/snakeyaml-1.14-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..3a32f24 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ASMPluginConfiguration"> + <asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" /> + <groovy codeStyle="LEGACY" /> + </component> + <component name="EntryPointsManager"> + <entry_points version="2.0" /> + </component> + <component name="IdProvider" IDEtalkID="D962DDBDD82F044B23245F018DF130E8" /> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/out" /> + </component> +</project> + diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..aa8be29 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/PluginAnnotations.iml" filepath="$PROJECT_DIR$/PluginAnnotations.iml" /> + </modules> + </component> +</project> + diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ +<component name="DependencyValidationManager"> + <state> + <option name="SKIP_IMPORT_STATEMENTS" value="false" /> + </state> +</component>
\ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="" /> + </component> +</project> + diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..e5453c4 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,764 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ChangeListManager"> + <list default="true" id="69ef6a83-e653-462d-8a49-10efc6dea7ee" name="Default" comment="" /> + <ignored path="PluginAnnotations.iws" /> + <ignored path=".idea/workspace.xml" /> + <option name="TRACKING_ENABLED" value="true" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="ChangesViewManager" flattened_view="true" show_ignored="false" /> + <component name="CreatePatchCommitExecutor"> + <option name="PATCH_PATH" value="" /> + </component> + <component name="DaemonCodeAnalyzer"> + <disable_hints /> + </component> + <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> + <component name="FavoritesManager"> + <favorites_list name="PluginAnnotations" /> + </component> + <component name="FileEditorManager"> + <leaf> + <file leaf-file-name="compiler.xml" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/.idea/compiler.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="585"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="PluginAnnotationProcessor.java" pinned="false" current="true" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.55785125" vertical-offset="1935" max-vertical-offset="3000"> + <caret line="147" column="167" selection-start-line="147" selection-start-column="167" selection-end-line="147" selection-end-column="167" /> + <folding> + <element signature="imports" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pom.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="1274" max-vertical-offset="1860"> + <caret line="116" column="20" selection-start-line="116" selection-start-column="20" selection-end-line="116" selection-end-column="20" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="javax.annotation.processing.Processor" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/main/resources/META-INF/services/javax.annotation.processing.Processor"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="105"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Main.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/main/java/org/bukkit/plugin/java/annotation/Main.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="900"> + <caret line="54" column="18" selection-start-line="54" selection-start-column="18" selection-end-line="54" selection-end-column="18" /> + <folding /> + </state> + </provider> + </entry> + </file> + </leaf> + </component> + <component name="FindManager"> + <FindUsagesManager> + <setting name="OPEN_NEW_TAB" value="true" /> + </FindUsagesManager> + </component> + <component name="IdeDocumentHistory"> + <option name="changedFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + <option value="$PROJECT_DIR$/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java" /> + </list> + </option> + </component> + <component name="MavenImportPreferences"> + <option name="importingSettings"> + <MavenImportingSettings> + <option name="importAutomatically" value="true" /> + </MavenImportingSettings> + </option> + </component> + <component name="ProjectFrameBounds"> + <option name="y" value="22" /> + <option name="width" value="1440" /> + <option name="height" value="874" /> + </component> + <component name="ProjectLevelVcsManager" settingsEditedManually="false"> + <OptionsSetting value="true" id="Add" /> + <OptionsSetting value="true" id="Remove" /> + <OptionsSetting value="true" id="Checkout" /> + <OptionsSetting value="true" id="Update" /> + <OptionsSetting value="true" id="Status" /> + <OptionsSetting value="true" id="Edit" /> + <ConfirmationsSetting value="0" id="Add" /> + <ConfirmationsSetting value="0" id="Remove" /> + </component> + <component name="ProjectReloadState"> + <option name="STATE" value="0" /> + </component> + <component name="ProjectView"> + <navigator currentView="ProjectPane" proportions="" version="1"> + <flattenPackages /> + <showMembers /> + <showModules /> + <showLibraryContents /> + <hideEmptyPackages /> + <abbreviatePackageNames /> + <autoscrollToSource /> + <autoscrollFromSource /> + <sortByType /> + </navigator> + <panes> + <pane id="Scope" /> + <pane id="ProjectPane"> + <subPane> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="src" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="main" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="resources" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="META-INF" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="services" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="PluginAnnotations" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="src" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="main" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="java" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="annotation" /> + <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" /> + </PATH_ELEMENT> + </PATH> + </subPane> + </pane> + <pane id="PackagesPane" /> + </panes> + </component> + <component name="PropertiesComponent"> + <property name="GoToClass.includeLibraries" value="false" /> + <property name="GoToClass.toSaveIncludeLibraries" value="false" /> + <property name="GoToFile.includeJavaFiles" value="false" /> + <property name="MemberChooser.sorted" value="false" /> + <property name="MemberChooser.showClasses" value="true" /> + <property name="MemberChooser.copyJavadoc" value="false" /> + <property name="WebServerToolWindowFactoryState" value="false" /> + <property name="options.lastSelected" value="org.objectweb.asm.idea.config.ASMPluginComponent" /> + <property name="options.splitter.main.proportions" value="0.3" /> + <property name="options.splitter.details.proportions" value="0.2" /> + <property name="options.searchVisible" value="true" /> + <property name="project.structure.last.edited" value="Modules" /> + <property name="project.structure.proportion" value="0.0" /> + <property name="project.structure.side.proportion" value="0.0" /> + <property name="FullScreen" value="false" /> + <property name="recentsLimit" value="5" /> + <property name="restartRequiresConfirmation" value="true" /> + <property name="dynamic.classpath" value="false" /> + </component> + <component name="RecentsManager"> + <key name="CopyFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/src/main" /> + </key> + </component> + <component name="RunManager" selected="Maven.install"> + <configuration default="true" type="JUnit" factoryName="JUnit"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <module name="" /> + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <option name="PACKAGE_NAME" /> + <option name="MAIN_CLASS_NAME" /> + <option name="METHOD_NAME" /> + <option name="TEST_OBJECT" value="class" /> + <option name="VM_PARAMETERS" value="-ea" /> + <option name="PARAMETERS" /> + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> + <option name="ENV_VARIABLES" /> + <option name="PASS_PARENT_ENVS" value="true" /> + <option name="TEST_SEARCH_SCOPE"> + <value defaultName="moduleWithDependencies" /> + </option> + <envs /> + <patterns /> + <method /> + </configuration> + <configuration default="true" type="Remote" factoryName="Remote"> + <option name="USE_SOCKET_TRANSPORT" value="true" /> + <option name="SERVER_MODE" value="false" /> + <option name="SHMEM_ADDRESS" value="javadebug" /> + <option name="HOST" value="localhost" /> + <option name="PORT" value="5005" /> + <method /> + </configuration> + <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application"> + <module name="" /> + <option name="ACTIVITY_CLASS" value="" /> + <option name="MODE" value="default_activity" /> + <option name="DEPLOY" value="true" /> + <option name="ARTIFACT_NAME" value="" /> + <option name="TARGET_SELECTION_MODE" value="EMULATOR" /> + <option name="USE_LAST_SELECTED_DEVICE" value="false" /> + <option name="PREFERRED_AVD" value="" /> + <option name="USE_COMMAND_LINE" value="true" /> + <option name="COMMAND_LINE" value="" /> + <option name="WIPE_USER_DATA" value="false" /> + <option name="DISABLE_BOOT_ANIMATION" value="false" /> + <option name="NETWORK_SPEED" value="full" /> + <option name="NETWORK_LATENCY" value="none" /> + <option name="CLEAR_LOGCAT" value="false" /> + <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> + <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" /> + <method /> + </configuration> + <configuration default="true" type="CabalRunConfiguration" factoryName="Haskell"> + <module name="" /> + <setting name="executableName" value="" /> + <setting name="parameters" value="" /> + <setting name="workingDir" value="" /> + <environmetVariables /> + <method /> + </configuration> + <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin"> + <module name="" /> + <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" /> + <option name="PROGRAM_PARAMETERS" /> + <method /> + </configuration> + <configuration default="true" type="GrailsRunConfigurationType" factoryName="Grails"> + <module name="" /> + <setting name="vmparams" value="" /> + <setting name="cmdLine" value="run-app" /> + <setting name="depsClasspath" value="false" /> + <setting name="passParentEnv" value="true" /> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <setting name="launchBrowser" value="false" /> + <method /> + </configuration> + <configuration default="true" type="uTestRunConfiguration" factoryName="utest"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <extension name="scalaCoverage" /> + <module name="" /> + <setting name="path" value="" /> + <setting name="package" value="" /> + <setting name="vmparams" value="" /> + <setting name="params" value="" /> + <setting name="workingDirectory" value="$PROJECT_DIR$" /> + <setting name="searchForTest" value="Across module dependencies" /> + <setting name="testName" value="" /> + <setting name="testKind" value="Class" /> + <setting name="showProgressMessages" value="true" /> + <method /> + </configuration> + <configuration default="true" type="MavenRunConfiguration" factoryName="Maven"> + <MavenSettings> + <option name="myGeneralSettings" /> + <option name="myRunnerSettings" /> + <option name="myRunnerParameters"> + <MavenRunnerParameters> + <option name="profiles"> + <set /> + </option> + <option name="goals"> + <list /> + </option> + <option name="profilesMap"> + <map /> + </option> + <option name="resolveToWorkspace" value="false" /> + <option name="workingDirPath" value="" /> + </MavenRunnerParameters> + </option> + </MavenSettings> + <method /> + </configuration> + <configuration default="true" type="ScalaTestRunConfiguration" factoryName="ScalaTest"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <extension name="scalaCoverage" /> + <module name="" /> + <setting name="path" value="" /> + <setting name="package" value="" /> + <setting name="vmparams" value="" /> + <setting name="params" value="" /> + <setting name="workingDirectory" value="$PROJECT_DIR$" /> + <setting name="searchForTest" value="Across module dependencies" /> + <setting name="testName" value="" /> + <setting name="testKind" value="Class" /> + <setting name="showProgressMessages" value="true" /> + <method /> + </configuration> + <configuration default="true" type="Application" factoryName="Application"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <option name="MAIN_CLASS_NAME" /> + <option name="VM_PARAMETERS" /> + <option name="PROGRAM_PARAMETERS" /> + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <option name="ENABLE_SWING_INSPECTOR" value="false" /> + <option name="ENV_VARIABLES" /> + <option name="PASS_PARENT_ENVS" value="true" /> + <module name="" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="TestNG" factoryName="TestNG"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <module name="" /> + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <option name="SUITE_NAME" /> + <option name="PACKAGE_NAME" /> + <option name="MAIN_CLASS_NAME" /> + <option name="METHOD_NAME" /> + <option name="GROUP_NAME" /> + <option name="TEST_OBJECT" value="CLASS" /> + <option name="VM_PARAMETERS" value="-ea" /> + <option name="PARAMETERS" /> + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> + <option name="OUTPUT_DIRECTORY" /> + <option name="ANNOTATION_TYPE" /> + <option name="ENV_VARIABLES" /> + <option name="PASS_PARENT_ENVS" value="true" /> + <option name="TEST_SEARCH_SCOPE"> + <value defaultName="moduleWithDependencies" /> + </option> + <option name="USE_DEFAULT_REPORTERS" value="false" /> + <option name="PROPERTIES_FILE" /> + <envs /> + <properties /> + <listeners /> + <method /> + </configuration> + <configuration default="true" type="FlexUnitRunConfigurationType" factoryName="FlexUnit" appDescriptorForEmulator="Android" class_name="" emulatorAdlOptions="" method_name="" package_name="" scope="Class"> + <option name="BCName" value="" /> + <option name="launcherParameters"> + <LauncherParameters> + <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" /> + <option name="launcherType" value="OSDefault" /> + <option name="newPlayerInstance" value="false" /> + <option name="playerPath" value="/Applications/Flash Player Debugger.app" /> + </LauncherParameters> + </option> + <option name="moduleName" value="" /> + <option name="trusted" value="true" /> + <method /> + </configuration> + <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests"> + <module name="" /> + <option name="TESTING_TYPE" value="0" /> + <option name="INSTRUMENTATION_RUNNER_CLASS" value="" /> + <option name="METHOD_NAME" value="" /> + <option name="CLASS_NAME" value="" /> + <option name="PACKAGE_NAME" value="" /> + <option name="TARGET_SELECTION_MODE" value="EMULATOR" /> + <option name="USE_LAST_SELECTED_DEVICE" value="false" /> + <option name="PREFERRED_AVD" value="" /> + <option name="USE_COMMAND_LINE" value="true" /> + <option name="COMMAND_LINE" value="" /> + <option name="WIPE_USER_DATA" value="false" /> + <option name="DISABLE_BOOT_ANIMATION" value="false" /> + <option name="NETWORK_SPEED" value="full" /> + <option name="NETWORK_LATENCY" value="none" /> + <option name="CLEAR_LOGCAT" value="false" /> + <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> + <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" /> + <method /> + </configuration> + <configuration default="true" type="FlashRunConfigurationType" factoryName="Flash App"> + <option name="BCName" value="" /> + <option name="IOSSimulatorSdkPath" value="" /> + <option name="adlOptions" value="" /> + <option name="airProgramParameters" value="" /> + <option name="appDescriptorForEmulator" value="Android" /> + <option name="debugTransport" value="USB" /> + <option name="debuggerSdkRaw" value="BC SDK" /> + <option name="emulator" value="NexusOne" /> + <option name="emulatorAdlOptions" value="" /> + <option name="fastPackaging" value="true" /> + <option name="fullScreenHeight" value="0" /> + <option name="fullScreenWidth" value="0" /> + <option name="launchUrl" value="false" /> + <option name="launcherParameters"> + <LauncherParameters> + <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" /> + <option name="launcherType" value="OSDefault" /> + <option name="newPlayerInstance" value="false" /> + <option name="playerPath" value="/Applications/Flash Player Debugger.app" /> + </LauncherParameters> + </option> + <option name="mobileRunTarget" value="Emulator" /> + <option name="moduleName" value="" /> + <option name="overriddenMainClass" value="" /> + <option name="overriddenOutputFileName" value="" /> + <option name="overrideMainClass" value="false" /> + <option name="runTrusted" value="true" /> + <option name="screenDpi" value="0" /> + <option name="screenHeight" value="0" /> + <option name="screenWidth" value="0" /> + <option name="url" value="http://" /> + <option name="usbDebugPort" value="7936" /> + <method /> + </configuration> + <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug"> + <method /> + </configuration> + <configuration default="true" type="Applet" factoryName="Applet"> + <module name="" /> + <option name="MAIN_CLASS_NAME" /> + <option name="HTML_FILE_NAME" /> + <option name="HTML_USED" value="false" /> + <option name="WIDTH" value="400" /> + <option name="HEIGHT" value="300" /> + <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> + <option name="VM_PARAMETERS" /> + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <method /> + </configuration> + <configuration default="true" type="Specs2RunConfiguration" factoryName="Specs2"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <extension name="scalaCoverage" /> + <module name="" /> + <setting name="path" value="" /> + <setting name="package" value="" /> + <setting name="vmparams" value="" /> + <setting name="params" value="" /> + <setting name="workingDirectory" value="$PROJECT_DIR$" /> + <setting name="searchForTest" value="Across module dependencies" /> + <setting name="testName" value="" /> + <setting name="testKind" value="Class" /> + <setting name="showProgressMessages" value="true" /> + <method /> + </configuration> + <configuration default="true" type="CucumberJavaRunConfigurationType" factoryName="Cucumber java"> + <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> + <option name="myFilePath" /> + <option name="GLUE" /> + <option name="myNameFilter" /> + <option name="myGeneratedName" /> + <option name="MAIN_CLASS_NAME" /> + <option name="VM_PARAMETERS" /> + <option name="PROGRAM_PARAMETERS" /> + <option name="WORKING_DIRECTORY" /> + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <option name="ENABLE_SWING_INSPECTOR" value="false" /> + <option name="ENV_VARIABLES" /> + <option name="PASS_PARENT_ENVS" value="true" /> + <module name="" /> + <envs /> + <method /> + </configuration> + <configuration default="false" name="install" type="MavenRunConfiguration" factoryName="Maven"> + <MavenSettings> + <option name="myGeneralSettings" /> + <option name="myRunnerSettings" /> + <option name="myRunnerParameters"> + <MavenRunnerParameters> + <option name="profiles"> + <set /> + </option> + <option name="goals"> + <list> + <option value="clean" /> + <option value="install" /> + </list> + </option> + <option name="profilesMap"> + <map /> + </option> + <option name="resolveToWorkspace" value="false" /> + <option name="workingDirPath" value="$PROJECT_DIR$" /> + </MavenRunnerParameters> + </option> + </MavenSettings> + <RunnerSettings RunnerId="Run" /> + <ConfigurationWrapper RunnerId="Run" /> + <method /> + </configuration> + <list size="1"> + <item index="0" class="java.lang.String" itemvalue="Maven.install" /> + </list> + <configuration name="<template>" type="WebApp" default="true" selected="false"> + <Host>localhost</Host> + <Port>5050</Port> + </configuration> + </component> + <component name="ShelveChangesManager" show_recycled="false" /> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="69ef6a83-e653-462d-8a49-10efc6dea7ee" name="Default" comment="" /> + <created>1424030427326</created> + <updated>1424030427326</updated> + <workItem from="1424030429054" duration="2604000" /> + <workItem from="1424310505837" duration="2354000" /> + </task> + <servers /> + </component> + <component name="TimeTrackingManager"> + <option name="totallyTimeSpent" value="4958000" /> + </component> + <component name="ToolWindowManager"> + <frame x="0" y="22" width="1440" height="874" extended-state="0" /> + <editor active="false" /> + <layout> + <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> + <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> + <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> + <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Kotlin Bytecode" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32992327" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> + <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3286445" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24964234" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="Cabal" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="ASM" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> + <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> + <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> + <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> + <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + </layout> + </component> + <component name="Vcs.Log.UiProperties"> + <option name="RECENTLY_FILTERED_USER_GROUPS"> + <collection /> + </option> + <option name="RECENTLY_FILTERED_BRANCH_GROUPS"> + <collection /> + </option> + </component> + <component name="VcsContentAnnotationSettings"> + <option name="myLimit" value="2678400000" /> + </component> + <component name="VcsManagerConfiguration"> + <option name="myTodoPanelSettings"> + <TodoPanelSettings /> + </option> + </component> + <component name="XDebuggerManager"> + <breakpoint-manager /> + </component> + <component name="antWorkspaceConfiguration"> + <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" /> + <option name="FILTER_TARGETS" value="false" /> + </component> + <component name="editorHistoryManager"> + <entry file="file://$PROJECT_DIR$/.idea/compiler.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="756"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/org/bukkit/plugin/java/annotation/Main.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="900"> + <caret line="54" column="18" selection-start-line="54" selection-start-column="18" selection-end-line="54" selection-end-column="18" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/pom.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="1274" max-vertical-offset="1860"> + <caret line="116" column="20" selection-start-line="116" selection-start-column="20" selection-end-line="116" selection-end-column="20" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/META-INF/services/javax.annotation.processing.Processor"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="496"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.55785125" vertical-offset="1935" max-vertical-offset="3000"> + <caret line="147" column="167" selection-start-line="147" selection-start-column="167" selection-end-line="147" selection-end-column="167" /> + <folding> + <element signature="imports" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </component> + <component name="masterDetails"> + <states> + <state key="ArtifactsStructureConfigurable.UI"> + <settings> + <artifact-editor /> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="FacetStructureConfigurable.UI"> + <settings> + <last-edited>No facets are configured</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="GlobalLibrariesConfigurable.UI"> + <settings> + <last-edited>MayhemData</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="JdkListConfigurable.UI"> + <settings> + <last-edited>1.7</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ModuleStructureConfigurable.UI"> + <settings> + <last-edited>PluginAnnotations</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + <option value="0.6" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ProjectJDKs.UI"> + <settings> + <last-edited>1.7</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ProjectLibrariesConfigurable.UI"> + <settings> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + </states> + </component> +</project> + diff --git a/PluginAnnotations.iml b/PluginAnnotations.iml new file mode 100644 index 0000000..d979331 --- /dev/null +++ b/PluginAnnotations.iml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources/META-INF" type="java-resource" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" name="Maven: org.bukkit:bukkit:1.8-R0.1-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> + <orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" /> + <orderEntry type="library" name="Maven: junit:junit:4.10" level="project" /> + <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:17.0" level="project" /> + <orderEntry type="library" name="Maven: org.avaje:ebean:2.8.1" level="project" /> + <orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" /> + <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> + </component> +</module> + @@ -0,0 +1,119 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.sonatype.oss</groupId> + <artifactId>oss-parent</artifactId> + <version>9</version> + </parent> + + <groupId>org.bukkit</groupId> + <artifactId>plugin-annotations</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>Plugin Annotations</name> + <url>http://www.spigotmc.org/</url> + <description>A annotaion-based compiletime plugin.yml generator.</description> + + <properties> + <maven.compiler.source>1.6</maven.compiler.source> + <maven.compiler.target>1.6</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <!-- just until we get deployment to central approved --> + <distributionManagement> + <repository> + <id>spigotmc-releases</id> + <url>https://hub.spigotmc.org/nexus/content/repositories/releases/</url> + </repository> + <snapshotRepository> + <id>spigotmc-releases</id> + <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> + </snapshotRepository> + </distributionManagement> + + <!-- required until fixed plexus-compiler-eclipse is deployed --> + <pluginRepositories> + <pluginRepository> + <id>spigotmc-public</id> + <url>https://hub.spigotmc.org/nexus/content/groups/public/</url> + </pluginRepository> + </pluginRepositories> + + <dependencies> + <dependency> + <groupId>org.bukkit</groupId> + <artifactId>bukkit</artifactId> + <version>1.8-R0.1-SNAPSHOT</version> + <scope>compile</scope> + </dependency> + <!-- we don't currently have tests + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-library</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + --> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <!-- versions after this appear to be broken --> + <version>3.1</version> + <configuration> + <!-- we use the Eclipse compiler as it doesn't need a JDK --> + <compilerId>eclipse</compilerId> + <!-- source and target are ignored if this isn't true --> + <optimize>true</optimize> + </configuration> + <dependencies> + <!-- we need our custom version as it fixes some bugs on case sensitive file systems --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-compiler-eclipse</artifactId> + <version>2.5.0-spigotmc</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>animal-sniffer-maven-plugin</artifactId> + <version>1.13</version> + <executions> + <execution> + <phase>process-classes</phase> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + <configuration> + <signature> + <groupId>org.codehaus.mojo.signature</groupId> + <artifactId>java16</artifactId> + <version>1.1</version> + </signature> + </configuration> + </plugin> + </plugins> + <resources> + <resource> + <directory>src/main/resources/META-INF</directory> + <targetPath>META-INF</targetPath> + </resource> + </resources> + </build> +</project>
\ No newline at end of file diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Author.java b/src/main/java/org/bukkit/plugin/java/annotation/Author.java new file mode 100644 index 0000000..d226d7d --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Author.java @@ -0,0 +1,18 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the author(s) of the plugin. Translates to {@code author} + * in plugin.yml if a single author, otherwise {@code authors} + */ + +@Target(ElementType.TYPE) +public @interface Author { + + public String[] value(); + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Commands.java b/src/main/java/org/bukkit/plugin/java/annotation/Commands.java new file mode 100644 index 0000000..c730b59 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Commands.java @@ -0,0 +1,52 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents a list of this plugin's registered commands. + */ + +@Target(ElementType.TYPE) +public @interface Commands { // TODO: in java 8, make repeatable. + + public Cmd[] value(); + + @Target({}) + public static @interface Cmd { + + /** + * This command's name. + */ + public String value(); + + /** + * This command's description. + */ + + public String desc() default ""; + + /** + * This command's aliases. + */ + public String[] aliases() default {}; + + /** + * This command's permission node. + */ + public String permission() default ""; + + /** + * This command's permission-check-fail message. + */ + public String permissionMessage() default ""; + + /** + * This command's usage message. + */ + public String usage() default ""; + } + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/DependsOn.java b/src/main/java/org/bukkit/plugin/java/annotation/DependsOn.java new file mode 100644 index 0000000..892a267 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/DependsOn.java @@ -0,0 +1,17 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the plugin's hard dependencies. + */ + +@Target(ElementType.TYPE) +public @interface DependsOn { + + public String[] value(); + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Description.java b/src/main/java/org/bukkit/plugin/java/annotation/Description.java new file mode 100644 index 0000000..4595d06 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Description.java @@ -0,0 +1,17 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents a short description for the plugin. + */ + +@Target(ElementType.TYPE) +public @interface Description { + + public String value(); + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/LoadBefore.java b/src/main/java/org/bukkit/plugin/java/annotation/LoadBefore.java new file mode 100644 index 0000000..d0802f4 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/LoadBefore.java @@ -0,0 +1,17 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the plugins this plugin should be loaded before + */ + +@Target(ElementType.TYPE) +public @interface LoadBefore { + + public String[] value(); + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/LoadOn.java b/src/main/java/org/bukkit/plugin/java/annotation/LoadOn.java new file mode 100644 index 0000000..9e5372d --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/LoadOn.java @@ -0,0 +1,18 @@ +package org.bukkit.plugin.java.annotation; + +import org.bukkit.plugin.PluginLoadOrder; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the optional load order of the plugin. + */ + +@Target(ElementType.TYPE) +public @interface LoadOn { + + public PluginLoadOrder value(); +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/LogPrefix.java b/src/main/java/org/bukkit/plugin/java/annotation/LogPrefix.java new file mode 100644 index 0000000..e8d6ed4 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/LogPrefix.java @@ -0,0 +1,16 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the prefix used for the plugin's log entries, defaults to plugin name. + */ + +@Target(ElementType.TYPE) +public @interface LogPrefix { + + public String value(); +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Main.java b/src/main/java/org/bukkit/plugin/java/annotation/Main.java new file mode 100644 index 0000000..ebef467 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Main.java @@ -0,0 +1,55 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Marks this class (which <i>must</i> subclass JavaPlugin) as this plugin's main class. + * <p> + * This class is part of the plugin annotation framework that automates plugin.yml. + * <p> + * Example: + * <pre> + * <code>{@literal @}Main + * {@literal @}Name("Test") + * {@literal @}Version("v1.0") + * {@literal @}Description("A test plugin.") + * {@literal @}LoadOn(PluginLoadOrder.POSTWORLD) + * {@literal @}Author("md_5") + * {@literal @}Website("spigotmc.org") + * {@literal @}UsesDatabase + * {@literal @}DependsOn({"WorldEdit", "Towny"}) + * {@literal @}SoftDependsOn("Vault") + * {@literal @}LogPrefix("Testing") + * {@literal @}LoadBefore("Essentials") + * {@literal @}Commands({ + * {@literal @}Cmd( + * value = "foo", + * desc = "Foo command", + * aliases = {"foobar", "fubar"}, + * permission = "test.foo", + * permissionMessage = "You do not have permission!", + * usage = "/<command> [test|stop]" + * ), + * {@literal @}Cmd("bar") + * }) + * {@literal @}Permissions({ + * {@literal @}Perm( + * value = "test.foo", + * desc = "Allows foo command", + * defaultValue = PermissionDefault.OP, + * ), + * {@literal @}Perm( + * value = "test.*", + * desc = "Wildcard perm", + * defaultValue = PermissionDefault.OP, + * children = {"test.foo"} + * ) + * }) + * public class Test extends JavaPlugin { ... } + * </code> + * </pre> + */ + +@Target(ElementType.TYPE) +public @interface Main {} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Name.java b/src/main/java/org/bukkit/plugin/java/annotation/Name.java new file mode 100644 index 0000000..2ef196b --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Name.java @@ -0,0 +1,18 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the name of the plugin. + * <p> + * If not present in a class annotated with {@link Main} the name defaults to Class.getSimpleName() and will emmit a warning. + */ + +@Target(ElementType.TYPE) +public @interface Name { + + public String value(); +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Permissions.java b/src/main/java/org/bukkit/plugin/java/annotation/Permissions.java new file mode 100644 index 0000000..c6097c3 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Permissions.java @@ -0,0 +1,50 @@ +package org.bukkit.plugin.java.annotation; + +import org.bukkit.permissions.PermissionDefault; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents a list of this plugin's registered permissions. + */ + +@Target(ElementType.TYPE) +public @interface Permissions { // TODO: in java 8, make repeatable. + + public Perm[] value(); + + @Target({}) + public static @interface Perm { + + /** + * This perm's name. + */ + public String value(); + + /** + * This perm's description. + */ + + public String desc() default ""; + + /** + * This perm's default. + */ + public PermissionDefault defaultValue() default PermissionDefault.OP; + + /** + * This perm's child nodes + */ + public String[] children() default {}; + + /** + * This perms's negated child nodes + */ + public String[] antichildren() default {}; + + } + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java b/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java new file mode 100644 index 0000000..9266c97 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java @@ -0,0 +1,194 @@ +package org.bukkit.plugin.java.annotation; + +import org.bukkit.plugin.PluginLoadOrder; +import org.bukkit.plugin.java.JavaPlugin; +import org.yaml.snakeyaml.Yaml; + +import javax.annotation.processing.*; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.Element; +import javax.lang.model.element.Modifier; +import javax.lang.model.element.PackageElement; +import javax.lang.model.element.TypeElement; +import javax.lang.model.type.TypeMirror; +import javax.tools.Diagnostic; +import javax.tools.FileObject; +import javax.tools.StandardLocation; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +@SupportedAnnotationTypes("org.bukkit.plugin.java.annotation.*") +@SupportedSourceVersion(SourceVersion.RELEASE_6) +public class PluginAnnotationProcessor extends AbstractProcessor { + + private boolean hasMainBeenFound = false; + + private static final DateFormat dFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + + @Override + public boolean process(Set<? extends TypeElement> annots, RoundEnvironment rEnv) { + Element main = null; + for(Element el : rEnv.getElementsAnnotatedWith(Main.class)) { + if(main != null){ + raiseError("More than one class with @Main found, aborting!"); + return false; + } + main = el; + } + + if(main == null) return false; + + if(hasMainBeenFound){ + raiseError("More than one class with @Main found, aborting!"); + return false; + } + hasMainBeenFound = true; + + TypeElement mainType; + if(main instanceof TypeElement){ + mainType = (TypeElement) main; + } else { + raiseError("Element annotated with @Main is not a type!"); + return false; + } + + if(!(mainType.getEnclosingElement() instanceof PackageElement) && !mainType.getModifiers().contains(Modifier.STATIC)){ + raiseError("Element annotated with @Main is not top-level or static nested!"); + return false; + } + + if(!processingEnv.getTypeUtils().isSubtype(mainType.asType(), fromClass(JavaPlugin.class))){ + raiseError("Class annotated with @Main is not an subclass of JavaPlugin!"); + } + + Map<String, Object> yml = new HashMap<String, Object>(); + + final String mainName = mainType.getQualifiedName().toString(); + yml.put("main", mainName); + + processAndPut(yml, "name", mainType, mainName.substring(mainName.lastIndexOf('.') + 1), Name.class, String.class); + + processAndPut(yml, "version", mainType, Version.DEFAULT_VERSION, Version.class, String.class); + + processAndPut(yml, "description", mainType, null, Description.class, String.class); + + processAndPut(yml, "load", mainType, null, LoadOn.class, String.class); + + { + String[] authors = process(mainType, new String[0], Author.class, String[].class); + switch(authors.length) { + case 0: break; + case 1: yml.put("author", authors[0]); break; + default: yml.put("authors", authors); break; + } + } + + processAndPut(yml, "website", mainType, null, Website.class, String.class); + + if(mainType.getAnnotation(UsesDatabase.class) != null) yml.put("database", true); + + processAndPut(yml, "depend", mainType, null, DependsOn.class, String[].class); + + processAndPut(yml, "softdepend", mainType, null, SoftDependsOn.class, String[].class); + + processAndPut(yml, "prefix", mainType, null, LogPrefix.class, String.class); + + processAndPut(yml, "loadbefore", mainType, null, LoadBefore.class, String[].class); + + Commands.Cmd[] commands = process(mainType, new Commands.Cmd[0], Commands.class, Commands.Cmd[].class); + + Map<String, Object> commandMap = new HashMap<String, Object>(); + + for(Commands.Cmd cmd : commands) { + String name = cmd.value(); + Map<String, Object> desc = new HashMap<String, Object>(); + if(!cmd.desc().isEmpty()) desc.put("description", cmd.desc()); + if(cmd.aliases().length != 0) desc.put("aliases", cmd.aliases()); + if(!cmd.permission().isEmpty()) desc.put("permission", cmd.permission()); + if(!cmd.permissionMessage().isEmpty()) desc.put("permission-message", cmd.permissionMessage()); + if(!cmd.usage().isEmpty()) desc.put("usage", cmd.usage()); + commandMap.put(name, desc); + } + + if(!commandMap.isEmpty()) yml.put("commands", commandMap); + + Permissions.Perm[] perms = process(mainType, new Permissions.Perm[0], Permissions.class, Permissions.Perm[].class); + + Map<String, Object> permMap = new HashMap<String, Object>(); + + for(Permissions.Perm perm : perms) { + String name = perm.value(); + Map<String, Object> desc = new HashMap<String, Object>(); + if(!perm.desc().isEmpty()) desc.put("description", perm.desc()); + desc.put("default", perm.defaultValue().toString()); + Map<String, Object> children = new HashMap<String, Object>(); + for(String p : perm.children()) children.put(p, true); + for(String p : perm.antichildren()) children.put(p, false); + if(!children.isEmpty()) desc.put("children", children); + permMap.put(name, desc); + } + + if(!permMap.isEmpty()) yml.put("permissions", permMap); + + Yaml yaml = new Yaml(); + + try { + FileObject file = this.processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", "plugin.yml"); + Writer w = file.openWriter(); + try{ + w.append("# Auto-generated plugin.yml, generated at ").append(dFormat.format(new Date())).append(" by ").append(this.getClass().getName()).append("\n\n"); + yaml.dump(yml, w); + } finally { + w.flush(); + w.close(); + } + + } catch (IOException e) { + throw new RuntimeException(e); + } + + processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, "NOTE: You are using org.bukkit.plugin.java.annotation, an experimental API!"); + + return true; + } + + private void raiseError(String message) { + this.processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, message); + } + + private TypeMirror fromClass(Class<?> clazz) { + return processingEnv.getElementUtils().getTypeElement(clazz.getName()).asType(); + } + + private <A extends Annotation, R> R processAndPut( + Map<String, Object> map, String name, Element el, R defaultVal, Class<A> annotationType, Class<R> returnType) { + R result = process(el, defaultVal, annotationType, returnType); + if(result != null) + map.put(name, result); + return result; + } + private <A extends Annotation, R> R process(Element el, R defaultVal, Class<A> annotationType, Class<R> returnType) { + R result; + A ann = el.getAnnotation(annotationType); + if(ann == null) result = defaultVal; + else { + try { + Method value = annotationType.getMethod("value"); + Object res = value.invoke(ann); + result = (R) (returnType == String.class ? res.toString() : returnType.cast(res)); + } catch (Exception e) { + throw new RuntimeException(e); // shouldn't happen in theory + } + } + return result; + } +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/SoftDependsOn.java b/src/main/java/org/bukkit/plugin/java/annotation/SoftDependsOn.java new file mode 100644 index 0000000..81e8662 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/SoftDependsOn.java @@ -0,0 +1,17 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the plugin's soft dependencies. + */ + +@Target(ElementType.TYPE) +public @interface SoftDependsOn { + + public String[] value(); + +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/UsesDatabase.java b/src/main/java/org/bukkit/plugin/java/annotation/UsesDatabase.java new file mode 100644 index 0000000..e73ebfc --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/UsesDatabase.java @@ -0,0 +1,13 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Denotes this plugin as using Bukkit's bundled database system. + */ + +@Target(ElementType.TYPE) +public @interface UsesDatabase {} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Version.java b/src/main/java/org/bukkit/plugin/java/annotation/Version.java new file mode 100644 index 0000000..2d7ab66 --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Version.java @@ -0,0 +1,20 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the version of the plugin. + * <p> + * If not present in a class annotated with {@link Main} the name defaults to "v0.0" and will emmit a warning. + */ + +@Target(ElementType.TYPE) +public @interface Version { + + public String value(); + + public static final String DEFAULT_VERSION = "v0.0"; +} diff --git a/src/main/java/org/bukkit/plugin/java/annotation/Website.java b/src/main/java/org/bukkit/plugin/java/annotation/Website.java new file mode 100644 index 0000000..385483f --- /dev/null +++ b/src/main/java/org/bukkit/plugin/java/annotation/Website.java @@ -0,0 +1,17 @@ +package org.bukkit.plugin.java.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Part of the plugin annotations framework. + * <p> + * Represents the website of the plugin. + */ + +@Target(ElementType.TYPE) +public @interface Website { + + public String value(); + +}
\ No newline at end of file diff --git a/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/src/main/resources/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 0000000..387e75c --- /dev/null +++ b/src/main/resources/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +org.bukkit.plugin.java.annotation.PluginAnnotationProcessor diff --git a/target/classes/META-INF/services/javax.annotation.processing.Processor b/target/classes/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 0000000..387e75c --- /dev/null +++ b/target/classes/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +org.bukkit.plugin.java.annotation.PluginAnnotationProcessor diff --git a/target/classes/org/bukkit/plugin/java/annotation/Author.class b/target/classes/org/bukkit/plugin/java/annotation/Author.class Binary files differnew file mode 100644 index 0000000..1cc34d5 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Author.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Commands$Cmd.class b/target/classes/org/bukkit/plugin/java/annotation/Commands$Cmd.class Binary files differnew file mode 100644 index 0000000..2dc72f5 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Commands$Cmd.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Commands.class b/target/classes/org/bukkit/plugin/java/annotation/Commands.class Binary files differnew file mode 100644 index 0000000..3d32d72 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Commands.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/DependsOn.class b/target/classes/org/bukkit/plugin/java/annotation/DependsOn.class Binary files differnew file mode 100644 index 0000000..36da70c --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/DependsOn.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Description.class b/target/classes/org/bukkit/plugin/java/annotation/Description.class Binary files differnew file mode 100644 index 0000000..be254d1 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Description.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/LoadBefore.class b/target/classes/org/bukkit/plugin/java/annotation/LoadBefore.class Binary files differnew file mode 100644 index 0000000..9b5f5a1 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/LoadBefore.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/LoadOn.class b/target/classes/org/bukkit/plugin/java/annotation/LoadOn.class Binary files differnew file mode 100644 index 0000000..f260a92 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/LoadOn.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/LogPrefix.class b/target/classes/org/bukkit/plugin/java/annotation/LogPrefix.class Binary files differnew file mode 100644 index 0000000..e678a78 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/LogPrefix.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Main.class b/target/classes/org/bukkit/plugin/java/annotation/Main.class Binary files differnew file mode 100644 index 0000000..76ef4dd --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Main.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Name.class b/target/classes/org/bukkit/plugin/java/annotation/Name.class Binary files differnew file mode 100644 index 0000000..8119a13 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Name.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Permissions$Perm.class b/target/classes/org/bukkit/plugin/java/annotation/Permissions$Perm.class Binary files differnew file mode 100644 index 0000000..28fc5c7 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Permissions$Perm.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Permissions.class b/target/classes/org/bukkit/plugin/java/annotation/Permissions.class Binary files differnew file mode 100644 index 0000000..5559370 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Permissions.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.class b/target/classes/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.class Binary files differnew file mode 100644 index 0000000..2fb1a5c --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/SoftDependsOn.class b/target/classes/org/bukkit/plugin/java/annotation/SoftDependsOn.class Binary files differnew file mode 100644 index 0000000..bb83d97 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/SoftDependsOn.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/UsesDatabase.class b/target/classes/org/bukkit/plugin/java/annotation/UsesDatabase.class Binary files differnew file mode 100644 index 0000000..69d6cb2 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/UsesDatabase.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Version.class b/target/classes/org/bukkit/plugin/java/annotation/Version.class Binary files differnew file mode 100644 index 0000000..a8e3a21 --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Version.class diff --git a/target/classes/org/bukkit/plugin/java/annotation/Website.class b/target/classes/org/bukkit/plugin/java/annotation/Website.class Binary files differnew file mode 100644 index 0000000..fb2dc7f --- /dev/null +++ b/target/classes/org/bukkit/plugin/java/annotation/Website.class diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..4716c8f --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Fri Feb 20 19:51:13 EST 2015 +version=1.0.0-SNAPSHOT +groupId=org.bukkit +artifactId=plugin-annotations diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..d1fddfb --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,17 @@ +org/bukkit/plugin/java/annotation/Version.class +org/bukkit/plugin/java/annotation/Commands$Cmd.class +org/bukkit/plugin/java/annotation/Permissions.class +org/bukkit/plugin/java/annotation/Main.class +org/bukkit/plugin/java/annotation/DependsOn.class +org/bukkit/plugin/java/annotation/Author.class +org/bukkit/plugin/java/annotation/Permissions$Perm.class +org/bukkit/plugin/java/annotation/Description.class +org/bukkit/plugin/java/annotation/Name.class +org/bukkit/plugin/java/annotation/Commands.class +org/bukkit/plugin/java/annotation/UsesDatabase.class +org/bukkit/plugin/java/annotation/SoftDependsOn.class +org/bukkit/plugin/java/annotation/LoadOn.class +org/bukkit/plugin/java/annotation/LogPrefix.class +org/bukkit/plugin/java/annotation/Website.class +org/bukkit/plugin/java/annotation/LoadBefore.class +org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..a87a200 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,15 @@ +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/PluginAnnotationProcessor.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Main.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/LogPrefix.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/UsesDatabase.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/LoadOn.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Permissions.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Website.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Description.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/LoadBefore.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Commands.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/DependsOn.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Name.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Author.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/Version.java +/Users/xor/PluginsWorkspace/misc/PluginAnnotations/src/main/java/org/bukkit/plugin/java/annotation/SoftDependsOn.java diff --git a/target/plugin-annotations-1.0.0-SNAPSHOT.jar b/target/plugin-annotations-1.0.0-SNAPSHOT.jar Binary files differnew file mode 100644 index 0000000..6cedd20 --- /dev/null +++ b/target/plugin-annotations-1.0.0-SNAPSHOT.jar |