[prev in list] [next in list] [prev in thread] [next in thread]
List: jibx-users
Subject: [jibx-users] Jibx binding with Java Generics
From: Mohamed Osman Elgamal <moh.elgamal () hotmail ! com>
Date: 2015-05-10 11:08:52
Message-ID: DUB118-W40E21C5DE2329D361628CFE4DC0 () phx ! gbl
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
[Attachment #4 (text/plain)]
Dear all,
I have the following java class structure:
public abstract class RequestMessage <MBC extends MessageBodyCore> extends \
Message<RequestMessageHeader, RequestMessageBody<MBC>> { public RequestMessage() \
{ this.setMessageHeader(new RequestMessageHeader()); this.setMessageBody(new \
RequestMessageBody<MBC>()); }} public class AuthenticateUserReqMsg extends \
RequestMessage<AuthenticateUserReqMsgCore> { public AuthenticateUserReqMsg() \
{ super(); }} public class AuthenticateUserReqMsgCore implements MessageBodyCore \
{ protected UserCredential userCredential; // getters and setters} public \
abstract class Message <MH extends MessageHeader, MB extends MessageBody> { MH \
messageHeader; MB messageBody; // getters and setters} Required classes as \
following: public abstract class MessageHeader <MHC extends MessageHeaderCore> { MHC \
headerCore; //getter and setter} public abstract class MessageBody <MBC extends \
MessageBodyCore>{ MBC bodyCore; //getter and setter} public interface \
MessageHeaderCore {}public interface MessageBodyCore {} public class \
RequestMessageHeader extends MessageHeader<RequestMessageHeaderCore> {} public class \
RequestMessageHeaderCore implements MessageHeaderCore { protected String userId; \
protected int rqMode; protected String funcId; ... ...// getters and \
setters} public class UserCredential implements Serializable{ private String \
loginName; private String password; //getters and setters} I tried the \
following binding but got below error: <binding> <mapping name="UsrAuthentRq" \
class="com.RequestMessage" extends="com.Message" ordered="false"> </mapping> \
<mapping abstract="true" type-name="UserCredential" \
class="com.UserCredential"> <value name="loginName" field="loginName" /> <value \
name="password" field="password" /> </mapping> <mapping abstract="true" \
type-name="AuthenticateUserReqMsgCore" \
class="com.AuthenticateUserReqMsgCore"> <structure name="UserCredential" \
field="userCredential" map-as="UserCredential" ordered="false"/> </mapping> \
<mapping abstract="true" class="com.Message" > <structure field="messageHeader" \
map-as="RMH" ordered="false" /> <structure field="messageBody" \
map-as="RMB" ordered="false"/> </mapping> <mapping abstract="true" type-name="RMB" \
class="com.ejada.commons.dao.messages.broker.RequestMessageBody" extends="com.ejada.commons.dao.messages.MessageHeader" \
ordered="false"> </mapping> <mapping name="MessageHeader" \
class="com.MessageHeader"> <structure name="MsgRqHdr" field="headerCore" \
map-as="RequestMessageHeaderCore" ordered="false"/> </mapping> <mapping \
abstract="true" type-name="RMH" \
class="com.RequestMessageHeader" extends="com.ejada.MessageBody" \
ordered="false"> </mapping> <mapping name="MessageBody" \
class="com.MessageBody"> <structure name="Body" field="bodyCore" \
map-as="AuthenticateUserReqMsgCore" ordered="false" /> </mapping> <mapping \
abstract="true" type-name="RequestMessageHeaderCore" \
class="com.RequestMessageHeaderCore"> <value name="FuncId" field="funcId" \
/> <value name="RqMode" field="rqMode" /> <value name="UsrId" field="userId" \
/> </mapping> </binding> I got the following error:
Error: factory-method needed for abstract type 'com.RequestMessage'; on mapping \
element at (line 4, col 70, in authenticateUser-binding.xml)Warning: Only concrete \
mappings should be 'leaf' mappings for extensions; you should either remove 'extends' \
attribute or add concrete extension mappings for this abstract mapping; on mapping \
element at (line 22, col 75, in authenticateUser-binding.xml)Error: factory-method \
needed for abstract type 'com.MessageHeader'; on mapping element at (line 25, col 85, \
in authenticateUser-binding.xml)Warning: Only concrete mappings should be 'leaf' \
mappings for extensions; you should either remove 'extends' attribute or add concrete \
extension mappings for this abstract mapping; on mapping element at (line 30, col 73, \
in authenticateUser-binding.xml)Error: factory-method needed for abstract type \
'com.MessageBody'; on mapping element at (line 34, col 81, in \
authenticateUser-binding.xml) I appreciate any support, I cant locate any document \
related to jibx with java generics which I think is the main issue. Regards..
M Osman
[Attachment #5 (text/html)]
<html>
<head>
</head>
<body class='hmmessage'><div dir='ltr'>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style>
<div dir="ltr">Dear all,<div><br></div><div>I have the following java class \
structure:</div><div><div><br></div><div>public abstract class RequestMessage <MBC \
extends MessageBodyCore> <span style="font-size: 12pt;">extends \
Message<RequestMessageHeader, RequestMessageBody<MBC>> \
{</span></div><div><span class="Apple-tab-span" style="white-space: \
pre;"> </span><span style="font-size: 12pt;">public RequestMessage() \
{</span></div><div><span class="Apple-tab-span" style="white-space: \
pre;"> </span>this.setMessageHeader(new RequestMessageHeader());</div><div><span \
class="Apple-tab-span" style="white-space: pre;"> </span>this.setMessageBody(new \
RequestMessageBody<MBC>());</div><div><span class="Apple-tab-span" \
style="white-space: pre;"> </span>}</div><div>}</div></div><div><br></div><div><div>public \
class AuthenticateUserReqMsg extends RequestMessage<AuthenticateUserReqMsgCore> \
{</div><div><span class="Apple-tab-span" style="white-space: pre;"> </span>public \
AuthenticateUserReqMsg() {</div><div><span class="Apple-tab-span" style="white-space: \
pre;"> </span>super();</div><div><span class="Apple-tab-span" style="white-space: \
pre;"> </span>}</div><div>}</div><div><br></div><div><div>public class \
AuthenticateUserReqMsgCore implements MessageBodyCore {</div><div><span \
class="Apple-tab-span" style="white-space: pre;"> </span>protected UserCredential \
userCredential;</div></div><div> // getters and \
setters</div><div>}</div></div><div><br></div><div><div>public abstract class Message \
<MH extends MessageHeader, MB extends MessageBody> {</div><div><span \
class="Apple-tab-span" style="font-size: 12pt; white-space: pre;"> </span><span \
style="font-size: 12pt;">MH messageHeader;</span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span>MB \
messageBody;</div></div><div> // getters and \
setters</div><div>}</div><div><br></div><div>Required classes as \
following:</div><div><br></div><div><div><div>public abstract class MessageHeader \
<MHC extends MessageHeaderCore> {</div><div><span class="Apple-tab-span" \
style="white-space: pre;"> </span>MHC headerCore;</div></div><div> \
//getter and \
setter</div><div>}</div></div><div><br></div><div><div>public abstract class \
MessageBody <MBC extends MessageBodyCore>{</div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><span style="font-size: \
12pt;">MBC bodyCore;</span></div></div><div><span style="font-size: 12pt;"> \
//getter and \
setter</span></div><div>}</div><div><br></div><div>public interface MessageHeaderCore \
{}</div><div>public interface MessageBodyCore {}</div><div><br></div><div><div><span \
style="font-size: 12pt;">public class RequestMessageHeader extends \
MessageHeader<RequestMessageHeaderCore> {</span><span style="font-size: \
12pt;">}</span></div><div><span style="font-size: \
12pt;"><br></span></div><div><div>public class RequestMessageHeaderCore implements \
MessageHeaderCore {<span class="Apple-tab-span" style="font-size: 12pt; white-space: \
pre;"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span>protected String userId;</div><div> \
protected int rqMode;<span class="Apple-tab-span" style="font-size: \
12pt; white-space: pre;"> </span></div><div><span class="Apple-tab-span" \
style="white-space: pre;"> </span>protected String funcId;<span \
class="Apple-tab-span" style="white-space: pre;"> </span></div></div><div> \
...</div><div> ...</div><div>// getters \
and setters</div><div>}</div><div><br></div><div><span style="font-size: \
12pt;">public class UserCredential implements Serializable{</span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span>private String \
loginName; </div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span>private String password;</div><div> \
//getters and setters</div><div>}</div><div><br></div><div>I tried the \
following binding but got below \
error:</div><div><br></div><div><div><binding></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping \
name="UsrAuthentRq" class="com.RequestMessage" </div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span> extends="com.Message" \
ordered="false"></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span></mapping><span class="Apple-tab-span" \
style="font-size: 12pt; white-space: pre;"> </span></div><div><br></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
type-name="UserCredential" class="com.UserCredential"></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><value name="loginName" \
field="loginName" /></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span><value name="password" field="password" \
/></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
type-name="AuthenticateUserReqMsgCore" \
class="com.AuthenticateUserReqMsgCore"><span class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span><structure name="UserCredential" \
field="userCredential" map-as="UserCredential" ordered="false"/><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></mapping><span \
class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><br></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
class="com.Message" ></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span> <structure \
field="messageHeader" map-as="RMH" ordered="false" /> </div><div> \
<structure field="messageBody" \
map-as="RMB" ordered="false"/></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div> <span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
type-name="RMB" class="com.ejada.commons.dao.messages.broker.RequestMessageBody"<span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" \
style="white-space:pre"> </span>extends="com.ejada.commons.dao.messages.MessageHeader" \
ordered="false"><span class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping \
name="MessageHeader" class="com.MessageHeader"><span class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span><structure name="MsgRqHdr" field="headerCore" \
map-as="RequestMessageHeaderCore" ordered="false"/></div><div><span \
class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
type-name="RMH" class="com.RequestMessageHeader"<span class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span>extends="com.ejada.MessageBody" \
ordered="false"><span class="Apple-tab-span" style="font-size: 12pt; white-space: \
pre;"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping name="MessageBody" \
class="com.MessageBody"><span class="Apple-tab-span" \
style="white-space:pre"> </span></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span><structure name="Body" field="bodyCore" \
map-as="AuthenticateUserReqMsgCore" ordered="false" /></div><div><span \
class="Apple-tab-span" \
style="white-space:pre"> </span></mapping></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><mapping abstract="true" \
type-name="RequestMessageHeaderCore" <span class="Apple-tab-span" \
style="font-size: 12pt; white-space: pre;"> </span><span style="font-size: \
12pt;">class="com.RequestMessageHeaderCore"></span><span class="Apple-tab-span" \
style="font-size: 12pt; white-space: pre;"> </span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" \
style="font-size: 12pt; white-space: pre;"> </span><span style="font-size: \
12pt;"><value name="FuncId" field="funcId" /></span></div><div><span \
class="Apple-tab-span" style="white-space:pre"> </span><value name="RqMode" \
field="rqMode" /></div><div><span class="Apple-tab-span" \
style="white-space:pre"> </span><value name="UsrId" field="userId" \
/></div><div><span class="Apple-tab-span" style="white-space:pre"> </span><span \
style="font-size: 12pt;"></mapping></span></div><div><span \
class="Apple-tab-span" \
style="white-space:pre"> </span></div><div></binding></div></div><div><br></div><div>I \
got the following error:</div><div><br></div><div><div>Error: factory-method needed \
for abstract type 'com.RequestMessage'; on mapping element at (line 4, col 70, in \
authenticateUser-binding.xml)</div><div>Warning: Only concrete mappings should be \
'leaf' mappings for extensions; you should either remove 'extends' attribute or add \
concrete extension mappings for this abstract mapping; on mapping element at (line \
22, col 75, in authenticateUser-binding.xml)</div><div>Error: factory-method needed \
for abstract type 'com.MessageHeader'; on mapping element at (line 25, col 85, in \
authenticateUser-binding.xml)</div><div>Warning: Only concrete mappings should be \
'leaf' mappings for extensions; you should either remove 'extends' attribute or add \
concrete extension mappings for this abstract mapping; on mapping element at (line \
30, col 73, in authenticateUser-binding.xml)</div><div>Error: factory-method needed \
for abstract type 'com.MessageBody'; on mapping element at (line 34, col 81, in \
authenticateUser-binding.xml)</div></div><div><br></div><div>I appreciate any \
support, I cant locate any document related to jibx with java generics which I \
think is the main issue.</div><div><br></div>Regards..<br>M Osman</div></div> \
</div></body> </html>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic