From 3444f5db82d18597c0398c120bc279d37d27aa49 Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Tue, 24 Jun 2014 01:19:11 +0900
Subject: [PATCH] another step forward.

---
 .gitignore                                    |   1 +
 CMakeLists.txt                                |  21 +-
 cmake/genjava-extras.cmake.em                 | 179 ++++++++----------
 package.xml                                   |   6 +
 scripts/CMakeLists.txt                        |   9 +-
 .../{genjava.py => genjava_gradle_project.py} |   5 +-
 scripts/gensrv_java.py                        |   0
 src/genjava/__init__.py                       |   2 +
 src/genjava/genjava_main.py                   |  29 +--
 src/genjava/genjava_main.pyc                  | Bin 1708 -> 1358 bytes
 src/genjava/gradle/Readme.md                  |   3 +
 .../gradle/gradle/wrapper/gradle-wrapper.jar  | Bin 0 -> 51106 bytes
 .../gradle/wrapper/gradle-wrapper.properties  |   6 +
 src/genjava/gradle/gradlew                    | 164 ++++++++++++++++
 src/genjava/gradle_project.py                 | 161 ++++++++++++++++
 .../templates/genjava_project/build.gradle.in |  85 +++++++++
 16 files changed, 543 insertions(+), 128 deletions(-)
 create mode 100644 .gitignore
 rename scripts/{genjava.py => genjava_gradle_project.py} (57%)
 delete mode 100755 scripts/gensrv_java.py
 create mode 100644 src/genjava/gradle/Readme.md
 create mode 100644 src/genjava/gradle/gradle/wrapper/gradle-wrapper.jar
 create mode 100644 src/genjava/gradle/gradle/wrapper/gradle-wrapper.properties
 create mode 100755 src/genjava/gradle/gradlew
 create mode 100644 src/genjava/gradle_project.py
 create mode 100644 src/genjava/templates/genjava_project/build.gradle.in

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2590ccb..eae70f3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,13 +6,13 @@ cmake_minimum_required(VERSION 2.8.3)
 project(genjava)
 
 ##############################################################################
-# Dependencies
+# Find Package
 ##############################################################################
 
 find_package(catkin REQUIRED COMPONENTS genmsg)
 
 ##############################################################################
-# Package
+# Catkin
 ##############################################################################
 
 catkin_package(
@@ -20,16 +20,23 @@ catkin_package(
   CFG_EXTRAS genjava-extras.cmake
 )
 
+catkin_python_setup()
+
+##############################################################################
+# Installs
+##############################################################################
+
 add_subdirectory(scripts)
 
-message(STATUS "GENMSG_LANGS_DESTINATION...........${GENMSG_LANGS_DESTINATION}")
 file(WRITE ${CATKIN_DEVEL_PREFIX}/${GENMSG_LANGS_DESTINATION}/genjava "Java")
 install(FILES ${CATKIN_DEVEL_PREFIX}/${GENMSG_LANGS_DESTINATION}/genjava
   DESTINATION ${GENMSG_LANGS_DESTINATION})
 
-catkin_python_setup()
+##############################################################################
+# Tests
+##############################################################################
 
-if(CATKIN_ENABLE_TESTING)
-  catkin_add_nosetests(test)
-endif()
+#if(CATKIN_ENABLE_TESTING)
+#  catkin_add_nosetests(test)
+#endif()
 
diff --git a/cmake/genjava-extras.cmake.em b/cmake/genjava-extras.cmake.em
index 8bcc5a7..f08631d 100644
--- a/cmake/genjava-extras.cmake.em
+++ b/cmake/genjava-extras.cmake.em
@@ -6,118 +6,91 @@ set(GENJAVA_BIN_DIR "@(CMAKE_CURRENT_SOURCE_DIR)/scripts")
 set(GENJAVA_BIN_DIR "${GENJAVA_DIR}/../../../@(CATKIN_PACKAGE_BIN_DESTINATION)")
 @[end if]@
 
-set(GENMSG_JAVA_BIN ${GENJAVA_BIN_DIR}/genmsg_java.py)
-set(GENSRV_JAVA_BIN ${GENJAVA_BIN_DIR}/gensrv_java.py)
+set(GENJAVA_BIN ${GENJAVA_BIN_DIR}/genjava_gradle_project.py)
+set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages")
 
-# genmsg usually uses this variable to configure the install location. we typically pick
-# it up from the environment configured by rosjava_build_tools.
-#set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages")
-set(ROS_MAVEN_DEPLOYMENT_REPOSITORY $ENV{ROS_MAVEN_DEPLOYMENT_REPOSITORY})
-if(NOT ROS_MAVEN_DEPLOYMENT_REPOSITORY)
-  set(ROS_MAVEN_DEPLOYMENT_REPOSITORY "${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}")
-endif()
-
-# Generate .msg->.h for py
-# The generated .h files should be added ALL_GEN_OUTPUT_FILES_py
-#
-# Example arguments:
-#
-#   ARG_PKG      : foo_msgs
-#   ARG_MSG      : /mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg/Foo.msg
-#   ARG_IFLAGS   : -Ifoo_msgs:/mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg;-Istd_msgs:/opt/ros/hydro/share/std_msgs/cmake/../msg
-#   ARG_MSG_DEPS : ???
-#   ARG_GEN_OUTPUT_DIR : /mnt/zaphod/ros/rosjava/hydro/devel/${genjava_INSTALL_DIR}/foo_msgs
 macro(_generate_msg_java ARG_PKG ARG_MSG ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
-
-  message(STATUS "GEN_MSG_JAVA..........._generate_msg_java")
-  message(STATUS "  ARG_PKG..............${ARG_PKG}")
-  message(STATUS "  ARG_MSG..............${ARG_MSG}")
-  message(STATUS "  ARG_IFLAGS...........${ARG_IFLAGS}")
-  message(STATUS "  ARG_MSG_DEPS.........${ARG_MSG_DEPS}")
-  message(STATUS "  ARG_GEN_OUTPUT_DIR...${ARG_GEN_OUTPUT_DIR}")
-  message(STATUS "GEN_MSG_JAVA...........done")
-  message(STATUS "CMAKE_CURRENT_BINARY_DIR.......${CMAKE_CURRENT_BINARY_DIR}")
-
-  #Append msg to output dir
-  #set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-  #file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
-  #Create input and output filenames
-  get_filename_component(MSG_SHORT_NAME ${ARG_MSG} NAME_WE)
-
-  file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/gradle)
-
-  #set(MSG_GENERATED_NAME ${MSG_SHORT_NAME}.java)
-  #set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${MSG_GENERATED_NAME})
-  #message(STATUS "GEN_OUTPUT_FILE..........${GEN_OUTPUT_FILE}")
-  #add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
-  #  DEPENDS ${GENMSG_JAVA_BIN} ${ARG_MSG} ${ARG_MSG_DEPS}
-  #  COMMAND ${CATKIN_ENV} cmake
-  #  -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}
-  #  -m ${ARG_MSG}
-  #  ${ARG_IFLAGS}
-  #  -p ${ARG_PKG}
-  #  -o ${GEN_OUTPUT_DIR}
-  #  COMMENT "Generating Java code from MSG ${ARG_PKG}/${MSG_SHORT_NAME}"
-  #)
-
-  #list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
-
+  list(APPEND ALL_GEN_OUTPUT_FILES_java ${ARG_MSG} ${ARG_MSG_DEPS})
+
+    # Example arguments:
+    #
+    #   ARG_PKG      : foo_msgs
+    #   ARG_MSG      : /mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg/Foo.msg
+    #   ARG_IFLAGS   : -Ifoo_msgs:/mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg;-Istd_msgs:/opt/ros/hydro/share/std_msgs/cmake/../msg
+    #   ARG_MSG_DEPS : ???
+    #   ARG_GEN_OUTPUT_DIR : /mnt/zaphod/ros/rosjava/hydro/devel/${genjava_INSTALL_DIR}/foo_msgs
+    
+    #message(STATUS "Java generator for [${ARG_PKG}][${ARG_MSG}]")
+    #message(STATUS "  ARG_IFLAGS...........${ARG_IFLAGS}")
+    #message(STATUS "  ARG_MSG_DEPS.........${ARG_MSG_DEPS}")
+    #message(STATUS "  ARG_GEN_OUTPUT_DIR...${ARG_GEN_OUTPUT_DIR}")
+    #message(STATUS "GEN_MSG_JAVA...........done")
+    #message(STATUS "CMAKE_CURRENT_BINARY_DIR.......${CMAKE_CURRENT_BINARY_DIR}")
 endmacro()
 
-#todo, these macros are practically equal. Check for input file extension instead
 macro(_generate_srv_java ARG_PKG ARG_SRV ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
-
-  message(STATUS "GEN_SRV_JAVA..........._generate_srv_java")
-  #Append msg to output dir
-#  set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/srv")
-#  file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
-#
-  #Create input and output filenames
-#  get_filename_component(SRV_SHORT_NAME ${ARG_SRV} NAME_WE)
-#
-#  set(SRV_GENERATED_NAME _${SRV_SHORT_NAME}.py)
-#  set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${SRV_GENERATED_NAME})
-#
-#  add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
-#    DEPENDS ${GENSRV_PY_BIN} ${ARG_SRV} ${ARG_MSG_DEPS}
-#    COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENSRV_PY_BIN} ${ARG_SRV}
-#    ${ARG_IFLAGS}
-#    -p ${ARG_PKG}
-#    -o ${GEN_OUTPUT_DIR}
-#    COMMENT "Generating Python code from SRV ${ARG_PKG}/${SRV_SHORT_NAME}"
-#    )
-#
-#  list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
-
+  list(APPEND ALL_GEN_OUTPUT_FILES_java ${ARG_SRV} ${ARG_MSG_DEPS})
 endmacro()
 
+# This is a bit different to the other generators - it generates the whole message package together
+# (unless there's another api I'm not aware of yet in the generator jar). It's a few milliseconds
+# of overkill generating all .java files if only one msg changed, but it's not worth the effort to
+# break that down yet.
+# 
+# To facilitate this, the ARG_GENERATED_FILES is actually just the underlying ARG_MSG and ARG_SRV
+# files which we feed the commands as DEPENDS to trigger their execution.
 macro(_generate_module_java ARG_PKG ARG_GEN_OUTPUT_DIR ARG_GENERATED_FILES)
 
-  message(STATUS "GEN_MODULE_JAVA..........._generate_module_java")
-  # generate empty __init__ to make parent folder of msg/srv a python module
-  if(NOT EXISTS ${ARG_GEN_OUTPUT_DIR}/__init__.py)
-    file(WRITE ${ARG_GEN_OUTPUT_DIR}/__init__.py "")
-  endif()
-
-  #Append msg to output dir
-  foreach(type "msg" "srv")
-    set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/${type}")
-    set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/__init__.py)
-
-    if(IS_DIRECTORY ${GEN_OUTPUT_DIR})
-      add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
-        DEPENDS ${GENMSG_PY_BIN} ${ARG_GENERATED_FILES}
-        COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENMSG_PY_BIN}
-        -o ${GEN_OUTPUT_DIR}
-        --initpy
-        COMMENT "Generating Python ${type} __init__.py for ${ARG_PKG}")
-      list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
+    ################################
+    # Gradle Subproject
+    ################################
+    set(GRADLE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/java")
+    set(GRADLE_BUILD_FILE "${GRADLE_BUILD_DIR}/${ARG_PKG}/build.gradle")
+    list(APPEND ALL_GEN_OUTPUT_FILES_java ${GRADLE_BUILD_FILE})
+
+    add_custom_command(OUTPUT ${GRADLE_BUILD_FILE}
+        DEPENDS ${GENJAVA_BIN}
+        COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENJAVA_BIN}
+            -o ${GRADLE_BUILD_DIR}
+            -p ${ARG_PKG}
+        COMMENT "Generating Java gradle project from ${ARG_PKG}"
+    )
+
+    ################################
+    # Compile Gradle Subproject
+    ################################
+    set(ROS_GRADLE_VERBOSE $ENV{ROS_GRADLE_VERBOSE})
+    if(ROS_GRADLE_VERBOSE)
+        set(GRADLE_CMD "./gradlew")
+    else()
+        set(GRADLE_CMD "./gradlew;-q")
     endif()
-
-  endforeach()
-
+    set(GEN_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/generated_java_messages.flag)
+
+    add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
+        DEPENDS ${GRADLE_BUILD_FILE} ${ARG_GENERATED_FILES}
+        COMMAND ${CATKIN_ENV} ${GRADLE_CMD}
+        COMMAND touch ${GEN_OUTPUT_FILE}
+        WORKING_DIRECTORY ${GRADLE_BUILD_DIR}/${ARG_PKG}
+        COMMENT "Generating Java code for ${ARG_PKG}")
+    list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
+
+    ################################
+    # Debugging
+    ################################
+    #foreach(gen_output_file ${ALL_GEN_OUTPUT_FILES_java})
+    #    message(STATUS "ALL_GEN_OUTPUT_FILES_java..........${gen_output_file}")
+    #endforeach()
+
+    ################################
+    # Dependent Targets
+    ################################
+    # Make sure we have built gradle-rosjava_bootstrap if it is in the source workspace
+    # (otherwise package.xml will make sure it has installed via rosdep/deb.
+    #if(TARGET gradle-rosjava_bootstrap)
+        # Preference would be to add it to ${ARG_PKG}_generate_messages_java but that
+        # is not defined till after this module is parsed, so add it all
+        #add_dependencies(${ARG_PKG}_generate_messages gradle-rosjava_bootstrap)
+    #endif()
 endmacro()
 
-if(NOT EXISTS @(PROJECT_NAME)_SOURCE_DIR)
-  set(GENJAVA_INSTALL_DIR ${PYTHON_INSTALL_DIR})
-endif()
\ No newline at end of file
diff --git a/package.xml b/package.xml
index 84622fd..e40e2e9 100644
--- a/package.xml
+++ b/package.xml
@@ -18,8 +18,14 @@
   <buildtool_depend version_gte="0.5.78">catkin</buildtool_depend>
 
   <build_depend>genmsg</build_depend>
+  <build_depend>python-catkin-pkg</build_depend>
+  <build_depend>python-rospkg</build_depend>
+  <build_depend>rosjava_bootstrap</build_depend>
 
   <run_depend>genmsg</run_depend>
+  <run_depend>python-catkin-pkg</run_depend>
+  <run_depend>python-rospkg</run_depend>
+  <run_depend>rosjava_bootstrap</run_depend>
 
   <export>
     <message_generator>java</message_generator>
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index 044a96f..5f1a2b4 100644
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -1,3 +1,8 @@
+##############################################################################
+# Installs
+##############################################################################
+
 catkin_install_python(
-  PROGRAMS genjava.py gensrv_java.py
-  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
+    PROGRAMS genjava_gradle_project.py
+    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
+)
diff --git a/scripts/genjava.py b/scripts/genjava_gradle_project.py
similarity index 57%
rename from scripts/genjava.py
rename to scripts/genjava_gradle_project.py
index 769db0b..3039c43 100755
--- a/scripts/genjava.py
+++ b/scripts/genjava_gradle_project.py
@@ -8,9 +8,8 @@ Converts ROS .msg files in a package into Java source code implementations.
 import os
 import sys
 
-#import genjava.generator
-import genjava.genjava_main
+import genjava
 
 if __name__ == "__main__":
-    genjava.genjava_main.genmain(sys.argv, 'genmsg_java.py') #, genpy.generator.MsgGenerator())
+    genjava.main(sys.argv)
 
diff --git a/scripts/gensrv_java.py b/scripts/gensrv_java.py
deleted file mode 100755
index e69de29..0000000
diff --git a/src/genjava/__init__.py b/src/genjava/__init__.py
index ce7b434..f79a649 100644
--- a/src/genjava/__init__.py
+++ b/src/genjava/__init__.py
@@ -35,3 +35,5 @@
 
 #__all__ = ['Time', 'Duration', 'TVal',
 #        'Message', 'SerializationError', 'DeserializationError', 'MessageException', 'struct_I']
+
+from .genjava_main import main
diff --git a/src/genjava/genjava_main.py b/src/genjava/genjava_main.py
index e75a67c..3d947ae 100644
--- a/src/genjava/genjava_main.py
+++ b/src/genjava/genjava_main.py
@@ -36,46 +36,49 @@
 
 from __future__ import print_function
 import argparse
-import os
+#import os
 #import sys
 #import traceback
 #import genmsg
-import genmsg.command_line
+#import genmsg.command_line
 
 #from genmsg import MsgGenerationException
 #from . generate_initpy import write_modules
+from . import gradle_project
 
 ##############################################################################
 # Methods
 ##############################################################################
 
 
-def parse_arguments():
+def parse_arguments(argv):
     '''
       The include path has a special format, e.g.
          -Ifoo_msgs:/mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg;-Istd_msgs:/opt/ros/hydro/share/std_msgs/cmake/../msg
     '''
     parser = argparse.ArgumentParser(description='Generate java code for a single ros message.')
-    parser.add_argument('-m', '--message', action='store', help='the message file')
+    #parser.add_argument('-m', '--message', action='store', help='the message file')
     parser.add_argument('-p', '--package', action='store', help='package to find the message file')
     parser.add_argument('-o', '--output-dir', action='store', help='output directory for the java code (e.g. build/foo_msgs)')
-    parser.add_argument('-I', '--include-path', action='append', help="include paths to the package and deps msg files")
+    #parser.add_argument('-I', '--include-path', action='append', help="include paths to the package and deps msg files")
     #myargs = rospy.myargv(argv=sys.argv)
     #return parser.parse_args(args=myargs[1:])
-    return parser.parse_args()
+    return parser.parse_args(argv)
 
 ##############################################################################
 # Main
 ##############################################################################
 
-def genmain(argv, progname):  # , gen):
-    args = parse_arguments()
-    print("genjava %s/%s" % (args.package, args.message))
+
+def main(argv):
+    args = parse_arguments(argv[1:])
+    #print("genjava %s/%s" % (args.package, args.message))
     print("  output dir..........%s" % args.output_dir)
-    search_path = genmsg.command_line.includepath_to_dict(args.include_path)
-    print("  search path.......%s" % search_path)
-    gradle_project_dir = os.path.join(args.output_dir, 'gradle')
-    os.mkdir(gradle_project_dir)
+    gradle_project.create(args.package, args.output_dir)
+    #search_path = genmsg.command_line.includepath_to_dict(args.include_path)
+    #print("  search path.......%s" % search_path)
+    #gradle_project_dir = os.path.join(args.output_dir, 'gradle')
+    #os.mkdir(gradle_project_dir)
 
 #     try:
 #         if options.initpy:
diff --git a/src/genjava/genjava_main.pyc b/src/genjava/genjava_main.pyc
index 149ebb8c4b88e6f5a172ae7269e8c91f6ee6e832..364d7ce18054d258b89d3bb490bdc694b672a559 100644
GIT binary patch
delta 643
zcmZ3(dyY$*`7<w9sOHMxWCkc;Vqjo!U|?h@cA6-ypw7&Y!orZl%#h2%5XHj4n8M1?
z!oU#4%8<eaX0S1&FfjycuuqIrbkAgDU|`Sy5hZ*K3=HW-i77d$@dZWsS*gh-$slo%
z(d-Ni49+0q!x<PDN*EZj7#UI+L8de_FxE0M)G$t5DXqoGkj2E1!pV@r#gGEFD}|jQ
zg`1(7iHWg>ks*tjp@xB>nUNt_gJ-fb<A0ulVonAI23_5P#N_PBdQ3`_tC(yVEhg_^
zQWaCsNYzW%Q%EY!%t_Ht%g>L`Elw}ioNUJI#tU*y2@3-QLt;^S+2jUhF)?cf1_u57
zf)f3r{Nk*{vPAvNyp+uJ$tzg3CO=@7$lw5l5UUWA45JJS+&|1P|9~`?Fo0Z^!pI=s
z%*as7$WQ|I8OX^@3}VfU42&hr3|TA;AOTh|$;8mi#K4%sz!0nfGRO}chLb0<$kuDH
zF)%O$@qhw}m4ShwpeQr1q=busfg!)Nq@c7UJ|(j#2o$CzAa%(_sfi`2C7`ecg+XF^
zss_k+K_K-oFBWTnoDU|7L2kwLXuf`NQL=t|YF<`i+2k#(a$=ys$xY16^JHLPC<fWX
sz$m~ZIQc!Rf+ff-u>D{s1_^<p9wY`fA57q|1RR?EY!a-T0_>c^0EO9mr~m)}

delta 957
zcmX@dwT4%k`7<w<{-(LX$qZ1y#K6Gdz`)2*Y&TI_p`L*ug^3}DnIVdWA%&Ttg@GZ8
zl_7-%%wPja1#7S}Ffe5P|NsBL1|tIlLkS-P14BVkW?o5rT4`Q#NoIbYAJ}M+Bs&8G
zgEPqJ9*{}~hAc*g6h@FK%?ymS3=B043|UMdYf@MkQdk*M*cehK-sXyjh;lNdaKS{`
z8B(|znwgjwp*naNQh1T%_>krJ8Bzqma)Jyg><lSFa5-j%W(I~}4dKcBjQ@FZi#Zt>
z7<6@WQ;UlyOED?22rw`(Ob%cY<1c{96eK2RC#I)Pwq~+pRGM7Hq#9Wa3MpOBVvvt@
zbu;slb4pWEbqf+pGD_GO7#I=@3R3e@iuFOk1Cdhz$rUS<<SUe9q$)rSR7lKAQAkNG
zC|1ZVPFG0F%t<Ytyp_pK4isKsa|#lRic^a;K(PZRid{iYi(^!pT*9I<IgVMPo(Cky
zD#R!Qfy~Juhp{j)Fn};PyrUuE-ORvH%fwIu4)q!)P+)^dW`;B-2C-&F21bw!69Y($
z1uDSGkj2K3#SRwZU}$D!sAUH0XJ)8jhA2s4kYWhd0NLbM%*(*Qke-^Cl~|Ujpjxc2
zT0Hq4vuu5_7y|=?f<kd>Vo`DiI1Kb4K($x{6zW0TAlHGC5jfqHfKmxGaKLO(oFt~F
zmT)mJFyxn(6qJ_4r(_m^!zMj7FSj_o1QY<t`MJ4?c`5NZnR%%t!iYdGh)*oZh%d>H
zPsvO!0jq?@R6Hm)zz#0~xjwNdy{v=-oOtuo^AdAYVWPz)AooFB577e(Zp^5V1-TpK
zpv25PPX-2tVvu_o7&#fG7zG(cC$D2sumU*?q@p-o581gvpu`3ag&+wA1_rRv2m&>}
N4Ot~v*?71(g#oC>#`gdK

diff --git a/src/genjava/gradle/Readme.md b/src/genjava/gradle/Readme.md
new file mode 100644
index 0000000..4068f0c
--- /dev/null
+++ b/src/genjava/gradle/Readme.md
@@ -0,0 +1,3 @@
+This is not installed, but it gets used to generate the gradle wrapper for a project.
+
+It is currently the gradle wrapper supporting gradle 1.9.
\ No newline at end of file
diff --git a/src/genjava/gradle/gradle/wrapper/gradle-wrapper.jar b/src/genjava/gradle/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3c7abdf12790879c06b07176de29647f77aa4129
GIT binary patch
literal 51106
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

literal 0
HcmV?d00001

diff --git a/src/genjava/gradle/gradle/wrapper/gradle-wrapper.properties b/src/genjava/gradle/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..46530ef
--- /dev/null
+++ b/src/genjava/gradle/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Mar 19 17:27:39 KST 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-bin.zip
diff --git a/src/genjava/gradle/gradlew b/src/genjava/gradle/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/src/genjava/gradle/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/src/genjava/gradle_project.py b/src/genjava/gradle_project.py
new file mode 100644
index 0000000..da8e2c7
--- /dev/null
+++ b/src/genjava/gradle_project.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Imports
+##############################################################################
+
+from __future__ import print_function
+
+import os
+import shutil
+
+# local imports
+#import utils
+from catkin_pkg.packages import find_packages
+import rospkg
+
+##############################################################################
+# Utils
+##############################################################################
+
+import pwd
+
+
+def author_name():
+    """
+    Utility to compute logged in user name
+
+    :returns: name of current user, ``str``
+    """
+    import getpass
+    name = getpass.getuser()
+    try:
+        login = name
+        name = pwd.getpwnam(login)[4]
+        name = ''.join(name.split(','))  # strip commas
+        # in case pwnam is not set
+        if not name:
+            name = login
+    except:
+        #pwd failed
+        pass
+    #if type(name) == str:
+    #    name = name.decode('utf-8')
+    return name
+
+
+import subprocess
+
+
+def create_gradle_wrapper(repo_path):
+    gradle_binary = os.path.join(os.path.dirname(__file__), 'gradle', 'gradlew')
+    cmd = [gradle_binary, '-p', repo_path, 'wrapper']
+    print("Creating gradle wrapper: %s" % ' '.join(cmd))
+    try:
+        subprocess.check_call(cmd)
+    except subprocess.CalledProcessError:
+        raise subprocess.CalledProcessError("failed to create the gradle wrapper.")
+
+
+def read_template(tmplf):
+    f = open(tmplf, 'r')
+    try:
+        t = f.read()
+    finally:
+        f.close()
+    return t
+
+##############################################################################
+# Methods acting on classes
+##############################################################################
+
+
+def instantiate_genjava_template(template, project_name, project_version, pkg_directory, author, msg_dependencies):
+    return template % locals()
+
+
+def get_templates():
+    template_dir = os.path.join(os.path.dirname(__file__), 'templates', 'genjava_project')
+    templates = {}
+    templates['build.gradle'] = read_template(os.path.join(template_dir, 'build.gradle.in'))
+    return templates
+
+
+def populate_project(project_name, project_version, pkg_directory, gradle_project_dir, msg_dependencies):
+    author = author_name()
+    for filename, template in get_templates().iteritems():
+        contents = instantiate_genjava_template(template, project_name, project_version, pkg_directory, author, msg_dependencies)
+        try:
+            p = os.path.abspath(os.path.join(gradle_project_dir, filename))
+            f = open(p, 'w')
+            f.write(contents)
+            #console.pretty_print("Created file: ", console.cyan)
+            #console.pretty_println("%s" % p, console.yellow)
+        finally:
+            f.close()
+
+
+def create_dependency_string(project_name, msg_package_index):
+    package = msg_package_index[project_name]
+    gradle_dependency_string = ""
+    for dep in package.build_depends:
+        try:
+            dependency_package = msg_package_index[dep.name]
+        except KeyError:
+            continue  # it's not a message package
+        gradle_dependency_string += "compile 'org.ros.rosjava_messages:" + dependency_package.name + ":" + dependency_package.version + "'\n"
+    return gradle_dependency_string
+
+
+def create_msg_package_index():
+    """
+      Scans the package paths and creates a package index always taking the
+      highest in the workspace chain (i.e. takes an overlay in preference when
+      there are multiple instances of the package).
+
+      :returns: the package index
+      :rtype: { name : catkin_pkg.Package }
+    """
+    # should use this, but it doesn't sequence them properly, so we'd have to make careful version checks
+    # this is inconvenient since it would always mean we should bump the version number in an overlay
+    # when all that is necessary is for it to recognise that it is in an overlay
+    # ros_paths = rospkg.get_ros_paths()
+    package_index = {}
+    ros_paths = rospkg.get_ros_package_path()
+    ros_paths = [x for x in ros_paths.split(':') if x]
+    for path in reversed(ros_paths):  # make sure we pick up the source overlays last
+        for unused_package_path, package in find_packages(path).items():
+            if 'message_generation' in [dep.name for dep in package.build_depends]:
+#                 print(package.name)
+#                 print("  version: %s" % package.version)
+#                 print("  dependencies: ")
+#                 for dep in package.build_depends:
+#                     if not (dep.name == 'message_generation'):
+#                         print("         : %s" % dep)
+                package_index[package.name] = package
+    return package_index
+
+
+def create(msg_pkg_name, output_dir):
+    '''
+    Creates a standalone single project gradle build instance in the specified output directory and
+    populates it with gradle wrapper and build.gradle file that will enable building of the artifact later.
+
+    :param str project_name:
+    :param dict msg_package_index:  { name : catkin_pkg.Package }
+    :param str output_dir:
+    '''
+    if os.path.exists(output_dir):
+        shutil.rmtree(output_dir)
+    genjava_gradle_dir = os.path.join(output_dir, msg_pkg_name)
+    os.makedirs(genjava_gradle_dir)
+    msg_package_index = create_msg_package_index()
+    if msg_pkg_name not in msg_package_index.keys():
+        raise IOError("could not find %s on the ros package path" % msg_pkg_name)
+
+    msg_dependencies = create_dependency_string(msg_pkg_name, msg_package_index)
+
+    create_gradle_wrapper(genjava_gradle_dir)
+    pkg_directory = os.path.dirname(msg_package_index[msg_pkg_name].filename)
+    msg_pkg_version = msg_package_index[msg_pkg_name].version
+    populate_project(msg_pkg_name, msg_pkg_version, pkg_directory, genjava_gradle_dir, msg_dependencies)
diff --git a/src/genjava/templates/genjava_project/build.gradle.in b/src/genjava/templates/genjava_project/build.gradle.in
new file mode 100644
index 0000000..c0896ea
--- /dev/null
+++ b/src/genjava/templates/genjava_project/build.gradle.in
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2014 %(author)s
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+task wrapper(type: Wrapper) {
+    gradleVersion = '1.11'
+}
+
+buildscript {
+    def rosMavenPath = "$System.env.ROS_MAVEN_PATH".split(':').collect { 'file://' + it }
+    def rosMavenRepository = "$System.env.ROS_MAVEN_REPOSITORY"
+    repositories {
+        rosMavenPath.each { p ->
+            maven {
+                url p
+            }
+        }
+        mavenLocal()
+        maven {
+            url rosMavenRepository
+        }
+    }
+    dependencies {
+        classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,0.2)'
+    }
+}
+
+apply plugin: 'ros-java'
+group 'org.ros.rosjava_messages'
+version = '%(project_version)s'
+
+ext {
+    generated_sources_directory = "${projectDir}/src/main/java"
+}
+
+task generateSources (type: JavaExec) {
+    description = "Generate sources for %(project_name)s"
+    outputs.dir(file(generated_sources_directory))
+    args = new ArrayList<String>([generated_sources_directory, '--package-path=%(pkg_directory)s', '%(project_name)s'])
+    classpath = configurations.runtime
+    main = 'org.ros.internal.message.GenerateInterfaces'
+    tasks.compileJava.source outputs.files
+}
+
+dependencies {
+  compile 'org.ros.rosjava_bootstrap:message_generation:[0.1,)'
+  %(msg_dependencies)s
+}
+
+task info << {
+    println "\nProject Info"
+    println "============\n"
+    println "Name          : ${rootProject}"
+    println "Dir           : ${projectDir}"
+    println "Group         : ${group}"
+    println "Version       : ${version}"
+    println "Configurations: " + configurations
+
+    println "\nPackage Info"
+    println "============\n"
+    println "Name          : %(project_name)s"
+    println "Dir           : %(pkg_directory)s"
+
+    println "\nGenerate Info"
+    println "============\n"
+    println "Output Dir    : ${generated_sources_directory}"
+    println "Task Args     : " + tasks["generateSources"].args
+    tasks["generateSources"].outputs.getFiles().getAsFileTree().each {
+        println "Files         : ${it}"
+    }
+}
+
+defaultTasks 'publishMavenJavaPublicationToMavenRepository'
-- 
GitLab