View Javadoc

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   /**
9    * 
10   */
11  package it.imolinfo.jbi4cics.service;
12  
13  import it.imolinfo.jbi4cics.configuration.ConfigurationManager;
14  import it.imolinfo.jbi4cics.connection.ConnectionManager;
15  import it.imolinfo.jbi4cics.connection.ConnectionManagerFactory;
16  import it.imolinfo.jbi4cics.exception.Jbi4cicsException;
17  import it.imolinfo.jbi4cics.locator.ServiceLocation;
18  import it.imolinfo.jbi4cics.locator.ServiceLocator;
19  import it.imolinfo.jbi4cics.locator.ServiceLocatorFactory;
20  import it.imolinfo.jbi4cics.messageformat.MessageFormatter;
21  import it.imolinfo.jbi4cics.messageformat.MessageFormatterFactory;
22  import it.imolinfo.jbi4cics.security.Account;
23  import it.imolinfo.jbi4cics.security.SecurityManager;
24  import it.imolinfo.jbi4cics.security.SecurityManagerFactory;
25  
26  /**
27   * @author raffaele
28   *
29   */
30  public class ServiceManager {
31  	
32  	/**
33  	 * void constructor.
34  	 */
35  	  public ServiceManager(){
36  	  }
37  	
38  	public Object handleService(String name, Object input) throws Jbi4cicsException{
39  		
40  		ConfigurationManager configurationManager=ConfigurationManager.getConfigurationManager();
41  		
42  		// creo il service context che conterra lo stato del servizio per tutto
43  		// passando al configuration manager il nome del servizio e il bean di input
44  		ServiceContext serviceContext=configurationManager.createServiceContext(name,input);
45  		
46  		//creo il localizzatore per questo servizio servizio mediante la factory
47  		ServiceLocator serviceLocator=ServiceLocatorFactory.createLocator(serviceContext);
48  		
49  		//localizzo il servizio
50  		ServiceLocation serviceLocation=serviceLocator.locateService(serviceContext);
51  		
52  		//memorizzo la service locaion nel service context
53  		serviceContext.setServiceLocation(serviceLocation);
54  		
55  		//creo il security manager per questo servizio mediante la factory
56  		SecurityManager securityManager=SecurityManagerFactory.createSecurityManager(serviceContext);
57  		
58  		//ottengo un account valido per questo servizio
59  		Account account=securityManager.getAccount(serviceContext);
60  		
61  		//memorizzo l'account nel service context
62  		serviceContext.setAccount(account);
63  		
64  		//creo il message formatter per questo servizio mediante la factory
65  		MessageFormatter inputMessageFormatter=MessageFormatterFactory.createMessageFormatter(serviceContext,true);
66  		
67  		//mappo l'input bean nel messaggio di input alla risorsa legacy
68      inputMessageFormatter.mapInputBeanToInputMessage(serviceContext);
69  		
70  		//creo il connection manager per questo servizio mediante la factory
71  		ConnectionManager connectionManager=ConnectionManagerFactory.createConnectionManager(serviceContext);
72  		
73  		//eseguo la chiamata ottenendo il messaggio di output
74  		connectionManager.handleCall(serviceContext);		
75      
76      //creo il message formatter per questo servizio mediante la factory
77      MessageFormatter outputMessageFormatter=MessageFormatterFactory.createMessageFormatter(serviceContext,false);
78  		
79  		//mappo il messaggio di output nell output Bean
80      outputMessageFormatter.mapOutputMessageToOutputBean(serviceContext);
81  		
82  		//restituisco l'output bean
83  		return serviceContext.getOutputBean();
84  	}
85  
86  }