[omniORB] Sequence of valuetype
    Björn Hagemeier 
    bjoernh at uni-paderborn.de
       
    Wed Jan 18 11:18:24 GMT 2006
    
    
  
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
I have the following IDL code which compiles without complaints using
omniORB 4.1.0:
/** BEGIN IDL CODE */
valuetype AbstractAction {
}
typedef sequence<AbstractAction> AbstractActionSeq;
valuetype ActionGroup : AbstractAction {
   public AbstractActionSeq actions;
}
valuetype AbstractJob : ActionGroup {
}
valuetype AbstractTask : AbstractAction {
}
valuetype ExecuteTask : AbstractTask {
}
/** END IDL CODE */
Think of it as a composite pattern to model hierarchical data. The class
hierarchy is more complex than it needs to be at the first sight, but I
stripped down the data I consider unimportant for describing this problem.
In the client I create an ExecuteTask_impl (that's what I called the
implementation type) like this:
ExecuteTask_impl *exTask = new ExecuteTask_impl();
  AbstractActionSeq taskSeq(1); taskSeq.length(1);
taskSeq[0] = exTask;
AbstractJob_impl *job =	new AbstractJob_impl(taskSeq);
The job is passed to the following interface:
/** BEGIN IDL CODE */
  interface SchedulerIf {
    boolean submitJob(in AbstractJob _job);
  };
/** END IDL CODE */
The server causes a BAD_PARAM_ValueFactoryFailure exception in
valueType.cc:630. omniValueType::handleIncompatibleValue is called from
AbstractAction::_NP_unmarshal, which means the server could not
interpret the value (an ExecuteTask) as an AbstractAction, although the
former is derived from the latter.
If I change the client code such that the sequence in the
AbstractJob_impl object is filled with _true_ AbstractActions instead of
derived types, unmarshalling works perfectly.
Is this behavior intended and if so, how can I cleanly work around it?
Regards,
Björn
- --
+----------------------------+-----------------------------------------+
| Björn Hagemeier            | Tel:               +49 (5251)  87 12 69 |
| Otto-Wels-Str. 34          | Mobil:             +49 ( 173) 878 48 77 |
|                            | E-Mail:        bjoernh at uni-paderborn.de |
|                            | Homepage:            www.b-hagemeier.de |
| 33102 Paderborn            | ICQ:                          464 20 23 |
+----------------------------+-----------------------------------------+
| PGP-Key:          1A967704                                           |
| Key Fingerprint:  5FF6 973A 46FC DB6C E9AF  A324 DE2E A874 1A96 7704 |
+----------------------------------------------------------------------+
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFDzhXv3i6odBqWdwQRAknDAJ90JjXFLo+c9bo9qcyiHKMxCNXXuACfVntY
pV9c4eON60JuDrLcwjHpfVI=
=r6ue
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bjoernh.vcf
Type: text/x-vcard
Size: 299 bytes
Desc: not available
Url : http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20060118/742c01bd/bjoernh.vcf
    
    
More information about the omniORB-list
mailing list