mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
use an ObjectInputStream for deserialization that has a configurable class loader for use in OSGi context
This commit is contained in:
+1
@@ -11,6 +11,7 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRace;
|
||||
|
||||
public class MockedTrackedRaceWithFixedRank extends MockedTrackedRace {
|
||||
private static final long serialVersionUID = -8587203762630194172L;
|
||||
private final int rank;
|
||||
private final boolean started;
|
||||
private final RaceDefinition raceDefinition;
|
||||
|
||||
+1
@@ -9,6 +9,7 @@ import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
|
||||
public class MockedTrackedRaceWithFixedRankAndManyCompetitors extends MockedTrackedRaceWithFixedRank {
|
||||
private static final long serialVersionUID = -6189437610363552577L;
|
||||
private final Set<Competitor> competitors;
|
||||
private final RaceDefinition raceDefinition;
|
||||
|
||||
|
||||
+2
-1
@@ -29,6 +29,7 @@ import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.ReceiverType;
|
||||
import com.sap.sailing.util.ObjectInputStreamWithConfigurableClassLoader;
|
||||
|
||||
public class SerializationTest extends OnlineTracTracBasedTest {
|
||||
public SerializationTest() throws MalformedURLException, URISyntaxException {
|
||||
@@ -70,7 +71,7 @@ public class SerializationTest extends OnlineTracTracBasedTest {
|
||||
}
|
||||
}
|
||||
}.start();
|
||||
ObjectInputStream dis = new ObjectInputStream(pis);
|
||||
ObjectInputStream dis = new ObjectInputStreamWithConfigurableClassLoader(pis, getClass().getClassLoader());
|
||||
@SuppressWarnings("unchecked")
|
||||
T result = (T) dis.readObject();
|
||||
dis.close();
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.sap.sailing.util;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.io.StreamCorruptedException;
|
||||
|
||||
public class ObjectInputStreamWithConfigurableClassLoader extends ObjectInputStream {
|
||||
private final ClassLoader loader;
|
||||
|
||||
public ObjectInputStreamWithConfigurableClassLoader(InputStream in, ClassLoader loader) throws IOException, StreamCorruptedException {
|
||||
super(in);
|
||||
assert loader != null;
|
||||
if (loader == null) {
|
||||
throw new IllegalArgumentException("Illegal null argument to ObjectInputStreamWithLoader");
|
||||
}
|
||||
this.loader = loader;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
|
||||
String className = classDesc.getName();
|
||||
return loader.loadClass(className);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user