codemodels-java 0.2.0-java → 0.2.1-java

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: 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