@@ -29,6 +29,21 @@ static bool TryToInitializeJava()
2929
3030extern " C" MC_DLLEXPORT_DEF MCTypeInfoRef MCJavaObjectTypeInfo () { return MCJavaGetObjectTypeInfo (); }
3131
32+ bool MCJavaErrorThrow (MCTypeInfoRef p_error_type)
33+ {
34+ MCAutoErrorRef t_error;
35+ if (!MCErrorCreate (p_error_type, nil, &t_error))
36+ return false ;
37+
38+ return MCErrorThrow (*t_error);
39+ }
40+
41+ MC_DLLEXPORT MCTypeInfoRef kMCJavaCouldNotConvertStringToJStringErrorTypeInfo ;
42+ MC_DLLEXPORT MCTypeInfoRef kMCJavaCouldNotConvertJStringToStringErrorTypeInfo ;
43+ MC_DLLEXPORT MCTypeInfoRef kMCJavaCouldNotConvertDataToJByteArrayErrorTypeInfo ;
44+ MC_DLLEXPORT MCTypeInfoRef kMCJavaCouldNotConvertJByteArrayToDataErrorTypeInfo ;
45+ MC_DLLEXPORT MCTypeInfoRef kMCJavaCouldNotGetObjectClassNameErrorTypeInfo ;
46+
3247// //////////////////////////////////////////////////////////////////////////////////////////////////
3348
3449extern " C" MC_DLLEXPORT_DEF void MCJavaStringFromJString (MCJavaObjectRef p_object, MCStringRef &r_string)
@@ -37,9 +52,7 @@ extern "C" MC_DLLEXPORT_DEF void MCJavaStringFromJString(MCJavaObjectRef p_objec
3752 return ;
3853
3954 if (!MCJavaConvertJStringToStringRef (p_object, r_string))
40- MCErrorCreateAndThrow (kMCGenericErrorTypeInfo , " reason" ,
41- MCSTR (" couldn't convert java object to string" ),
42- nullptr );
55+ MCJavaErrorThrow (kMCJavaCouldNotConvertJStringToStringErrorTypeInfo );
4356}
4457
4558extern " C" MC_DLLEXPORT_DEF void MCJavaStringToJString (MCStringRef p_string, MCJavaObjectRef &r_object)
@@ -48,9 +61,7 @@ extern "C" MC_DLLEXPORT_DEF void MCJavaStringToJString(MCStringRef p_string, MCJ
4861 return ;
4962
5063 if (!MCJavaConvertStringRefToJString (p_string, r_object))
51- MCErrorCreateAndThrow (kMCGenericErrorTypeInfo , " reason" ,
52- MCSTR (" couldn't convert string to java object" ),
53- nullptr );
64+ MCJavaErrorThrow (kMCJavaCouldNotConvertStringToJStringErrorTypeInfo );
5465}
5566
5667extern " C" MC_DLLEXPORT_DEF void MCJavaDataFromJByteArray (MCJavaObjectRef p_object, MCDataRef &r_data)
@@ -59,9 +70,7 @@ extern "C" MC_DLLEXPORT_DEF void MCJavaDataFromJByteArray(MCJavaObjectRef p_obje
5970 return ;
6071
6172 if (!MCJavaConvertJByteArrayToDataRef (p_object, r_data))
62- MCErrorCreateAndThrow (kMCGenericErrorTypeInfo , " reason" ,
63- MCSTR (" couldn't convert java object to data" ),
64- nullptr );
73+ MCJavaErrorThrow (kMCJavaCouldNotConvertJByteArrayToDataErrorTypeInfo );
6574}
6675
6776extern " C" MC_DLLEXPORT_DEF void MCJavaDataToJByteArray (MCDataRef p_data, MCJavaObjectRef &r_object)
@@ -70,9 +79,7 @@ extern "C" MC_DLLEXPORT_DEF void MCJavaDataToJByteArray(MCDataRef p_data, MCJava
7079 return ;
7180
7281 if (!MCJavaConvertDataRefToJByteArray (p_data, r_object))
73- MCErrorCreateAndThrow (kMCGenericErrorTypeInfo , " reason" ,
74- MCSTR (" couldn't convert data to java object" ),
75- nullptr );
82+ MCJavaErrorThrow (kMCJavaCouldNotConvertDataToJByteArrayErrorTypeInfo );
7683}
7784
7885extern " C" MC_DLLEXPORT_DEF void MCJavaGetClassName (MCJavaObjectRef p_obj, MCStringRef &r_string)
@@ -81,15 +88,45 @@ extern "C" MC_DLLEXPORT_DEF void MCJavaGetClassName(MCJavaObjectRef p_obj, MCStr
8188 return ;
8289
8390 if (!MCJavaGetJObjectClassName (p_obj, r_string))
84- MCErrorCreateAndThrow (kMCGenericErrorTypeInfo , " reason" ,
85- MCSTR (" couldn't get java object class name" ),
86- nullptr );
91+ MCJavaErrorThrow (kMCJavaCouldNotGetObjectClassNameErrorTypeInfo );
8792}
8893
8994// //////////////////////////////////////////////////////////////////////////////////////////////////
9095
96+ bool MCJavaErrorsInitialize ()
97+ {
98+ if (!MCNamedErrorTypeInfoCreate (MCNAME (" com.livecode.java.ConvertFromStringError" ), MCNAME (" java" ), MCSTR (" Could not convert String to Java string" ), kMCJavaCouldNotConvertStringToJStringErrorTypeInfo ))
99+ return false ;
100+
101+ if (!MCNamedErrorTypeInfoCreate (MCNAME (" com.livecode.java.ConvertToStringError" ), MCNAME (" java" ), MCSTR (" Could not convert Java byte array to Data" ), kMCJavaCouldNotConvertJStringToStringErrorTypeInfo ))
102+ return false ;
103+
104+ if (!MCNamedErrorTypeInfoCreate (MCNAME (" com.livecode.java.ConvertFromDataError" ), MCNAME (" java" ), MCSTR (" Could not convert Java byte array to Data" ), kMCJavaCouldNotConvertDataToJByteArrayErrorTypeInfo ))
105+ return false ;
106+
107+ if (!MCNamedErrorTypeInfoCreate (MCNAME (" com.livecode.java.ConvertToDataError" ), MCNAME (" java" ), MCSTR (" Could not convert Java byte array to Data" ), kMCJavaCouldNotConvertJByteArrayToDataErrorTypeInfo ))
108+ return false ;
109+
110+ if (!MCNamedErrorTypeInfoCreate (MCNAME (" com.livecode.java.FetchJavaClassNameError" ), MCNAME (" java" ), MCSTR (" Could not get Java object class name" ), kMCJavaCouldNotGetObjectClassNameErrorTypeInfo ))
111+ return false ;
112+
113+ return true ;
114+ }
115+
116+ void MCJavaErrorsFinalize ()
117+ {
118+ MCValueRelease (kMCJavaCouldNotConvertStringToJStringErrorTypeInfo );
119+ MCValueRelease (kMCJavaCouldNotConvertJStringToStringErrorTypeInfo );
120+ MCValueRelease (kMCJavaCouldNotConvertDataToJByteArrayErrorTypeInfo );
121+ MCValueRelease (kMCJavaCouldNotConvertJByteArrayToDataErrorTypeInfo );
122+ MCValueRelease (kMCJavaCouldNotGetObjectClassNameErrorTypeInfo );
123+ }
124+
91125extern " C" bool com_livecode_java_Initialize (void )
92126{
127+ if (!MCJavaErrorsInitialize ())
128+ return false ;
129+
93130 if (!MCJavaCreateJavaObjectTypeInfo ())
94131 return false ;
95132
@@ -99,6 +136,8 @@ extern "C" bool com_livecode_java_Initialize(void)
99136extern " C" void com_livecode_java_Finalize (void )
100137{
101138 MCJavaFinalize ();
139+
140+ MCJavaErrorsFinalize ();
102141}
103142
104143// //////////////////////////////////////////////////////////////////////////////////////////////////
0 commit comments