File: node152.html

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (152 lines) | stat: -rw-r--r-- 5,868 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Server Side: Writing SIDL classes in Java</TITLE>
<META NAME="description" CONTENT="Server Side: Writing SIDL classes in Java">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="users_guide.css">

<LINK REL="next" HREF="node153.html">
<LINK REL="previous" HREF="node151.html">
<LINK REL="up" HREF="node148.html">
<LINK REL="next" HREF="node153.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2983"
  HREF="node153.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2977"
  HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2971"
  HREF="node151.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2979"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2981"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2984"
  HREF="node153.html">Casting Objects</A>
<B> Up:</B> <A NAME="tex2html2978"
  HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2972"
  HREF="node151.html">Client Side: Using SIDL</A>
 &nbsp; <B>  <A NAME="tex2html2980"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2982"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION03540000000000000000"></A>
<A NAME="9050"></A>
<BR>
Server Side: Writing SIDL classes in Java
</H1>

<P>
Babel also supports calls to SIDL classes implemented in Java.  These
classes obey the same rules as the client side Java classes, except
that is this case the file, class, and method names all end in <TT>_Impl</TT>.

<P>
As is the case with other Babel server side files, only the code
written between splicer blocks will be preserved between calls of
Babel. Make sure any data and code is kept in the designated areas,
otherwise it won't be there after you run Babel on those files.

<P>
<A NAME="9052"></A>
Another interesting fact of the Server Side is that it inherits from
the Client Side Java class.  This allows us to call local methods
directly.  Take this recursive Fibonacci function implementation for example:

<P>
<BR>
<PRE  CLASS="verbatim">class Fib_Impl extends Fib {
  public int getFib_Impl(int x) {
    // DO-NOT-DELETE splicer.begin(ExceptionTest.Fib.getFib) 
    if(x &gt;= 2) {
      return getFib(x-1) + getFib(x-2);
    } else {
      return 1;
    }
    // DO-NOT-DELETE splicer.end(ExceptionTest.Fib.getFib)
  }
}
</PRE></td></tr></table></blockquote>
<P>
Here the client side class is name <TT>Fib</TT>, and therefore the
Server Side class is <TT>Fib_Impl</TT>.  The same relation is true for
the <TT>getFib</TT> method.  You can also see that we are able to call
<TT>getFib</TT>, the client side method, directly.  A call like this
will go through Babel glue code, as it should.  You should not try to make calls
directly to <TT>_Impl</TT> methods.  It won't work at all on
different objects, and it breaks the object model if used on methods in
the current object.  (That is, it is possible to call <TT>foo_Impl</TT>
in the current object, but because the call will not go through Babel,
any inheritance information will be lost, and the wrong version of the
method may be called.  Simply call <TT>foo</TT> in the standard way.) 

<P>
This also means there is no way to have Server Side object inherit
from non SIDL Java classes, in fact, there are no splicer blocks
available for inheritance, so implementing interfaces on the Server
Side is also not supported.  This is because we feel that having the
Server side inherit from non-SIDL classes is probably not a good idea.

<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2983"
  HREF="node153.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2977"
  HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2971"
  HREF="node151.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2979"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2981"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2984"
  HREF="node153.html">Casting Objects</A>
<B> Up:</B> <A NAME="tex2html2978"
  HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2972"
  HREF="node151.html">Client Side: Using SIDL</A>
 &nbsp; <B>  <A NAME="tex2html2980"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2982"
  HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>