the core nsp type system
play

The Core NSP Type System Dirk Draheim Freie Universitt Berlin - PowerPoint PPT Presentation

The Core NSP Type System Dirk Draheim Freie Universitt Berlin Gerald Weber The University of Auckland WMR 2006 Bari Server Pages Safety Problems client page description safety: client page forms are editable description safety method


  1. The Core NSP Type System Dirk Draheim Freie Universität Berlin Gerald Weber The University of Auckland WMR 2006 Bari

  2. Server Pages Safety Problems client page description safety: client page forms are editable description safety method calls client page browser server code unit that code unit that processes processes CGI-parameters CGI-parameters and generates and generates page descriptions page descriptions

  3. JSP Counter Example <FORM ACTION="http://www.x.net/NewCustomer.jsp" method="GET"> <% for (int i=0; i<j; i++) {%> <INPUT TYPE="TEXT" NAME="customer" SIZE="20"> <%}%> <INPUT TYPE="TEXT" NAME="age" SIZE="20"> <% if (d == 0) {%> Customer </FORM> <%}%> Submit Age String name; NewCustomer.jsp int age; name = request.getParameter("foobar"); name = request.getParameter("customer"); try { age = new Integer(request.getParameter("age")).intValue(); } catch (IllegalArgumentException _e){}

  4. NSP – Parameterised Server Pages <nsp name="Registration"><head>...</head><body> <form callee="NewCustomer"> <input widget="String" param="customer"></input> <input widget="int" param="age"></input> <submit></submit> </form> </body></nsp> <nsp name="NewCustomer"><head><title>...</title></head> <param name="customer" type="String"/> <param name="age" type="int"/> <java>import myBusinessModel.CustomerBase;</java> <body> <java> CustomerBase.createCustomer(customer,age); </java> <redirect callee="Somewhere"></redirect> </body></nsp>

  5. NSP Features • Parameterised server pages • Support for complex types in forms • Exchanging objects across web interaction • Higher-order server pages • Statically ensured client page description safety • Statically ensured client page type safety • No unresolved links • Active controls • Unifying client-side and server-side calls

  6. NSP Type System • Core NSP • Core NSP Grammar • Core NSP Types • Core NSP Subtyping • Type Operator: signature connection • Core NSP Typing • Theorem: Core NSP type checking is decidable – Core NSP is explicitly typed – Recursive subtyping is decidable

  7. Core NSP Grammar system ::= page | system system page ::= <nsp name="id"> websig-core </nsp> websig-core ::= param websig-core | webcall | include param ::= <param name="id" type="parameter-type"/> webcall ::= <html> head body </html> head ::= <head><title> strings </title></head> strings ::= ε | string strings body ::= <body> dynamic </body> include ::= <include> dynamic </include> string ::= s ∈ String id ::= l ∈ Label parameter-type ::= t ∈ T ∪ P supported-type ::= t ∈ B supported dynamic ::= dynamic dynamic | ε | string | ul | li | table | tr | td | call | form | object | hidden | submit | input | checkbox | select | option | expression | code

  8. Core NSP Types • Programming language types T – basic types B (primitive and supported) – type variables V (including type constants) – array types A , record types R = Label → part T – recursive types Y = { μ X . R | X ∈ V , R ∈ R } • Server page types – page types P = { w → r | w ∈ W , r ∈ C ∪ D } – web signatures W = Label → part (T ∪ P) – complete web page C = {� } complete web page type – document fragment types D = L × W – layout types L = E × F – element types E= { o ,•,TR,TD,LI,OP } neutral doc.t., output t.,etc. – form occurrences F = { ⇓ , ⇑ , c } inside f.t., outside f.t., neutral f.t. – system types S = { ⃟ } well type

  9. Core NSP Typing – Selected Rules I • d ∈ string ⇒ d:(( •, c ), ∅ ) • e:T ⇒ <hidden param=“l“>e</hidden>:(( o , ⇓ ),{l a T}) • T ∈ B supported ⇒ <input type=“T“ param=“l“/>:(( •, ⇓ ),{l a T}) • </submit>:(( •, ⇓ ), ∅ ) • l:w → � , d:((e , ⇓ ), v), v<w ⇒ <form callee=“l“>d</form>:((e , ⇑ ), ∅ ) • l:w → D, as:v, v<w ⇒ <call callee=“l“>as</form>:D • d:(( o or • ,F),w) ⇒ <li>d</li>: (( LI ,F),w) • d:(( LI or o ,F),w) ⇒ <ul>d</ul>: (( • ,F),w) • d 1 :(L 1 ,w 1 ), d 2 :(L 2 ,w 2 ), def ( lub (L 1 ,L 2 )), def (w 1 ⊗ w 2 ) ⇒ d 1 d 2 : ( lub (L 1 ,L 2 ), w 1 ⊗ w 2 )

  10. Core NSP Typing – Selected Rules II • d:D, d ∈ dynamic ⇒ <include>d</include>: ∅→ D • d:(( • or o , ⇑ or c ), ∅ ), t ∈ string, d ∈ dynamic ⇒ <html><head><title>t</title></head><body>d</body></html>: ∅→ � • l:T, c:w → D , l ∉ dom (w) ⇒ <param name="l" type="T" >c: (w ∪ { l a T}) → D • l:P, c:P, c ∈ websig-core ⇒ <nsp name="l"> c </nsp>: ⃟

  11. Core NSP Subtyping – Establishing Rules – • T < array of T • T j ∉ ( B primitive ∪ P ), j ∈ 1..n ⇒ {l i a T i } i ∈ 1..j-1,j+1,..n < {l i a T i } i ∈ 1..n • o < •, o < TR, o < TD, o < LI, o < OP • c < ⇓ , c < ⇑

  12. The Angie Tool Suite Java Click-Dummy Server Pages Prototype End User Developer Angie Generator Load Load Test Angie Angie Report JSPick Revangie Angil Model-Driven Model Recovery Model Recovery Load Test Tool Abstract Platform Java Web Presentation Layer Server Pages

  13. Conclusion • NSP is based on a well-understood system metaphor • NSP ensures CPDS and CPTS at compile time • NSP supports complex types in forms • NSP improves web-based application architecture • NSP seamlessly integrates with form-oriented analysis • NSP has a convenient formal type system

Recommend


More recommend