File: JavaExceptions.cmake

package info (click to toggle)
robotraconteur 1.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 101,380 kB
  • sloc: cpp: 1,149,268; cs: 87,653; java: 58,127; python: 26,897; ansic: 356; sh: 152; makefile: 90; xml: 51
file content (103 lines) | stat: -rw-r--r-- 3,256 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
include(${CMAKE_SOURCE_DIR}/SWIG/RobotRaconteurSWIGErrorGen.cmake)

rr_swig_parse_errors(RR_ERRORS)

set(RR_JAVA_ERR_OVERRIDE
    "MessageErrorType_NullValue,NullPointerException;MessageErrorType_InvalidOperation,IllegalStateException;MessageErrorType_InvalidArgument,IllegalArgumentException"
)
set(RR_JAVA_ERR_DECL_M
    "
    public class @RR_ERROR_TYPE@ extends RobotRaconteurException
    {
        public @RR_ERROR_TYPE@(String message)
		{
            super(MessageErrorType.@RR_ERROR_CODE@,@RR_ERROR_TYPE_STR@,message);
        }

        public @RR_ERROR_TYPE@(String message,String subname, Object param_)
		{
            super(MessageErrorType.@RR_ERROR_CODE@,@RR_ERROR_TYPE_STR@,message,subname,param_);
        }

    }")

set(RR_JAVA_ERR_DECL_M2
    "
    public class @RR_ERROR_TYPE@ extends RobotRaconteurException
    {
        public @RR_ERROR_TYPE@(String error, String message)
		{
            super(MessageErrorType.@RR_ERROR_CODE@,error,message);
        }

        public @RR_ERROR_TYPE@(String error, String message, String subname, Object param_)
		{
            super(MessageErrorType.@RR_ERROR_CODE@,error,message,subname,param_);
        }
    }")

foreach(RR_ERROR ${RR_ERRORS})
    rr_swig_replace_errors(
        "${RR_JAVA_ERR_DECL_M}"
        "${RR_JAVA_ERR_DECL_M2}"
        ""
        "${RR_ERROR}"
        "${RR_JAVA_ERR_OVERRIDE}"
        RR_ERROR_DECL
        REMOVE_OVERRIDE)
    if(NOT "${RR_ERROR_DECL}" STREQUAL "")
        string(REGEX REPLACE "[ \t\n\r]*public class ([A-Za-z0-1_]+).*" "\\1" RR_ERROR_DECL_TYPE "${RR_ERROR_DECL}")
        configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ExceptionTemplate.java.in"
                       "${CMAKE_CURRENT_BINARY_DIR}/exceptionsrc/com/robotraconteur/${RR_ERROR_DECL_TYPE}.java" @ONLY)
    endif()
endforeach()

set(RR_JAVA_ERR_CASE_M
    "
             case  @RR_ERROR_CODE@:
                  return new  @RR_ERROR_TYPE@(errorstring,errorsubname,param2);
")

set(RR_JAVA_ERR_CASE_M2
    "
             case  @RR_ERROR_CODE@:
                  return new  @RR_ERROR_TYPE@(errorname,errorstring,errorsubname,param2);
")

set(RR_JAVA_ERR_CASE_M3
    "
             case  @RR_ERROR_CODE@:
                  return new  @RR_ERROR_TYPE@(errorname,errorstring);
")

rr_swig_replace_errors(
    "${RR_JAVA_ERR_CASE_M}"
    "${RR_JAVA_ERR_CASE_M2}"
    "${RR_CSHARP_ERR_CASE_M3}"
    "${RR_ERRORS}"
    "${RR_JAVA_ERR_OVERRIDE};MessageErrorType_RemoteError,RobotRaconteurRemoteException"
    RR_ERRORS_CASE
    IGNORE_CODE
    MessageErrorType_RemoteError)

set(RR_JAVA_ERR_CATCH_M
    "
             if (exception instanceof @RR_ERROR_TYPE@)
             {
                 entry.setError(MessageErrorType.@RR_ERROR_CODE@);
                 entry.addElement(\"errorname\", @RR_ERROR_TYPE_STR@);
                 entry.addElement(\"errorstring\", message);
                 return;
             }
")

rr_swig_replace_errors(
    "${RR_JAVA_ERR_CATCH_M}"
    ""
    "${RR_JAVA_ERR_CATCH_M}"
    "${RR_ERRORS}"
    "${RR_JAVA_ERR_OVERRIDE}"
    RR_ERRORS_CATCH
    OVERRIDE_ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RobotRaconteurExceptionUtil.java.in"
               "${CMAKE_CURRENT_BINARY_DIR}/exceptionsrc/com/robotraconteur/RobotRaconteurExceptionUtil.java" @ONLY)