Author : Srinivasan Chikkala
JBI Component Development Tools Requirements
Developing a JBI Component ( Service Engine or Binding Component )
involves using standard jbi api and implementing standard jbi spi apart
from handling the component specific code. Lot of the development
process such as build scripts, most of the jbi spi implementation,
administration and testing is common for any jbi component
development. If we have tools that can help jbi component
developer in handling these standard and common development process
tasks, the jbi component development will become very easy. This
document will try to collect the requirements for the development tools
that help jbi component development.
We need to have development tools that helps user to develop, debug,
unit test and install
jbi
components ( Service Engines and Binding Components ) using Netbeans
IDE and should also have tools that should help developing the Netbeans
plugin for
the
component which will help the component end user to develop, test and
deploy
composite applications ( SA ) for the component using Netbeans IDE.
Component development tools high level requirements
- should provide out-of-box experience for component development
( code generation,
build, test and install
service engine or
binding component ). Component that is generated should be ready
to
run with out writing a single line of code by the user.
- user should be able to extend or generate component specific code
on top of the common code generated by the tool.
- user should have a easy way to perform development lifecycle
tasks like edit, build, test, debug.
- user should also be able to develop and build the jbi components
using
netbeans IDE, ant or maven2 interchangeably.
- tool should provide a common component library as a java library
or a jbi shared library that can have 75% of the component
code implementation which user can easily extend for every new component
- user should be able to create tools for the component that help
component end user deploy composite applications for the component at
runtime.
Component development tools low level requirements
- Code generation
- wizard to generate component default artifacts ( jbi spi
implementation,
build scripts etc. ) for building and installing jbi components.
- should generate default message exchange code. For example,
the message exchange code should produce the echo service.
- should generate component lifecycle management code
- should generate service unit management code
- should generate installation ( bootstrap ) management code
- should generate installation and runtime configuration code.
- provide templates for extending the existing code or adding new
code. For example, provide class templates using which user can
generate code for a specific component usecase
- Any support of Annotations during development time or at
runtime?
- provide a open-jbi-components
specific systemic qualities support code generation
- runtime configuration
code for the component(SE or BC)
- runtime environment
variable configuration and processing code
- I18N support code
- monitoring support code
- Code refactoring
- user should be able to use all java refactoring facilities of
the IDE on the component code.
- the refactoring the java code should update the jbi.xml. For
example, the lifecycle, bootstrap implementation class name changes in
jbi.xml should be included in refactoring
- manage classpaths with refactoring
- Code editing
- provide inline help and code completion for jbi api/spi
- jbi.xml editing - multiview editing that use xml view as well
as gui.
- provide xml syntax, schema validations for all the schema
including the standard jbi schemas such as jbi.xml, mgmt message xml
etc.
- Library management
- tools to resolve compile time dependencies on jbi api/spi ( add
jbi1.0 api/spi as a netbeans library plugin )
- tools to package a java libraries jar/project in
component installer jar and resolve compile time dependencies
- tools to include jbi shared libraries to resolve compile time
dependencies
- Build system
- should be
able to clean, build, junit test the component
code using ant script
- should be able to
install, uninstall and reinstall the
components to/from the runtime
- should be able to customize the build script ( free form )
based on user source structure
- Project management
- new project system for adding tools to develop,
debug, test and
install jbi components
- provide a project creation wizard that will generate the
component default artifacts.
- provide project actions that help user perform development
lifecycle tasks with one click
- provide project view to show various
component artifacts
- easy access to jbi.xml
- source tree structure
- project customization during development
- customize the jbi descriptor ( jbi.xml ) through project
customizer. For example, change the name, description of the component
- manage dependent java library/jbi shared library/projects
- manage target jbi runtime for install and deployment.
- should generate Maven
based project metadata to build and test the project from maven
environment
- Testing
- generate junit tests
- run junit tests
- facility to run the system tests
- should generate the system tests that can test the component
lifecycle ( install/start/stop/shutdown/uninstall ) tasks on the
component at runtime
- should generate the deployment tests that can test the
deployment lifecycle (deploy/start/stop/shutdown/undeploy SA )
tasks on the component at runtime
- should generate the Test Client to test the deployments (
message exchange ) on
the component at runtime
- for service engine, generate the SA and Test Client to test
the echo service on engine via soap-binding to test the provider case.
- for binding component, generate the SA, Test Client and
Test WebService to test the provider and consumer cases.
- Debugging
- runtime debugging on the server.
- Netbeans Plugin for composite application deployment tool for the
component
- generate the Netbeans module project for jbi
deployment netbeans plugin for the component using wizard.
- manage dependency between component project and the plugin
project to
build both projects
- Binding component deployment
plugin
- create netbeans module project metadata
- create netbeans service providers configuration files (
META-INF/services/*)
- create WSDL Wizard artifacts/configurations
- create WSDL Editor artifacts/configurations
- create JBI Component configuration
- create WSDL Extension schema and model
- create CASA plugin configuration for BC
- edit/regenerate WSDL Extension schema model
- editor/wizard to add the wsdl extensions gui cutomizers in
wsdl editor
- edit/regenerate WSDL Wizard configurations
- edit/regenerate WSDL Editor configurations
- edit/regenerate JBI Component configuration
- edit/regenerate CASA plugin configuration for BC
- generate jelly/jemmy test code
- Service Engine deployment
plugin
- create netbeans module project metadata
- create JBI Module project metadata ( ant based project )
- create JBI Module project wizard GUI
- create JBI Module project build scripts
- create JBI Module project view code
- create JBI Module project customizer
- WSDL to JBI code generation for
a service provider or consumer in JBI
- given a WSDL, generate a proxy
service provider (BC)
- given a WSDL, generate a proxy
service consumer (BC)
- given a WSDL, generate a
service provider in JBI (SE)
- given a WSDL, generate a
service consumer in JBI (SE)