This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 40465d0053884f48e99e00d391ca88f4da2e7571 Author: Tony CHEMIT <dev@tchemit.fr> Date: Sun Jan 1 18:17:56 2017 +0100 Generate generic handler if necessary (fixes #4120) --- .../org/nuiton/jaxx/compiler/JAXXCompiler.java | 19 +++++++++-- .../jaxx/compiler/finalizers/DefaultFinalizer.java | 37 +++++++--------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/JAXXCompiler.java b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/JAXXCompiler.java index 6d9572c..8dcfcda 100644 --- a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/JAXXCompiler.java +++ b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/JAXXCompiler.java @@ -728,9 +728,11 @@ public class JAXXCompiler { " is not empty: " + tagsBeingCompiled); } + compileSecondPass(document.getDocumentElement()); + if (isUseHandler()) { - String handler = getUiHandler(); + String handler = getUIHandlerWithGeneric(); boolean addField = true; try { @@ -776,7 +778,7 @@ public class JAXXCompiler { } } - compileSecondPass(document.getDocumentElement()); + } /*------------------------------------------------------------------------*/ @@ -2029,6 +2031,19 @@ public class JAXXCompiler { return uiHandler; } + public String getUIHandlerWithGeneric() { + String genericType = getGenericType(); + String result = uiHandler; + if (genericType != null) { + int beginIndex = genericType.indexOf(" extends"); + if (beginIndex > -1) { + genericType = genericType.substring(0, beginIndex).trim(); + } + result += "< " + genericType + " >"; + } + return result; + } + public void setUiHandler(String uiHandler) { this.uiHandler = uiHandler; } diff --git a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/finalizers/DefaultFinalizer.java b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/finalizers/DefaultFinalizer.java index d108bc3..1bd0d61 100644 --- a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/finalizers/DefaultFinalizer.java +++ b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/finalizers/DefaultFinalizer.java @@ -546,9 +546,7 @@ public class DefaultFinalizer extends AbstractFinalizer { addEventHandlers(compiler, javaFile); } - protected void addDataBindings(JAXXCompiler compiler, - JavaFile javaFile, - DataBinding[] bindings) { + protected void addDataBindings(JAXXCompiler compiler, JavaFile javaFile, DataBinding[] bindings) { if (bindings.length < 1) { // no data bindings @@ -580,9 +578,7 @@ public class DefaultFinalizer extends AbstractFinalizer { } } - protected void addJAXXObjectSupport(JAXXCompiler compiler, - CompiledObject root, - JavaFile javaFile) { + protected void addJAXXObjectSupport(JAXXCompiler compiler, CompiledObject root, JavaFile javaFile) { String jaxxContextImplementorClass = compiler.getConfiguration().getJaxxContextClass().getName(); @@ -666,8 +662,7 @@ public class DefaultFinalizer extends AbstractFinalizer { /*---------------------------------------------------------------------------------*/ /*-- Create fields ----------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - protected JavaField addJAXXObjectDescriptorField(JAXXCompiler compiler, - JavaFile javaFile) { + protected JavaField addJAXXObjectDescriptorField(JAXXCompiler compiler, JavaFile javaFile) { JavaField field; try { JAXXObjectDescriptor descriptor = compiler.getJAXXObjectDescriptor(); @@ -725,8 +720,7 @@ public class DefaultFinalizer extends AbstractFinalizer { return field; } - protected void addPreviousValuesField(JAXXCompiler compiler, - JavaFile javaFile, CompiledObject root) { + protected void addPreviousValuesField(JAXXCompiler compiler, JavaFile javaFile, CompiledObject root) { boolean superclassIsJAXXObject = javaFile.isSuperclassIsJAXXObject(); @@ -768,8 +762,7 @@ public class DefaultFinalizer extends AbstractFinalizer { /*---------------------------------------------------------------------------------*/ /*-- Create methods ---------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - protected void addPropertyChangeSupport(CompiledObject root, - JavaFile javaFile) { + protected void addPropertyChangeSupport(CompiledObject root, JavaFile javaFile) { ClassDescriptor currentClass = root.getObjectClass(); MethodDescriptor firePropertyChange = null; while (firePropertyChange == null && currentClass != null) { @@ -832,19 +825,9 @@ public class DefaultFinalizer extends AbstractFinalizer { continue; } CompiledObjectDecorator decorator = object.getDecorator(); - lastWasMethodCall = decorator.createInitializer(compiler, - root, - object, - body, - lastWasMethodCall - ); + lastWasMethodCall = decorator.createInitializer(compiler, root, object, body, lastWasMethodCall); } - root.getDecorator().createInitializer(compiler, - root, - root, - body, - lastWasMethodCall - ); + root.getDecorator().createInitializer(compiler, root, root, body, lastWasMethodCall); if (compiler.getInitializer().length() > 0) { body.append(compiler.getInitializer()); } @@ -1076,7 +1059,11 @@ public class DefaultFinalizer extends AbstractFinalizer { if (useHandler) { String handler = compiler.getUiHandler(); String handlerType = compiler.getImportedType(handler); - code.append("handler = new ").append(handlerType).append("();").append(eol); + code.append("handler = new ").append(handlerType); + if (compiler.getGenericType() != null) { + code.append("<>"); + } + code.append("();").append(eol); code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);").append(eol); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.