Matthias Brantner has proposed merging lp:~zorba-coders/zorba/dataf-module-fix 
into lp:zorba/data-formatting-module.

Requested reviews:
  Matthias Brantner (matthias-brantner)
  Cezar Andrei (cezar-andrei)

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/dataf-module-fix/+merge/105267

- improved search of dependent jars
- removed dead code
-- 
https://code.launchpad.net/~zorba-coders/zorba/dataf-module-fix/+merge/105267
Your team Zorba Coders is subscribed to branch lp:zorba/data-formatting-module.
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2012-04-30 09:55:44 +0000
+++ CMakeLists.txt	2012-05-09 20:55:19 +0000
@@ -25,6 +25,8 @@
 FIND_PACKAGE (zorba_util-jvm_module QUIET)
 
 IF (zorba_util-jvm_module_FOUND)
+  INCLUDE ("${zorba_util-jvm_module_USE_FILE}")
+
   IF (JNI_FOUND)
     INCLUDE_DIRECTORIES (${zorba_util-jvm_module_INCLUDE_DIRS})
 

=== modified file 'src/com/zorba-xquery/www/modules/CMakeLists.txt'
--- src/com/zorba-xquery/www/modules/CMakeLists.txt	2012-04-11 16:06:04 +0000
+++ src/com/zorba-xquery/www/modules/CMakeLists.txt	2012-05-09 20:55:19 +0000
@@ -12,9 +12,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
-
-
   IF (NOT DEFINED XSL_FOP_HOME)
     IF (DEFINED ENV{XSL_FOP_HOME})
       SET(XSL_FOP_HOME $ENV{XSL_FOP_HOME})
@@ -23,35 +20,35 @@
   
   IF (NOT DEFINED XSL_FOP_HOME)
     IF (WIN32)
-      MESSAGE (STATUS "Environment variable XSL_FOP_HOME not defined, trying default: C:\\dev\\libraries\\fop-1.0")
-      SET (XSL_FOP_HOME "C:\\dev\\libraries\\fop-1.0")
+      SET (XSL_FOP_HOME "C:\\dev\\libraries\\fop-1.0 C:\\dev\\libraries\\fop-1.0\\lib C:\\dev\\libraries\\fop-1.0\\build")
     ELSE (WIN32)
-      MESSAGE (STATUS "Environment variable XSL_FOP_HOME not defined, trying defaults: " ${Java_LIBRARIES} " /usr/share/java/ /usr/share/java/fop/")
-      SET (XSL_FOP_HOME "/usr/share/java/ /usr/share/java/fop/ ${Java_LIBRARIES}")
+      SET (XSL_FOP_HOME /usr/share/java/ /usr/share/java/fop/ /opt/local/share/java/fop/1.0 /opt/local/share/java/fop/1.0 ${Java_LIBRARIES})
     ENDIF (WIN32)
+    MESSAGE (STATUS "XSL_FOP_HOME not defined, trying defaults: ${XSL_FOP_HOME}")
   ENDIF (NOT DEFINED XSL_FOP_HOME)
   
   STRING(REGEX REPLACE "\\\\" "/" XSL_FOP_HOME "${XSL_FOP_HOME}")
   
-  MESSAGE (STATUS "XSL-FOP HOME: " ${XSL_FOP_HOME} )
-  FIND_FILE( FOP_JAR NAMES fop.jar 
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/build )
-  FIND_FILE( FOP_D1_JAR NAMES avalon-framework.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D2_JAR NAMES batik-all.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D3_JAR NAMES commons-io.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D4_JAR NAMES commons-logging.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D5_JAR NAMES serializer.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D6_JAR NAMES xalan.jar xalan2.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
-  FIND_FILE( FOP_D7_JAR NAMES xmlgraphics-commons.jar
-    PATHS ${XSL_FOP_HOME} ${XSL_FOP_HOME}/lib )
+  MESSAGE (STATUS "XSL-FOP HOME: ${XSL_FOP_HOME}")
+  ZORBA_FIND_JAR ( FOP_JAR    NAMES fop
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES build)
+  ZORBA_FIND_JAR ( FOP_D1_JAR NAMES avalon-framework
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D2_JAR NAMES batik-all
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D3_JAR NAMES commons-io
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D4_JAR NAMES commons-logging
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D5_JAR NAMES serializer
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D6_JAR NAMES xalan xalan2
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
+  ZORBA_FIND_JAR ( FOP_D7_JAR NAMES xmlgraphics-commons
+    PATHS ${XSL_FOP_HOME} PATH_SUFFIXES lib )
 
-  #MULTIPLE EXISTS CAN'T BE USED IN AN *IF* COMMAND, LOOKS LIKE A BUG ON CMAKE
+  # Multiple "EXISTS" clauses can't be used in a single IF() command;
+  # looks like a bug in cmake.
   SET(ALL_FOP FALSE)
   IF ( EXISTS ${FOP_JAR} )
     IF ( EXISTS ${FOP_D1_JAR} )
@@ -70,8 +67,7 @@
       ENDIF ( EXISTS ${FOP_D2_JAR} )
     ENDIF ( EXISTS ${FOP_D1_JAR} )
   ENDIF ( EXISTS ${FOP_JAR} )
-  MESSAGE(STATUS "ALL_FOP:" ${ALL_FOP})
-
+  			
   IF ( ALL_FOP )
     MESSAGE(STATUS "FOP Libraries Found.")
     INCLUDE (CMakeJavaInformation )
@@ -101,5 +97,9 @@
 
   ELSE ( ALL_FOP )
     MESSAGE (STATUS "fop.jar and/or all its dependecies (avalon-framework.jar, batik-all.jar, commons-io.jar, commons-logging.jar, serializer.jar, xalan2.jar, xmlgraphics-commons.jar) not found skiping data-formating module")
+    MESSAGE ( STATUS " fop: " ${FOP_JAR} "\n    avalon: " ${FOP_D1_JAR}
+  			"\n    batik: " ${FOP_D2_JAR} "\n    io: " ${FOP_D3_JAR} 
+  			"\n    logging: " ${FOP_D4_JAR} "\n    serializer: " ${FOP_D5_JAR} "  " 
+  			"\n    xalan: " ${FOP_D6_JAR} "\n    xmlgraphics: " ${FOP_D7_JAR} )
   ENDIF ( ALL_FOP )
 

=== modified file 'src/com/zorba-xquery/www/modules/xsl-fo.xq.src/xslfo.cpp'
--- src/com/zorba-xquery/www/modules/xsl-fo.xq.src/xslfo.cpp	2012-04-11 13:45:56 +0000
+++ src/com/zorba-xquery/www/modules/xsl-fo.xq.src/xslfo.cpp	2012-05-09 20:55:19 +0000
@@ -62,36 +62,15 @@
              const zorba::DynamicContext*) const;
 };
 
-class FindApacheFopFunction : public NonContextualExternalFunction {
-  private:
-    const ExternalModule* theModule;
-    ItemFactory* theFactory;
-  private:
-    void throwError(std::string aName) const;
-  public:
-    FindApacheFopFunction(const ExternalModule* aModule) :
-      theModule(aModule), theFactory(Zorba::getInstance(0)->getItemFactory()) {}
-
-    virtual String getURI() const { return theModule->getURI(); }
-
-    virtual String getLocalName() const { return "find-apache-fop"; }
-
-    virtual ItemSequence_t 
-    evaluate(const ExternalFunction::Arguments_t& args) const;
-};
-
 class XSLFOModule : public ExternalModule {
   private:
     ExternalFunction* generatePDF;
-    ExternalFunction* findFop;
   public:
     XSLFOModule() :
-      generatePDF(new GeneratePDFFunction(this)),
-      findFop(new FindApacheFopFunction(this))
+      generatePDF(new GeneratePDFFunction(this))
   {}
     ~XSLFOModule() {
       delete generatePDF;
-      delete findFop;
     }
 
     virtual String getURI() const { return XSL_MODULE_NAMESPACE; }
@@ -106,149 +85,10 @@
 ExternalFunction* XSLFOModule::getExternalFunction(const String& localName) {
   if (localName == "generator-impl") {
     return generatePDF;
-  } else if (localName == "find-apache-fop") {
-    return findFop;
-  }
+  } 
   return 0;
 }
 
-void FindApacheFopFunction::throwError(std::string aName) const {
-  Item lQName = theFactory->createQName("http://www.zorba-xquery.com/modules/xsl-fo";,
-      "JAR-NOT-FOUND");
-  throw USER_EXCEPTION(lQName, aName);
-}
-
-ItemSequence_t FindApacheFopFunction::evaluate(const ExternalFunction::Arguments_t& args) const
-{
-  std::string lDirectorySeparator(File::getDirectorySeparator());
-  std::string lFopHome;
-  {
-    char* lFopHomeEnv = getenv("FOP_HOME");
-    if (lFopHomeEnv != 0) {
-      lFopHome = lFopHomeEnv;
-    }
-#ifdef APPLE
-    else {
-      // If Apache FOP is installed with Mac Ports, FOP
-      // is typicaly installed in /opt/local/share/java/fop,
-      // so we check here, if the installation directory can
-      // be found in this directory.
-      std::string lFopPath("/opt/local/share/java/fop/");
-      File_t lRootDir = File::createFile(lFopPath);
-      if (lRootDir->exists() && lRootDir->isDirectory()) {
-        DirectoryIterator_t lFiles = lRootDir->files();
-        std::string lFileName;
-        // The FOP directory is in a subdirectory with the version
-        // number - so we check all subdirectories to get the final
-        // path.
-        while (lFiles->next(lFileName)) {
-          File_t lFile = File::createFile(lFopPath + lFileName);
-          if (lFile->isDirectory()) {
-            std::stringstream lStr(lFileName);
-            double lDirDouble = 0.0;
-            if (lStr >> lDirDouble) {
-              if (lDirDouble != 0.0) {
-                lFopHome = lFopPath + lFileName;
-                break;
-              }
-            }
-          }
-        }
-      }
-    }
-#endif
-  }
-  std::string lFopLibDir;
-  {
-    char* lEnv = getenv("FOP_LIB_DIR");
-    if (lEnv != 0) {
-      lFopLibDir = lEnv;
-    }
-#ifdef LINUX
-    // on a Ubuntu installation, all required
-    // jar files should be in /usr/share/java
-    // if Apache FOP is installed.
-    else {
-      lFopLibDir = "/usr/share/java";
-    }
-#endif
-  }
-  // If neither a path to the fop install dir, nor a path
-  // to the jar files was found so far, we throw an exception.
-  if (lFopHome == "" && lFopLibDir == "") {
-    throwError("None of the environment variables FOP_HOME and FOP_LIB_DIR have been set.");
-  }
-  std::string lFopJarFile;
-  {
-    // Here we look for the fop.jar file, which should be either in $FOP_HOME/build or 
-    // in the directory, where all jar files are.
-    lFopJarFile = lFopHome + lDirectorySeparator + "build" + lDirectorySeparator + "fop.jar";
-    std::string lFopJarFile1 = lFopJarFile;
-    File_t lJarFile = File::createFile(lFopJarFile);
-    if (!lJarFile->exists()) {
-      lFopJarFile = lFopLibDir + lDirectorySeparator + "fop.jar";
-      lJarFile = File::createFile(lFopJarFile);
-      if (!lJarFile->exists()) {
-        std::string errmsg = "Could not find fop.jar. If you are using Ubuntu or Mac OS X, please make sure, ";
-        errmsg += "that you have installed it, else make sure, that you have set the envroinment variable ";
-        errmsg += "FOP_HOME or FOP_LIB_DIR correctly. Tried '";
-        errmsg +=  lFopJarFile1;
-        errmsg += "' and '";
-        errmsg += lFopJarFile;
-        errmsg += "'.";
-        throwError(errmsg);
-      }
-    }
-  }
-  std::vector<Item> lClassPath;
-  lClassPath.push_back(theFactory->createString(lFopJarFile));
-  {
-    std::string lJarDir = lFopLibDir;
-    if (lFopHome != "")
-      lJarDir = lFopHome + lDirectorySeparator + "lib";
-    // This is a list of all jar files, Apache Fop depends on.
-    std::list<std::string> lDeps;
-    lDeps.push_back("avalon-framework");
-    lDeps.push_back("batik-all");
-    lDeps.push_back("commons-io");
-    lDeps.push_back("commons-logging");
-    lDeps.push_back("serializer");
-    lDeps.push_back("xalan");
-    lDeps.push_back("xmlgraphics-commons");
-
-    File_t lJarDirF = File::createFile(lJarDir);
-    DirectoryIterator_t lFiles = lJarDirF->files();
-    std::string lFile; size_t count = 0;
-    // We check for all files, if it is a potential dependency and add it to
-    // the result
-    while (lFiles->next(lFile)) {
-      // If the file is not a jar file, we don't do anything
-      if (lFile.substr(lFile.size() - 4, std::string::npos) != ".jar")
-        continue;
-      for (std::list<std::string>::iterator i = lDeps.begin(); i != lDeps.end(); ++i) {
-        std::string lSub = lFile.substr(0, i->size());
-        if (lSub == *i) {
-          std::string lFull = lJarDir + lDirectorySeparator + lFile;
-          File_t f = File::createFile(lFull);
-          if (f->exists() && !f->isDirectory()) {
-            lClassPath.push_back(theFactory->createString(lFull));
-            // We count all jar files we add to the dependencies.
-            ++count;
-            break;
-          }
-        }
-      }
-    }
-    // Last, we check if all dependencies are found
-    if (count < lDeps.size()) {
-      std::string errmsg = "Could not find ";
-      errmsg += lDeps.front();
-      throwError(errmsg);
-    }
-  }
-  return ItemSequence_t(new VectorItemSequence(lClassPath));
-}
-
 ItemSequence_t
 GeneratePDFFunction::evaluate(const ExternalFunction::Arguments_t& args,
                               const zorba::StaticContext* aStaticContext,

=== modified file 'test/ExpQueryResults/data-formatting/xslfo.xml.res'
--- test/ExpQueryResults/data-formatting/xslfo.xml.res	2012-03-12 22:08:04 +0000
+++ test/ExpQueryResults/data-formatting/xslfo.xml.res	2012-05-09 20:55:19 +0000
@@ -1,1 +1,1 @@
-<pdf><len>6484</len><start>JVBERi0xLj</start><end>AolJUVPRgo=</end></pdf>
+<pdf><len>true</len><start>JVBERi0xLj</start></pdf>

=== modified file 'test/Queries/data-formatting/xslfo.xq'
--- test/Queries/data-formatting/xslfo.xq	2012-03-12 22:08:04 +0000
+++ test/Queries/data-formatting/xslfo.xq	2012-05-09 20:55:19 +0000
@@ -21,7 +21,6 @@
 let $len := fn:string-length($pdf)
 return 
   <pdf>
-    <len>  { $len }</len>
+    <len>  { $len gt 6000 }</len>
     <start>{ fn:substring($pdf, 1, 10)}</start>
-    <end>  { fn:substring($pdf, $len -10, $len)}</end>
   </pdf>

-- 
Mailing list: https://launchpad.net/~zorba-coders
Post to     : zorba-coders@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zorba-coders
More help   : https://help.launchpad.net/ListHelp

Reply via email to