<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content=
"text/html; charset=us-ascii" />
<meta content="text/html; charset=iso-8859-1" />
<title>Axis2 Plug-in Guide for IntelliJ IDEA</title>
<meta name="generator" content="Bluefish 1.0.6" />
<link href="../../../css/axis-docs.css" rel="stylesheet" type=
"text/css" media="all" />
</head>
<body lang="en" xml:lang="en">
<h1>Axis2 Plug-in Guide for IntelliJ IDEA</h1>
<p>This document explains the installation and usage of Axis2
plug-in for IntelliJ IDEA.</p>
<p><a href="http://ws.apache.org/axis2/tools/index.html">[Download
Plug-in]</a></p>
<h2>Content</h2>
<ul>
<li><a href="#intro">Introduction</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#WSDL2Java_Code_Generation">WSDL2Java Code
Generation</a></li>
<li><a href="#Create_Service_Archive">Create a Service Archive</a>
<ul>
<li><a href="#sub12">Sub Wizard 1 &amp; Sub Wizard 2</a></li>
<li><a href="#sub3">Sub Wizard 3</a></li>
</ul>
</li>
</ul>
<a name="intro" id="intro"></a>
<h2>Introduction</h2>
<p>The Axis2 plug-in for IntelliJ IDEA helps users to create
service archives which can be deployed in Axis2, and generate java
classes files from WSDL files. The following section describes the
installation procedure followed by the usage of the plug-in.</p>
<p><b>Note:</b> This plug-in is made up with <a href=
"http://apidoc.org/docset/16">IDEA Open API</a> which will be
compatible with idea version since build 4121. The plugin also be
compatible with all the builds after build number 4121 and also the
java version should be 1.4 or higher. The provided screen shots may
slightly differ with what the user would actually see but the
functionality has not been changed.</p>
<a name="installation" id="installation"></a>
<h2>Installation</h2>
<p>First <a href=
"http://ws.apache.org/axis2/tools/index.html">download</a> the
plug-in which is a zipped file, and extract it into plugins
directory which is located in the directory where IDEA is
installed. If a previous version of the plug-in resides in this
directory you will have to delete it prior to extracting the new
zip file. If you have extracted the file correctly you would see a
directory called axis2-idea-plugin.</p>
<p>Next step is to restart IDEA so that the changes can take place.
If the plug-in has been installed correctly, you will see following
icons in IDEA when it is restarted.</p>
<p><img alt="Figure 1" src="images/idea-icons.jpg" /></p>
<p>Also if you right-click on the IDEA editor you would see a link
to the same plug-in.</p>
<p><img alt="Figure2" src="images/idea-popup.jpg" /></p>
<p>When you click on either one of them, a window (Page 1) will
appear asking you to select one of the following two options.</p>
<ol>
<li><a href="#Create_Service_Archive">Create a service
archive</a></li>
<li><a href="#WSDL2Java_Code_Generation">WSDL2Java code
generation</a></li>
</ol>
<p><strong>Page 1:</strong></p>
<p><img alt="Figure3" src="images/fig1.jpg" /></p>
<p>If you want to create a service archive obviously you must
select "Create a service archive" option. Like wise, if u want to
generate java class file from a WSDL file you must select the radio
button option "WSDL2Java code generation".</p>
<h2><a name="WSDL2Java_Code_Generation" id=
"WSDL2Java_Code_Generation">WSDL2Java Code Generation</a></h2>
<p>Select "WSDL2Java code generation" and click on the button "OK"
to generate code from a WSDL file. Then the following window will
appear.</p>
<p><strong>WSDL2Java Page 2:</strong></p>
<p><img alt="Figure4" src="images/fig2.jpg" /></p>
<p>Once the WSDL file is selected you will be able to move onto the
next page. The "Browse" button can be used to easily browse for a
file rather than having to type the whole path.</p>
<p>Once the WSDL file is selected, click on the "Next" button which
will take you to the page below.</p>
<p><strong>WSDL2Java Page 3:</strong></p>
<p>This page gives the user the option of selecting default or
custom code generation options. There are three default code
generation options in all. The first enables the user to generate
both client and server code under default configurations while the
second generates just the client side under default configurations.
The third option generates server side code under default
configurations.</p>
<p><strong>Note:</strong></p>
<ul>
<li>When client side code is generated under default configurations
it generates the stub, compiles it, packages it as a jar (the name
of the jar will be &lt;service name &gt;-jar) places it in a lib
folder (If there is no lib folder, it is created) under the IDEA
project that is opened. This jar that's generated will also be
added as a project library to the current active IDEA project.</li>
<li>When server code is generated under default configurations it
generates the server side code and also generates a default
service.xml. The user will then be taken to page 5.</li>
<li>When both server and client side is generated under default
configurations the client stub is added are a jar to the current
IDEA project and the user is taken to page 5.</li>
</ul>
<p><img alt="Figure5" src="images/fig19.jpg" /></p>
<p><strong>WSDL2Java Page 4:</strong></p>
<p><strong>Codegen options</strong> are to be selected here. By far
this is the most important page in this wizard, which determines
the characteristics of the code being generated.</p>
<p><img alt="Figure5" src="images/fig18.jpg" /></p>
<p><strong>Here's some information on the options for
selection:</strong></p>
<ul>
<li>Output language can be Java, C#. But we have not fully tested
C# codegeneration, therefore, it is better to select Java as output
language.</li>
<li>If the WSDL comprises of several services, the user can select
the service for which the code should be generated for.</li>
<li>If the WSDL comprises of several ports for a particullar
service, the user can select the port which the code should be
generated for.</li>
<li>The default data binding type is adb (Axis2 Data Binding).
Although the tool is capable of providing XML beans, due to class
loading issues in XML beans, current implementation only generate
code with OM and ADB.</li>
<li>As for the package name of the generated code, you can set the
name as you wish.</li>
<li>Users can select the one out of the three options- "Generate
Client Side", "Generate Server Side" and "Generate All". The user
will be able to select further options based on his options
selected here. These sub options are explained below.</li>
<li style="list-style: none; display: inline">
<ul>
<li>If user selects "Generate Client Side", he can further select
the service invocation style. Since Axis2 supports both synchronous
and asynchronous client programming model, the tool has provided a
way to selecting the invocation style.</li>
<li>If user selects "Generate Server Side", he can also generate a
default service XML file. If the user selects "Generate an
interface for skeleton" option then it only generates an interface
for the server side. If so the user has to implement this
interface. If this option is not selected, the skeleton class is
generated, which the user can fill in later on.</li>
<li>If user selects "Generate All" option, then all the classes
will be generated in the referenced schemas by the WSDL
irrespective of elements referred by the WSDL, along with the
client side code.</li>
</ul>
</li>
<li>The dafault behaviour of the code generator is to map
namespaces to package names logically, but if the user wishes to
change the package names of the generated classes, he can do so by
changing the values in the Namespace to Packagename mapping
table.</li>
</ul>
<p>With these enhanced options novices need not worry about the
options that can be set as the default options cover the most
common cases. Advanced users will find it very easy to turn the
knobs using the custom generation option.</p>
<p><strong>WSDL2Java Page 5:</strong></p>
<p><img alt="Figure6" src="images/fig3.jpg" /></p>
<p>Here uses have the option of adding the generated code directly
to their working IDEA project or choose a custom location. If the
user decides to add it to the current IDEA project he/she will have
to choose the module and the source directory that the code should
be generated to.</p>
<p>Alternatively the user can browse and select the output
location/path (the location at which the code is to be generated)
using the "Browse" button. Because of the "Browse" button you do
not need to type in the output file path.</p>
<p><img alt="Fig4" src="images/fig4.jpg" /></p>
<p>Once an output location is selected you can click on "Finish"
button which will generate the java class file. If code generation
is successful then a message box will appear acknowledging this
fact a shown above.</p>
<p><a name="Create_Service_Archive" id=
"Create_Service_Archive"></a></p>
<h2>Create a Service Archive</h2>
<p>Select the "Create a service archive" radio button on Page 1 of
Axis2 IDEA plug-in wizard.</p>
<p><strong>Page 1:</strong></p>
<p><img alt="Fig5" src="images/fig1.jpg" /></p>
<p><strong>Service Archive Page 2:</strong></p>
<p>The page below will appear asking the user to select the archive
type</p>
<p><img alt="fig6" src="images/fig6.jpg" /></p>
<p>In Axis2, the user can deploy a single service or a service
group. Therefore, you can select either "Single service archive" or
"Service group archive" for the archive type you want to
create.</p>
<p>If you already have a services.xml you can skip some of the
steps in the wizard by selecting the radio button option "I already
have services.xml" and clicking on "Next" button. If you do not
have the services.xml, select the radio button option "Generate
services.xml" and click on the "Next" button, in which case the
tool will create the services.xml for you.</p>
<p>Depending on the options you selected on this page there can be
three sub wizards:</p>
<ol>
<li><a href="#sub12">Sub wizard 1</a> (Generate single service and
its services.xml)</li>
<li><a href="#sub12">Sub wizard 2</a> (Generate service group and
its services.xml)</li>
<li><a href="#sub3">Sub wizard 3</a> (Generate service/service
group using already existing services.xml)</li>
</ol>
<p>1 &amp; 2 follow the same set of steps except for some looping
mechanism in the middle of the wizard.</p>
<a name="sub12" id="sub12"></a>
<h3>Sub Wizard 1 and Sub Wizard 2</h3>
<p><strong>Service Archive (sub wizards 1 &amp; 2) Page
3:</strong></p>
<p>From this page you have to select the location of the service
classes directory (the location of the compiled classes). You do
not need to type path, simply browse and select.</p>
<p><img alt="fig7" src="images/fig7.jpg" /></p>
<p>When you click on "Next" button, wizard will move to the page
below</p>
<p><strong>Service Archive (sub wizards 1 &amp; 2) Page
4:</strong></p>
<p>Here you select service specific external libraries (third party
libraries) and service WSDL files. If you want to add multiple WSDL
files to a single service type you can do that as well.</p>
<p><img alt="fig8" src="images/fig8.jpg" /></p>
<p>To add libraries first click on the browse button to browse for
library files and then click on the "Add" button. Once added the
selected file will appear in the list box.</p>
<p>To add WSDLs, first click on the browse button to browse for
WSDL file and then click the "Add" button to add the file to the
list.</p>
<p>After adding external libraries and service WSDL files click on
the "Next" button to move to next page.</p>
<p><strong>Service Archive (sub wizards 1 &amp; 2) Page
5:</strong></p>
<p>This page allows you to select service implementation class. In
the case of service group, same page will be looped to select
multiple service implementation classes. This process is explained
in detail below.</p>
<p>Select a service implementation class by browsing and clicking
on the "Load" button to load all the public methods in that class,
after which you can select the methods that you want to publish
using the check boxes.</p>
<p><strong>Note :</strong> If you do not select the correct class
path from the "Class location selection" window, the public methods
which are available in the selected class file will not be
loaded.</p>
<p><img alt="fig10" src="images/fig10.jpg" /></p>
<p>In "Service Name" text box you can type the name of the service
you want, but remember that the service name should be unique
throughout the system.</p>
<p>When you have completed this particular service click on the
button "Next". In the case of a service group when you click on the
"Next" button for that particular service the following dialog box
will appear with option to add more service(s) to a service
group.</p>
<p><img alt="fig11" src="images/fig11.jpg" /></p>
<p>If you click on "Yes", you have to follow the same procedure to
add some other service(s) to service group.</p>
<p>If you click on "No", the button "Next" will be enabled and you
can go to next page.</p>
<p><a name="Note" id="Note"><strong><em>Note: From this point
onwards the steps are similar to all the sub
wizards.</em></strong></a></p>
<p><strong>Service Archive (sub wizards 1 &amp; 2) Page
6:</strong></p>
<p>This page displays the services.xml file, either the one given
by you (in the case of I already have services.xml)
or the one generated by the system (in the case of "generate
services.xml")</p>
<p><img alt="fig12" src="images/fig12.jpg" /></p>
<p>This page is editable and provide a way to add parameters and
module references to any level.</p>
<p><strong>Note :</strong> When you click on either the
"+Parameter" or the "+ModuleRef" buttons remember that
corresponding text will be added to the current mouse position.
Therefore, click on the location you want to add the parameter or
module references and then click relevant button (+Parameter or
+ModuleRef).</p>
<p><strong>+Parameter button:</strong></p>
<p>If you click on the "+Parameter" button a window will appear
asking to give parameter name and parameter value.</p>
<p><img alt="fig13" src="images/fig13.jpg" /></p>
<p>Note that you can also manually add parameters (without clicking
on the "+Parameter" button ) to any where in the document as you
wish.</p>
<p><strong>+ModuleRef button:</strong></p>
<p>Likewise, adding module references can be done by clicking on
the "+ModuleRef" button in the page. You have to type the name of
the module to be engaged as shown in the following figure.</p>
<p><img alt="fig14" src="images/fig14.jpg" /></p>
<p>When you complete this page press the "Next" button to go to
final page.</p>
<p><strong>Service Archive (sub wizards 1 &amp; 2) Page
7:</strong></p>
<p><img alt="fig15" src="images/fig15.jpg" /></p>
<p>Next step is to select output file location, the location in
which archive file should be created.</p>
<p>In the "Archive Name" text box, type the name of the archive
file you want to place. This name will finally become the service
group name.</p>
<p><strong>Note :</strong> Do not include file extension when you
type archive name. System will generate that for you.</p>
<p>When you are done, click the "Finish" button. If everything has
been done successfully you will see following message.</p>
<p><img alt="fig16" src="images/fig16.jpg" /></p>
<p><strong><em>Note: Pages 6 &amp; 7 of sub wizards 1 &amp; 2 are
common to sub wizard 3 from its page 3 onwards.</em></strong></p>
<a name="sub3" id="sub3"></a>
<h3>Sub Wizard 3</h3>
<p>In the case where services.xml is already available, the steps
are as follows:</p>
<p><strong>Service Archive (sub wizard 3) Page 3:</strong></p>
<p><img alt="fig17" src="images/fig17.jpg" /></p>
<p>This page allows you to select both location of services.xml and
the location of service classes directory. Click on the "Select"
buttons and browse the file system to find required document and
location.</p>
<p>Click on the "Next" button which will take you to a page which
allows you to add third party libraries and WSDL's in the same
manner as "Sub Wizard 1 &amp; Sub Wizard 2" section's <a href=
"#Note">Page 6 - Edit service descriptors</a>. Note that Sub Wizard
3 from this point takes the same pages as 6 to 7 of Sub Wizards 1
&amp; 2.</p>
</body>
</html>
