Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Let say we have a server that manage a library in which you can add a book, find a book and get all the books. The server code will probably look like this:

Code Block
java
java
titleBookService.groovy
class BookService {

  private List allBooks = new ArrayList()

  Book findBook(String isbn) {
    for (book in allBooks) {
      if (book.isbn == isbn) return book
    }
    return null
  }

  void addBook(Book book) {
    allBooks.add(book)
  }

  Book[] getBooks() {
    return (Book[])allBooks.toArray(new Book[allBooks.size()])
  }

}

with the class Book being something like that.

Code Block
java
java
titleBook.groovy
class Book {
  String author
  String title
  String isbn
}


To ignore the metaClass property a custom type mapping must be defined (for details refer to Aegis Binding).

Code Block
xml
xml
titleBook.aegis.xml
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:sample="http://DefaultNamespace">
  <mapping name="sample:Book">
    <property name="metaClass" ignore="true"/>
  </mapping>
</mappings>


However, if you compile custom data types from Java the bytecode won't contain a metaClass property and, hence, there is no need to define a custom mapping.