On Thu, Apr 29, 2010 at 12:45 PM, Simon Laws <simonsl...@googlemail.com> wrote: > On Tue, Apr 27, 2010 at 10:27 PM, Juan Pablo Pizarro > <juanpablo.piza...@gmail.com> wrote: >> Simon, I'm trying to complete the restaurant exmple, but if you tell me that >> the calculator is better case I start with that. I attach my project. I have >> the restaurant.composite into com.casa.comp.restaurant. >> >> My implementation is in com.casa.comp.restaurant.impl and my interfaces in >> com.casa.comp.restaurant.api. >> >> I will try the calculator too, but I'm courios about the restorant issue >> too. >> >> Thanks! >> >> >> >> 2010/4/27 Simon Laws <simonsl...@googlemail.com> >>> >>> On Mon, Apr 26, 2010 at 7:43 PM, Juan Pablo Pizarro >>> <juanpablo.piza...@gmail.com> wrote: >>> > Hello Simon!, I'm trying to run a example that saw in the documentation. >>> > I >>> > write restaurant application, services, etc. I write a test case to run >>> > the >>> > application and I found a error: >>> > >>> > org.oasisopen.sca.ServiceRuntimeException: No SCA contributions are >>> > found on >>> > the classpath >>> > at >>> > org.apache.tuscany.sca.node.NodeFactory.createNode(NodeFactory.java:289) >>> > at >>> > >>> > com.casa.comp.restaurant.RestaurantTest.testService(RestaurantTest.java:18) >>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> > at >>> > >>> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> > at >>> > >>> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> > at java.lang.reflect.Method.invoke(Method.java:597) >>> > at junit.framework.TestCase.runTest(TestCase.java:168) >>> > at junit.framework.TestCase.runBare(TestCase.java:134) >>> > at junit.framework.TestResult$1.protect(TestResult.java:110) >>> > at junit.framework.TestResult.runProtected(TestResult.java:128) >>> > at junit.framework.TestResult.run(TestResult.java:113) >>> > at junit.framework.TestCase.run(TestCase.java:124) >>> > at junit.framework.TestSuite.runTest(TestSuite.java:232) >>> > at junit.framework.TestSuite.run(TestSuite.java:227) >>> > at >>> > >>> > org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >>> > at >>> > >>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >>> > >>> > >>> > My test case: >>> > >>> > public void testService() throws Exception { >>> > >>> > Node node = >>> > NodeFactory.newInstance().createNode("Restaurant.composite").start(); >>> > RestaurantService restaurantService = >>> > node.getService(RestaurantService.class, "RestaurantServiceComponent"); >>> > >>> > Menu[] menus = restaurantService.getMenus(); >>> > >>> > System.out.println("--- Menu ---"); >>> > for (Menu m : menus) { >>> > System.out.println("- " + m.printMenu()); >>> > } >>> > >>> > System.out.println(); >>> > Menu menu = menus[3]; >>> > >>> > System.out.println("My choice: " + menu.printMenu()); >>> > System.out.println(); >>> > >>> > double price = restaurantService.getBill(menu); >>> > System.out.println("Price (" + menu.printMenu() + "): " + >>> > price); >>> > } >>> > >>> > >>> > Then I read that the application would be runned in a application server >>> > (OSGI specs compliant). Then I start to configure the application and I >>> > miss >>> > the launcher main class. >>> > >>> > >>> > http://wiki.eclipse.org/STP/SCA_Component/SCA_Java_Run_and_Debug_Tuscany >>> > >>> > So.. I need some guide to follow. I continue reading google things to >>> > fix my >>> > configuration. >>> > >>> > Thanks! >>> > >>> > JP >>> > >>> > >>> > >>> > >>> > >>> > >>> > 2010/4/26 Simon Laws <simonsl...@googlemail.com> >>> >> >>> >> On Mon, Apr 26, 2010 at 2:20 PM, Juan Pablo Pizarro >>> >> <juanpablo.piza...@gmail.com> wrote: >>> >> > Hi all, i'm rookie in tuscani and i need a guide or documentation. I >>> >> > saw >>> >> > the >>> >> > documentation that exists in the site, but is over old versions. I >>> >> > bought a >>> >> > book to get concepts and it is a good book, but again is based on old >>> >> > version. >>> >> > >>> >> > Have anybody a document or link about tuscani 2.x tutorial?. I use >>> >> > eclipse >>> >> > and trying to use tuscani 2.x within eclipse. >>> >> > >>> >> > Thanks.. >>> >> > >>> >> > JP >>> >> > >>> >> >>> >> Hi >>> >> >>> >> Our 2.x documentation [1] is lacking in intro and sample material at >>> >> the moment. A number of samples that the 1.x intro material is based >>> >> on have been ported over into the 2.x code base but the docs haven't >>> >> followed yet. If you're having specific problems with Eclipse post the >>> >> details here and we'll try and help out. >>> >> >>> >> [1] http://tuscany.apache.org/documentation-2x/ >>> >> >>> >> Simon >>> >> -- >>> >> Apache Tuscany committer: tuscany.apache.org >>> >> Co-author of a book about Tuscany and SCA: tuscanyinaction.com >>> > >>> > >>> >>> Hi JP >>> >>> Where is the file "Restaurant.composite" relative to the module that >>> you are using to develop the test case? Tuscany is trying to find a >>> contribution by looking for this file on the classpath. >>> >>> An SCA contribution is a hierarchical set of information such as >>> composite files, WSDLs, XSDs etc that are required to run your SCA >>> application. It could be a directory structure, a zip, a jar etc. When >>> you create the node you have to tell it which contribution to load. >>> If, for example, you look in the CalculatorTestCase of the 2.x >>> Calculator sample you see the following... >>> >>> node = NodeFactory.newInstance().createNode((String)null, new >>> String[] {"target/classes"}).start(); >>> calculatorService = node.getService(CalculatorService.class, >>> "CalculatorServiceComponent"); >>> >>> Here we loading the whole of the ./target/classes directory as the >>> contribution. We do this as this sample is build using Maven and this >>> is where Maven puts all the compiled Java classes and resources by >>> default. >>> >>> Are you able to successfully run the Calculator sample? >>> >>> Regards >>> >>> Simon >>> >>> -- >>> Apache Tuscany committer: tuscany.apache.org >>> Co-author of a book about Tuscany and SCA: tuscanyinaction.com >> >> > > OK Juan, let me take a quick look and I'll get back to you. > > Simon > > -- > Apache Tuscany committer: tuscany.apache.org > Co-author of a book about Tuscany and SCA: tuscanyinaction.com >
Hi, I took a look at this last night and there are a few changes to make to get you further.. In RestaurantTest.testService() change Node node = NodeFactory.newInstance().createNode("Restaurant.composite").start(); to Node node = NodeFactory.newInstance().createNode(new Contribution("MyRestaurantContribution", "./bin")).start(); This is being more specific about where to find the contribution in your project. This runs and reports an error about a missing property in the composite file. To fix this I first extended the TipServiceComponent description... <sca:component name="TipServiceComponent"> <sca:implementation.java class="com.casa.comp.restaurant.impl.TipServiceImpl"/> <sca:service name="TipService"> <sca:interface.java interface="com.casa.comp.restaurant.api.TipService"/> </sca:service> <!-- tipRate was missing --> <sca:property name="tipRate" value="27.13"> </sca:property> </sca:component> However in the latest code this shows up an error in the XML processing in Tuscany for some reason (I'm looking at it) so as a work around I changed the property definition to be optional.... @Property(required=false) public double tipRate = 27.13; The test case now runs. Have a go and see if you can get to the same position. I'll take a look at this XML processing issue. Regards Simon -- Apache Tuscany committer: tuscany.apache.org Co-author of a book about Tuscany and SCA: tuscanyinaction.com