TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.5.0-M2
  4. #25859

7.5.0-M2
TopLogic Release

2022-06-27

Verbesserung

Wichtig
#26542
yFiles: onDoubleClick und Kontext-Menü auf Knoten
#26563
Prüfung von Abhängigkeiten auf Sicherheitslücken
#26620
Drag and Drop mit Mehrfachselektion
#26696
Increase minimum Java version to 11
#26715
Einheitliche Multiselektionsdarstellung für Grid und Tabellen
#26719
WrapperGenerator: Maven-Plugin für Wapper-Generierung
#26726
Datentyp "Code"
#26732
Layout-Editor: Alternative Sichten für unterschiedliche Modelltypen
#26739
WrapperGenerator: Typisierte Factory-Methoden und addXxx(), removeXxx()
#26746
Modell: Passwort-Attribute
#26761
TL-Script: contextPath() Funktion
#26772
Listenwertige Attribute mit primitivem Typ
#26775
Automatische Übersetzung von I18NConstants
#26811
Kafka & TL-Sync Log-Meldungen in eigene Datei auslagern
#26816
Monitor Seite um Kafka und TL-Sync Status erweitern
Detail
#24564
Anlegen von ScriptRecorder Templates nicht im deploy Ordner
#26215
TL-Doc: Plugin für Templates
#26703
Update MSSQL-JDBC-Driver to Version 10.2.0.jre11
#26707
Tool zur Überprüfung von API-Konsistenz
#26708
Check auf fehlende Übersetzungen der I18NConstants im nightly Build
#26712
Maven-Konfiguration zum Aufruf von "Normalize-Layouts"
#26722
TL-Maven-Plugin: Goal `translate` mit verschlüsseltem Server-Passphrase für DeepL
#26723
Tabellenspalte für primitives Modellattribut (einfach) umdefinieren
#26728
CodeEditorControl soll keinen ACE-Editor für unsichtbare Felder schreiben
#26734
Schema-Editor: Spaltenauswahl bei der Definition von Key-Attributes
#26747
JavaDoc: Warnung bei CameCase Inhalt innerhalb <p>-Tags in
#26752
Entfernen des Moduls tl-help
#26764
Modell-Editor: Gestaltung des Kontextmenü verbessern
#26765
Modell-Editor: Kontextmenü erweitern mit GoTo Definition
#26766
Model-Upgrade: Make-Abstract und Make-Concrete
#26799
Bessere Ladecursorunterstützung bei mehreren langlaufenden GUI-Aktionen
#26814
Schnelleres Auflösen von Dateien im FileManager (ohne Files.exists(...))
#26815
KBDataProducerTask soll auf Stop-Aufforderung des Schedulers reagieren
#26822
Migration: DB-Schema-Update nach der Migration
#26838
Selektion für SingleSelectionModel reduzieren falls notwendig
#26841
Migration: Verschieben von Instanzen in eine andere Tabelle
Kleinigkeit
#26706
Besseres Logging beim Bauen des App-WARs
#26737
Eclipse-Maven-Settings: Aktuelle TL-Version als Minimum Version für Plugin-Exclude
#26738
Archetype: Vollqualifizierte Modul-Namen vermeiden

Fehlerbehebung

Top-Thema
#26850
Enums eines Moduls verschwinden beim Anlegen und Löschen von Enums in diesem Modul
Wichtig
#25761
Race Condition in TL-Sync bei Modell-Änderungen, zB. neuer TLClassifier
#26612
Invalide Sessionrevision bei mehreren Threads
#26716
WrapperGenerator: Ableitung von StructuredElement nicht für alle Klassen eines Moduls
#26790
Fehler beim Laden von Objekten mit langen Texten mit H2
#26791
Knowlege-Base: Fehler beim Update von Gültigkeits-Zeiträumen beim Nachladen von Objektdaten
#26802
Migrationsskripte werden nicht ausgeführt
#26808
Replaymigration mit H2 scheitert bei langen CLOB und BLOB Werten
#26809
Replaymigration scheitert aufgrund von Zugriff auf Nur-Lesen-Spalten
Detail
#25343
Fehlender Filename-Check bei Multi-Upload
#25834
Fehler bei System ohne "Wartungsseiten"
#25859
JavaScript-Fehler beim Aufklappen von Knoten in TreeTables
#26379
Replay-Migration schlägt fehl, weil die DependencyInjection nicht stattfindet
#26438
Checkbox zum Selektieren aller Einträge kann nicht geklickt werden
#26465
Modulnamen mit Parts aus Zifferen erlaubt funktioniert aber nicht
#26555
Lesezeichen von TL-Doc nutzen immer die interne Adresse
#26557
TL-Doc: Highlighting von Codeblöcken führt zu RegEx Fehlern
#26577
Import der Dokumentation funktioniert nicht auf Maven-Workspaces
#26602
Kein Admin Button im Modern Theme
#26619
Inlinen einer Datei im LayoutModelProcessor kaputt
#26624
Inkrementelle Updates in TreeGrid funktionieren nicht immer
#26635
Abhängigkeit zu apache-mime4j-0.3.jar entfernen
#26637
Abhängigkeit pac4j auf Version 5.3.1 anheben
#26638
Abhängigkeit H2 auf Version 2.1.210 anheben
#26639
Ext-Modul für Jetty entfernen
#26640
Abhängigkeit openxml4j entfernen
#26641
Update Jetty to 9.4.45.v20220203
#26645
TestComponentConfiguration sollte Templates nicht testen
#26646
Udate POI to Version 5.2.2
#26647
Update jsoup to Version 1.14.3 and guice to Version 5.1.0
#26649
Update commons-io to Version 2.11.0
#26660
TL-Remote entfernen
#26680
Multiselektion Unterstützung in Tree, Table und TreeTable
#26694
itext 2.1.7 durch openpdf 1.3.27 ersetzen
#26698
MySQL Connector auf Version 8.0.27 anheben
#26699
Zuklappen der Selektion ändert die Selektion in TreeGrids
#26704
Tool für Dependency-Analyse: Keine doppelten Klassen im ClassPath
#26710
ModelBuilder für Services-Sicht fügt Nutzer-Sitzungen in die Tabelle ein
#26711
ACE Editor und requirejs definieren die globale Variable require
#26717
JavaDoc schreibt standardmäßig außerhalb des Moduls
#26720
CodeEditorControl soll Clientseitige Fehler des ACE Editors berichten
#26724
Meta-Model: Zugriff auf den Index eines Classifiers
#26725
Schema-Editor: Fehler beim Speichern
#26727
Fehlende Anpassung der (Standard-) Selektion nach Baumupdate
#26731
Modell-Editor: Löschen in der Detailsicht entfernt falsches Diagrammelement
#26735
Formulareditor: Crash, wenn Attribut nicht mehr existiert
#26736
Doppelte Konfiguration der Beschreibung eines TLType
#26744
Post-Create-Action in Bäumen funktioniert nicht mit In-App-Kommandos
#26748
Ungenügendes Quoting beim Schreiben von JavaScript
#26757
Inkonsistente API von StructuredElement
#26758
Modell-Editor verliert Selektion bei Relayout
#26760
Project Demo: Use H2 database config as local default.
#26763
TL-Doc: Kopieren von alter Hilfe Dokumentation funktioniert nicht
#26767
Modell-Export schreibt Resource-Dateien in falsches Modul
#26768
Eltern werden nicht immer expandiert nach Selektionsänderung
#26770
Modell-Editor: Fehler bei Weiterbearbeitung nach Löschen von Element
#26771
NPE beim Filtern aller Threads im Thread-Monitor
#26773
TL-Script: Self-Expression in concat() wird nicht berücksichtigt
#26774
TL-Script: Fehlermeldung, wenn sublist() mit zu großem Index gerufen wird
#26783
WYSIWYG CSS benutzt Variable, die in com.top_logic.icons definiert wird
#26786
Launch-Configs referenzieren noch Java-8 VM
#26795
Datenmigration für Ticket #25881 und #26398
#26800
Scripting: StructuredElement mit beliebiger Singleton-Wurzel aufzeichnen
#26803
KnowledgeBaseRuntimeException bei Zugriff auf gelöschte Referenz
#26804
Keine konsistente Löschung von Modellelementen beim Modell-Upgrade
#26806
Script-Recorder: Branch und Revision nur aufzeichnen, falls es notwendig ist
#26812
Teilbaumupdate eines unsichtbaren Wurzelknotens fehlerhaft
#26827
Keine Fehlermeldung beim Zugriff auf Fremdschlüsselreferenzen, wenn Fremdschlüssel nicht aufgelöst werden kann
#26842
Scripting-Recorder: Abspielen der Multiselektion fehlerhaft
#26845
NPE im Übersetzungsdienst, wenn beim Startup keine Netzwerkverbindung verfügbar ist
#26848
Dokumentenmanagement funktioniert nicht in nicht-versionierendem System
#26849
Maps von ConfiguredInstances sollen Reihenfolge behalten
#26854
Tab löschen einer Tabbar eines Legacy-Tabs wird nicht aufgezeichnet
#26855
Fehlende Abhängigkeit DynamicComponentService -> SafeHTML
Kleinigkeit
#26792
Scripting: Assertions versuchen auf unsichtbare Spalten zuzugreifen
Fehlerbehebung

Detail

#25859

JavaScript-Fehler beim Aufklappen von Knoten in TreeTables

TreeTable

In folgender Situation kommt es zu einem Javascript-Fehler:

Zwei Tabellen X` und `Y sind sichtbar. Y ist eine Tree-Table die als Drop-Target definiert ist.

Jetzt gibt es jetzt einen Event der dafür sorgt, dass X` die Selektion ändert und `Y den Aufklappzustand eines Knotens.

Dann gibt es dem Javascript-Fehler:

2021-03-30 10:50:15,149 ERROR [qtp1638335699-46]: base.services.simpleajax.AJAXServlet$AJAXLogHandler - Client-side message: Uncaught JavaScript exception (exception: 'TypeError: nodesArray is null', component: 'masterFrame', source: 'http://localhost:8080/pvm/servlet/LayoutServlet/w19502b3c85120aaa-f8697ac5a0fdad1', layout: 'masterFrame.xml', session: node01330x7z95lzb618k37obsjewrs2, UserAgent[Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0])

Ursache

Die Tree-Table Y zeichnet sich neu, da der Aufklappzustand eines Knotens geändert wird.

Y` ist Drop-Target, deswegen ist der HTML-Dom-Parent `D der Tabelle ein DIV ohne ID (der tl:ContentRenderer schreibt ein anonymes DIV) welches neu gelayoutet wird.

Weil X auch ein Update hat gibt es 2 Knoten die gelayoutet werden müssen.

Jetzt gibt es Javascript-Code der die Menge der zu layoutenden Knoten M` analysiert um nur Knoten zu layouten, die keine inneren zu layoutenden Knoten haben. Dazu wird geschaut, ob es zu einem Knoten in `M einen DOM-Vorfahren in M` gibt. Dies wird gemacht indem geschaut wird ob es zu einem Vorfahren einen Knoten in `M mit der selben ID gibt.

In M` ist das anonyme DIV (ohne ID) `D enthalten das vom tl:ContentRenderer geschrieben wurde. Natürlich gibt es einen Vorgänger dieses DIV's mit der selben, nämlich keiner, ID. Der Algorithmus denkt es gibt einen Ancestor in M` und ignoriert `D. Alle anderen zu layouten Knoten werden ebenfalls vom Algorithmus als Kind von D angesehen, also ignoriert.

Die Folge ist, das (vermeintlich) keine Knoten gelayoutet werden müssen. Jetzt schlägt ein Fehler in der LinkedHashMap (in JS) zu der sagt: Die Werte einer leeren Map sind null. So findet ein null Zugriff statt.

Test

  • Ein automatischer Test ist nicht möglich, da das Problem im JavaScript Code liegt.
  • Da das Problem sonst nur mit zusätzlichen Sichten reproduziert werden kann, die technisch aber nicht sinnvoll sind, muss ein Patch eingespielt werden.
  • Folgenden Patch einspielen:

{{{#!patch ### Eclipse Workspace Patch 1.0 #P com.top_logic Index: src/com/top_logic/layout/layoutRenderer/ContentRenderer.java =================================================================== --- src/com/top_logic/layout/layoutRenderer/ContentRenderer.java (revision 307602) +++ src/com/top_logic/layout/layoutRenderer/ContentRenderer.java (working copy) @@ -94,7 +94,7 @@ businessComponent.writeDebugHeader(out); }

  • if (dropEnabled(contentControl)) {

+ if (true || dropEnabled(contentControl)) { out.beginBeginTag(DIV); out.beginCssClasses(); out.append("lcViewport"); }}}

  • Im Demo in der DemoTypes Struktur unter dem Wurzel Knoten zwei Knoten generieren lassen.
  • In folgende Sicht gehen: Technisches Demo > Layout-Framework#1 > Formulare > In-App Drag and Drop
  • In der TreeGrid den ersten der generierten Knoten aufklappen und das A1 in die TreeTable auf den zweiten generierten Knoten ziehen.
  • Es darf kein Error geloggt werden.
  • Alle angezeigten Sichten müssen korrekt aussehen.
    • Insbesondere muss in allen angezeigten Tabellen die Fußzeile unten angezeigt werden und nicht irgendwo rechts oben direkt unter dem Tabellen-Header neben den Spalten-Inhalten.
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login