[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 &lt;MBC \
extends MessageBodyCore&gt;&nbsp;<span style="font-size: 12pt;">extends \
Message&lt;RequestMessageHeader, RequestMessageBody&lt;MBC&gt;&gt; \
{</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&lt;MBC&gt;());</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&lt;AuthenticateUserReqMsgCore&gt; \
{</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>&nbsp; &nbsp; &nbsp; &nbsp; // getters and \
setters</div><div>}</div></div><div><br></div><div><div>public abstract class Message \
&lt;MH extends MessageHeader, MB extends MessageBody&gt; {</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>&nbsp; &nbsp; &nbsp; &nbsp;// 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 \
&lt;MHC extends MessageHeaderCore&gt; {</div><div><span class="Apple-tab-span" \
style="white-space: pre;">	</span>MHC headerCore;</div></div><div>&nbsp; &nbsp; \
&nbsp; &nbsp;//getter and \
setter</div><div>}</div></div><div><br></div><div><div>public abstract class \
MessageBody &lt;MBC extends MessageBodyCore&gt;{</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;">&nbsp; \
&nbsp; &nbsp; &nbsp;//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&lt;RequestMessageHeaderCore&gt; {</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>&nbsp; &nbsp; \
&nbsp; &nbsp; 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>&nbsp; \
&nbsp; &nbsp; &nbsp;...</div><div>&nbsp; &nbsp; &nbsp; &nbsp;...</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;&nbsp;</div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>private String password;</div><div>&nbsp; &nbsp; \
&nbsp; &nbsp;//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>&lt;binding&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;mapping \
name="UsrAuthentRq" class="com.RequestMessage"&nbsp;</div><div><span \
class="Apple-tab-span" style="white-space:pre">			</span> extends="com.Message" \
ordered="false"&gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;<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>&lt;mapping abstract="true" \
type-name="UserCredential" class="com.UserCredential"&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">		</span>&lt;value name="loginName" \
field="loginName" /&gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">		</span>&lt;value name="password" field="password" \
/&gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;mapping abstract="true" \
type-name="AuthenticateUserReqMsgCore" \
&nbsp;class="com.AuthenticateUserReqMsgCore"&gt;<span class="Apple-tab-span" \
style="white-space:pre">		</span></div><div><span class="Apple-tab-span" \
style="white-space:pre">		</span>&lt;structure name="UserCredential" \
field="userCredential" map-as="UserCredential" ordered="false"/&gt;<span \
class="Apple-tab-span" style="white-space:pre">		</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;/mapping&gt;<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>&lt;mapping abstract="true" \
class="com.Message" &gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>&nbsp; &nbsp; &nbsp;&lt;structure \
field="messageHeader" map-as="RMH" ordered="false" /&gt;&nbsp;</div><div>&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;structure field="messageBody"   \
map-as="RMB" ordered="false"/&gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;</div><div>&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">	</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;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"&gt;<span class="Apple-tab-span" \
style="white-space:pre">				</span></div><div><span class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;mapping \
name="MessageHeader" class="com.MessageHeader"&gt;<span class="Apple-tab-span" \
style="white-space:pre">	</span></div><div><span class="Apple-tab-span" \
style="white-space:pre">		</span>&lt;structure name="MsgRqHdr" field="headerCore" \
map-as="RequestMessageHeaderCore" ordered="false"/&gt;</div><div><span \
class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;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"&gt;<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>&lt;/mapping&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;mapping name="MessageBody" \
class="com.MessageBody"&gt;<span class="Apple-tab-span" \
style="white-space:pre">	</span></div><div><span class="Apple-tab-span" \
style="white-space:pre">		</span>&lt;structure name="Body" field="bodyCore" \
map-as="AuthenticateUserReqMsgCore" ordered="false" /&gt;</div><div><span \
class="Apple-tab-span" \
style="white-space:pre">	</span>&lt;/mapping&gt;</div><div><span \
class="Apple-tab-span" style="white-space:pre">		</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">	</span>&lt;mapping abstract="true" \
type-name="RequestMessageHeaderCore"&nbsp;<span class="Apple-tab-span" \
style="font-size: 12pt; white-space: pre;">	</span><span style="font-size: \
12pt;">class="com.RequestMessageHeaderCore"&gt;</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;">&lt;value name="FuncId" field="funcId" /&gt;</span></div><div><span \
class="Apple-tab-span" style="white-space:pre">		</span>&lt;value name="RqMode" \
field="rqMode" /&gt;</div><div><span class="Apple-tab-span" \
style="white-space:pre">		</span>&lt;value name="UsrId" field="userId" \
/&gt;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span><span \
style="font-size: 12pt;">&lt;/mapping&gt;</span></div><div><span \
class="Apple-tab-span" \
style="white-space:pre">	</span></div><div>&lt;/binding&gt;</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 &nbsp;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