DESCRIPTION
This file contains information about libraries that are supported
by code in OFBiz but that are left out of SVN because of licensing issues.
What is below is a list of jar files and where to put them, and the file(s)
to change to include them in the OFBiz build and/or run-time configuration.

NOTE: While these aren't included in the main SVN repository they are available
on the old Undersun SVN server in the specialized/libraries component directory.

-=- Scripting: ________________________________________________________________________________________________________________________________________________

-JavaScript/Rhino (NPL 1.1):
  http://www.mozilla.org/js
  TO BUILD comment out exclude: base/build.xml:org/apache/ofbiz/base/util/OfbizJsBsfEngine.java

-applets (Netscape javascript plugin : Sun Binary Code License Agreement - BCLA)
  Developpers : http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/packages.htm
  This link is also interesting : http://forum.java.sun.com/thread.jspa?threadID=516303&tstart=225
  NOTE: applications/product/src/ShipmentScaleApplet.java needs  netscape.javascript.JSObject
     If you're using the Sun JDK/JRE 1.4 or greater, the jar is located under jre/lib and it's called plugin.jar.
     You may also find it in the old Undersun SVN server in the specialized/libraries component directory.
  TO BUILD: Copy plugin.jar in framework/base/lib. This seems only needed under Windows.


-=- Reporting: ________________________________________________________________________________________________________________________________________________

-JasperReports (LGPL):
  http://sourceforge.net/projects/jasperreports
  TO BUILD comment out excludes:
    framework/webapp/build.xml:org/apache/ofbiz/webapp/view/JasperReportsPdfViewHandler.java,org/apache/ofbiz/webapp/view/JasperReportsXmlViewHandler.java
    applications/content/build.xml:org/apache/ofbiz/content/report/JREntityListIteratorDataSource.java,org/apache/ofbiz/content/report/JRMapCollectionDataSource.java

- JIMI (used by FOP ):
  http://java.sun.com/products/jimi
    FOP may require a library called JIMI to print certain graphical formats such as GIFs.  Jimi is a Sun library which cannot
    be included in OFBIZ due to licensing incompatibility, but you can download it yourself at: http://java.sun.com/products/jimi/
    and rename the ZIP file that comes with it as jimi-xxx.jar, then copy it into the same directory as fop.jar, which at this time
    is ${ofbiz.home}/framework/webapp/lib/

-=- POS _______________________________________________________________________________________________________________________________________________________

-GTK Swing (LGPL):
  http://sourceforge.net/projects/gtkswing/
  TO DEPLOY: base/config/pos-containers.xml:org.gtk.java.swing.plaf.gtk.GtkLookAndFeel for look and feel
-JavaPOS hardware drivers
  TO DEPLOY: specialpurpose/pos/lib/

  Epson Printer TM-T88III (Proprietay licence) needs jpos18-controls.jar (version specific)
  https://www.epson-pos.com/cgi-bin/sdssm/main/td_login.jsp
     epsonJposService180.jar
     epsonJposServiceCommon.jar

 Star (Proprietay licence)
 http://www.star-micronics.co.jp/service/s_print/starjavapos_win32-linux-macosx_yyyymmdd.zip.htm
     starjavapos.jar


-=- Office (Word, etc) File Handling __________________________________________________________________________________________________________________________

-OpenOffice UNO (LGPL)
  http://udk.openoffice.org/
  applications/content/lib/uno:
    XFlatXml.jar
    XMergeBridge.jar
    XSLTFilter.jar
    XSLTValidate.jar
    htmlsoff.jar
    java_uno.jar
    java_uno_accessbridge.jar
    juh.jar
    jurt.jar
    jut.jar
    officebean.jar
    ridl.jar
    unoil.jar
  TO BUILD comment out exclude: applications/content/build.xml:org/apache/ofbiz/content/openoffice/*

-=- Accounting: Payment Processing ____________________________________________________________________________________________________________________________

-CyberSource
  applications/accounting/lib/cybersource:
    cybsclients.jar
    cybssecurity.jar
  TO BUILD comment out exclude: applications/accounting/build.xml:org/apache/ofbiz/accounting/thirdparty/cybersource/**

-Securepay
  applications/accounting/lib/cybersource:
  Base64.jar
  securepayxmlapi_obf.jar
  xercesImpl-2.4.0.jar
  xmlParserAPIs-2.4.0.jar
  TO BUILD comment out exclude: applications/accounting/build.xml:org/apache/ofbiz/accounting/thirdparty/securepay/**

-WorldPay
  applications/accounting/lib/worldpay:
    config
    config/currency.properties
    config/keystore
    config/keystore/wcc
    config/keystore/wcc/public-1.key
    config/keystore/wcc/revision
    cryptix-lib
    cryptix-lib/Cryptix.properties
    cryptix.jar
    ijce-lib
    ijce-lib/IJCE.properties
    ijce-lib/java.security.fallback
    ijce-lib/TargetHelp.html
    readme.txt
    select.jar
    select.properties
  TO BUILD comment out exclude: applications/accounting/build.xml:org/apache/ofbiz/accounting/thirdparty/worldpay/**
