Commit 5bdf34cf authored by Uwe Peuker's avatar Uwe Peuker

Wenn Objektreferenzen auf einen falschen Typ verweisen, wird die

Referenz beim Deserialisieren auf "null" gesetzt

Das ist beispielsweise passiert, wenn die Bereiche mit dynamischen
Objekten ausgetauscht wurden, aber die passende Parametrierung nicht. Im
Endeffekt hat das dann dazu geführt, dass die Parametrierung nicht
starten konnte.
parent 3a87f89c
......@@ -3,6 +3,12 @@ Versionsverlauf
## [Noch nicht veröffentlicht]
- Wenn Objektreferenzen auf einen falschen Typ verweisen, wird die Referenz beim
Deserialisieren auf "null" gesetzt
Das ist beispielsweise passiert, wenn die Bereiche mit dynamischen Objekten ausgetauscht
wurden, aber die passende Parametrierung nicht. Im Endeffekt hat das dann dazu geführt,
dass die Parametrierung nicht starten konnte.
## [Version 2.4.0]
- UrlasserInfo aus Rahmenwerk in Bibliothek übernommen, damit auch Serverapplikationen einheitlich darauf zugreifen können.
......
......@@ -42,6 +42,7 @@ import de.bsvrz.dav.daf.main.config.ReferenceAttributeType;
import de.bsvrz.dav.daf.main.config.ReferenceType;
import de.bsvrz.dav.daf.main.config.StringAttributeType;
import de.bsvrz.dav.daf.main.config.SystemObject;
import de.bsvrz.dav.daf.main.config.SystemObjectType;
import de.bsvrz.dav.daf.main.config.TimeAttributeType;
import de.bsvrz.sys.funclib.debug.Debug;
......@@ -54,7 +55,7 @@ import de.bsvrz.sys.funclib.debug.Debug;
public final class ParameterDatenFactory {
private static final String ATG_PARAMETRIERUNG_PID = "atg.parametrierung";
private static final String ATTRIBUT_GRUPPE_ATTR = "AttributGruppe";
private static final String BEREICH_ATTR = "Bereich";
private static final String DATEN_SPEZIFIKATION_ATTR = "DatenSpezifikation";
......@@ -99,15 +100,12 @@ public final class ParameterDatenFactory {
/**
* füllt ein übergebenes Element eines Attributs aus einem
* Datenverteiler-Datensatz mit den Daten aus dem entsprechenden Attribut
* eines Parameter-Datensatzes.
* Datenverteiler-Datensatz mit den Daten aus dem entsprechenden Attribut eines
* Parameter-Datensatzes.
*
* @param verbindung
* die zu Grunde liegende Verbindung
* @param data
* das Element des Datenverteiler-Datensatzes
* @param attribut
* des Attribut des Parameter-Datensatzes
* @param verbindung die zu Grunde liegende Verbindung
* @param data das Element des Datenverteiler-Datensatzes
* @param attribut des Attribut des Parameter-Datensatzes
*/
private static boolean fuelleAttribut(final ClientDavInterface verbindung, final Data data,
final Attribut<?> attribut) {
......@@ -169,8 +167,16 @@ public final class ParameterDatenFactory {
if (sysObj == null) {
ParameterDatenFactory.LOGGER
.warning("Referenz auf Object " + objId + " oder PID: " + pid + " nicht gefunden");
} else {
SystemObjectType referencedObjectType = ((ReferenceAttributeType) type)
.getReferencedObjectType();
if (referencedObjectType != null && !sysObj.isOfType(referencedObjectType)) {
ParameterDatenFactory.LOGGER.warning("Das Referenzobjekt " + sysObj + " mit dem Typ "
+ sysObj.getType() + " nicht dem erwarteten Typ "
+ referencedObjectType + " !");
sysObj = null;
}
}
data.asReferenceValue().setSystemObject(sysObj);
}
}
......@@ -183,12 +189,9 @@ public final class ParameterDatenFactory {
/**
* wandelt einen Parameter-Datensatz in einem Datenverteiler-Datensatz um.
*
* @param verbindung
* die zu Grunde liegende Verbindung
* @param atg
* die Attributgruppe für die Zieldaten
* @param datensatz
* der Parameter-Datensatz
* @param verbindung die zu Grunde liegende Verbindung
* @param atg die Attributgruppe für die Zieldaten
* @param datensatz der Parameter-Datensatz
* @return der Datenverteiler-Datensatz
*/
public static Data getData(final ClientDavInterface verbindung, final AttributeGroup atg,
......@@ -203,12 +206,9 @@ public final class ParameterDatenFactory {
/**
* wandelt einen Parameter-Datensatz in einem Datenverteiler-Datensatz um.
*
* @param verbindung
* die zu Grunde liegende Verbindung
* @param atg
* die Attributgruppe für die Zieldaten
* @param datensatz
* der Parameter-Datensatz
* @param verbindung die zu Grunde liegende Verbindung
* @param atg die Attributgruppe für die Zieldaten
* @param datensatz der Parameter-Datensatz
* @return der Datenverteiler-Datensatz
*/
public static DataWithState getDataWithState(final ClientDavInterface verbindung, final AttributeGroup atg,
......@@ -449,10 +449,8 @@ public final class ParameterDatenFactory {
* erzeugt aus einem Datenverteiler-Datensatz einen serialisierbaren
* Parameter-Datensatz.
*
* @param verbindung
* die zu Grunde liegende Datenverteilerverbindung
* @param data
* die Daten, die umgewandelt werden sollen
* @param verbindung die zu Grunde liegende Datenverteilerverbindung
* @param data die Daten, die umgewandelt werden sollen
* @return die umgewandelten Daten
*/
public static Attribut<? extends Object> getSerializable(final ClientDavInterface verbindung, final Data data) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment