Public:BWmeta service/Java mapping

From YaddaWiki

(Difference between revisions)
Jump to: navigation, search
(History)
(Rich text support)
Line 44: Line 44:
== Rich text support ==
== Rich text support ==
-
Starting with BWmeta 2.0.0, support for rich text is introduced for certain fields.
+
Support for rich text, introduced in BWmeta 2.0.0 calls for a change in the "Y" model. (...) To be continued.
-
By rich text we mean a mixed content of text and tags from namespaces other than <code>bwmeta</code>.
+
-
For example, the following should be a valid fragment of BWmeta 1.2.1
+
-
(assuming that suitable declarations of <code>xhtml</code> and <code>mathml</code> are present):
+
-
  <'''description''' lang="eng" type="abstract">
+
-
      <'''xhtml:em'''>Lorem ipsum</'''xhtml:em'''> dolor sit amet <'''mathml:math'''>[...]</'''mathml:math'''>
+
-
  </'''description'''>
+
-
The following fields support rich text:
+
-
* name
+
-
* description
+
-
* tag
+
-
* attribute
+
-
 
+
-
The change in attribute renders BWmeta 2.0.0 incompatible with BWmeta 1.2.0:  The following in BWmeta 1.2.0:
+
-
  <'''attribute''' key="foo" value="bar"/>
+
-
becomes the following in BWmeta 2.0.0:
+
-
  <'''attribute''' key="foo">
+
-
      <'''value'''>bar</'''value'''>
+
-
  </'''attribute'''>
+
-
 
+
-
<!-- name, description, tag, attribute -->
+
-
 
+
-
This calls for a change in the "Y" model. (...) To be continued.
+

Revision as of 10:14, 6 October 2010

Service details
NameBWmeta
Code location
(relative to SVN root)
projects/dir/bwmeta-core
Javadoc
Contact personJakub Jurkiewicz

History

Three different mappings of BWmeta to Java have been written in the project's lifetime. The following table summarizes the mappings.

Model Name Works with
BWmeta versions
Usage areas Comments
Repo model 1.0.0 ÷ 1.0.5 Processes, YaddaWeb Hibernate-oriented
DeskLight model 1.0.0 ÷ 1.0.5 DeskLight
"Y" model 1.2.0 ÷ 2.0.0 Pack Management

Current efforts are focused on replacing the older models (Repo and DeskLight) with the latest one ("Y"). The remainder of this page and all the other pages on BWmeta usage in YADDA assume usage of the "Y" model.

General contracts

Unless explicitly stated in the documentation, every "Y" class has the following properties:

  • has a public default constructor.
  • every property is protected, but has a public getter and setter.
  • getters of String, YLanguage and List properties can never return null. Instead, an empty String, YLanguage.Undetermined or an empty List is returned, respectively.
  • for every List<T> property:
    • its getter returns a modifiable List<T>;
    • its getter returns the same reference all the time;
    • its setter accepts any Collection<T> (and copies the contents);
    • there's an adder (which returns this).
  • every setter and every list adder returns this, which allows chained setting, e.g.:
new YElement()
    .setId("bwmeta1.element.foo")
    .addName(new YName().setText("Foo").setLanguage(YLanguage.English))
    .addDescription(new YDescription().setText("Lorem ipsum").setLanguage(YLanguage.Latin));

The folowing contracts are to be implemented/verified in the future:

  • hashCode() and equals() methods are based on the values of all the properties, i.e., two "Y" objects are equal iff they are of the same type and all their properties are equal.


Rich text support

Support for rich text, introduced in BWmeta 2.0.0 calls for a change in the "Y" model. (...) To be continued.

Personal tools