ontomde-java 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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