ontomde-java 2.0.0

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.
Files changed (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,43 @@
1
+ #
2
+ # Contextualize feature is in alpha stage
3
+ #
4
+
5
+ module Mrdf_Repository
6
+ def java_contextualizeStaticProperties!
7
+ uml_Class_all.each {|c|
8
+ next unless c.kind_of?(Muml_Class)
9
+ c.java_contextualizeMyStaticProperties!
10
+ }
11
+ end
12
+ end
13
+
14
+ module Muml_Classifier
15
+ def java_contextualizeMyStaticProperties!
16
+ o=umlx_getCompositeRec
17
+ return if o.nil?
18
+
19
+ uml_ownedAttribute.each {|att|
20
+ next unless att.uml_isStatic?
21
+ oe=o.umlx_otherEnd
22
+ puts "compositeRec #{oe} #{o.class.name} #{o} <X>--> #{self}"
23
+ att.uml_isStatic=RDF_FALSE
24
+ att.uml_isDerived=RDF_TRUE
25
+ att.uml_isReadOnly=RDF_TRUE
26
+ self.java_addAccessorsFor!(att)
27
+ att.java_AttributeGlobalGetter_one.java_code="return get#{oe.java_NameBean}().get#{att.java_NameBean}();"
28
+
29
+ # owner.
30
+ # att.
31
+
32
+ }
33
+
34
+ # next unless uml_isStatic?
35
+ # ow=false
36
+ # uml_ownedElement.each { |elt|
37
+ # next unless elt.uml_isStatic?
38
+ # if(ow)
39
+ #
40
+ # }
41
+
42
+ end
43
+ end
@@ -0,0 +1,75 @@
1
+ #For each model class, create an enum containing a list of assignable type.
2
+ #
3
+ module Muml_Element
4
+ JAVA_ENUM_INTERFACE_QNAME="xmda.java.JavaEnumSig"
5
+ end
6
+
7
+
8
+ module Mrdf_Repository
9
+ # generates an EnumAssignable for each model element.
10
+ #
11
+ # Reference: #uml_Class_all,
12
+ def java_addJavaEnumInterface!
13
+ return unless context[:java_addJavaEnumInterface]
14
+ uml_Class_all.each {|c|
15
+ next unless c.kind_of?(Muml_Enumeration)
16
+ i=c.java_getJavaEnumInterface
17
+ c.umlx_createAndAddImplementation(i)
18
+ }
19
+ end
20
+
21
+ # adds enum for all assignable class types.
22
+ #
23
+ # Reference: #uml_Class_all
24
+ def java_addEnumAssignable!
25
+ uml_Class_all.each {|c|
26
+ next if c.kind_of?(Muml_Enumeration)
27
+ next if c.umlx_external?
28
+ c.java_addEnumAssignable!
29
+ }
30
+ end
31
+ end
32
+
33
+ module Muml_Classifier
34
+ # Enum assignbable related to this model Element
35
+ rdf_safe_attr_reader_many :java_enumAssignableDataType
36
+
37
+
38
+ # String used to replace dot in enum literals
39
+ JAVA_MAGIC_DOT_STRING='_dot_'
40
+
41
+ # add an enum assignable for this model element
42
+ def java_addEnumAssignable!
43
+ #log.debug { "java_addEnumAssignable! for #{self}::#{self.class.name}" }
44
+ p=umlx_owner_one
45
+ p=p.umlx_getOrCreatePackage(context[:enumAssignableSubPackage,"enumCreate"],p)
46
+
47
+ ret=p.umlx_createAndAddEnumeration(self.rdf_uri+"_enumAssignable","#{uml_name} Assignable")
48
+ ret.umlx_createAndAddImplementation(java_getJavaEnumInterface)
49
+ self.java_enumAssignableDataType=ret
50
+
51
+ umlx_assignableClassifier.each { |c|
52
+ next if c.uml_isAbstract?
53
+ ret.umlx_createAndAddLiteral(c.java_qualifiedName.to_s.gsub(/\./,JAVA_MAGIC_DOT_STRING));
54
+ }
55
+
56
+ return ret
57
+ end
58
+
59
+ # return enum interface for this model element. (creates it if necessary).
60
+ def java_getJavaEnumInterface
61
+ ret=umlx_getOrCreateInterface(JAVA_ENUM_INTERFACE_QNAME)
62
+ if ret.uml_ownedOperation.empty?
63
+ ret.umlx_external="false"
64
+ op=ret.umlx_createAndAddOperation("#{ret.rdf_uri}_name}","name")
65
+ r=op.umlx_createAndAddReturnParameter("#{op.rdf_uri}_ret","return")
66
+ r.uml_type=umlx_dataType_string
67
+ op.umlx_businessMethod=RDF_FALSE
68
+ end
69
+ return ret
70
+ end
71
+
72
+
73
+ end
74
+
75
+
@@ -0,0 +1,195 @@
1
+ # define enum as string compatibility layer
2
+ #
3
+ # Feature introduced for FLEX for Java 1.5 / Java 1.4 interoperability
4
+ #
5
+ #
6
+
7
+ module Mrdf_Repository
8
+ # adds enum compatibility properties which exposes property of enum type to be accessed trough string accessors.
9
+ #
10
+ #Reference: #uml_Class_all, #java_addEnumStringAttribute!, #java_addEnumCompatibilityLayerMethods!
11
+ def java_addEnumCompatibilityLayerProperties!
12
+ uml_Class_all.each {|c|
13
+ next unless c.kind_of?(Muml_Class)
14
+ c.uml_ownedAttribute.each {|e|
15
+ e.java_addEnumStringAttribute!
16
+ }
17
+ }
18
+ end
19
+
20
+ # adds enum compatibility properties which exposes property of enum type to be accessed trough string accessors.
21
+ #
22
+ #Reference: #uml_Class_all, #java_addEnumCompatibilityLayerProperties!, #java_addEnumPostDeserialiseUpdate!
23
+ def java_addEnumCompatibilityLayerMethods!
24
+ uml_Class_all.each {|c|
25
+ next unless c.kind_of?(Muml_Class)
26
+ c.java_addEnumPostDeserialiseUpdate!
27
+ }
28
+ end
29
+ end
30
+
31
+ module Muml_Classifier
32
+ def java_isEnumStringMapping?(oa)
33
+ return !oa.umlx_stringMappingForEnum.empty?
34
+ end
35
+
36
+ def java_writeEnumStringMappingGetterCode(oa)
37
+ # getter for compatibility layer (enum visible as string)
38
+ enum_oa=oa.umlx_stringMappingForEnum_one
39
+ if oa.umlx_upperValueIsOne?
40
+ write "return (#{enum_oa.java_NameProperty}==null) ? null : (#{enum_oa.java_NameProperty}.name()); "
41
+
42
+ else
43
+ write %{
44
+ java.util.Set<java.lang.String> ret=new java.util.HashSet<java.lang.String>();
45
+ for ( java.util.Iterator<#{enum_oa.uml_type_one.java_qualifiedName}> iter = #{enum_oa.java_NameProperty}.iterator(); iter.hasNext();) {
46
+ ret.add(iter.next().name());
47
+ }
48
+ return ret;\n}
49
+ end
50
+ end
51
+ def java_writeEnumStringMappingSetterCode(oa)
52
+ oa_enum=oa.umlx_stringMappingForEnum_one
53
+ #Note: throws a runtime exception if enum is not found
54
+ #Note: valueOf throws null pointer exception
55
+ if oa.umlx_upperValueIsOne?
56
+ write "#{oa_enum.java_NameProperty}= #{getterParameterName(oa)}==null ? null : Enum.valueOf(#{oa_enum.uml_type_one.java_qualifiedName}.class,#{getterParameterName(oa)});"
57
+ else
58
+ # TODO: provide java implementation
59
+ end
60
+ end
61
+
62
+ end
63
+ module Muml_Property
64
+ #string version of this enum property
65
+ rdf_safe_attr_reader_many :umlx_stringMappingForEnum
66
+
67
+ #add string as enum compatibility layer string
68
+ def java_addEnumStringAttribute!
69
+ return unless uml_type_one.kind_of?(Muml_Enumeration)
70
+ c=umlx_owner_one
71
+ a=self
72
+ #log.debug { "adding attribute for #{self} #{c}" }
73
+ rr=c.umlx_createAndAddProperty(a.rdf_uri+"_asString",a.uml_name_one+"AsString")
74
+ rr.uml_type=c.umlx_dataType_string
75
+ rr.uml_visibility=::Cuml_VisibilityKind::Private
76
+
77
+ rr.umlx_stringMappingForEnum=a
78
+ rr.uml_isDerived=RDF_TRUE
79
+ rr.uml_upperValue=a.uml_upperValue
80
+ rr.uml_lowerValue=a.uml_lowerValue
81
+ end
82
+ end
83
+
84
+ module Muml_Class
85
+ #returns true if class has at least one enum property
86
+ #Inherited properties are not taken into account.
87
+ def java_hasEnumDirectProperties?
88
+ uml_ownedAttribute.each { |a|
89
+ return true if a.uml_type_one.kind_of?(Muml_Enumeration)
90
+ }
91
+ return false
92
+ end
93
+
94
+ def java_addEnumPostDeserialiseUpdate!
95
+ #TODO optimize
96
+ #return unless java_hasEnumDirectProperties?
97
+
98
+ #rr=umlx_createAndAddOperation(self.rdf_uri+"_"+"readResolve","readResolve")
99
+ #rr.uml_raisedException_add(umlx_getOrCreateClass("java.io.ObjectStreamException"))
100
+ #rr.uml_visibility=::Cuml_VisibilityKind::Private
101
+ #rr.java_code="updateEnumFromEnumAsString();\nreturn this;\n"
102
+
103
+ #rp=rr.umlx_createAndAddReturnParameter(rr.rdf_uri+"_ret")
104
+ #rp.uml_type=umlx_getOrCreateClass("java.lang.Object")
105
+
106
+
107
+ #u=umlx_createAndAddOperation(self.rdf_uri+"_"+"upd_Enum","updateEnumFromEnumAsString")
108
+
109
+
110
+ #code=%{Sy stem.out.println("readResolve #{java_qualifiedName}");\n}
111
+ #code=code+(uml_generalization.empty? ? "//" : "")+"super.#{u.java_Name}();\n"
112
+
113
+ uml_ownedAttribute.each { |a|
114
+ next unless a.uml_type_one.kind_of?(Muml_Enumeration)
115
+ a.java_setter_property_inv.each { |g|
116
+ g.java_code=g.java_code_one+<<END
117
+ \n#{a.umlx_stringMappingForEnum_one.java_Name}=#{a.java_Name}.name();
118
+ END
119
+ }
120
+ a.umlx_stringMappingForEnum_one.java_getter_property_inv.each { |g|
121
+ #asString is not updated when loaded from base
122
+ g.java_code=%{#{a.umlx_stringMappingForEnum_one.java_Name}= #{a.java_Name}==null ? null : #{a.java_Name}.name();\n}+g.java_code_one
123
+ }
124
+ a.umlx_stringMappingForEnum_one.java_setter_property_inv.each { |g|
125
+ g.java_code=g.java_code_one+<<END
126
+ \n#{a.java_Name}=Enum.valueOf(#{a.uml_type_one.java_qualifiedName}.class,#{a.umlx_stringMappingForEnum_one.java_Name});
127
+ END
128
+ }
129
+
130
+ #code=code+<<END
131
+ #if(#{a.umlx_stringMappingForEnum_one.java_Name}!=null) {
132
+ # #{a.java_Name}=Enum.valueOf(#{a.uml_type_one.java_qualifiedName}.class,#{a.umlx_stringMappingForEnum_one.java_Name});
133
+ #} else {
134
+ # #{a.java_Name}=null;
135
+ #}
136
+ #END
137
+ }
138
+ #u.java_code=code;
139
+
140
+ return
141
+ end
142
+
143
+ end
144
+
145
+
146
+ # #Generates a custom serializer
147
+ # def java_addReadWriteExternal!
148
+ # return unless java_hasEnumDirectProperties?
149
+ # java_addReadExternal!
150
+ # java_addWriteExternal!
151
+ # write("super(output)")
152
+ # end
153
+ # def java_addReadExternal!
154
+ # m=umlx_createAndAddOperation(action.rdf_uri+"_"+"readExternal","readExternal")
155
+ # p=afo.umlx_createAndAddParameter(m.rdf_uri+"input","input")
156
+ # p.uml_class=umlx_getOrCreateClass("java.io.ObjectInput")
157
+ # m.uml_raisedException_add(umlx_getOrCreateClass("java.lang.ClassNotFoundException"))
158
+ # m.uml_raisedException_add(umlx_getOrCreateClass("java.io.IOException"))
159
+ # m.java_code=java_getReadExternalCode("input")
160
+ # return m
161
+ # end
162
+ # def java_addWriteExternal!
163
+ # m=umlx_createAndAddOperation(action.rdf_uri+"_"+"writeExternal","writeExternal")
164
+ # p=afo.umlx_createAndAddParameter(m.rdf_uri+"output","output")
165
+ # p.uml_class=umlx_getOrCreateClass("java.io.ObjectOuput")
166
+ # m.uml_raisedException_add(umlx_getOrCreateClass("java.io.IOException"))
167
+ # m.java_code=java_getWriteExternalCode("output")
168
+ # return m
169
+ # end
170
+ # def java_getWriteExternalCode(varname)
171
+ # code="super(#{varname});\n"
172
+ # uml_ownedAttribute.each { |a|
173
+ # //TODO: collection of Enumeration
174
+ # if(a.uml_type_one.kind_of?(Muml_Enumeration)) {
175
+ # code=code+"#{varname}.writeObject(#{a.java_Name}.name());\n"
176
+ # } else {
177
+ # code=code+"#{varname}.writeObject(#{a.java_Name});\n"
178
+ # }
179
+ # }
180
+ # return code
181
+ # end
182
+ # def java_getReadExternalCode(varname)
183
+ # code="super(#{varname});\n"
184
+ # uml_ownedAttribute.each { |a|
185
+ # //TODO: collection of Enumeration
186
+ # if(a.uml_type_one.kind_of?(Muml_Enumeration)) {
187
+ # code=code+"#{a.java_Name}=(#{a.uml_type_one.java_qualifiedName})Enum.value(#{a.uml_type_one.java_qualifiedName},(String)#{varname}.readObject());\n"
188
+ # } else {
189
+ # code=code+"#{a.java_Name}=(#{a.uml_type_one.java_qualifiedName})#{varname}.readObject();\n"
190
+ # }
191
+ # }
192
+ # return code
193
+ # end
194
+ #
195
+ #end
@@ -0,0 +1,91 @@
1
+ module Muml_Classifier
2
+
3
+ # adds a equals and a hash method to the current class.
4
+ # Signature is computed from attributes stereoptyped EqualsValue
5
+ # NOTE:
6
+ # method is not generated if there is no attribute stereotyped EqualsValue
7
+ def java_addEqualsAndHashOperations(callSuperEquals)
8
+ ret=Set.new
9
+ uml_ownedAttribute.each {|biz|
10
+ ret << biz if biz.umlx_hasStereotype?("EqualsValue")
11
+ }
12
+ if !ret.empty?
13
+ puts "generate hash and equals for #{self.java_Name}"
14
+ java_addEqualsOperation!(ret, callSuperEquals)
15
+ java_addHashCodeOperation!(ret)
16
+ end
17
+ return nil
18
+ end
19
+
20
+ #adds a equals method
21
+ def java_addEqualsOperation!(attributesInSignature, callSuperEquals)
22
+ me=self.umlx_createAndAddOperation(self.rdf_uri+"_equals")
23
+ me.uml_name="equals"
24
+ # me.uml_class=self
25
+ me.uml_visibility=Cuml_VisibilityKind::Public
26
+ rme=me.umlx_createAndAddReturnParameter("#{me.rdf_uri}_ret")
27
+ rme.uml_type=umlx_getOrCreateDataType("boolean")
28
+ rpe=me.umlx_createAndAddParameter("#{me.rdf_uri}_par", "o")
29
+ rpe.uml_type=umlx_getOrCreateClass("Object")
30
+ me.java_annotation_add("@Override")
31
+ meCode = <<CODE
32
+ if(this == o) {
33
+ return true;
34
+ }
35
+ if(o==null || !(o instanceof #{self.java_Name})) {
36
+ return false;
37
+ }
38
+ CODE
39
+ if callSuperEquals
40
+ meCode << <<CODE
41
+ if !super.equals(o) {
42
+ return false;
43
+ }
44
+ CODE
45
+ else
46
+ meCode << "// do not use super.equals()\n"
47
+ end
48
+ meCode << <<CODE
49
+ final #{self.java_Name} _o = (#{self.java_Name}) o;
50
+ CODE
51
+ attributesInSignature.each { |a|
52
+ meCode << <<CODE
53
+ if (#{a.java_Name} != null ?
54
+ !#{a.java_Name}.equals(_o.#{a.java_Name}) :
55
+ _o.#{a.java_Name} != null) {
56
+ return false;
57
+ }
58
+ CODE
59
+ }
60
+ meCode << <<CODE
61
+ return true;
62
+ CODE
63
+ me.java_code = meCode
64
+ return me
65
+ end
66
+
67
+ #adds a hash method
68
+ def java_addHashCodeOperation!(attributesInSignature)
69
+ me=self.umlx_createAndAddOperation(self.rdf_uri+"_hash")
70
+ me.uml_name="hashCode"
71
+ me.uml_class=self
72
+ me.uml_visibility=Cuml_VisibilityKind::Public
73
+ rme=me.umlx_createAndAddReturnParameter("#{me.rdf_uri}_ret")
74
+ rme.uml_type=umlx_getOrCreateDataType("int")
75
+ me.java_annotation_add("@Override")
76
+ meCode = <<CODE
77
+ final int prime = 31;
78
+ int result = 1;
79
+ CODE
80
+ attributesInSignature.each { |a|
81
+ meCode << <<CODE
82
+ result = prime * result + ((#{a.java_Name} == null) ? 0 : #{a.java_Name}.hashCode());
83
+ CODE
84
+ }
85
+ meCode << <<CODE
86
+ return result;
87
+ CODE
88
+ me.java_code = meCode
89
+ return me
90
+ end
91
+ end
@@ -0,0 +1,95 @@
1
+ # Scripting model enhancements.
2
+ # Used in Groovy integration.
3
+ #
4
+
5
+ module Muml_Operation
6
+ # returns true if element is marked as scripted.
7
+ def umlx_isScripted?
8
+ return umlx_hasStereotype?("Script")
9
+ end
10
+ end
11
+
12
+ module Mrdf_Repository
13
+
14
+ # Retrieve an enumeration that will contain a list of script methods
15
+ def umlx_getScriptMethodEnumeration
16
+ return umlx_reserved_model.umlx_getOrCreateEnumeration("xmda.scripting.ScriptMethodInventory",Muml_Classifier::UMLX_SEARCH_EVERY_MODEL)
17
+ end
18
+
19
+ # populate script method inventory (which is stored as a java enum.)
20
+ def umlx_populateScriptedMethodEnumeration
21
+ # umlx_generateStaticSecurityRoleEnum
22
+ e=umlx_getScriptMethodEnumeration
23
+
24
+ #populate inventory
25
+ uml_Class_all.each {|c|
26
+ next unless c.umlx_businessMethod?
27
+ next if c.kind_of?(Muml_Interface)
28
+ cn="#{c.java_qualifiedName}.class"
29
+ c.uml_ownedOperation.each {|op|
30
+ next unless op.umlx_businessMethod?
31
+ next unless op.umlx_isScripted?
32
+ #operation was generated from an interface
33
+ next if (!op.umlx_redefinesMethod.empty?) && (!op.umlx_redefinesMethod_one.umlx_owner_one.kind_of?(Muml_Interface))
34
+ lit=e.umlx_createAndAddLiteral("#{op.umlx_owner_one.java_qualifiedName}_#{op.java_Name}")
35
+ lit.java_initParameterValue_add(cn)
36
+ lit.java_initParameterValue_add(%{"#{op.java_Name}"})
37
+ }
38
+ }
39
+
40
+ cc=umlx_reserved_model.umlx_getOrCreateClass("java.lang.Classxx")
41
+ cc.uml_name="Class<?>"
42
+ cc.java_isGeneric=RDF_TRUE
43
+
44
+ str=e.umlx_owner_one.umlx_dataType_string
45
+ # add constructor
46
+ c=e.umlx_createAndAddOperation("#{c}.constructor","constructor")
47
+ c.uml_appliedStereotype_add(e.umlx_getOrCreateStereotype("Create"))
48
+ c.uml_visibility=::Cuml_VisibilityKind::Private
49
+ p1=c.umlx_createAndAddParameter("#{c.uri}_p1","_ownerClass")
50
+ p1.uml_type=cc
51
+ p2=c.umlx_createAndAddParameter("#{c.uri}_p2","_operationName")
52
+ p2.uml_type=str
53
+ c.java_code="ownerClass=_ownerClass;\noperationName=_operationName;"
54
+
55
+ #add attributes
56
+ a1=e.umlx_createAndAddProperty("#{e}_a1","ownerClass")
57
+ a1.uml_type=cc
58
+ a2=e.umlx_createAndAddProperty("#{e}_a2","operationName")
59
+ a2.uml_type=str
60
+
61
+ #add finder
62
+ f=e.umlx_createAndAddOperation("#{e.uri}_find","find")
63
+ f.uml_isStatic=RDF_TRUE
64
+ a1=f.umlx_createAndAddParameter("#{e}_a1","ownerClass")
65
+ a1.uml_type=cc
66
+ a2=f.umlx_createAndAddParameter("#{e}_a2","operationName")
67
+ a2.uml_type=str
68
+ a3=f.umlx_createAndAddReturnParameter("#{e}_ret","enum")
69
+ a3.uml_type=e
70
+ f.java_code=<<END
71
+ //TODO !!!!!!!!!!!
72
+ return null ; //#{e.java_Name}
73
+ END
74
+
75
+ end
76
+
77
+
78
+ #Java annotation used to mark a Secured method or field.
79
+ JAVA_SCRIPT_ANNOTATION="@xmda.scripting.aop.Script"
80
+
81
+ # process element marked as secured
82
+ def umlx_processScriptedElements
83
+
84
+ uml_Class_all.each {|c|
85
+ #sec=false
86
+ next if c.kind_of?(Muml_Interface) || c.kind_of?(Muml_Enumeration)
87
+ c.uml_ownedOperation.each {|o|
88
+ next unless o.umlx_isScripted?
89
+ o.java_annotation_add(JAVA_SCRIPT_ANNOTATION)
90
+ #sec=true
91
+ }
92
+ }
93
+ end
94
+
95
+ end