embulk-input-cloudwatch_logs 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 87992b58676fdeaddad2c841f96e3bbd53a44329
4
+ data.tar.gz: 35deb6b6a8741deb4044e565442827980b93844b
5
+ SHA512:
6
+ metadata.gz: eabd966215d768006705c8921b0cd90982dff5fb93811cde636ba20b98033f466554ec4164687bc282eec7a5902eaa61c9edff18e2548d57b54666b0e68e9739
7
+ data.tar.gz: 13902ef7a5c355490a25cd653a370c04d927e8f72037680a5b38cfa2e57a538481c4788e7b4d0f197135ff9593a8b3a9ae98a041b37d59a77c3c25c5f1ded2b6
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ *~
2
+ /pkg/
3
+ /tmp/
4
+ .DS_Store
5
+ config.yaml
6
+ *.gemspec
7
+ .gradle/
8
+ /classpath/
9
+ build/
10
+ .idea
11
+ /.settings/
12
+ /.metadata/
13
+ .classpath
14
+ .project
data/LICENSE.txt ADDED
@@ -0,0 +1,23 @@
1
+
2
+ MIT License
3
+
4
+ Copyright (c) 2020 Hiroshi Hatake
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,115 @@
1
+ # Cloudwatch Logs input plugin for Embulk
2
+
3
+ ## Overview
4
+
5
+ * **Plugin type**: input
6
+ * **Resume supported**: no
7
+ * **Cleanup supported**: yes
8
+ * **Guess supported**: no
9
+
10
+ ## Configuration
11
+
12
+ - **log_group_name**: CloudWathcLogs log group name (string, required)
13
+
14
+ - **log_stream_name**: CloudWathcLogs log stream name (string, default: `null`)
15
+
16
+ - **use_log_stream_name_prefix**: Whether using **log_stream_name** as stream name prefix (boolean, default: `false`)
17
+
18
+ - **column_name**: Column name for CloudWatchLogs' message column (string, default: `"message"`)
19
+
20
+ - **start_time**: CloudWatchLogs start-time (string, optional, default: `null`)
21
+
22
+ - **end_time**: CloudWatchLogs end-time (string, optional, default: `null`)
23
+
24
+ - **time_range_format**: Time range format. Internally, it will be used as `yyyy-MM-dd HH:mm:ss` by default. (string, optional, default: `null`)
25
+
26
+ - **region** CloudWatchLogs region. Currently this should be required. (string, optional)
27
+
28
+ - **authentication_method**: name of mechanism to authenticate requests (basic, env, instance, profile, properties, anonymous, or session. default: basic)
29
+
30
+ - "basic": uses access_key_id and secret_access_key to authenticate.
31
+
32
+ - **aws_access_key_id**: AWS access key ID (string, required)
33
+
34
+ - **aws_secret_access_key**: AWS secret access key (string, required)
35
+
36
+ - "env": uses `AWS_ACCESS_KEY_ID` (or `AWS_ACCESS_KEY`) and `AWS_SECRET_KEY` (or `AWS_SECRET_ACCESS_KEY`) environment variables.
37
+
38
+ - "instance": uses EC2 instance profile.
39
+
40
+ - "profile": uses credentials written in a file. Format of the file is as following, where `[...]` is a name of profile.
41
+
42
+ - **aws_profile_file**: path to a profiles file. (string, default: given by `AWS_CREDENTIAL_PROFILES_FILE` environment varialbe, or ~/.aws/credentials).
43
+
44
+ - **aws_profile_name**: name of a profile. (string, default: `"default"`)
45
+
46
+ ```
47
+ [default]
48
+ aws_access_key_id=YOUR_ACCESS_KEY_ID
49
+ aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
50
+
51
+ [profile2]
52
+ ...
53
+ ```
54
+
55
+ - "properties": uses aws.accessKeyId and aws.secretKey Java system properties.
56
+
57
+ - "anonymous": uses anonymous access. This auth method can access only public files.
58
+
59
+ - "session": uses temporary-generated access_key_id, secret_access_key and session_token.
60
+
61
+ - **aws_access_key_id**: AWS access key ID (string, required)
62
+
63
+ - **aws_secret_access_key**: AWS secret access key (string, required)
64
+
65
+ - **aws_session_token**: session token (string, required)
66
+
67
+ - "default": uses AWS SDK's default strategy to look up available credentials from runtime environment. This method behaves like the combination of the following methods.
68
+
69
+ 1. "env"
70
+ 1. "properties"
71
+ 1. "profile"
72
+ 1. "instance"
73
+
74
+ ## Example
75
+
76
+ ```yaml
77
+ in:
78
+ type: cloudwatch_logs
79
+ log_group_name: fluentd
80
+ log_stream_name: cloudwatchlogs_test
81
+ use_log_stream_name_prefix: true
82
+ region: ap-northeast-1
83
+ aws_access_key_id: ABCXYZ123ABCXYZ123
84
+ aws_secret_access_key: AbCxYz123aBcXyZ123
85
+ ```
86
+
87
+ Specifying time range is also supported.
88
+ `start_time` and `end_time` are corresponds to `startTime` and `endTime` in GetLogEvents request.
89
+ They are handled as number of milliseconds after Jan 1, 1970 00:00:00 UTC.
90
+
91
+ ref: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#API_GetLogEvents_RequestSyntax
92
+
93
+ ```yaml
94
+ start_time: 2020-01-18 00:00:00Z
95
+ end_time: 2020-03-20 00:00:00Z
96
+ time_range_format: "YY-MM-dd HH:mm:ss'Z'"
97
+ ```
98
+
99
+ To use `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables:
100
+
101
+ ```yaml
102
+ in:
103
+ type: cloudwatch_logs
104
+ log_group_name: fluentd
105
+ log_stream_name: cloudwatchlogs_test
106
+ use_log_stream_name_prefix: true
107
+ region: ap-northeast-1
108
+ authentication_method: env
109
+ ```
110
+
111
+ ## Build
112
+
113
+ ```
114
+ $ ./gradlew gem # -t to watch change of files and rebuild continuously
115
+ ```
data/build.gradle ADDED
@@ -0,0 +1,122 @@
1
+ plugins {
2
+ id "com.jfrog.bintray" version "1.1"
3
+ id "com.github.jruby-gradle.base" version "1.5.0"
4
+ id "java"
5
+ id "checkstyle"
6
+ }
7
+ import com.github.jrubygradle.JRubyExec
8
+ repositories {
9
+ mavenCentral()
10
+ jcenter()
11
+ }
12
+ configurations {
13
+ provided
14
+ }
15
+
16
+ version = "0.1.0"
17
+
18
+ sourceCompatibility = 1.8
19
+ targetCompatibility = 1.8
20
+
21
+ dependencies {
22
+ compile "org.embulk:embulk-core:0.9.21"
23
+ provided "org.embulk:embulk-core:0.9.21"
24
+ compile group: 'com.amazonaws', name: 'aws-java-sdk-logs', version: '1.11.749'
25
+ compile group: 'com.amazonaws', name: 'aws-java-sdk-sts', version: '1.11.749'
26
+ // compile "YOUR_JAR_DEPENDENCY_GROUP:YOUR_JAR_DEPENDENCY_MODULE:YOUR_JAR_DEPENDENCY_VERSION"
27
+ testCompile "junit:junit:4.+"
28
+ testCompile "org.mockito:mockito-core:1.+"
29
+ testCompile "org.embulk:embulk-core:0.9.21:tests"
30
+ testCompile "org.embulk:embulk-standards:0.9.21"
31
+ testCompile "org.embulk:embulk-test:0.9.21"
32
+ }
33
+
34
+ // add tests/javadoc/source jar tasks as artifacts to be released
35
+ task testsJar(type: Jar, dependsOn: classes) {
36
+ classifier = 'tests'
37
+ from sourceSets.test.output
38
+ }
39
+ task sourcesJar(type: Jar, dependsOn: classes) {
40
+ classifier = 'sources'
41
+ from sourceSets.main.allSource
42
+ }
43
+ task javadocJar(type: Jar, dependsOn: javadoc) {
44
+ classifier = 'javadoc'
45
+ from javadoc.destinationDir
46
+ }
47
+
48
+ task classpath(type: Copy, dependsOn: ["jar"]) {
49
+ doFirst { file("classpath").deleteDir() }
50
+ from (configurations.runtime - configurations.provided + files(jar.archivePath))
51
+ into "classpath"
52
+ }
53
+ clean { delete "classpath" }
54
+
55
+ checkstyle {
56
+ configFile = file("${project.rootDir}/config/checkstyle/checkstyle.xml")
57
+ toolVersion = '6.14.1'
58
+ }
59
+ checkstyleMain {
60
+ configFile = file("${project.rootDir}/config/checkstyle/default.xml")
61
+ ignoreFailures = true
62
+ }
63
+ checkstyleTest {
64
+ configFile = file("${project.rootDir}/config/checkstyle/default.xml")
65
+ ignoreFailures = true
66
+ }
67
+ task checkstyle(type: Checkstyle) {
68
+ classpath = sourceSets.main.output + sourceSets.test.output
69
+ source = sourceSets.main.allJava + sourceSets.test.allJava
70
+ }
71
+
72
+ task gem(type: JRubyExec, dependsOn: ["gemspec", "classpath"]) {
73
+ jrubyArgs "-S"
74
+ script "gem"
75
+ scriptArgs "build", "${project.name}.gemspec"
76
+ doLast { ant.move(file: "${project.name}-${project.version}.gem", todir: "pkg") }
77
+ }
78
+
79
+ task gemPush(type: JRubyExec, dependsOn: ["gem"]) {
80
+ jrubyArgs "-S"
81
+ script "gem"
82
+ scriptArgs "push", "pkg/${project.name}-${project.version}.gem"
83
+ }
84
+
85
+ task "package"(dependsOn: ["gemspec", "classpath"]) {
86
+ doLast {
87
+ println "> Build succeeded."
88
+ println "> You can run embulk with '-L ${file(".").absolutePath}' argument."
89
+ }
90
+ }
91
+
92
+ artifacts {
93
+ archives testsJar, sourcesJar, javadocJar
94
+ }
95
+
96
+ task gemspec {
97
+ ext.gemspecFile = file("${project.name}.gemspec")
98
+ inputs.file "build.gradle"
99
+ outputs.file gemspecFile
100
+ doLast { gemspecFile.write($/
101
+ Gem::Specification.new do |spec|
102
+ spec.name = "${project.name}"
103
+ spec.version = "${project.version}"
104
+ spec.authors = ["Hiroshi Hatake"]
105
+ spec.summary = %[Cloudwatch Logs input plugin for Embulk]
106
+ spec.description = %[Loads records from Cloudwatch Logs.]
107
+ spec.email = ["cosmo0920.wp@gmail.com"]
108
+ spec.licenses = ["MIT"]
109
+ spec.homepage = "https://github.com/cosmo0920/embulk-input-cloudwatch_logs"
110
+
111
+ spec.files = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
112
+ spec.test_files = spec.files.grep(%r"^(test|spec)/")
113
+ spec.require_paths = ["lib"]
114
+
115
+ #spec.add_dependency 'YOUR_GEM_DEPENDENCY', ['~> YOUR_GEM_DEPENDENCY_VERSION']
116
+ spec.add_development_dependency 'bundler', ['~> 1.0']
117
+ spec.add_development_dependency 'rake', ['~> 12.0']
118
+ end
119
+ /$)
120
+ }
121
+ }
122
+ clean { delete "${project.name}.gemspec" }
@@ -0,0 +1,128 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE module PUBLIC
3
+ "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
+ <module name="Checker">
6
+ <!-- https://github.com/facebook/presto/blob/master/src/checkstyle/checks.xml -->
7
+ <module name="FileTabCharacter"/>
8
+ <module name="NewlineAtEndOfFile">
9
+ <property name="lineSeparator" value="lf"/>
10
+ </module>
11
+ <module name="RegexpMultiline">
12
+ <property name="format" value="\r"/>
13
+ <property name="message" value="Line contains carriage return"/>
14
+ </module>
15
+ <module name="RegexpMultiline">
16
+ <property name="format" value=" \n"/>
17
+ <property name="message" value="Line has trailing whitespace"/>
18
+ </module>
19
+ <module name="RegexpMultiline">
20
+ <property name="format" value="\{\n\n"/>
21
+ <property name="message" value="Blank line after opening brace"/>
22
+ </module>
23
+ <module name="RegexpMultiline">
24
+ <property name="format" value="\n\n\s*\}"/>
25
+ <property name="message" value="Blank line before closing brace"/>
26
+ </module>
27
+ <module name="RegexpMultiline">
28
+ <property name="format" value="\n\n\n"/>
29
+ <property name="message" value="Multiple consecutive blank lines"/>
30
+ </module>
31
+ <module name="RegexpMultiline">
32
+ <property name="format" value="\n\n\Z"/>
33
+ <property name="message" value="Blank line before end of file"/>
34
+ </module>
35
+ <module name="RegexpMultiline">
36
+ <property name="format" value="Preconditions\.checkNotNull"/>
37
+ <property name="message" value="Use of checkNotNull"/>
38
+ </module>
39
+
40
+ <module name="TreeWalker">
41
+ <module name="EmptyBlock">
42
+ <property name="option" value="text"/>
43
+ <property name="tokens" value="
44
+ LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF,
45
+ LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
46
+ </module>
47
+ <module name="EmptyStatement"/>
48
+ <module name="EmptyForInitializerPad"/>
49
+ <module name="EmptyForIteratorPad">
50
+ <property name="option" value="space"/>
51
+ </module>
52
+ <module name="MethodParamPad">
53
+ <property name="allowLineBreaks" value="true"/>
54
+ <property name="option" value="nospace"/>
55
+ </module>
56
+ <module name="ParenPad"/>
57
+ <module name="TypecastParenPad"/>
58
+ <module name="NeedBraces"/>
59
+ <module name="LeftCurly">
60
+ <property name="option" value="nl"/>
61
+ <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF"/>
62
+ </module>
63
+ <module name="LeftCurly">
64
+ <property name="option" value="eol"/>
65
+ <property name="tokens" value="
66
+ LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR,
67
+ LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE"/>
68
+ </module>
69
+ <module name="RightCurly">
70
+ <property name="option" value="alone"/>
71
+ </module>
72
+ <module name="GenericWhitespace"/>
73
+ <module name="WhitespaceAfter"/>
74
+ <module name="NoWhitespaceBefore"/>
75
+
76
+ <module name="UpperEll"/>
77
+ <module name="DefaultComesLast"/>
78
+ <module name="ArrayTypeStyle"/>
79
+ <module name="MultipleVariableDeclarations"/>
80
+ <module name="ModifierOrder"/>
81
+ <module name="OneStatementPerLine"/>
82
+ <module name="StringLiteralEquality"/>
83
+ <module name="MutableException"/>
84
+ <module name="EqualsHashCode"/>
85
+ <module name="InnerAssignment"/>
86
+ <module name="InterfaceIsType"/>
87
+ <module name="HideUtilityClassConstructor"/>
88
+
89
+ <module name="MemberName"/>
90
+ <module name="LocalVariableName"/>
91
+ <module name="LocalFinalVariableName"/>
92
+ <module name="TypeName"/>
93
+ <module name="PackageName"/>
94
+ <module name="ParameterName"/>
95
+ <module name="StaticVariableName"/>
96
+ <module name="ClassTypeParameterName">
97
+ <property name="format" value="^[A-Z][0-9]?$"/>
98
+ </module>
99
+ <module name="MethodTypeParameterName">
100
+ <property name="format" value="^[A-Z][0-9]?$"/>
101
+ </module>
102
+
103
+ <module name="AvoidStarImport"/>
104
+ <module name="RedundantImport"/>
105
+ <module name="UnusedImports"/>
106
+ <module name="ImportOrder">
107
+ <property name="groups" value="*,javax,java"/>
108
+ <property name="separated" value="true"/>
109
+ <property name="option" value="bottom"/>
110
+ <property name="sortStaticImportsAlphabetically" value="true"/>
111
+ </module>
112
+
113
+ <module name="WhitespaceAround">
114
+ <property name="allowEmptyConstructors" value="true"/>
115
+ <property name="allowEmptyMethods" value="true"/>
116
+ <property name="ignoreEnhancedForColon" value="false"/>
117
+ <property name="tokens" value="
118
+ ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
119
+ BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE,
120
+ LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
121
+ LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
122
+ LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
123
+ LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL,
124
+ PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN,
125
+ STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
126
+ </module>
127
+ </module>
128
+ </module>
@@ -0,0 +1,108 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE module PUBLIC
3
+ "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
+ <!--
6
+ This is a subset of ./checkstyle.xml which allows some loose styles
7
+ -->
8
+ <module name="Checker">
9
+ <module name="FileTabCharacter"/>
10
+ <module name="NewlineAtEndOfFile">
11
+ <property name="lineSeparator" value="lf"/>
12
+ </module>
13
+ <module name="RegexpMultiline">
14
+ <property name="format" value="\r"/>
15
+ <property name="message" value="Line contains carriage return"/>
16
+ </module>
17
+ <module name="RegexpMultiline">
18
+ <property name="format" value=" \n"/>
19
+ <property name="message" value="Line has trailing whitespace"/>
20
+ </module>
21
+ <module name="RegexpMultiline">
22
+ <property name="format" value="\n\n\n"/>
23
+ <property name="message" value="Multiple consecutive blank lines"/>
24
+ </module>
25
+ <module name="RegexpMultiline">
26
+ <property name="format" value="\n\n\Z"/>
27
+ <property name="message" value="Blank line before end of file"/>
28
+ </module>
29
+
30
+ <module name="TreeWalker">
31
+ <module name="EmptyBlock">
32
+ <property name="option" value="text"/>
33
+ <property name="tokens" value="
34
+ LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF,
35
+ LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
36
+ </module>
37
+ <module name="EmptyStatement"/>
38
+ <module name="EmptyForInitializerPad"/>
39
+ <module name="EmptyForIteratorPad">
40
+ <property name="option" value="space"/>
41
+ </module>
42
+ <module name="MethodParamPad">
43
+ <property name="allowLineBreaks" value="true"/>
44
+ <property name="option" value="nospace"/>
45
+ </module>
46
+ <module name="ParenPad"/>
47
+ <module name="TypecastParenPad"/>
48
+ <module name="NeedBraces"/>
49
+ <module name="LeftCurly">
50
+ <property name="option" value="nl"/>
51
+ <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF"/>
52
+ </module>
53
+ <module name="LeftCurly">
54
+ <property name="option" value="eol"/>
55
+ <property name="tokens" value="
56
+ LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR,
57
+ LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE"/>
58
+ </module>
59
+ <module name="RightCurly">
60
+ <property name="option" value="alone"/>
61
+ </module>
62
+ <module name="GenericWhitespace"/>
63
+ <module name="WhitespaceAfter"/>
64
+ <module name="NoWhitespaceBefore"/>
65
+
66
+ <module name="UpperEll"/>
67
+ <module name="DefaultComesLast"/>
68
+ <module name="ArrayTypeStyle"/>
69
+ <module name="MultipleVariableDeclarations"/>
70
+ <module name="ModifierOrder"/>
71
+ <module name="OneStatementPerLine"/>
72
+ <module name="StringLiteralEquality"/>
73
+ <module name="MutableException"/>
74
+ <module name="EqualsHashCode"/>
75
+ <module name="InnerAssignment"/>
76
+ <module name="InterfaceIsType"/>
77
+ <module name="HideUtilityClassConstructor"/>
78
+
79
+ <module name="MemberName"/>
80
+ <module name="LocalVariableName"/>
81
+ <module name="LocalFinalVariableName"/>
82
+ <module name="TypeName"/>
83
+ <module name="PackageName"/>
84
+ <module name="ParameterName"/>
85
+ <module name="StaticVariableName"/>
86
+ <module name="ClassTypeParameterName">
87
+ <property name="format" value="^[A-Z][0-9]?$"/>
88
+ </module>
89
+ <module name="MethodTypeParameterName">
90
+ <property name="format" value="^[A-Z][0-9]?$"/>
91
+ </module>
92
+
93
+ <module name="WhitespaceAround">
94
+ <property name="allowEmptyConstructors" value="true"/>
95
+ <property name="allowEmptyMethods" value="true"/>
96
+ <property name="ignoreEnhancedForColon" value="false"/>
97
+ <property name="tokens" value="
98
+ ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
99
+ BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE,
100
+ LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
101
+ LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
102
+ LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
103
+ LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL,
104
+ PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN,
105
+ STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
106
+ </module>
107
+ </module>
108
+ </module>