Исключение странных свойств Грааля - PullRequest
3 голосов
/ 14 декабря 2011

Надеюсь, я не помещаю здесь слишком много кода .. У меня есть то, что я считаю странной проблемой ... У меня есть 2 класса ..

class Card {
    String customerNumber
    String memberId
    String cardNumber
    String issueNumber

    Boolean active = true

    // Audit info ..
    Date dateCreated
    String createdBy
    Integer uniqId
}
class CardHistory extends Card {
    static constraints = {
        note(nullable: true, size:1..500)
    }

    // History note
    String note

    // Audit info ..
    Date originalDateCreated
    String originalCreatedBy
    Integer originalUniqId

}

и еще один ...

class Seat {
... 
    Card activeCard 
}

У меня есть некоторый код, который генерирует запись истории из текущей, выполнив

cardHistoryInstance.properties = seat.card.properties

, но он выдает NullPointerException ..

Итак, я написал эточтобы проверить это ..

def seat = Seat.get(1)

try{
    def cardHistoryEntry = new CardHistory(); 
    println cardHistoryEntry.properties
    println "properties okay  .." 

    assert seat
    println "Seat okay  ..."

    assert seat.card
    println "Card okay  ..."

    println seat.card.dateCreated
    println "Date okay  ..."

    .... and each of the other properties    

    println seat.card.customerNumber 
    println "customer number okay .. "

    println "Seems okay  .."

    println seat.card.properties    <----  Blows up with NPE here ..  
    println "Don't get to here"
}
catch(e)
{
    println  "OOps .. An error occurred ${e} .."
}

Так что в основном я могу получить каждое свойство индивидуально, но доступ через ключевое слово properties дает мне npe .. Может кто-нибудь пролить свет на это ??Граальс 1.3.6 ..

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2011

Нет, вы должны ссылаться на свойство Seat как activeCard, а не card:

try{
    def cardHistoryEntry = new CardHistory(); 
    println cardHistoryEntry.properties
    println "properties okay  .." 

    assert seat
    println "Seat okay  ..."

    assert seat.activeCard
    println "Card okay  ..."

    println seat.activeCard.dateCreated
    println "Date okay  ..."

    println seat.activeCard.customerNumber 
    println "customer number okay .. "

    println "Seems okay  .."

    println seat.activeCard.properties
    println "Don't get to here"
}
catch(e)
{
    println  "OOps .. An error occurred ${e} .."
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...