@Override public Object createExternal(Class<?> subjectType, ObjectInput input) throws IOException, ClassNotFoundException { return this.externalizer.readObject(input); } }
@Override public void writeObject(ObjectOutput output, T object) throws IOException { this.externalizer.writeObject(output, object); }
@Override public Class<Object> getTargetClass() { return this.externalizer.getTargetClass(); }
public void test(T subject) throws IOException, ClassNotFoundException { assertTrue(this.externalizer.getTargetClass().isInstance(subject)); ByteArrayOutputStream externalizedOutput = new ByteArrayOutputStream(); try (ObjectOutputStream output = new ObjectOutputStream(externalizedOutput)) { this.externalizer.writeObject(output, subject); } byte[] externalizedBytes = externalizedOutput.toByteArray(); try (ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(externalizedBytes))) { T result = this.externalizer.readObject(input); assertTrue(this.externalizer.getTargetClass().isInstance(result)); this.assertion.accept(subject, result); } // If object is serializable, make sure we've actually improved upon default serialization size if (subject instanceof java.io.Serializable) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try (ObjectOutputStream output = new ObjectOutputStream(out)) { output.writeObject(subject); } byte[] bytes = out.toByteArray(); Assert.assertTrue(externalizedBytes.length < bytes.length); } } }
@Override public Object readObject(ObjectInput input) throws IOException, ClassNotFoundException { return this.externalizer.readObject(input); }
@Override public void writeExternal(Object subject, ObjectOutput output) throws IOException { this.externalizer.writeObject(output, subject); }
@Override public Set<Class<? extends T>> getTypeClasses() { return Collections.singleton(this.externalizer.getTargetClass()); }
@Override public T readObject(ObjectInput input) throws IOException, ClassNotFoundException { return this.externalizer.readObject(input); }
@Override public void writeObject(ObjectOutput output, Object object) throws IOException { this.externalizer.writeObject(output, object); }
private ExternalizerObjectTable(IntSerializer indexSerializer, List<Externalizer<Object>> externalizers) { this.indexSerializer = indexSerializer; this.externalizers = externalizers; ListIterator<Externalizer<Object>> iterator = externalizers.listIterator(); while (iterator.hasNext()) { this.indexes.putIfAbsent(iterator.next().getTargetClass(), iterator.previousIndex()); } }
@Override public Object readObject(Unmarshaller unmarshaller) throws IOException, ClassNotFoundException { int index = this.indexSerializer.readInt(unmarshaller); if (index >= this.externalizers.size()) { throw new IllegalStateException(); } return this.externalizers.get(index).readObject(unmarshaller); }
@Override public void writeObject(ObjectOutput output, HashableMarshalledValue<T> object) throws IOException { this.externalizer.writeObject(output, object); output.writeInt(object.hashCode()); }
/** * Cast this externalizer to its target type. * @param type the externalizer type * @return the externalizer */ @SuppressWarnings("unchecked") public <T> Externalizer<T> cast(Class<T> type) { if (!type.isAssignableFrom(this.externalizer.getTargetClass())) { throw new IllegalArgumentException(type.getName()); } return (Externalizer<T>) this.externalizer; } }
@Override public LocalDateTime readObject(ObjectInput input) throws IOException, ClassNotFoundException { LocalDate date = DefaultExternalizer.LOCAL_DATE.cast(LocalDate.class).readObject(input); LocalTime time = DefaultExternalizer.LOCAL_TIME.cast(LocalTime.class).readObject(input); return LocalDateTime.of(date, time); }
@Override public void writeObject(Marshaller marshaller, Object object) throws IOException { this.serializer.writeInt(marshaller, this.index); this.externalizer.writeObject(marshaller, object); } }
public EnumExternalizerTester(Externalizer<E> externalizer) { super(externalizer, Assert::assertSame); this.targetClass = externalizer.getTargetClass(); }
@Override public URL readObject(ObjectInput input) throws IOException, ClassNotFoundException { return DefaultExternalizer.URI.cast(URI.class).readObject(input).toURL(); }
@Override public void writeObject(ObjectOutput output, URL url) throws IOException { try { DefaultExternalizer.URI.cast(URI.class).writeObject(output, url.toURI()); } catch (URISyntaxException e) { throw new IOException(e); } }
InfinispanLogger.ROOT_LOGGER.debugf("Cache container %s will use an externalizer for %s", this.name, externalizer.getTargetClass().getName()); serialization.addAdvancedExternalizer(new AdvancedExternalizerAdapter<>(id++, externalizer));
@Override public InfinispanBeanGroupEntry<I, T> readObject(ObjectInput input) throws IOException, ClassNotFoundException { return new InfinispanBeanGroupEntry<>(this.externalizer.readObject(input)); }