Module: JavaModel
- Defined in:
- lib/java_model/java_to_json.rb,
lib/java_model/model_building.rb,
lib/java_model/info_extraction.rb
Overview
Defined Under Namespace
Modules: InfoExtraction
Classes: EClassClassAdapter, EClassClassMethodAdapter, EClassFieldAdapter
Constant Summary
collapse
- IJavaOptions =
org.emftext.language.java.resource.java.IJavaOptions
- ADAPTERS_MAP =
{
'http://www.emftext.org/java/classifiers#Class'=> EClassClassAdapter.new,
'http://www.emftext.org/java/members#ClassMethod'=> EClassClassMethodAdapter.new,
'http://www.emftext.org/java/members#Field'=> EClassFieldAdapter.new
}
Class Method Summary
collapse
-
.all_deep_content(root) ⇒ Object
-
.all_direct_content(root) ⇒ Object
-
.create_resource_set ⇒ Object
-
.eobject_class_qname(clazz) ⇒ Object
-
.field_from_getter(getter) ⇒ Object
-
.field_from_setter(setter) ⇒ Object
-
.generate_java_model_per_file(src, dest, model_ext = 'java.lm', max_nesting = 500) ⇒ Object
-
.generate_java_models_in_dir(src, dest, model_ext = 'java.lm', max_nesting = 500) ⇒ Object
-
.get_deep_content_of_type(root, type) ⇒ Object
-
.get_resource(resource_set, path) ⇒ Object
-
.get_specific_deep_content(root, type, &block) ⇒ Object
-
.getter(field) ⇒ Object
-
.jsonize_java_obj(root) ⇒ Object
-
.setter(field) ⇒ Object
Class Method Details
.all_deep_content(root) ⇒ Object
46
47
48
49
50
51
52
53
|
# File 'lib/java_model/java_to_json.rb', line 46
def self.all_deep_content(root)
contents = []
all_direct_content(root).each do |c|
contents << c
contents.concat(all_deep_content(c))
end
contents
end
|
.all_direct_content(root) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/java_model/java_to_json.rb', line 29
def self.all_direct_content(root)
contents = []
root.keys.each do |k|
if k.start_with? 'relcont_' and root[k]
if root[k].is_a? Array
root[k].each do |c|
contents << c
end
else
contents << root[k]
end
end
end
contents
end
|
.create_resource_set ⇒ Object
12
13
14
15
16
17
18
|
# File 'lib/java_model/java_to_json.rb', line 12
def self.create_resource_set()
resource_set = org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.new
resource_set.getLoadOptions.put(IJavaOptions.DISABLE_LAYOUT_INFORMATION_RECORDING,true)
rf = org.emftext.language.java.resource.java.mopp.JavaResourceFactory.new
resource_set.getResourceFactoryRegistry.getExtensionToFactoryMap.put('java',rf)
resource_set
end
|
.eobject_class_qname(clazz) ⇒ Object
24
25
26
27
|
# File 'lib/java_model/java_to_json.rb', line 24
def self.eobject_class_qname(clazz)
raise "not implemented (ParentConcreteClassifier: #{clazz.getParentConcreteClassifier}" if clazz.getParentConcreteClassifier!=clazz
clazz.getContainingPackageName.join('.')+"."+clazz.name
end
|
.field_from_getter(getter) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/java_model/java_to_json.rb', line 86
def self.field_from_getter(getter)
if (getter.name.start_with? 'get' and getter.name.length>3) or (getter.name.start_with? 'is' and getter.name.length>2)
field_name = getter.name.slice(3,1).downcase + getter.name.slice(4..-1) if getter.name.start_with? 'get'
field_name = getter.name.slice(2,1).downcase + getter.name.slice(3..-1) if getter.name.start_with? 'is'
fields = getter.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.Field}
field = fields.find {|f| f.name==field_name}
return field
else
return nil
end
end
|
.field_from_setter(setter) ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/java_model/java_to_json.rb', line 99
def self.field_from_setter(setter)
if setter.name.start_with? 'set' and setter.name.length>3
field_name = setter.name.slice(3,1).downcase + setter.name.slice(4..-1) if setter.name.start_with? 'set'
fields = setter.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.Field}
field = fields.find {|f| f.name==field_name}
return field
else
return nil
end
end
|
.generate_java_model_per_file(src, dest, model_ext = 'java.lm', max_nesting = 500) ⇒ Object
17
18
19
20
21
22
23
24
|
# File 'lib/java_model/model_building.rb', line 17
def self.generate_java_model_per_file(src,dest,model_ext='java.lm',max_nesting=500)
LightModels::ModelBuilding.generate_model_per_file(src,dest) do |src|
java_resource = JavaModel.get_resource(@resource_set, src)
raise "wrong number of roots" unless java_resource.contents.size == 1
root = java_resource.contents.get(0)
LightModels::Serialization.eobject_to_model(root,JavaModel::ADAPTERS_MAP)
end
end
|
.generate_java_models_in_dir(src, dest, model_ext = 'java.lm', max_nesting = 500) ⇒ Object
8
9
10
11
12
13
14
15
|
# File 'lib/java_model/model_building.rb', line 8
def self.generate_java_models_in_dir(src,dest,model_ext='java.lm',max_nesting=500)
LightModels::ModelBuilding.generate_models_in_dir(src,dest,'java',model_ext,max_nesting) do |src|
java_resource = JavaModel.get_resource(@resource_set, src)
raise "wrong number of roots" unless java_resource.contents.size == 1
root = java_resource.contents.get(0)
LightModels::Serialization.eobject_to_model(root,JavaModel::ADAPTERS_MAP)
end
end
|
.get_deep_content_of_type(root, type) ⇒ Object
55
56
57
|
# File 'lib/java_model/java_to_json.rb', line 55
def self.get_deep_content_of_type(root,type)
all_deep_content(root).select {|o| o['type']==type}
end
|
.get_resource(resource_set, path) ⇒ Object
20
21
22
|
# File 'lib/java_model/java_to_json.rb', line 20
def self.get_resource(resource_set,path)
resource_set.getResource(org.eclipse.emf.common.util.URI.createFileURI(path),true)
end
|
.get_specific_deep_content(root, type, &block) ⇒ Object
59
60
61
|
# File 'lib/java_model/java_to_json.rb', line 59
def self.get_specific_deep_content(root,type,&block)
get_deep_content_of_type(root,type).find &block
end
|
.getter(field) ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/java_model/java_to_json.rb', line 71
def self.getter(field)
getter_nb_name = 'get' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
getter_b_name = 'is' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
methods = field.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.ClassMethod}
getter = methods.find {|m| m.name==getter_b_name or m.name==getter_nb_name}
getter
end
|
.jsonize_java_obj(root) ⇒ Object
145
146
147
|
# File 'lib/java_model/java_to_json.rb', line 145
def self.jsonize_java_obj(root)
LightModels::Serialization::jsonize_obj(root,ADAPTERS_MAP)
end
|
.setter(field) ⇒ Object
79
80
81
82
83
84
|
# File 'lib/java_model/java_to_json.rb', line 79
def self.setter(field)
setter_name = 'set' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
methods = field.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.ClassMethod}
setter = methods.find {|m| m.name==setter_name}
setter
end
|