Function: org-babel-execute:java

org-babel-execute:java is a byte-compiled function defined in ob-java.el.gz.

Signature

(org-babel-execute:java BODY PARAMS)

Documentation

Execute a java source block with BODY code and PARAMS params.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-java.el.gz
(defun org-babel-execute:java (body params)
  "Execute a java source block with BODY code and PARAMS params."
  (let* (;; allow header overrides
         (org-babel-java-compiler
          (or (cdr (assq :javac params))
              org-babel-java-compiler))
         (org-babel-java-command
          (or (cdr (assq :java params))
              org-babel-java-command))
         ;; if true, run from babel temp directory
         (run-from-temp (not (cdr (assq :dir params))))
         ;; class and package
         (fullclassname (or (cdr (assq :classname params))
                            (org-babel-java-find-classname body)))
         ;; just the class name
         (classname (car (last (split-string fullclassname "\\."))))
         ;; just the package name
         (packagename (if (string-match-p "\\." fullclassname)
                          (file-name-base fullclassname)))
         ;; the base dir that contains the top level package dir
         (basedir (file-name-as-directory
                   (if run-from-temp
                       (org-babel-temp-directory)
                     default-directory)))
         ;; the dir to write the source file
         (packagedir (if (and (not run-from-temp) packagename)
                         (file-name-as-directory
                          (concat basedir (replace-regexp-in-string "\\." "/" packagename)))
                       basedir))
         ;; the filename of the source file
         (src-file (concat packagedir classname ".java"))
         ;; compiler flags
         (cmpflag (or (cdr (assq :cmpflag params)) ""))
         ;; runtime flags
         (cmdline (or (cdr (assq :cmdline params)) ""))
         ;; command line args
         (cmdargs (or (cdr (assq :cmdargs params)) ""))
         ;; the command to compile and run
         (cmd (concat org-babel-java-compiler " " cmpflag " "
                      (org-babel-process-file-name src-file 'noquote)
                      " && " org-babel-java-command
                      " -cp " (org-babel-process-file-name basedir 'noquote)
                      " " cmdline " " (if run-from-temp classname fullclassname)
                      " " cmdargs))
         ;; header args for result processing
         (result-type (cdr (assq :result-type params)))
         (result-params (cdr (assq :result-params params)))
         (result-file (and (eq result-type 'value)
                           (org-babel-temp-file "java-")))
         ;; the expanded body of the source block
         (full-body (org-babel-expand-body:java body params)))

    ;; created package-name directories if missing
    (unless (or (not packagedir) (file-exists-p packagedir))
      (make-directory packagedir 'parents))

    ;; write the source file
    (setq full-body (org-babel-java--expand-for-evaluation
                     full-body run-from-temp result-type result-file))
    (with-temp-file src-file (insert full-body))

    ;; compile, run, process result
    (org-babel-reassemble-table
     (org-babel-java-evaluate cmd result-type result-params result-file)
     (org-babel-pick-name
      (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
     (org-babel-pick-name
      (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params))))))