1   /*******************************************************************************
2    *  Copyright (c) 2005, 2006 Imola Informatica.
3    *  All rights reserved. This program and the accompanying materials
4    *  are made available under the terms of the LGPL License v2.1
5    *  which accompanies this distribution, and is available at
6    *  http://www.gnu.org/licenses/lgpl.html
7    *******************************************************************************/
8   package it.imolinfo.jbi4cics.test.webservices.runtime;
9   
10  import it.imolinfo.jbi4cics.commareaparser.CommareaLexer;
11  import it.imolinfo.jbi4cics.commareaparser.CommareaParser;
12  import it.imolinfo.jbi4cics.jbi.BCELClassLoader;
13  import it.imolinfo.jbi4cics.messageformat.commarea.CommareaBeanMappingDescriptor;
14  import it.imolinfo.jbi4cics.test.BaseCommareaTest;
15  import it.imolinfo.jbi4cics.webservices.descriptor.ServiceDescriptor;
16  import it.imolinfo.jbi4cics.webservices.runtime.ServiceCreator;
17  import it.imolinfo.jbi4cics.webservices.utils.generators.ServiceBeanGenerator;
18  import it.imolinfo.jbi4cics.webservices.utils.generators.ServiceInterfaceGenerator;
19  
20  import java.io.FileInputStream;
21  import java.io.InputStream;
22  
23  import org.apache.commons.logging.Log;
24  import org.apache.commons.logging.LogFactory;
25  import org.codehaus.xfire.XFire;
26  import org.codehaus.xfire.XFireFactory;
27  import org.codehaus.xfire.service.Service;
28  
29  
30  public class NestedServiceCreatorTest extends BaseCommareaTest {
31    private static Log log = LogFactory.getLog(NestedServiceCreatorTest.class);
32  
33  
34  
35    public NestedServiceCreatorTest(String arg) {
36      super(arg);
37    }
38    
39    public void testNestedServiceCreator() {
40      try {
41        // genero il mapping descriptor
42        InputStream is = new FileInputStream(testRootCommarea + "/" + "NestedCommarea.txt");
43        CommareaLexer lexer = new CommareaLexer(is);
44        CommareaParser parser = new CommareaParser(lexer);
45        CommareaBeanMappingDescriptor commareaBeanMappingDescriptor = parser.commarea_definition();
46        log.info("commareaBeanMappingDescriptor: " + commareaBeanMappingDescriptor);
47  
48        // creo il service desciptor
49        ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
50  
51        serviceDescriptor.setOperationName("provaOperation");
52        serviceDescriptor.setServiceName("ProvaService");
53        serviceDescriptor.setServiceInterfacePackageName("it.imolinfo.jbi4cics.test.webservices.utils.generators");
54        serviceDescriptor.setServiceInterfaceName("ProvaServiceBeanInterface");
55        serviceDescriptor.setServiceNameSpace("urn:it.imolinfo.jbi4cics.test.webservices.utils.generators");
56        serviceDescriptor.setInputBeanClassName("ProvaServiceBean");
57        serviceDescriptor.setOutputBeanClassName("ProvaServiceBean");
58        serviceDescriptor.setInputMappingDescriptor(commareaBeanMappingDescriptor);
59        serviceDescriptor.setOutputMappingDescriptor(commareaBeanMappingDescriptor);
60  
61        // creo il service bean
62        BCELClassLoader bcelClassLoader = new BCELClassLoader(Thread.currentThread().getContextClassLoader());
63        ServiceBeanGenerator serviceBeanGenerator = new ServiceBeanGenerator(serviceDescriptor, true);
64        serviceBeanGenerator.generateBeanClass(bcelClassLoader);
65  
66        // creo la service interface
67        ServiceInterfaceGenerator serviceInterfaceGenerator = new ServiceInterfaceGenerator(serviceDescriptor);
68        serviceInterfaceGenerator.generateServiceInterface(bcelClassLoader);
69        XFire xfire = XFireFactory.newInstance().getXFire();
70        ServiceCreator serviceCreator = new ServiceCreator();
71        Service service = serviceCreator.createService(serviceDescriptor, xfire);
72        log.debug("servizio creato: " + service);
73  
74        // TODO fare degli assert ragionevoli
75  
76      } catch (Throwable e) {
77        log.error("errore in test testNestedServiceCreator", e);
78        fail(e.getMessage());
79      }
80    }
81    
82    public void testNested3ServiceCreator() {
83      try {
84        // genero il mapping descriptor
85        InputStream is = new FileInputStream(testRootCommarea + "/" + "NestedCommarea3.txt");
86        CommareaLexer lexer = new CommareaLexer(is);
87        CommareaParser parser = new CommareaParser(lexer);
88        CommareaBeanMappingDescriptor commareaBeanMappingDescriptor = parser.commarea_definition();
89        log.info("commareaBeanMappingDescriptor: " + commareaBeanMappingDescriptor);
90  
91        // creo il service desciptor
92        ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
93  
94        serviceDescriptor.setOperationName("provaOperation");
95        serviceDescriptor.setServiceName("ProvaService");
96        serviceDescriptor.setServiceInterfacePackageName("it.imolinfo.jbi4cics.test.webservices.utils.generators");
97        serviceDescriptor.setServiceInterfaceName("ProvaServiceBeanInterface");
98        serviceDescriptor.setServiceNameSpace("urn:it.imolinfo.jbi4cics.test.webservices.utils.generators");
99        serviceDescriptor.setInputBeanClassName("ProvaServiceBean");
100       serviceDescriptor.setOutputBeanClassName("ProvaServiceBean");
101       serviceDescriptor.setInputMappingDescriptor(commareaBeanMappingDescriptor);
102       serviceDescriptor.setOutputMappingDescriptor(commareaBeanMappingDescriptor);
103 
104       // creo il service bean
105       BCELClassLoader bcelClassLoader = new BCELClassLoader(Thread.currentThread().getContextClassLoader());
106       ServiceBeanGenerator serviceBeanGenerator = new ServiceBeanGenerator(serviceDescriptor, true);
107       serviceBeanGenerator.generateBeanClass(bcelClassLoader);
108 
109       // creo la service interface
110       ServiceInterfaceGenerator serviceInterfaceGenerator = new ServiceInterfaceGenerator(serviceDescriptor);
111       serviceInterfaceGenerator.generateServiceInterface(bcelClassLoader);
112       XFire xfire = XFireFactory.newInstance().getXFire();
113       ServiceCreator serviceCreator = new ServiceCreator();
114       Service service = serviceCreator.createService(serviceDescriptor, xfire);
115       log.debug("servizio creato: " + service);
116 
117       // TODO fare degli assert ragionevoli
118 
119     } catch (Throwable e) {
120       log.error("errore in test testNestedServiceCreator", e);
121       fail(e.getMessage());
122     }
123   }  
124 
125 }