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

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
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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.
+24 −26
Original line number Diff line number Diff line
@@ -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;

@@ -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) {