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.
- data/History.txt +10 -0
- data/Manifest.txt +156 -0
- data/README.txt +98 -0
- data/Rakefile +21 -0
- data/bin/ontomde-java +5 -0
- data/generateRdocFile.sh +16 -0
- data/lib/ontomde-java.rb +45 -0
- data/lib/ontomde-java/crank.rb +13 -0
- data/lib/ontomde-java/crank/context.rb +384 -0
- data/lib/ontomde-java/crank/crankJpa.rb +103 -0
- data/lib/ontomde-java/crank/equals.rb +83 -0
- data/lib/ontomde-java/crank/facelets.rb +243 -0
- data/lib/ontomde-java/crank/facesconfig.rb +113 -0
- data/lib/ontomde-java/crank/helper.rb +46 -0
- data/lib/ontomde-java/crank/main.rb +51 -0
- data/lib/ontomde-java/crank/menu.rb +39 -0
- data/lib/ontomde-java/crank/menu2.rb +78 -0
- data/lib/ontomde-java/crank/validation.rb +34 -0
- data/lib/ontomde-java/ejb2.rb +3 -0
- data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
- data/lib/ontomde-java/flex.rb +7 -0
- data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
- data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
- data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
- data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
- data/lib/ontomde-java/flex/fileTypes.rb +19 -0
- data/lib/ontomde-java/flex/main.rb +347 -0
- data/lib/ontomde-java/frontend/command.rb +324 -0
- data/lib/ontomde-java/frontend/command.rdoc +583 -0
- data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
- data/lib/ontomde-java/frontend/options.rb +555 -0
- data/lib/ontomde-java/frontend/steps.rb +287 -0
- data/lib/ontomde-java/java/accessorCode.rb +528 -0
- data/lib/ontomde-java/java/accessorSignature.rb +347 -0
- data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
- data/lib/ontomde-java/java/apache.rb +34 -0
- data/lib/ontomde-java/java/build.rb +80 -0
- data/lib/ontomde-java/java/collectionMapping.rb +112 -0
- data/lib/ontomde-java/java/component.rb +446 -0
- data/lib/ontomde-java/java/contextualize.rb +43 -0
- data/lib/ontomde-java/java/enumAssignable.rb +75 -0
- data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
- data/lib/ontomde-java/java/equals.rb +91 -0
- data/lib/ontomde-java/java/groovy.rb +95 -0
- data/lib/ontomde-java/java/java.rb +1329 -0
- data/lib/ontomde-java/java/java.rdoc +78 -0
- data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
- data/lib/ontomde-java/java/javaHelper.rb +25 -0
- data/lib/ontomde-java/java/java_todo.rdoc +3 -0
- data/lib/ontomde-java/java/javadoc.rb +254 -0
- data/lib/ontomde-java/java/meta.rb +28 -0
- data/lib/ontomde-java/java/operationAsClass.rb +144 -0
- data/lib/ontomde-java/java/security.rb +260 -0
- data/lib/ontomde-java/java/stateMachine.rb +415 -0
- data/lib/ontomde-java/java/tenant.rb +65 -0
- data/lib/ontomde-java/java/xsd.rb +1363 -0
- data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
- data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
- data/lib/ontomde-java/jpa.rb +17 -0
- data/lib/ontomde-java/jpa/configuration.rb +176 -0
- data/lib/ontomde-java/jpa/finder.rb +102 -0
- data/lib/ontomde-java/jpa/jpa.rb +531 -0
- data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
- data/lib/ontomde-java/jpa/locking.rb +18 -0
- data/lib/ontomde-java/jpa/mapping.rb +314 -0
- data/lib/ontomde-java/jpa/redefined.rb +77 -0
- data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
- data/lib/ontomde-java/jpdl.rb +9 -0
- data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
- data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
- data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
- data/lib/ontomde-java/jpdl/constant.rb +5 -0
- data/lib/ontomde-java/jpdl/graphic.rb +52 -0
- data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
- data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
- data/lib/ontomde-java/jpdl/main.rb +348 -0
- data/lib/ontomde-java/jpdl/main.rdoc +2 -0
- data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
- data/lib/ontomde-java/kbjava.rb +6 -0
- data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
- data/lib/ontomde-java/struts.rb +27 -0
- data/lib/ontomde-java/struts/MessageResources.rb +359 -0
- data/lib/ontomde-java/struts/action.rb +883 -0
- data/lib/ontomde-java/struts/blob.rb +11 -0
- data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-java/struts/footer.rb +128 -0
- data/lib/ontomde-java/struts/form.rb +450 -0
- data/lib/ontomde-java/struts/header.rb +37 -0
- data/lib/ontomde-java/struts/header_link.rb +39 -0
- data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
- data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-java/struts/jsp_index.rb +136 -0
- data/lib/ontomde-java/struts/localeAction.rb +641 -0
- data/lib/ontomde-java/struts/main.rb +41 -0
- data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
- data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-java/struts/reloadAction.rb +33 -0
- data/lib/ontomde-java/struts/spring.rb +89 -0
- data/lib/ontomde-java/struts/struts-config.rb +232 -0
- data/lib/ontomde-java/struts/validation.rb +116 -0
- data/lib/ontomde-java/struts/validator.rb +341 -0
- data/lib/ontomde-java/struts/webXml.rb +195 -0
- data/lib/ontomde-java/struts/xmlForm.rb +308 -0
- data/lib/ontomde-java/version.rb +5 -0
- data/profiling.xls +0 -0
- data/test/.classpath +14 -0
- data/test/.project +17 -0
- data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
- data/test/Rakefile +71 -0
- data/test/build.xml +34 -0
- data/test/classpath.rb +15 -0
- data/test/lib/junit-4.1.jar +0 -0
- data/test/load1.rb +3 -0
- data/test/load2.rb +3 -0
- data/test/log4j.properties +46 -0
- data/test/model/.project +11 -0
- data/test/model/BigProject.mdzip +0 -0
- data/test/model/BigProject.mdzip.nt +102866 -0
- data/test/model/ClassDiagram.EntArch.gif +0 -0
- data/test/model/ClassDiagram.emx.gif +0 -0
- data/test/model/ClassDiagram.mdzip.gif +0 -0
- data/test/model/model_ea71.bis.ea.xmi +149 -0
- data/test/model/model_ea71.ea.xmi +4470 -0
- data/test/model/model_ea71.eap +0 -0
- data/test/model/model_ea71_README.txt +8 -0
- data/test/model/multipleInheritance.emx +466 -0
- data/test/model/multipleInheritance.emx.nt +2428 -0
- data/test/model/simple1-530.ofp +0 -0
- data/test/model/simple1-includedAsReference.emx +169 -0
- data/test/model/simple1.emx +3729 -0
- data/test/model/simple1.emx.fragments.nt +81 -0
- data/test/model/simple1.emx.nt +5760 -0
- data/test/model/simple1.mdzip +0 -0
- data/test/model/simple1.mdzip.nt +11500 -0
- data/test/model/simple1.oe530.nt +1986 -0
- data/test/model/simple1.oe600.nt +1627 -0
- data/test/src/RuntimeTest.java +656 -0
- data/test/src/testsLevel1.java +174 -0
- data/test/src/testsLevel2.java +29 -0
- data/test/src/testsLevel3.java +40 -0
- data/test/test-ea7.sh +15 -0
- data/test/test-magicDraw.sh +10 -0
- data/test/test-mi.sh +9 -0
- data/test/test-oe530.sh +10 -0
- data/test/test-oe600.sh +11 -0
- data/test/test-rsm.sh +11 -0
- data/test/test_export_ea71.rb +5 -0
- data/test/test_export_oe530.rb +4 -0
- data/test/test_export_oe600.rb +4 -0
- data/test/test_export_rsm60.rb +4 -0
- data/test/trace +419 -0
- data/test/uml_test.rb +1434 -0
- data/test/uml_test.xls +0 -0
- data/test/unit_test.rb +6 -0
- 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
|