Per my previous email, I've been trying to compile bindings from different 
archives using the 1.2 <include precompiled="true"/> feature.  That part seemed 
to work, it imported the mappings and didn't try to compile them again, but it 
appears that this brought another error when compiling the parent object 
containing the included mappings:

Error running binding compiler

*** Error during code generation for file 'claims-binding.xml' - please enter a
bug report for this error in Jira if the problem is not listed as fixed on the o
nline status page ***

org.jibx.runtime.JiBXException: Classloader conflict for binding 'common_message
_binding' - factory does not implement required interface
        at org.jibx.runtime.BindingDirectory.getFactory(BindingDirectory.java:27
0)
        at org.jibx.binding.def.BindingBuilder.unmarshalInclude(BindingBuilder.j
ava:2005)
        at org.jibx.binding.def.BindingBuilder.unmarshalBindingDefinition(Bindin
gBuilder.java:2084)
        at org.jibx.binding.Utility.loadBinding(Utility.java:314)
        at org.jibx.binding.Utility.loadFileBinding(Utility.java:431)
        at org.jibx.binding.Compile.compile(Compile.java:212)
        at org.jibx.binding.Compile.main(Compile.java:374)

common-message-binding is the name of the binding file obviously:

public class JiBX_common_message_bindingFactory extends BindingFactoryBase 
implements IBindingFactory
{
       private static IBindingFactory m_inst;
}

I ran the compiler command with the verbose command, and it definitely is 
pulling in the 1.2 BindingDirectory, BindingBuilder, etc. classes, and the 
including, previously compiled binding was run with the same.

Looking at the BindingDirectory code, we see this snippet:

if (result instanceof IBindingFactory) {

That if statement will evaluate to false if result == null, and there is no 
null check, so the printed stack trace might not be the actual error.  Also, is 
instanceof the best evaluator?  Wouldn't it be better to use the reflections 
api with something like:

Class clazz = Class.forName(className);
List<Class> interfacesList = Arrays.asList(clazz.getInterfaces());
if(!interfacesList.contains(IBindingFactory.class))
{
        throw new Exception(clazz.getName() + " does not implement " + 
IBindingFactory.class.getName());
}

Or

if (result != null && result instanceof IBindingFactory) {

Thanks,
Drew

----------------------------------------------------------------------
CONFIDENTIALITY NOTICE This message and any included attachments are from 
Cerner Corporation and are intended only for the addressee. The information 
contained in this message is confidential and may constitute inside or 
non-public information under international, federal, or state securities laws. 
Unauthorized forwarding, printing, copying, distribution, or use of such 
information is strictly prohibited and may be unlawful. If you are not the 
addressee, please promptly delete this message and notify the sender of the 
delivery error by e-mail or you may call Cerner's corporate offices in Kansas 
City, Missouri, U.S.A at (+1) (816)221-1024.
------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to