6 февр. 2007 г.

Enum и FDS

Для начала - проблемка первая, о которой я спрашивал в ruflex (к сожалению - без ответа).
Есть java enum:

public enum ItemAvailability {
PUBLIC_ITEM, RESTRICTED_ITEM
}

Он идет как атрибут некоего класса, замапленного на flex-класс.
Java:

public class Item {
private String name;
private ItemAvailability availability = ItemAvailability.RESTRICTED_ITEM;
}

Flex:

[RemoteClass(alias="com.package.Item")]
public class Item {
public var name:String;
public var availability:Object;
}

Вопрос: как отразить этот атрибут во flex? Прямое соответствие невозможно, насколько я понимаю, - в AS3 нет enum. Пробуем Object: после вызова java-метода, возвращающего экземпляр Item, в дебагере видим:
availability - mx.data.ManagedObjectProxy, в который завернут Object - абсолютно пустой, без единого атрибута.

Пока нашел только такое решение - написание своей собственной сериализации/десериализации для класса Item. В Java коде, при сериализации преобразуем enum в строковое значение и наоборот при десериализации.
Подробнее - в livedocs, Using custom serialization .

1 комментарий:

Анонимный комментирует...

Попробуй так:
http://flexblog.faratasystems.com/?p=242

Пришлось немного "помочь" механизму сериализации в FDS/LCDS (линки на необходимые jar-ы встречаются по ходу текста)

VS