[jira] [Updated] (PROTON-261) pn_delivery_local_state and pn_delivery_remote_state can return a zero value (outside that defined by the pn_disposition_t enum)

2013-03-07 Thread Keith Wall (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Keith Wall updated PROTON-261:
--

Description: 
In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
as returning an pn_disposition_t:

PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);

with pn_disposition_t defined as:

typedef enum pn_disposition_t {
  PN_RECEIVED=1,
  PN_ACCEPTED=2,
  PN_REJECTED=3,
  PN_RELEASED=4,
  PN_MODIFIED=5
} pn_disposition_t;

However, there are circumstances when the proton-c implementation returns a 
value outside this enumeration - value 0 - coming for the struct initialisation 
in pn_delivery().  What does this value mean and how is an application supposed 
to react to this value?   Are there an implicit restrictions regarding when an 
application may call pn_delivery_local_state/pn_delivery_remote_state?

btw.  This question arises from work on PROTON-257.  Proton-jni (Swig generated 
code - so called "Proper enums" - see 
http://www.swig.org/Doc2.0/Java.html#Java_proper_enums_classes) is failing to 
decode the enum when testing the state of a newly created Delivery.

test(org.apache.qpid.proton.systemtests.ProtonEngineExampleTest)  Time elapsed: 
0.109 sec  <<< ERROR!
java.lang.IllegalArgumentException: No enum class 
org.apache.qpid.proton.jni.pn_disposition_t with value 0
at 
org.apache.qpid.proton.jni.pn_disposition_t.swigToEnum(pn_disposition_t.java:32)
at 
org.apache.qpid.proton.jni.Proton.pn_delivery_local_state(Proton.java:624)
at 
org.apache.qpid.proton.engine.jni.JNIDelivery.getLocalState(JNIDelivery.java:100)
at 
org.apache.qpid.proton.systemtests.ProtonEngineExampleTest.test(ProtonEngineExampleTest.java:190)


  was:
In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
as returning an pn_disposition_t:

PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);

with pn_disposition_t defined as:

typedef enum pn_disposition_t {
  PN_RECEIVED=1,
  PN_ACCEPTED=2,
  PN_REJECTED=3,
  PN_RELEASED=4,
  PN_MODIFIED=5
} pn_disposition_t;

However, there are circumstances when the proton-c implementation returns a 
value outside this enumeration - value 0 - coming for the struct initialisation 
in pn_delivery().  What does this value mean and how is an application supposed 
to react to this value?   Are there an implicit restrictions regarding when an 
application may call pn_delivery_local_state/pn_delivery_remote_state?

btw.  This question arises from work on PROTON-257.  Proton-jni (Swig generated 
code) is failing to decode the enum when testing the state of a newly created 
Delivery.

test(org.apache.qpid.proton.systemtests.ProtonEngineExampleTest)  Time elapsed: 
0.109 sec  <<< ERROR!
java.lang.IllegalArgumentException: No enum class 
org.apache.qpid.proton.jni.pn_disposition_t with value 0
at 
org.apache.qpid.proton.jni.pn_disposition_t.swigToEnum(pn_disposition_t.java:32)
at 
org.apache.qpid.proton.jni.Proton.pn_delivery_local_state(Proton.java:624)
at 
org.apache.qpid.proton.engine.jni.JNIDelivery.getLocalState(JNIDelivery.java:100)
at 
org.apache.qpid.proton.systemtests.ProtonEngineExampleTest.test(ProtonEngineExampleTest.java:190)



> pn_delivery_local_state and pn_delivery_remote_state can return a zero value 
> (outside that defined by the pn_disposition_t enum)
> 
>
> Key: PROTON-261
> URL: https://issues.apache.org/jira/browse/PROTON-261
> Project: Qpid Proton
>  Issue Type: Bug
>  Components: proton-c
>Affects Versions: 0.5
>Reporter: Keith Wall
>
> In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
> as returning an pn_disposition_t:
> PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
> PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);
> with pn_disposition_t defined as:
> typedef enum pn_disposition_t {
>   PN_RECEIVED=1,
>   PN_ACCEPTED=2,
>   PN_REJECTED=3,
>   PN_RELEASED=4,
>   PN_MODIFIED=5
> } pn_disposition_t;
> However, there are circumstances when the proton-c implementation returns a 
> value outside this enumeration - value 0 - coming for the struct 
> initialisation in pn_delivery().  What does this value mean and how is an 
> application supposed to react to this value?   Are there an implicit 
> restrictions regarding when an application may call 
> pn_delivery_local_state/pn_delivery_remote_state?
> btw.  This question arises from work on PROTON-257.  Proton-jni (Swig 
> generated

[jira] [Updated] (PROTON-261) pn_delivery_local_state and pn_delivery_remote_state can return a zero value (outside that defined by the pn_disposition_t enum)

2013-03-05 Thread Keith Wall (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Keith Wall updated PROTON-261:
--

Description: 
In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
as returning an pn_disposition_t:

PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);

with pn_disposition_t defined as:

typedef enum pn_disposition_t {
  PN_RECEIVED=1,
  PN_ACCEPTED=2,
  PN_REJECTED=3,
  PN_RELEASED=4,
  PN_MODIFIED=5
} pn_disposition_t;

However, there are circumstances when the proton-c implementation returns a 
value outside this enumeration - value 0 - coming for the struct initialisation 
in pn_delivery().  What does this value mean and how is an application supposed 
to react to this value?   Are there an implicit restrictions regarding when an 
application may call pn_delivery_local_state/pn_delivery_remote_state?

btw.  This question arises from work on PROTON-257.  Proton-jni (Swig generated 
code) is failing to decode the enum when testing the state of a newly created 
Delivery.

test(org.apache.qpid.proton.systemtests.ProtonEngineExampleTest)  Time elapsed: 
0.109 sec  <<< ERROR!
java.lang.IllegalArgumentException: No enum class 
org.apache.qpid.proton.jni.pn_disposition_t with value 0
at 
org.apache.qpid.proton.jni.pn_disposition_t.swigToEnum(pn_disposition_t.java:32)
at 
org.apache.qpid.proton.jni.Proton.pn_delivery_local_state(Proton.java:624)
at 
org.apache.qpid.proton.engine.jni.JNIDelivery.getLocalState(JNIDelivery.java:100)
at 
org.apache.qpid.proton.systemtests.ProtonEngineExampleTest.test(ProtonEngineExampleTest.java:190)


  was:
In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
as returning an pn_disposition_t:

PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);

with pn_disposition_t defined as:

typedef enum pn_disposition_t {
  PN_RECEIVED=1,
  PN_ACCEPTED=2,
  PN_REJECTED=3,
  PN_RELEASED=4,
  PN_MODIFIED=5
} pn_disposition_t;

However, there are circumstances when the proton-c implementation returns a 
value outside this enumeration - value 0 - coming for the struct initialisation 
in pn_delivery().  What does this value mean and how is an application supposed 
to react to this value?   Are there an implicit restrictions regarding when an 
application may call pn_delivery_local_state/pn_delivery_remote_state?

btw.  This question arises from work on PROTON-257.  Proton-jni (Swig generated 
code) is failing to decode the enum when testing the state of a newly created 
Delivery.

test(org.apache.qpid.proton.systemtests.ProtonEngineExampleTest)  Time elapsed: 
0.109 sec  <<< ERROR!
java.lang.IllegalArgumentException: No enum class 
org.apache.qpid.proton.jni.pn_disposition_t with value 0
at 
org.apache.qpid.proton.jni.pn_disposition_t.swigToEnum(pn_disposition_t.java:32)
at 
org.apache.qpid.proton.jni.Proton.pn_delivery_local_state(Proton.java:624)
at 
org.apache.qpid.proton.engine.jni.JNIDelivery.getLocalState(JNIDelivery.java:100)
at 
org.apache.qpid.proton.systemtests.ProtonEngineExampleTest.test(ProtonEngineExampleTest.java:190)













> pn_delivery_local_state and pn_delivery_remote_state can return a zero value 
> (outside that defined by the pn_disposition_t enum)
> 
>
> Key: PROTON-261
> URL: https://issues.apache.org/jira/browse/PROTON-261
> Project: Qpid Proton
>  Issue Type: Bug
>  Components: proton-c
>Affects Versions: 0.5
>Reporter: Keith Wall
>
> In proton-c, pn_delivery_local_state and pn_delivery_remote_state are defined 
> as returning an pn_disposition_t:
> PN_EXTERN pn_disposition_t pn_delivery_local_state(pn_delivery_t *delivery);
> PN_EXTERN pn_disposition_t pn_delivery_remote_state(pn_delivery_t *delivery);
> with pn_disposition_t defined as:
> typedef enum pn_disposition_t {
>   PN_RECEIVED=1,
>   PN_ACCEPTED=2,
>   PN_REJECTED=3,
>   PN_RELEASED=4,
>   PN_MODIFIED=5
> } pn_disposition_t;
> However, there are circumstances when the proton-c implementation returns a 
> value outside this enumeration - value 0 - coming for the struct 
> initialisation in pn_delivery().  What does this value mean and how is an 
> application supposed to react to this value?   Are there an implicit 
> restrictions regarding when an application may call 
> pn_delivery_local_state/pn_delivery_remote_state?
> btw.  This question arises from work on PROTON-257.  Proton-jni (Swig 
> generated code) is failing to decode the enum when testing the state of a 
> newly created Deliv