Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf ·...

42
Modernizing Java Server Pages By Transformation Shannon Xu Thomas Dean Queen’s University

Transcript of Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf ·...

Page 1: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Modernizing Java Server Pages By

TransformationS h a n n o n X u

T h o m a s D e a nQ u e e n ’ s U n i v e r s i t y

Page 2: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Background CSER - Consortium for Software Engineering Research Dynamic Web Pages

Multiple Technologies - CGI, shtml, JSP, ASP, .NET Mixing Code and Data

Ok for small projects, seems to be proving a detriment to larger projects

Separate Concerns: Application Code and Graphics Design

Abstract User Interface [Schneider 2001] Custom Tags (JSP)

replaces code with abstract tags

Page 3: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

JSP Basics

Mix Java and Template Text Template Text is sent to browser

modified by inline Java HTML, Javascript, Applet Tags, CSS

Java Code + standard Actions <% for (int i = 0; i < bean.titles.length; i++) {

%> <jsp:useBean> forward pages, import classes, declare fields

and methods

Page 4: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 5: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 6: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 7: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 8: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 9: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…

<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>

CdTitle.class

Page 10: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Requirements

No Change to Functionality Identical Behaviour

No change to Appearance Same HTML / Javascript is generated

to browser Same web site structure (paths to pages) Keep Code Comments

Maintenance Issue

Page 11: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

MuiltiLingualGrammar [Synytskyy03]

HTML Base Grammar

ASPGrammar

Page 12: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

MuiltiLingualGrammar [Synytskyy03]

HTML Base Grammar

JSPGrammar

[Li 2004]

Page 13: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

MuiltiLingualGrammar [Synytskyy03]

HTML Base Grammar

JSPGrammar

Custom TagGrammar

TLD XMLGrammar

[Li 2004]

[Xu 2005]

Page 14: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%for(i=1;i<10;i++){%>

Interesting

<%=i%>

Interesting

<%}%>

Interesting

</table>

Page 15: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%for(i=1;i<10;i++){%>

Interesting

<%=i%>

Interesting

<%}%>

Interesting

</table>

Page 16: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%=i%>

<%

</table>

}

%>

for(i=1;i<10;i++){

<% %>for_statement

Page 17: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%=i%>

<%

</table>

}

%>

for(i=1;i<10;i++){

<% %>for_statement

Page 18: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%=i%>

<%

</table>

}

%>

for(i=1;i<10;i++){

<% %>for_statement

Page 19: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>

<%}%> </table>…

Interesting

<table>

Interesting

<%=i%>

<%

</table>

}

%>

for(i=1;i<10;i++){

<% %>for_statement

Page 20: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Java statements, expressions and declarations are moved to custom tag classes

HTML code moved out of Java strings

out.println(“<TR><TD>”)

%> <TR><TD> <%

General Approach

Page 21: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Java Bean action elements translated to equivalent Java Code

<jsp:useBean><jsp:getProperty><jsp:setProperty>

JSP Page import directive generates an import statement in the resulting class

<%@page import=”java.sql.ResultSet” %><% import java.sql.ResultSet; %>

General Approach

Page 22: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Normalization

4 General Cases

General Transformation

Page 23: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 1– Simple Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim(); s.putValue(“username”, userId);%></BODY></HTML>

<HTML><BODY><mylib: userSession></mylib:userSession></BODY></HTML>

Page 24: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 1b – Simple Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim();%> Welcome<% s.putValue(“username”, userId); %></BODY></HTML>

<HTML><BODY><mylib: userSession> Welcome</mylib:userSession></BODY></HTML>

Page 25: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 2 - Nested Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim(); s.putValue(“username”, userId);%>Welcome <%= username %></BODY></HTML>

<HTML><BODY><mylib: userSession> Welcome <mylib:userName/> </mylib:userSession></BODY></HTML>

Page 26: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 3 – Choice<HTML><BODY><% …

if (condition) {%> HTML TEXT <% } else {%> … }%></BODY></HTML>

Page 27: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 3 – Choice<HTML><BODY><% … bool choice = condition; if (choice) {%> HTML TEXT <% } if (!choice) {%> … }%></BODY></HTML>

Page 28: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Case 3 – Choice<HTML><BODY><mylib:checkCondition> <mylib:validCondition> HTML TEXT </mylib:validCondition> <mylib:invalidCondition> </mylib:invalidCondition></mylib:checkCondition></BODY></HTML>

Page 29: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

CASE 4 - Iteration<HTML><BODY><% … while(condition){%> HTML TEXT <%}%></BODY></HTML>

<HTML><BODY><mylib:whileCondition> HTML TEXT</mylib:whileCondition></BODY></HTML>

Page 30: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

The 4 cases compose to cover all code cases

Case 2 provides basis for nesting

tags are nested, classes are not

classes find the class for the parent tag at runtime using JSP API

Add get/set routines for variables

Composing Cases

Page 31: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Nesting Cases 4,2<HTML><BODY><% … while(condition){%> HTML <%= value %> TEXT <%}%></BODY></HTML>

<HTML><BODY><mylib:whileCondition> HTML <mylib:getValue/> TEXT</mylib:whileCondition></BODY></HTML>

Page 32: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

TXLSource Transformation LanguageGrammar + Transformation Rules

Markup ApproachIdentify key statements of each case

if statements, while statements (both with HTML text)

propagate markups to include all statements

Page 33: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Page 34: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Normalization& Lexical Issues

Page 35: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Custom Tag Identification

Page 36: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Namesfor Tags

Page 37: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Page 38: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Move to Java

Page 39: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

RemoveJava

Page 40: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Implementation

Preprocessing

Grouping

Original JSP

Naming

Postprocesing

Page and TLDClass Gen

TLD Pages Tag Classes

Comments

Page 41: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Final Words

Tested on 4 small systems (14 files)

Each case generates separate custom tags

Implementation is a greedy approach

Better separation into tags

Data and Control Flow Analys

Clones

E.g. Session management code

Page 42: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies

Questions?