RAD Plug-in for Migrating from STRUTS to SPRING · PDF fileRAD Plug-in for Migrating from...
Transcript of RAD Plug-in for Migrating from STRUTS to SPRING · PDF fileRAD Plug-in for Migrating from...
IBM Rational SoftwareDevelopment Conference 2006
© 2006 IBM Corporation
®
RAD PlugRAD Plug--in for Migrating from in for Migrating from STRUTS to SPRINGSTRUTS to SPRING
By Sourav SenguptaSourav Sengupta
L&T Infotech – “Building relationships globally”
IBM Rational Software Development Conference 2006
AM13
Presenters
Devendra RajputSr. Software Engineer,
L&T Infotech
Makarand HiralikarDeputy Head – Technology Solutions,
L&T Infotech
IBM Rational Software Development Conference 2006
AM13
���������������� ����������������
�� ���������� ���������������
���� ���� ��� �����
�� ���������� ��������������
�� ��������������
Agenda
���� ��� � ���
IBM Rational Software Development Conference 2006
AM13
Technology Accelerators @ L&T Infotech
MarketAnalysis
Technology Solutions
Strategy
DomainCompetency
Delivery Engine
Industry Bodies
Technology Leaders
ConsultingOrganizations
Leading Analysts
Consulting
Alliances
Affiliations
Interaction
IBM Rational Software Development Conference 2006
AM13
Technology Accelerators @ L&T Infotech
Code MigrationCode Migration
Technology AcceleratorsTechnology Accelerators
SDLC HelpersSDLC Helpers
Industry Solution FrameworksIndustry Solution Frameworks
Cobol to JavaCobol to Java
Struts to Spring (vice versa)Struts to Spring (vice versa)
IBM Rational Software Development Conference 2006
AM13
�� ��������������
IBM Rational Software Development Conference 2006
AM13
! ��� "�������
� Framework• Basic architecture for designing a complex application
• Helps in reducing the complexities
• Enhances the concept of reusability along with the basic principles of design pattern
� MVC ( Model View Controller) Framework • Design paradigm, originated in the Smalltalk community
• Separates Business logic/state (the Model) from User Interface (the View) and program progression/flow (the Control)
• Model: Represents the data in the system
• View: How data is represented to the user
• Controller: Responsible for controlling the flow of the program
Framework Overview -
IBM Rational Software Development Conference 2006
AM13
�������������#"
� Struts Framework� Based on MVC architecture
� Model – Business Services
� Transfer Objects Business Services populate and return Transfer Objects
� View – JSPs, ActionForms
� JSP queries ActionForm for form data
� Controller – ActionServlet, Actions
� ActionServlet delegates control to Action class instances
� Spring Framework � DispatcherServlet - Spring’s Front Controller implementation
� Encapsulates navigation logic & delegates to the service objects for business logic
� View- JSP’s
� ModelAndView - Created by the Controller
� Stores the Model data & associates a View to the request
� Can be a physical View implementation or a logical View name
� ViewResolver - Maps logical View names to actual View implementations
� HandlerMapping-Strategy interface used by DispatcherServlet for mapping incoming requests to individual Controllers
Framework Overview -
IBM Rational Software Development Conference 2006
AM13
����� ������� ��������������������������������������� ����� ���� ����������������
����� �� �� � �������������!�����"�� ���������������#�������������$������ ����� ���� �
����������� �������
%����� �
�����������������������#� ��� �������������������������$ &��'��������#� ���� ����� '�� ���$���( �' ����)����'���
�����������������������!���* (��� ��������� ��������( �' �������
���� '�
�+ �,�����������������'�-��'��.�,, ���� $/������.�'�"�' $�!���* (��� ������ ����� ���*��� ��
�"�� ��������"�� ����"�� ��.�,, ����"�� �����$��'��"�� ��0������"�� ��������/������.��������!���* (��� ������ ����� ���*��� ��
.�����,�����
$%&�'($�&)�$
Comparison – STRUTS & SPRING
IBM Rational Software Development Conference 2006
AM13
�*���$������$��������'���,��
�.����(��������( �������� ����������������������
��(������� ����� ���� ��
�/ � '� ��� �������������
� �����(����'�,� ����� �� ����(1���
� 0������������,,����� ������ ���,� ���
� + �� �����������
� ������ ������ �������
���2�
�3�������(�����1������������(�� �����(1����
�3 ��(� ��� ����� '�� �����'���������'� ��
���� (����,, ����������������������1����4/*�,�������
�#� �'�������,�����,� ������� �����������������$��� ����� ����� �������� ������� ��
�0����������"5����'�������,� ���������� ��$(�� �
����$������$��������'���,��
���,,���'�(������������
�6��'��,���� �������������
���2�
$%&�'($�&)�$
Comparison Contd…
IBM Rational Software Development Conference 2006
AM13
�� ���������� ��������������
IBM Rational Software Development Conference 2006
AM13
Framework Migration Methodology� A simple struts application can be divided into 6 categories
� JSP * (ex- login.jsp)� Action Classes (ex- LoginAction.java)� Form Beans (ex- LoginForm.java) � TagLibs (ex- struts-html. tld)
� Config Files (ex – Web.xml, struts-config. xml)� Library Files (ex- struts.jar)
� Step 1: Face Lift ( JSP’s )� Any struts specific tag is to be converted to it’s corresponding simple HTML tag
� Step 2: Organ Transplant ( Form beans) � change the existing Form beans to Command Classes
� Step 3: Heart Transplant (Action Classes)� Change the existing Action Classes to Controller Classes
� Step 4: Brain Transplant (XML’s)� Change the struts specific config files to spring specific config files
� Step 5: Blood Transfusion� Add spring specific jars in lib folder of the application
������������������
IBM Rational Software Development Conference 2006
AM13
� Step 1: Face Lift ( JSP’s ) : Changing Struts specific tags to simple HTML Tags in JSP
� JSP’s in a Struts application can contain Struts specific tags where as JSP’s in a Spring application contains simple HTML tags.
��� &��� ����*� ����*� "�������
$���������� ��
7����8����,��,���9:������: ;
7 �,�����,9:���:�����9:������:� ;
7����8,���$��'��,��,���9:,���$��': ;
7 �,�����,9:,���$��':���9:,���$��': ;
7����8��(� � ; 7 �,�����,9:��(� �:� ;
7����8�������� ��9: ��� �:; 7���� ��� ��9: 7�,,� ��� ��<����������; ��� �����: ;
+$��� �� /�� ������ ��(��������$����
���+$%� ��
/�� ������ ��(��������$����
Five Step Methodology
IBM Rational Software Development Conference 2006
AM13
� Step 2: Organ Transplant : Changing Struts Form Beans to Spring Command Classes � Struts provide FormBeans as interface between the JSP and the controller servlet.
In Spring these are replaced by POJO (Plain Old Java Objects) Command Classes.
� Form beans extend the ActionForm class of struts framework. POJO Command Classes do not extend any class
��$����� ��$�����
,�(� ��������*�� ����� ���'��"�� �������=>���?
,�(� ��������*�� �������'=�>���?
Five Step Methodology
IBM Rational Software Development Conference 2006
AM13
� Step 3: Heart Transplant: Changing Struts Action classes to Spring Controller classes
� Struts provide ActionServlet by default as the controller where as in Spring the default controller is DispatcherServlet
� Spring has different controllers which handle individual modules. These can be seen as replacement for Action Classes
$������������� ����*���,����� ��� ����*�
���'��"�� �� ���'��� �,��������������
3��8���������������(�� �,����������������������������������������������������������������� ��(��
,�(� ��"�� �����$��'�����"�� ��.�,, ����,, ���"�� ������������-��,�����/)����)����-��,�����/�,�����,�����
=�
,�����'�.�'�"�' $����(� ��-��,�����/)����)�����-��,�����/�,�����,����5(1�����'�# �'0��,� ���,��
����$��0��,� ���=
@������ ������� 9��@������������A @��������'�����'B�9��@��������'����'A
B3��8������' ��������������������� �A� ��$ ����,����
C�������D $��������'�� ���� ��1����� �
��������,, ���� �'���$��'�:������ :�A �������$�.�'�"�' $��������� $���A
��������,, ���� �'���$��'�:�� ���:�A �������$�.�'�"�' $������� $���A
Five Step Methodology
IBM Rational Software Development Conference 2006
AM13
� Step 4: Brain Transplant : Changing Struts Configuration files to Spring Configuration files
� Struts use web.xml & struts-config.xml to direct the flow of the application
$�����-������.*�� ��*���,����� ��� ����*�
7������<���� �;��7 ������<���� �;� 7(���;�7 (���;
<forward name="sucess" path="/form/yyy.jsp" />
<property name="successView"><value>yyy</value>
</property>
<forward name="failure" path="/form/zzz.jsp" />
<property name=" formView"><value>zzz</value>
</property>
&��� �� ���� ���
"�� �� 7�����<���;action/0�������1� ��2 @���� � � ������������������<����������
3��8�%�������'��,�����������C���D �����<����������(��C��� ��D�����
Action 7�����<��,, ��;
7�����<���;action/0�������1� ��27���<,�����;*.do/0���1� �����2
7 �����<��,, ��;
���
*.do B����
Five Step Methodology
IBM Rational Software Development Conference 2006
AM13
� Step 5: Blood Transfusion : Replacing Struts jar files with Spring jar files
� Removing the struts specific jars (struts.jar, struts-legacy.jar etc)
� Adding Spring specific jars (standard.jar, spring.jar etc) into lib folder of the
application.
� All *.tld remain same
� Updating classpath entry
Five Step Methodology
IBM Rational Software Development Conference 2006
AM13
�� ���������� ���������������
IBM Rational Software Development Conference 2006
AM13
File Locator
Checks
Ip/op framework
Ip project folder files
MappingJSP Parser
Other Parser(e.g. .property)
Config
WEB
XML Parser
Form
Action
JAVA ParserFile Converter
Checks
File types
Calls parsersCreatorWriter
Struts
project
Spring
project
Denotes Plug-able component
Framework Migrator Architecture
Highlights
�Foundation for more conversions
�2-way conversion possible
�Mappings are flexible, outside code
�Pluggable parcels
�Folder structure defined in mapping DB
IBM Rational Software Development Conference 2006
AM13
Architecture details
� File Locator
� Checks the input project folder is struts or spring
� Checks the input project folder structure & files
� Stores Input & Output project folder path in mapping database
� File Converter
� Checks file types
� Calls appropriate File parsers
� File Parsers
� Individual parsers for individual file types
� Converts struts related tags, codes etc to spring equivalent
� File Creator
� Creates Spring project folders structure
� Copies converted files to appropriate folders
IBM Rational Software Development Conference 2006
AM13
���� ���� ��� �����
IBM Rational Software Development Conference 2006
AM13
J2EE Framework Migrator
� A Plug-in (MIGRATOR) which is compatible with Eclipse
� It can convert an application from Struts to Spring
� Easy to install & enhance
Features
� This plug-in reduces certain overheads :
� Creating new Folder Structure according to
the migrated framework.
� Installing related Jars of migrated framework
� Converting Configuration files from one framework to other.
� Converting one Framework specific tags to other framework specific tags
� Converting Framework specific code
Operational Features
IBM Rational Software Development Conference 2006
AM13
Plug-in Development Environment
� Eclipse has provided an API for plug-in development (PDE) for RAD, which is used to develop MIGRATOR Plug-in.
� This helps it to plug in various different IDE’s like Rational Application Developer (RAD), WebsphereApplication Developer (WSAD), Netbeans, and Eclipse 3.0.
What does this plug-in do?� Creates framework specific Folder structure
� Places all framework specific jars in lib folder
� Converts framework specific code of JSP’s, Form beans, Action Classes
� Creates/Converts framework specific configuration XML’s
� Places all the converted files in appropriate folder
IBM Rational Software Development Conference 2006
AM13
� Migrator can be installed on any eclipse based IDE or NetBeans IDE using the Installer provided.
� There are two ways to start Migrator
Installing Migrator Plug-in
IBM Rational Software Development Conference 2006
AM13
� Phase-wise capability in terms of effectiveness of migrating a simple application from Struts to Spring
Phase in Migration Plug in Capability
Face Lift 50%
Organ Transplant 90%
Heart Transplant 30%
Brain Transplant 20%
Blood Transfusion 90%
� Overall the MIGRATOR Plug-in is capable to reduce 70% (approx) of the manual efforts in migrating a simple Struts application to Spring. Further enhancements may increase the level of automation.
Migrator Plug-in Capability
IBM Rational Software Development Conference 2006
AM13
���� ��� � ���
IBM Rational Software Development Conference 2006
AM13
Creator Classes
IBM Rational Software Development Conference 2006
AM13
File Converter and Locator Classes
IBM Rational Software Development Conference 2006
AM13
File Parsers
IBM Rational Software Development Conference 2006
AM13
Mapping Database
IBM Rational Software Development Conference 2006
AM13
Mapping Database
IBM Rational Software Development Conference 2006
AM13
Demo
IBM Rational Software Development Conference 2006
AM13
Migrator UI
IBM Rational Software Development Conference 2006
AM13
JSP with Struts tags (Before migration)
IBM Rational Software Development Conference 2006
AM13
Spring JSP (After migration)
IBM Rational Software Development Conference 2006
AM13
Migration Summary
IBM Rational Software Development Conference 2006
AM13
� Presently MIGRATOR plug-in is capable of migrating simple applications in
Struts to Spring, for more complex applications
� It can be enhanced to migrate areas such as
� Struts tld library
� Logic tags
� Validation framework
� Error handling
� Database Mapping
� Other Controllers of Spring
Further Enhancements
IBM Rational Software Development Conference 2006
AM13
� It only handles SimpleCommandController
� findForward("sucess") , “success” is user defined tag which cannot be pre assumed for
success or failure views. So after conversion both the statements of Success & Failure are inserted in comment , the programmer can choose the statement according to the view required
� Some closing tags are missed out or not in proper place , the programmer must ensure it before executing
� Programmer has to handle logical flow of the application as migrator handles only
framework specific code
Known Issues
IBM Rational Software Development Conference 2006
AM13
Questions
IBM Rational Software Development Conference 2006
AM13
[email protected]@[email protected]
Thank You