/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.module.artifact.serializer;
import static org.mule.runtime.api.util.Preconditions.checkArgument;
import org.mule.runtime.core.api.MuleContext;
import org.mule.runtime.core.api.context.MuleContextAware;
import org.mule.runtime.core.api.serialization.ObjectSerializer;
import org.mule.runtime.core.api.serialization.SerializationProtocol;
import org.mule.runtime.core.internal.serialization.JavaExternalSerializerProtocol;
import org.mule.runtime.module.artifact.classloader.ClassLoaderRepository;
public class ArtifactObjectSerializer implements ObjectSerializer, MuleContextAware {
private volatile JavaExternalSerializerProtocol javaExternalSerializerProtocol;
private volatile CustomJavaSerializationProtocol javaInternalSerializerProtocol;
public ArtifactObjectSerializer(ClassLoaderRepository classLoaderRepository) {
checkArgument(classLoaderRepository != null, "ClassLoaderRepository cannot be null");
javaExternalSerializerProtocol = new JavaExternalSerializerProtocol();
javaInternalSerializerProtocol = new CustomJavaSerializationProtocol(classLoaderRepository);
}
@Override
public SerializationProtocol getInternalProtocol() {
return javaInternalSerializerProtocol;
}
@Override
public SerializationProtocol getExternalProtocol() {
return javaExternalSerializerProtocol;
}
@Override
public void setMuleContext(MuleContext context) {
javaInternalSerializerProtocol.setMuleContext(context);
javaExternalSerializerProtocol.setMuleContext(context);
}
}