ant elder wrote:
I'm messing about trying to add a new binding to Tuscany but can't get it to
work. There must be something I'm missing to register the new binding SCDL
as all I get is the exception below saying "Feature 'binding.ajax' not
found". Could  someone have a quick look if its something obvious? The
code's up at http://svn.apache.org/repos/asf/incubator/tuscany/sandbox/ant/,
the AJAXAssemblyLoaderTestCase shows the problem.

Thanks,

   ...ant

java.lang.RuntimeException:
file:/C:/SCA/SVN/WORK/sca/binding.ajax/bin/org/apache/tuscany/binding/ajax/assembly/tests/sca.module
    at org.apache.tuscany.model.scdl.loader.impl.SCDLXMLReader.getRootObject
(SCDLXMLReader.java:103)
    at org.apache.tuscany.model.scdl.loader.impl.SCDLXMLReader.getModule(
SCDLXMLReader.java:61)
    at
org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl.loadModule
(SCDLAssemblyModelLoaderImpl.java:101)
    at
org.apache.tuscany.binding.ajax.assembly.tests.AJAXAssemblyLoaderTestCase.testLoader
(AJAXAssemblyLoaderTestCase.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:478)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:344)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:196)
Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:Feature '
binding.ajax' not found. (http:///temp.xml, 23, 24)
    at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:283)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(
XMLResourceImpl.java:646)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.load(
XMLResourceImpl.java:614)
    at org.apache.tuscany.sdo.helper.XMLDocumentImpl.load(
XMLDocumentImpl.java:246)
    at org.apache.tuscany.sdo.helper.XMLDocumentImpl.load(
XMLDocumentImpl.java:225)
    at org.apache.tuscany.sdo.helper.XMLHelperImpl.load(XMLHelperImpl.java
:72)
    at org.apache.tuscany.sdo.helper.XMLHelperImpl.load(XMLHelperImpl.java
:66)
    at org.apache.tuscany.model.scdl.loader.impl.SCDLXMLReader.getRootObject
(SCDLXMLReader.java:100)
    ... 18 more

Ant,

Good news, I took a look at your AJAX binding in your sandbox and was able to get your test case working... You just had a few minor problems in your XSD, missing a namespace prefix declaration, and some left-over references to axis2.

I am committing the fixes for you. Here are the details:
- In sca-binding-ajax.xsd, removed the <include location="sca-core.xsd"/> which actually included a copy of the whole SCDL schema in your Ajax binding namespace. This is not necessary, instead the base SCDL XSD needs to be correctly imported so that your AJAXBinding can extend the correct base SCDL Binding type. - Fixed the location attribute in the <import location=".... sca-core.xsd"> to a correct relative location pointing to sca-core.xsd in the java/sca/model project from your sandbox/ant/binding.ajax. - In sca.module, added an ajax namespace prefix declaration for your Ajax binding namespace and changed <binding.ajax/> to <ajax:binding.ajax/>. - Changed the left over references to axis2 to ajax in sca.module and the test case itself.

Hope this helps...

--
Jean-Sebastien

Reply via email to