codemodels-java 0.2.0-java → 0.2.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b06ac029279927c74e5175f4f4b668a5fdb8134a
4
+ data.tar.gz: 0bab5abbae5b8f7a930485abbcd98f780a66fd7a
5
+ SHA512:
6
+ metadata.gz: f2d88bbe3cdf97388ce6fff2cb470a56f8b76ec1027e2a5218888b2bb92e1f826882d16a7766adf7cf34b2b9fcc4bb3e22ff96af442eb15445557df1f594afae
7
+ data.tar.gz: 4574567f38bdd8d620e7802b16eb5239bd2f13224d031d5c3df008038c3454bd86a4ade0c7a6ba3a4f50ac24d5c6e5a951051fdb4607c897b0c1eca7ca4202a0
@@ -1,7 +1,12 @@
1
+ # encoding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'codemodels/java/version'
5
+
1
6
  Gem::Specification.new do |s|
2
7
  s.platform = 'java'
3
8
  s.name = 'codemodels-java'
4
- s.version = '0.2.0'
9
+ s.version = CodeModels::Java::VERSION
5
10
  s.date = '2013-09-11'
6
11
  s.summary = "Plugin of codemodels to build models from Ruby code."
7
12
  s.description = "Plugin of codemodels to build models from Ruby code. See http://github.com/ftomassetti/codemodels."
@@ -15,6 +20,7 @@ Gem::Specification.new do |s|
15
20
  s.require_paths = ["lib"] + Dir['./lib/jars/*.jar']
16
21
 
17
22
  s.add_runtime_dependency 'codemodels'
23
+ s.add_runtime_dependency 'codemodels-javaparserwrapper'
18
24
  s.add_runtime_dependency 'json'
19
25
 
20
26
  s.add_development_dependency "bundler", "~> 1.3"
@@ -1,11 +1,12 @@
1
1
  require 'rgen/metamodel_builder'
2
2
  require 'java'
3
3
  require 'codemodels'
4
+ require 'codemodels/javaparserwrapper'
4
5
 
5
6
  module CodeModels
6
7
  module Java
7
8
 
8
- class JavaNode < RGen::MetamodelBuilder::MMBase
9
+ class JavaNode < CodeModelsAstNode
9
10
  end
10
11
 
11
12
  JavaString = ::Java::JavaClass.for_name("java.lang.String")
@@ -34,7 +35,7 @@ module Java
34
35
  c = Class.new(super_class)
35
36
  raise "Already mapped! #{ast_name}" if MappedAstClasses[java_class]
36
37
  MappedAstClasses[java_class] = c
37
- Java.const_set simple_java_class_name(ast_class), c
38
+ Java.const_set CodeModels::Javaparserwrapper::Utils.simple_java_class_name(ast_class), c
38
39
  end
39
40
 
40
41
  # then add all the properties and attributes
@@ -81,25 +82,6 @@ module Java
81
82
  end
82
83
  end
83
84
 
84
- def self.get_corresponding_metaclass(node)
85
- node_class = node.class
86
- name = simple_java_class_name(node_class)
87
- name = "#{(node.operator.name).proper_capitalize}BinaryExpr" if name=='BinaryExpr'
88
- #puts "node.class: #{node.class}"
89
- if node.class.to_s=='Java::JapaParserAstBody::MethodDeclaration'
90
- if node.parent.class.to_s=='Java::JapaParserAstExpr::ObjectCreationExpr'
91
- # ObjectCreationExpr has not interface? but it is always a method definition
92
- name = 'ClassMethodDeclaration'
93
- elsif node.parent.class.to_s=='Java::JapaParserAstBody::EnumDeclaration'
94
- name = 'ClassMethodDeclaration'
95
- elsif node.parent.interface?
96
- name = 'InterfaceMethodDeclaration'
97
- else
98
- name = 'ClassMethodDeclaration'
99
- end
100
- end
101
- return Java.const_get(name)
102
- end
103
85
 
104
86
  PROP_ADAPTERS = Hash.new {|h,k| h[k] = {} }
105
87
 
@@ -110,12 +92,6 @@ module Java
110
92
  return java_method.name.remove_prefix('is').proper_uncapitalize if java_method.name.start_with?('is')
111
93
  end
112
94
 
113
- def self.simple_java_class_name(java_class)
114
- name = java_class.name
115
- if (i = (r = name).rindex(':')) then r[0..i] = '' end
116
- r
117
- end
118
-
119
95
  def self.get_generic_param(generic_str)
120
96
  return generic_str.remove_prefix('public java.util.List<') if generic_str.start_with?('public java.util.List<')
121
97
  return generic_str.remove_prefix('public final java.util.List<') if generic_str.start_with?('public final java.util.List<')
@@ -1,82 +1,121 @@
1
1
  require 'codemodels'
2
+ require 'codemodels/javaparserwrapper'
2
3
 
3
4
  module CodeModels
4
5
  module Java
5
6
 
6
- class << self
7
- include ParserWrapper
8
- end
7
+ class Parser < CodeModels::Javaparserwrapper::ParserJavaWrapper
8
+
9
+ class MyBasicTransformationFactory < CodeModels::Javaparserwrapper::BasicTransformationFactory
10
+
11
+ def get_corresponding_class(node)
12
+ node_class = node.class
13
+ name = CodeModels::Javaparserwrapper::Utils.simple_java_class_name(node_class)
14
+ name = "#{(node.operator.name).proper_capitalize}BinaryExpr" if name=='BinaryExpr'
15
+ if node.class.to_s=='Java::JapaParserAstBody::MethodDeclaration'
16
+ if node.parent.class.to_s=='Java::JapaParserAstExpr::ObjectCreationExpr'
17
+ name = 'ClassMethodDeclaration'
18
+ elsif node.parent.class.to_s=='Java::JapaParserAstBody::EnumDeclaration'
19
+ name = 'ClassMethodDeclaration'
20
+ elsif node.parent.interface?
21
+ name = 'InterfaceMethodDeclaration'
22
+ else
23
+ name = 'ClassMethodDeclaration'
24
+ end
25
+ end
26
+ return Java.const_get(name)
27
+ end
28
+
29
+ end
9
30
 
10
- java_import 'japa.parser.JavaParser'
11
- java_import 'java.io.FileInputStream'
12
- java_import 'java.io.ByteArrayInputStream'
31
+ java_import 'japa.parser.JavaParser'
32
+ java_import 'java.io.FileInputStream'
33
+ java_import 'java.io.ByteArrayInputStream'
13
34
 
14
- def self.containment_pos(node)
15
- container = node.eContainer
16
- children = node.eContainer.send(node.eContainingFeature)
17
- if children.respond_to?(:each)
18
- children.each_with_index do |c,i|
19
- return i if c==node
20
- end
21
- raise "Not found"
22
- else
23
- raise "Not found" unless children==node
24
- 0
35
+ def initialize()
36
+ super
37
+ @transformer.factory = MyBasicTransformationFactory.new
38
+ @transformer.factory.target_module = CodeModels::Java
25
39
  end
26
- end
27
40
 
28
- # node tree contains the original
29
- def self.corresponding_node(model_element,node_tree)
30
- return node_tree unless model_element.eContainer
31
- corresponding_parent_node = corresponding_node(model_element.eContainer,node_tree)
32
- containment_pos = containment_pos(model_element)
33
- containing_feat = model_element.eContainingFeature
34
-
35
- children = corresponding_parent_node.send(containing_feat)
36
- if children.respond_to?(:each)
37
- children[containment_pos]
38
- else
39
- children
41
+ def containment_pos(node)
42
+ container = node.eContainer
43
+ children = node.eContainer.send(node.eContainingFeature)
44
+ if children.respond_to?(:each)
45
+ children.each_with_index do |c,i|
46
+ return i if c==node
47
+ end
48
+ raise "Not found"
49
+ else
50
+ raise "Not found" unless children==node
51
+ 0
52
+ end
40
53
  end
41
- end
42
54
 
43
- def self.node_tree_from_code(code)
44
- sis = ByteArrayInputStream.new(code.to_java_bytes)
45
- node_tree = JavaParser.parse(sis)
46
- sis.close
47
- node_tree
48
- end
55
+ # node tree contains the original
56
+ def corresponding_node(model_element,node_tree)
57
+ return node_tree unless model_element.eContainer
58
+ corresponding_parent_node = corresponding_node(model_element.eContainer,node_tree)
59
+ containment_pos = containment_pos(model_element)
60
+ containing_feat = model_element.eContainingFeature
61
+
62
+ children = corresponding_parent_node.send(containing_feat)
63
+ if children.respond_to?(:each)
64
+ children[containment_pos]
65
+ else
66
+ children
67
+ end
68
+ end
49
69
 
50
- def self.corresponding_node_from_code(model_element,code)
51
- sis = ByteArrayInputStream.new(code.to_java_bytes)
52
- node_tree = JavaParser.parse(sis)
53
- sis.close
54
- corresponding_node(model_element,node_tree)
55
- end
70
+ def node_tree_from_code(code)
71
+ sis = ByteArrayInputStream.new(code.to_java_bytes)
72
+ node_tree = JavaParser.parse(sis)
73
+ sis.close
74
+ node_tree
75
+ end
56
76
 
57
- def self.parse_code(code)
58
- node_to_model(node_tree_from_code(code))
59
- end
77
+ def corresponding_node_from_code(model_element,code)
78
+ sis = ByteArrayInputStream.new(code.to_java_bytes)
79
+ node_tree = JavaParser.parse(sis)
80
+ sis.close
81
+ corresponding_node(model_element,node_tree)
82
+ end
60
83
 
61
- class Parser < CodeModels::Parser
84
+ def parse_code(code)
85
+ node_to_model(node_tree_from_code(code))
86
+ end
62
87
 
63
- def parse_code(code)
64
- CodeModels::Java.parse_code(code)
88
+ def get_corresponding_metaclass(node)
89
+ node_class = node.class
90
+ name = CodeModels::Javaparserwrapper::Utils.simple_java_class_name(node_class)
91
+ name = "#{(node.operator.name).proper_capitalize}BinaryExpr" if name=='BinaryExpr'
92
+ if node.class.to_s=='Java::JapaParserAstBody::MethodDeclaration'
93
+ if node.parent.class.to_s=='Java::JapaParserAstExpr::ObjectCreationExpr'
94
+ name = 'ClassMethodDeclaration'
95
+ elsif node.parent.class.to_s=='Java::JapaParserAstBody::EnumDeclaration'
96
+ name = 'ClassMethodDeclaration'
97
+ elsif node.parent.interface?
98
+ name = 'InterfaceMethodDeclaration'
99
+ else
100
+ name = 'ClassMethodDeclaration'
101
+ end
102
+ end
103
+ return Java.const_get(name)
65
104
  end
66
105
 
67
- end
106
+ private
68
107
 
69
- DefaultParser = Parser.new
108
+ def adapter_specific_class(model_class,ref)
109
+ return nil unless CodeModels::Java::PROP_ADAPTERS[model_class]
110
+ CodeModels::Java::PROP_ADAPTERS[model_class][ref.name]
111
+ end
70
112
 
71
- def self.parse_file(path)
72
- DefaultParser.parse_file(path)
73
113
  end
74
114
 
75
- private
115
+ DefaultParser = Parser.new
76
116
 
77
- def self.adapter_specific_class(model_class,ref)
78
- return nil unless CodeModels::Java::PROP_ADAPTERS[model_class]
79
- CodeModels::Java::PROP_ADAPTERS[model_class][ref.name]
117
+ def self.parse_code(code)
118
+ DefaultParser.parse_code(code)
80
119
  end
81
120
 
82
121
  end
@@ -10,22 +10,22 @@ class TestCorrespondences < Test::Unit::TestCase
10
10
 
11
11
  def test_correspondance_of_field
12
12
  code = "class A extends B { int fieldB; int getB(){ return fieldB; } }"
13
- nt = J.node_tree_from_code(code)
13
+ nt = J::DefaultParser.node_tree_from_code(code)
14
14
  mt = J.parse_code(code)
15
15
  model_field = mt.types[0].members[0]
16
16
  node_field = nt.types[0].members[0]
17
- assert_equal node_field, J.corresponding_node(model_field,nt)
18
- assert_equal "int fieldB;", J.corresponding_node(model_field,nt).to_s
17
+ assert_equal node_field, J::DefaultParser.corresponding_node(model_field,nt)
18
+ assert_equal "int fieldB;", J::DefaultParser.corresponding_node(model_field,nt).to_s
19
19
  end
20
20
 
21
21
  def test_corresponding_node_from_code
22
22
  code = "class A extends B { int fieldB; int getB(){ return fieldB; } }"
23
- nt = J.node_tree_from_code(code)
23
+ nt = J::DefaultParser.node_tree_from_code(code)
24
24
  mt = J.parse_code(code)
25
25
  model_field = mt.types[0].members[0]
26
26
  node_field = nt.types[0].members[0]
27
- assert_equal node_field, J.corresponding_node_from_code(model_field,code)
28
- assert_equal "int fieldB;", J.corresponding_node_from_code(model_field,code).to_s
27
+ assert_equal node_field, J::DefaultParser.corresponding_node_from_code(model_field,code)
28
+ assert_equal "int fieldB;", J::DefaultParser.corresponding_node_from_code(model_field,code).to_s
29
29
  end
30
30
 
31
31
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codemodels-java
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.0
4
+ version: 0.2.1
6
5
  platform: java
7
6
  authors:
8
7
  - Federico Tomassetti
@@ -18,13 +17,25 @@ dependencies:
18
17
  - - '>='
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
- none: false
22
20
  requirement: !ruby/object:Gem::Requirement
23
21
  requirements:
24
22
  - - '>='
25
23
  - !ruby/object:Gem::Version
26
24
  version: '0'
27
- none: false
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: codemodels-javaparserwrapper
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
28
39
  prerelease: false
29
40
  type: :runtime
30
41
  - !ruby/object:Gem::Dependency
@@ -34,13 +45,11 @@ dependencies:
34
45
  - - '>='
35
46
  - !ruby/object:Gem::Version
36
47
  version: '0'
37
- none: false
38
48
  requirement: !ruby/object:Gem::Requirement
39
49
  requirements:
40
50
  - - '>='
41
51
  - !ruby/object:Gem::Version
42
52
  version: '0'
43
- none: false
44
53
  prerelease: false
45
54
  type: :runtime
46
55
  - !ruby/object:Gem::Dependency
@@ -50,13 +59,11 @@ dependencies:
50
59
  - - ~>
51
60
  - !ruby/object:Gem::Version
52
61
  version: '1.3'
53
- none: false
54
62
  requirement: !ruby/object:Gem::Requirement
55
63
  requirements:
56
64
  - - ~>
57
65
  - !ruby/object:Gem::Version
58
66
  version: '1.3'
59
- none: false
60
67
  prerelease: false
61
68
  type: :development
62
69
  - !ruby/object:Gem::Dependency
@@ -66,13 +73,11 @@ dependencies:
66
73
  - - '>='
67
74
  - !ruby/object:Gem::Version
68
75
  version: '0'
69
- none: false
70
76
  requirement: !ruby/object:Gem::Requirement
71
77
  requirements:
72
78
  - - '>='
73
79
  - !ruby/object:Gem::Version
74
80
  version: '0'
75
- none: false
76
81
  prerelease: false
77
82
  type: :development
78
83
  - !ruby/object:Gem::Dependency
@@ -82,13 +87,11 @@ dependencies:
82
87
  - - '>='
83
88
  - !ruby/object:Gem::Version
84
89
  version: '0'
85
- none: false
86
90
  requirement: !ruby/object:Gem::Requirement
87
91
  requirements:
88
92
  - - '>='
89
93
  - !ruby/object:Gem::Version
90
94
  version: '0'
91
- none: false
92
95
  prerelease: false
93
96
  type: :development
94
97
  - !ruby/object:Gem::Dependency
@@ -98,13 +101,11 @@ dependencies:
98
101
  - - '>='
99
102
  - !ruby/object:Gem::Version
100
103
  version: '0'
101
- none: false
102
104
  requirement: !ruby/object:Gem::Requirement
103
105
  requirements:
104
106
  - - '>='
105
107
  - !ruby/object:Gem::Version
106
108
  version: '0'
107
- none: false
108
109
  prerelease: false
109
110
  type: :development
110
111
  description: Plugin of codemodels to build models from Ruby code. See http://github.com/ftomassetti/codemodels.
@@ -143,6 +144,7 @@ files:
143
144
  homepage: https://github.com/ftomassetti/java-lightmodels
144
145
  licenses:
145
146
  - APACHE2
147
+ metadata: {}
146
148
  post_install_message:
147
149
  rdoc_options: []
148
150
  require_paths:
@@ -152,25 +154,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
154
  requirements:
153
155
  - - '>='
154
156
  - !ruby/object:Gem::Version
155
- segments:
156
- - 0
157
- hash: 2
158
157
  version: '0'
159
- none: false
160
158
  required_rubygems_version: !ruby/object:Gem::Requirement
161
159
  requirements:
162
160
  - - '>='
163
161
  - !ruby/object:Gem::Version
164
- segments:
165
- - 0
166
- hash: 2
167
162
  version: '0'
168
- none: false
169
163
  requirements: []
170
164
  rubyforge_project:
171
- rubygems_version: 1.8.24
165
+ rubygems_version: 2.2.0
172
166
  signing_key:
173
- specification_version: 3
167
+ specification_version: 4
174
168
  summary: Plugin of codemodels to build models from Ruby code.
175
169
  test_files:
176
170
  - test/data/ActionButtonsColumnTag.java