com.smartgwt.client.docs

## Interface JavaModuleDependencies

-     public interface JavaModuleDependencies

  ### Java Module Dependencies

  Maven users should generally refer to the POMs bundled with the SDK, and installed for them by the official Isomorphic plugin for Maven. For others, the following is a description of what functionality is contained in each Smart GWT JAR file, and which other Smart GWT JARs and third party libraries are required to enable that functionality. Note that actual filenames in WEB-INF/lib will typically contain the version number of the library, whereas the library names below simply list the base name.

  All of the libraries that Smart GWT depends upon have either an Apache 1.0 or Apache 2.0 license, with the following exceptions:
  1. Optional Hibernate support requires LGPL-licensed .jars from Hibernate
  2. Optional bean annotation support requires an implementation of javax.persistence.jar. This is available from several providers - for example, SpringSource, Hibernate or the Glassfish project. The licensing of this library varies by provider.
  3. Optional support for Java as a JSR223 server-side scripting language is provided by software developed by Isomorphic, but based on the "java-engine" package, originally developed by Sun. See `SunNotice`.

  If you are using GWT, GWT itself also has an Apache 2.0 license, however tools and test environments that you may use during development have different license (such as Eclipse - Eclipse Public License). Also, specific GWT widgets, not required by Smart GWT, have licenses different from core GWT (such as JFreeChart's LGPL license). See Google's summary of terms for details.

  - isomorphic_core_rpc: This is the core Smart GWT module. It provides the RPC, DMI, and DataSource support.
    Requires:
    commons-cli
    commons-lang
    commons-collections
    commons-pool
    commons-codec
    isc-jakarta-oro
    slf4j-api
    commons-jxpath
    httpcore
    httpclient
    velocity
    commons-fileupload
    joda-time
    commons-io
    Optionally Requires:
    isomorphic_js_parser - if you're using the built-in support for REST via the RESTHandler servlet with JSON payloads
    xercesImpl - if you're using JDK < 1.5
    xml-apis - if you're using JDK < 1.5
    mail - if you plan to use the Mail messaging feature
    activation - if you plan to use the Mail messaging feature and you are using a JDK < 1.6
    javax.persistence - if you plan to use the metadata-from-annotations feature. Note that if you are using JPA, or a recent version of Hibernate, then you are probably already using this library.
    poi - if you plan to export datasets in Microsoft Excel 97 (xls) or 2007 (xlsx) formats. Additionally, if you plan to export data in Excel 2007 (xlsx) format, you will need the following libraries:
    poi-ooxml, poi-ooxml-schemas, dom4j, xbean
    PDF Export - Additional .jars are required if PDF Export is to be used. These .jars are:
    core-renderer, iText-2.0.8, jtidy-r938
    Image Export and IE6-8 DrawPane PDF Export - These libraries are required to use `RPCManager.exportImage()`, or when using `RPCManager.exportContent()` to export a DrawPane or FacetChart only in IE8 or earlier:
    batik-anim, batik-awt-util, batik-bridge, batik-css, batik-dom, batik-ext, batik-gvt, batik-parser, batik-script, batik-svg-dom, batik-util, batik-xml, xml-apis-ext
    The above libraries are also required if a DrawPane has a DrawImage which loads a cross-domain image.
    NOTE: Between iText 2.0.x and iText 2.1.x there is a binary (but not source) incompatibility that causes a server-side `NoSuchMethodError` when exporting, e.g., charts in Internet Explorer. This is a known issue with the Flying Saucer product that is fixed by using core-renderer-R8-isomorphic.jar and iText-2.1.7.jar in the lib-iTextAlternate/ directory instead of core-renderer.jar and iText-2.0.8.jar in the lib/ directory. To use iText 2.1.7 with the Server Framework, exclude lib/core-renderer.jar and lib/iText-2.0.8.jar from the application's classpath and instead add lib-iTextAlternate/core-renderer-R8-isomorphic.jar and lib-iTextAlternate/iText-2.1.7.jar.
    isomorphic_jpa and its dependencies - if you plan to use BatchDS Generator even if you are not using JPA, although the generated DataSources will not require JPA at runtime if you are not using JPA.
    log4j - if you plan to use log4j logging (used by default).
    slf4j-log4j12 - if you plan to use slf4j with log4j (for example), or any other slf4j bridge library depending on which logging framework will be used, see `ServerLogging` for information on server-side logging and how to configure it.
    groovy - if you plan to use Groovy with the `ServerScript` feature.
    commons-digester and commons-beanutils - if you plan to use Velocity Tools.

  - isomorphic_contentexport.jar: Optional support for PDF Export requires Flying Saucer, iText and jTidy, introducing:
    - Flying Saucer: core-renderer.jar: LGPL license
    - iText: iText-2.0.8.jar: Mozilla Public License Version 1.1
    - jTidy: jtidy-r938.jar: MIT license
    Additionally, to be able to export DrawPanes and FacetCharts in IE6-8, or to export FacetChart zoom charts (see `FacetChart.printZoomChart`), the following libraries are needed:
    - Batik: batik-anim, batik-awt-util, batik-bridge, batik-css, batik-dom, batik-ext, batik-gvt, batik-parser, batik-script, batik-svg-dom, batik-util, batik-xml: Apache License, Version 2.0
    - xml-commons External Components: xml-apis-ext: W3C Software Notice and License

  - isomorphic_web_services: Web services examples only. Contains code backing the SmartClientOperations.wsdl example. Do not deploy in production.
    Requires:
    isomorphic_core_rpc
    axis
    axis-schema
    commons-discovery
    commons-logging
    jaxrpc
    saaj
    wsdl4j
  - isomorphic_tools: Contains back-end logic for the "Admin Console" tool visible in the Developer Console, and also standalone from the SDK home page. Also contains the the various data importers and exporters, and the server-side components of the BatchUploader.
    Requires:
    isomorphic_core_rpc
    isomorphic_sql
    isomorphic_hibernate
  - isomorphic_embedded_tomcat: This contains the bootstrap class for the Embedded Tomcat engine shipped with the Smart GWT SDK. It is not intended to be used in any way other than via the start_embedded_tomcat.bat|sh|command scripts in the webRoot of the SDK.
    Requires:
    isomorphic_core_rpc
    All JARs under WEB-INF/embeddedTomcat/lib
  - isomorphic_spring: Required for `DMI` dispatches to Spring beans (via `ServerObject.lookupStyle` : "spring").
    Requires:
    isomorphic_core_rpc
    spring
    commons-logging
  - isomorphic_examples: Contains code for various Smart GWT examples shown in the SDK. Do not deploy to production. The source code for the compiled classes in this module are present in the SDK in various locations and typically linked to directly from the examples that use them.
    Requires:
    isomorphic_core_rpc
    isomorphic_sql
    isomorphic_struts
    isomorphic_spring
    isomorphic_hibernate
    commons-logging
    jstl
    jakarta-taglib-standard
  - isomorphic_realtime_messaging: Server support required for the Smart GWT Realtime Messaging Module. Install this if you're using this 'push' technology. For more information, see `Messaging`:
    Requires:
    isomorphic_core_rpc
  - isomorphic_hibernate: Contains support for Hibernate DataSources as described here: `HibernateIntegration`.
    Requires:
    isomorphic_core_rpc
    isomorphic_sql
    hibernate and its dependencies
    Optionally Requires:
    hsqldb - not required for linking, but needed for actually connecting to databases of this type, and hsqldb is what's used in the SDK examples. Note that for production use you will need a JDBC driver for your database type.
  - isomorphic_jpa: Contains support for JPA DataSources as described `here`.
    Requires:
    isomorphic_core_rpc
    Hibernate and its dependencies or any other JPA persistence provider
  - isomorphic_sql: The Smart GWT SQLDataSource.
    Requires:
    isomorphic_core_rpc
    commons-dbcp
    hsqldb - not required for linking, but needed for actually connecting to databases of this type, and hsqldb is what's used in the SDK examples. Note that for production use you will need a JDBC driver for your database type.
  - isomorphic_autotest: Support for `automated testing and Continuous Integration`
    Requires:
    isomorphic_core_rpc
    selenium-server
    The `selenium-server.jar` file provided with Smart GWT is a trimmed version that does not include all of the libraries used by Selenium itself. Therefore the following libraries are also needed:
    backport-util-concurrent
    commons-configuration
    commons-exec
    commons-io
    guava
    htmlunit
    htmlunit-core
    operadriver
    phantomjsdriver
    jna (if testing with IE on Windows environments)
    jna-platform (if testing with IE on Windows environments)
    NOTE: `servlet-api.jar` is also required if you intend to run Selenium RC from a standalone process (ie, from a normal Java program, not a webapp). However, it should not be deployed to a servlet container such as Tomcat or Jetty. The best case is that the file will be unused and a source of confusion for anybody looking at the webapp's library usage; the worst case is that it will conflict with the container's own implementation of the Servlets API.
  - isomorphic_js_parser: A parser capable of reading a JSON byte stream and creating an in-memory Java object structure to match. Used by any mechanism that relies on JSON-style configuration. Examples include FileAssembly definitions in JSON format, any use of the rulesFile with a URIRegexFilter (Java Servlet) or subclass. Otherwise, generally not required except as documented in another module (e.g., isomorphic_core_rpc).
    Requires:
    isomorphic_core_rpc
  - isomorphic_compression: This is a part of the Network Performance Module. The isomorphic_compression module is required for dynamic and static compression of various assets delivered to the browser. For more information, see: `Compression`.
    Requires:
    isomorphic_core_rpc
  - isomorphic_assembly: This is part of the Network Performance Module. The isomorphic_assembly module is required for file assembly and stripping. For more information, see: `FileAssembly`.
    Requires:
    isomorphic_core_rpc
  - isomorphic_struts: Contains the ValidationAction and ValidationFailureAction classes that implement RPC-based validation of DynamicForms using the Struts ValidatorPlugIn. If you're not using Struts or if you don't need this particular feature of Smart GWT, you do not need this module or its dependencies (also see the important note below). An example of this style of validation is available here: /examples/struts/forms/welcome.do - read the info on this page, and follow the "Dynamic Form (With RPC-based Validation)" Link for the actual example.
    NOTE: This support is for Struts 1.0 only, and is only intended to be used in certain edge cases of incremental migration to Smart GWT. You should only use it if directed to do so by Isomorphic Support.
    Requires:
    isomorphic_core_rpc
    struts
    commons-digester
    commons-beanutils
    commons-logging
    commons-validator