Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
aec63af
Make fields volatile and guard HasOverride state
masesdevelopers Feb 26, 2026
1b75598
Update to JCOBridge 2.6.7-beta
masesdevelopers Mar 29, 2026
0785412
Update to beta1
masesdevelopers Mar 29, 2026
b8172a4
Update dispatch input
masesdevelopers Mar 29, 2026
27aa480
Update to beta2
masesdevelopers Mar 30, 2026
5248022
Update to beta 3
masesdevelopers Mar 31, 2026
16ee05c
Update to beta 4
masesdevelopers Mar 31, 2026
77bca91
Removes unsupported os/framework combination and extends on requests …
masesdevelopers Mar 31, 2026
95d21d6
Update to beta 5
masesdevelopers Apr 3, 2026
f107d12
Updates Java listeners class generation
masesdevelopers Apr 3, 2026
43f0956
Merge branch 'master' into 856-investigate-on-the-issue-and-the-solut…
masesdevelopers Apr 3, 2026
0dcff65
Merge branch '38-jnet-shall-be-always-aligned-to-latest-jcobridge-rel…
masesdevelopers Apr 3, 2026
2625713
Update code since index in CLR start from 1
masesdevelopers Apr 3, 2026
3ed4a74
Align listener template class
masesdevelopers Apr 3, 2026
7729cbc
Update to beta 6
masesdevelopers Apr 3, 2026
5f51c68
Index is revolved at runtime leaving the current behavior untouched
masesdevelopers Apr 4, 2026
d92b90f
Removes generation of index where not needed
masesdevelopers Apr 4, 2026
fb72e35
Missing type in variable
masesdevelopers Apr 4, 2026
b2393ab
Missing return statement in template
masesdevelopers Apr 4, 2026
4c21334
Merge branch 'master' into 856-investigate-on-the-issue-and-the-solut…
masesdevelopers Apr 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,32 @@
package org.mases.jnet.developed;

public class JNetEventResult {
boolean _hasOverride = false;
Object _returnData;
volatile boolean _hasOverrideSet = false;
volatile boolean _hasOverride = false;
volatile Object _returnData;

public boolean getHasOverride() {
if (!_hasOverrideSet) throw new IllegalStateException(".NET side never changed the value of HasOverride property.");
return _hasOverride;
}

public void setHasOverride(boolean hasOverride) {
_hasOverrideSet = true;
_hasOverride = hasOverride;
}

public Object getReturnData() {
if (!_hasOverrideSet) throw new IllegalStateException(".NET side never changed the value of HasOverride property.");
return _returnData;
}

public void setReturnData(Object retData) {
_returnData = retData;
throw new IllegalStateException(".NET side shall never invoke this method.");
//_returnData = retData;
}

public void setReturnData(boolean hasOverride, Object retData) {
_hasOverrideSet = true;
_hasOverride = hasOverride;
_returnData = retData;
}
Expand Down
9 changes: 6 additions & 3 deletions src/net/JNetReflector/InternalMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2394,7 +2394,8 @@ static string AnalyzeJavaMethods(this Class classDefinition, string extendingInt

ReportTrace(ReflectionTraceLevel.Debug, "Preparing method {0}", genString);

var singleMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
var singleMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.LISTENER_INDEX_VARIABLE_NAME, string.Format(AllPackageClasses.ClassStub.MethodStub.LISTENER_INDEX_VARIABLE_NAME_FORMAT, eventHandlerName))
.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
.Replace(AllPackageClasses.ClassStub.MethodStub.NAME, methodNameOrigin)
.Replace(AllPackageClasses.ClassStub.MethodStub.PARAMETERS, paramsString)
.Replace(AllPackageClasses.ClassStub.MethodStub.EXTEND_EXCEPTIONS, exceptionsThrowed)
Expand All @@ -2407,7 +2408,8 @@ static string AnalyzeJavaMethods(this Class classDefinition, string extendingInt
execStub = string.Format(isVoidMethod ? AllPackageClasses.ClassStub.MethodStub.SUPERINTERFACE_VOID_LISTENER_BASE_EXECUTION_FORMAT : AllPackageClasses.ClassStub.MethodStub.SUPERINTERFACE_TYPED_LISTENER_BASE_EXECUTION_FORMAT,
methodNameOrigin, executionParamsString.Length == 0 ? string.Empty : executionParamsString);

var singleBaseMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
var singleBaseMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.LISTENER_INDEX_VARIABLE_NAME, string.Empty)
.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
.Replace(AllPackageClasses.ClassStub.MethodStub.NAME, methodNameOrigin + SpecialNames.BaseMethodSuffix)
.Replace(AllPackageClasses.ClassStub.MethodStub.PARAMETERS, paramsString)
.Replace(AllPackageClasses.ClassStub.MethodStub.EXTEND_EXCEPTIONS, exceptionsThrowed)
Expand All @@ -2421,7 +2423,8 @@ static string AnalyzeJavaMethods(this Class classDefinition, string extendingInt
execStub = string.Format(isVoidMethod ? AllPackageClasses.ClassStub.MethodStub.SUPERINTERFACE_VOID_LISTENER_EXECUTION_FORMAT : AllPackageClasses.ClassStub.MethodStub.SUPERINTERFACE_TYPED_LISTENER_EXECUTION_FORMAT,
extendingInterface, methodNameOrigin, executionParamsString.Length == 0 ? string.Empty : executionParamsString);

var singleDefaultMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
var singleDefaultMethod = template.Replace(AllPackageClasses.ClassStub.MethodStub.LISTENER_INDEX_VARIABLE_NAME, string.Empty)
.Replace(AllPackageClasses.ClassStub.MethodStub.RETURNTYPE, returnType)
.Replace(AllPackageClasses.ClassStub.MethodStub.NAME, methodNameOrigin + SpecialNames.DefaultMethodSuffix)
.Replace(AllPackageClasses.ClassStub.MethodStub.PARAMETERS, paramsString)
.Replace(AllPackageClasses.ClassStub.MethodStub.EXTEND_EXCEPTIONS, exceptionsThrowed)
Expand Down
16 changes: 16 additions & 0 deletions src/net/JNetReflector/Templates/SingleListenerJavaFile.template
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,34 @@ public final class ALLPACKAGE_CLASSES_STUB_SIMPLECLASS_PLACEHOLDER ALLPACKAGE_CL
public synchronized void release() {
_internalListener.release();
}

public synchronized int getEventIndex(String eventName) {
return _internalListener.getEventIndex(eventName);
}

public synchronized void raiseEvent(String eventName) {
_internalListener.raiseEvent(eventName);
}

public synchronized void raiseEvent(int eventIndex) {
_internalListener.raiseEvent(eventIndex);
}

public synchronized void raiseEvent(String eventName, Object e) {
_internalListener.raiseEvent(eventName, e);
}

public synchronized void raiseEvent(int eventIndex, Object e) {
_internalListener.raiseEvent(eventIndex, e);
}

public synchronized void raiseEvent(String eventName, Object e, Object... objects) {
_internalListener.raiseEvent(eventName, e, objects);
}

public synchronized void raiseEvent(int eventIndex, Object e, Object... objects) {
_internalListener.raiseEvent(eventIndex, e, objects);
}

public Object getEventData() {
return _internalListener.getEventData();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//@Override
METHOD_STUB_LISTENER_INDEX_VARIABLE_NAME
//@Override
public METHOD_STUB_RETURN_TYPE_PLACEHOLDER METHOD_STUB_METHOD_NAME_PLACEHOLDER(METHOD_STUB_PARAMETERS_PLACEHOLDER)METHOD_STUB_EXTEND_EXCEPTIONS_PLACEHOLDER {
METHOD_STUB_EXECUTION_PLACEHOLDER
}
20 changes: 14 additions & 6 deletions src/net/JNetReflector/Templates/Templates.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ public class MethodStub
public const string WHERECLAUSES = "METHOD_STUB_WHERECLAUSES_PLACEHOLDER";
public const string EXECUTION = "METHOD_STUB_EXECUTION_PLACEHOLDER";
public const string EXTEND_EXCEPTIONS = "METHOD_STUB_EXTEND_EXCEPTIONS_PLACEHOLDER";
public const string LISTENER_INDEX_VARIABLE_NAME = "METHOD_STUB_LISTENER_INDEX_VARIABLE_NAME";
public const string LISTENER_EXECUTION_TYPE = "METHOD_STUB_LISTENER_EXECUTION_TYPE_PLACEHOLDER";
public const string LISTENER_EXECUTION = "METHOD_STUB_LISTENER_EXECUTION_PLACEHOLDER";
public const string LISTENER_HANDLER_EXECUTION = "METHOD_STUB_LISTENER_HANDLER_EXECUTION_PLACEHOLDER";
Expand Down Expand Up @@ -248,22 +249,29 @@ public class MethodStub
+ "{1}" + Environment.NewLine
+ "}}" + Environment.NewLine;

public static string LISTENER_INDEX_VARIABLE_NAME_FORMAT = "int _{0}Index = 0;";
public static string VOID_LISTENER_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) throw new UnsupportedOperationException(\"The method shall be implemented in .NET side since does not have a default implementation within the JVM\");";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) throw new UnsupportedOperationException(\"The method shall be implemented in .NET side since does not have a default implementation within the JVM\");";
public const string SUPERINTERFACE_VOID_LISTENER_EXECUTION_FORMAT = "{0}.super.{1}({2});";
public const string SUPERINTERFACE_VOID_LISTENER_BASE_EXECUTION_FORMAT = "super.{0}({1});";
public static string SUPERINTERFACE_VOID_DEFAULT_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) {2}.super.{3}({4});";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) {2}.super.{3}({4});";
public static string SUPERINTERFACE_VOID_ADAPTER_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) super.{2}({3});";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) super.{2}({3});";
public static string TYPED_LISTENER_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) throw new UnsupportedOperationException(\"The method shall be implemented in .NET side since does not have a default implementation within the JVM\"); Object retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); if (!eventDataExchange.getHasOverride()) throw new UnsupportedOperationException(\"The method shall be implemented in .NET side since does not have a default implementation within the JVM\"); Object retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
public const string SUPERINTERFACE_TYPED_LISTENER_EXECUTION_FORMAT = "return {0}.super.{1}({2});";
public const string SUPERINTERFACE_TYPED_LISTENER_BASE_EXECUTION_FORMAT = "return super.{0}({1});";
public static string SUPERINTERFACE_TYPED_DEFAULT_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); Object retVal; if (!eventDataExchange.getHasOverride()) retVal = {3}.super.{4}({5}); else retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); Object retVal; if (!eventDataExchange.getHasOverride()) retVal = {3}.super.{4}({5}); else retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
public static string SUPERINTERFACE_TYPED_ADAPTER_EXECUTION_FORMAT = "org.mases.jnet.developed.JNetEventResult eventDataExchange = new org.mases.jnet.developed.JNetEventResult();" + Environment.NewLine
+ "raiseEvent(\"{0}\", eventDataExchange{1}); Object retVal; if (!eventDataExchange.getHasOverride()) retVal = super.{3}({4}); else retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
+ "if (_{0}Index <= 0) _{0}Index = getEventIndex(\"{0}\");" + Environment.NewLine
+ "raiseEvent(_{0}Index, eventDataExchange{1}); Object retVal; if (!eventDataExchange.getHasOverride()) retVal = super.{3}({4}); else retVal = eventDataExchange.getReturnData(); return ({2})retVal;";
}

public class PropertyStub
Expand Down
Loading