Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 46878f0a47a1a93593e8e95eba91570b23de368d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.m2m.qvt.oml" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.m2m.qvt.oml" id="javaBlackboxUnits" name="Java black-box units"/>
      </appInfo>
      <documentation>
         This extension point provides a mechanism for contributing QVT black-box units. Conceptually, it corresponds to QVT compilation units (OMG spec 7.13.1), though it rather represents sort of deployment unit as there is no concrete syntax source file to compile. Instead, the source is represented by a Java class, which realizes the top level unit elements using Java language constructs mapped to corresponding QVT counterpart elements.&lt;/br&gt;&lt;/br&gt;
See the details on the Java implementation class format at &lt;a href=&quot;../blackboxing.html&quot;&gt;Java black-box to QVT mappings&lt;/a&gt;.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
         <documentation>
            Extension point to register QVT black-box unit of Java implementations
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <choice minOccurs="1" maxOccurs="unbounded">
               <element ref="unit"/>
               <element ref="library"/>
            </choice>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="unit">
      <annotation>
         <documentation>
            A deployment unit that can define mutliple libraries or transformations, a conceptual analogy to &lt;code&gt;compilation unit&lt;/code&gt; defined in QVT specification.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="1" maxOccurs="unbounded">
            <element ref="library"/>
         </sequence>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  Simple name of the black-box unit. Along with the &lt;b&gt;namespace&lt;/b&gt;, it composes the qualified name of the unit referenceable from import statements.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="namespace" type="string">
            <annotation>
               <documentation>
                  Namespace in which this blackbox unit is defined. If not specified, the identifier of the owning plugin will be used.
Along with the &lt;b&gt;name&lt;/b&gt;, it composes the qualified name of the unit referenceable from import statements.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A textual description of this unit element, typically used by a tooling support
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="library">
      <annotation>
         <documentation>
            A library module which defines its operations in the associated implementation class and is defined in a deployment unit.&lt;br/&gt;
In order to facilitate the common case of a single library per unit, a simplified definition is supported to help in reducing verbosity. In this case no explicit owning unit needs to be defined and the library element can be defined as standalone.
Corresponding implicit unit is synthesized based on the implementation class and inherits its qualified name.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="metamodel" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  Name of the library representing the module name resolveable in QVT. If not specified, the simple name of the class will be used.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The implementation class of the library (see &lt;a href=&quot;../blackboxing.html&quot;&gt;Java black-box to QVT mappings&lt;/a&gt;)
               </documentation>
               <appInfo>
                  <meta.attribute kind="java"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="metamodel">
      <annotation>
         <documentation>
            Specifies a metamodel used by a declared library, being a part of that library signature.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="nsURI" type="string" use="required">
            <annotation>
               <documentation>
                  The namespace URI of the metamodel package.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         2.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
The following examples registers the &lt;code&gt;ExampleJavaLib&lt;/code&gt; black-box unit, which is resolvable as 
&lt;code&gt;m2m.qvt.oml.ExampleJavaLib&lt;/code&gt; from importing QVT modules.&lt;/br&gt;
It defines the QVT library resolveable by name &lt;code&gt;UtilLib&lt;/code&gt;, implemented in the
&lt;code&gt;org.eclipse.m2m.qvt.oml.examples.blackbox.UtilitiesLibrary&lt;/code&gt; class.&lt;/br&gt;
The library operation reference types defined in the &lt;code&gt;Ecore&lt;/code&gt; metamodel.
&lt;/p&gt;
&lt;pre&gt;
&lt;extension point=&quot;org.eclipse.m2m.qvt.oml.javaBlackboxUnits&quot;&gt;
  &lt;unit name=&quot;ExampleJavaLib&quot; namespace=&quot;m2m.qvt.oml&quot;&gt;
    &lt;library name=&quot;UtilLib&quot; 
             class=&quot;org.eclipse.m2m.qvt.oml.examples.blackbox.UtilitiesLibrary&quot;&gt;
      &lt;metamodel nsURI=&quot;http://www.eclipse.org/emf/2002/Ecore&quot;/&gt;
    &lt;/library&gt;
  &lt;/unit&gt;
&lt;/extension&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>



   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2008 Borland Software Corporation
 
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v2.0
which accompanies this distribution, and is available at
&lt;a href=&quot;http://www.eclipse.org/legal/epl-v20.html&quot;&gt;http://www.eclipse.org/legal/epl-v20.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>

Back to the top