![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 2
|
Огромная просьба помочь, 3ий (!) день бьюсь надо проблемой - в отчаянии. Уверен что что-то мелкое, но не могу понять где!!
- Есть два класса: Device и SpliceClosure, Device - предок, SpliceClosure - его потомок - Одни и те же классы - в Java и в ActionScript - Почему-то java класс Device сериализуется нормально в AS класс Device - А класс SpliceClosure начисто отказывается, сериализуется вместо этого в Object и выдает type coercion error - У меня есть другие унаследованные классы и всё работает нормально, проблема лишь с этим SpliceClosure Вот код классов и ниже дебаг аутпут BlazeDS (сериализация выглядит идентично для обоих классов!! ошибок явно никаких): ---------------------------- JAVA: Device --------------------------------------- public class Device implements java.io.Serializable {
private static final long serialVersionUID = 87770011L;
protected Integer id;
protected Location location;
protected String code;
protected String manufacturer;
protected String manufacturerTypeCode;
protected String serialNumber;
protected Set<DeviceConnector> connectors = new HashSet<DeviceConnector>(0);
public Device() {
}
public Device(
Location location,
String code,
String manufacturer,
String manufacturerTypeCode,
String serialNumber,
Set<DeviceConnector> connectors
) {
this.location = location;
this.code = code;
this.manufacturer = manufacturer;
this.manufacturerTypeCode = manufacturerTypeCode;
this.serialNumber = serialNumber;
this.connectors = connectors;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Location getLocation() {
return this.location;
}
public void setLocation(Location location) {
this.location = location;
}
public String getCode() {
return this.code;
}
public void setCode(String code) {
this.code = code;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
public String getManufacturerTypeCode() {
return manufacturerTypeCode;
}
public void setManufacturerTypeCode(String manufacturerTypeCode) {
this.manufacturerTypeCode = manufacturerTypeCode;
}
public Set<DeviceConnector> getConnectors() {
return connectors;
}
public void setConnectors(Set<DeviceConnector> connectors) {
this.connectors = connectors;
}
public String toString(){
StringBuilder r = new StringBuilder("Device[");
r.append(" id=" + id);
r.append(" code=" + code);
r.append("]");
r.append(super.toString());
return r.toString();
}
}
package sit.si.CableTool.data { import mx.collections.ArrayCollection; import net.digitalprimates.persistence.hibernate.HibernateBean; [RemoteClass(alias="sit.si.data.CableTool.Device")] [Managed] public class Device extends HibernateBean { public var id : Number; public var location : Location; public var code : String; public var manufacturer : String; public var manufacturerTypeCode : String; public var serialNumber : String; protected var connectors_: ArrayCollection = new ArrayCollection(); public function get connectors() : ArrayCollection { if( connectors_ == null ){ connectors_ = new ArrayCollection(); } return connectors_; } public function set connectors(connectors_ : ArrayCollection) : void { this.connectors_ = connectors_; } public function getCables() : ArrayCollection { var cables : ArrayCollection = new ArrayCollection(); for each( var connector : DeviceConnector in connectors ){ // if( ! cables.contains( cableEndpoint.cable ) ){ // cables.addItem( cableEndpoint.cable ); // } } return cables; } public function toString() : String { var result : String = "Device["; result += "Id: " + id; result += "Code: " + code; result += "Location: " + location; result += "Manufacturer: " + manufacturer; result += "Serial Number: " + serialNumber; result += "]"; return result; } } } public class SpliceClosure extends Device implements java.io.Serializable
{
private static final long serialVersionUID = 87770009L;
public SpliceClosure() {
super();
}
}
package sit.si.CableTool.data { import mx.collections.ArrayCollection; [RemoteClass(alias="sit.si.data.CableTool.SpliceClosure")] [Managed] public class SpliceClosure extends Device { public override function toString() : String{ var result : String = "SpliceClosure["; result += "Id: " + id; // result += "Code: " + code; // result += "Number of splicings: " + splicings.length; result += "]"; return result; } } } [BlazeDS]Adapter 'java-object' called 'sit.si.CableTool.DAO.Devices.getDevice(java.util.Arrays$ArrayList (Collection size:1)
[0] = 5454
)'
[BlazeDS]Result: 'Device[ id=5454 code=SPL1123]sit.si.data.CableTool.SpliceClosure@8d5aad'
[BlazeDS]Serializing AMF/HTTP response
Version: 3
(Message #0 targetURI=/2/onResult, responseURI=)
(Externalizable Object #0 'DSK')
(Typed Object #1 'sit.si.data.CableTool.SpliceClosure')
id = 5454
connectors = (Externalizable Object #2 'flex.messaging.io.ArrayCollection')
(Array #3)
location = null
manufacturer = null
serialNumber = "1624887"
manufacturerTypeCode = "SP16-SERIES-A1"
code = "SPL1123"
1.263924520428E12
(Byte Array #4, Length 16)
(Byte Array #5, Length 16)
(Byte Array #6, Length 16)
..........
[BlazeDS]Adapter 'java-object' called 'sit.si.CableTool.DAO.Devices.getDevice(java.util.Arrays$ArrayList (Collection size:1)
[0] = 5555
)'
[BlazeDS]Result: 'Device[ id=5555 code=22222]sit.si.data.CableTool.Device@4ef630'
[BlazeDS]Serializing AMF/HTTP response
Version: 3
(Message #0 targetURI=/3/onResult, responseURI=)
(Externalizable Object #0 'DSK')
(Typed Object #1 'sit.si.data.CableTool.Device')
id = 5555
connectors = (Externalizable Object #2 'flex.messaging.io.ArrayCollection')
(Array #3)
location = null
manufacturer = null
serialNumber = "111111"
manufacturerTypeCode = "44"
code = "22222"
1.263924520646E12
(Byte Array #4, Length 16)
(Byte Array #5, Length 16)
(Byte Array #6, Length 16)
|
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Если я правильно понял - вам надо сериализовать объект на джаве и десериализовать его во флеше? о_о
В таком случае, странно, что один объект сериализовался нормально. Java сериализует по своим каким-то правилам. И только она нормально может десериализовать. А флеш - во своим. Тут нет стандарта.. Впрочем, я точно не знаю, говорю, что думаю. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 2
|
Не совсем, дело в том что есть стандартные механизмы де- и сериализации - Java <-> AS. В частности этим занимается BlazeDS.
Просто есть частная проблема с одним Java классом, который, гад, не хочет превращаться в правильный AS класс (неправильно десериализуется). Вот вообщем и думал - может есть у кого догадки - куда смотреть. Тем не менее, спасибо что пытаетесь помочь Ixanezis Добавлено через 6 часов 17 минут для следующих поколений - вот описание проблемы и решение: http://riapriority.com/blogs/graann....sterclassalias А у меня сработало простое: var s : SpliceClosure = new SpliceClosure(); в классе инициации.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|