本文整理汇总了Java中org.bson.codecs.configuration.CodecRegistry类的典型用法代码示例。如果您正苦于以下问题:Java CodecRegistry类的具体用法?Java CodecRegistry怎么用?Java CodecRegistry使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
CodecRegistry类属于org.bson.codecs.configuration包,在下文中一共展示了CodecRegistry类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getCodecRegistry
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Bean()
public static CodecRegistry getCodecRegistry() {
return CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(
new EnumCodecProvider(),
PojoCodecProvider.builder()
.register(CodecResolverTest.class)
.registerCodecResolver((CodecResolver) (type, typeCodecRegistry, codecConfiguration) -> {
if (TypeUtils.isAssignable(type, Base.class)) {
return new DocumentCodec((Class<? extends Base>) type, typeCodecRegistry, codecConfiguration);
}
return null;
})
.build()
),
MongoClient.getDefaultCodecRegistry());
}
示例2: Repository
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
protected Repository(
RepositorySetup configuration,
String collectionName,
Class<T> type) {
this.configuration = checkNotNull(configuration, "configuration");
checkNotNull(collectionName, "collectionName");
checkNotNull(type, "type");
final TypeAdapter<T> adapter = checkAdapter(configuration.gson.getAdapter(type), type);
final MongoCollection<Document> collection = configuration.database.getCollection(collectionName);
// combine default and immutables codec registries
final CodecRegistry registry = CodecRegistries.fromRegistries(collection.getCodecRegistry(), BsonEncoding.registryFor(type, adapter));
this.collection = collection
.withCodecRegistry(registry)
.withDocumentClass(type);
}
示例3: registryFor
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
/**
* "Smart" registry just for this particular {@code type}. It is typically composed with existing
* registries using {@link org.bson.codecs.configuration.CodecRegistries#fromRegistries(CodecRegistry...)} method.
*/
public static <T> CodecRegistry registryFor(final Class<T> type, final TypeAdapter<T> adapter) {
return new CodecRegistry() {
@SuppressWarnings("unchecked")
@Override
public <X> Codec<X> get(Class<X> clazz) {
// TODO is this a safe assumption with polymorphism (in repositories) ?
if (type.isAssignableFrom(clazz)) {
return (Codec<X>) codecFor(type, adapter);
} else {
// let other registries decide
throw new CodecConfigurationException(String.format("Type %s not supported by this registry", type.getName()));
}
}
};
}
示例4: get
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
if (clazz == BigDecimal.class) {
return (Codec<T>) bigDecimalCodec;
}
if (clazz == BigInteger.class) {
return (Codec<T>) bigIntegerCodec;
}
if (clazz == InetAddress.class || clazz == Inet4Address.class || clazz == Inet6Address.class) {
return (Codec<T>) inetAddressCodec;
}
if (clazz.isArray()) {
return (Codec<T>) arrayCodec;
}
return null;
}
示例5: get
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
// if clazz has type parameters, we warn the user that generic class definitions are problematic
Codec<T> codec = pojoContext.get(clazz, registry);
if (codec instanceof TypeCodec) {
if (clazz != null && clazz.getTypeParameters().length > 0) {
LOGGER.warn("Generic classes will only be encoded/decoded with their upper bounds! " +
"We could prohibit handling of the pojo codec for those generic classes, " +
"but then user would loose flexibility when subclassing such classes. Class: " + clazz.toGenericString());
}
TypeCodec typeCodec = (TypeCodec) codec;
// generate dynamic proxy to add CollectibleCodec functionality
if (typeCodec.isCollectible()) {
LOGGER.debug("Enhancing {} to be collectible codec.", typeCodec);
Class[] proxyInterfaces = new Class[]{CollectibleCodec.class};
CollectibleCodec collectibleCodec = (CollectibleCodec) Proxy.newProxyInstance(
PojoCodecProvider.class.getClassLoader(),
proxyInterfaces,
new CollectibleCodecDelegator(typeCodec));
return collectibleCodec;
}
}
return codec;
}
示例6: getCodecRegistry
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Bean()
public static CodecRegistry getCodecRegistry() {
return CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(
new EnumCodecProvider(),
PojoCodecProvider.builder()
.register(Pojo.class.getPackage().getName())
.registerCodecResolver((CodecResolver) (type, typeCodecRegistry, codecConfiguration) -> {
if (TypeUtils.isAssignable(type, CustomId.class)) {
return new CustomIdCodec((Class<CustomId>)type, typeCodecRegistry, codecConfiguration);
}
return null;
}).build()
),
MongoClient.getDefaultCodecRegistry());
}
示例7: get
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
// Optimistic get to avoid using dynamic memory
Codec<?> ret = codecs.get(clazz);
if (ret != null) {
return (Codec<T>) ret;
}
if (clazz.isEnum()) {
return (Codec<T>) codecs.computeIfAbsent(clazz, c -> new EnumCodec<>((Class<? extends Enum>) c));
}
if (clazz.isArray()) {
Class<?> componentType = clazz.getComponentType();
Codec componentCodec = get(componentType, registry);
if (componentCodec != null) {
return (Codec<T>) codecs.computeIfAbsent(clazz, c -> new ArrayCodec(clazz, componentCodec));
}
}
return registry.get(clazz);
}
示例8: toMongoClientOptions
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
public MongoClientOptions toMongoClientOptions(final CodecRegistry codecRegistry) {
return builder()
.sslEnabled(sslEnabled)
.codecRegistry(codecRegistry)
.readPreference(ReadPreference.valueOf(readPreference))
.connectTimeout(connectTimeout)
.serverSelectionTimeout(serverSelectionTimeout)
.cursorFinalizerEnabled(true)
.maxWaitTime(maxWaitTime)
.maxConnectionLifeTime(connectionpool.getMaxLifeTime())
.threadsAllowedToBlockForConnectionMultiplier(connectionpool.getBlockedConnectionMultiplier())
.maxConnectionIdleTime(connectionpool.getMaxIdleTime())
.minConnectionsPerHost(connectionpool.getMinSize())
.connectionsPerHost(connectionpool.getMaxSize())
.build();
}
示例9: buildCodecRegistries
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
private CodecRegistry buildCodecRegistries() {
Codec<Document> defaultDocumentCodec = MongoClient.getDefaultCodecRegistry().get(Document.class);
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(
MongoClient.getDefaultCodecRegistry(),
CodecRegistries.fromCodecs(
new BibleCodec(defaultDocumentCodec),
new BookCodec(defaultDocumentCodec),
new ChapterCodec(defaultDocumentCodec),
new VerseCodec(defaultDocumentCodec),
new UserCodec(defaultDocumentCodec)
)
);
return codecRegistry;
}
示例10: addEncodeStatements
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Override
public void addEncodeStatements(TypeMirror type, CodeGeneratorContext ctx) {
ctx.builder()
.addStatement("Codec codec = this.registry.get($L.getClass())",
ctx.getter())
.addStatement("encoderContext.encodeWithChildContext(codec, writer, $L)",
ctx.getter());
// ctx.builder()
// .addAnnotation(AnnotationSpec.builder(SuppressWarnings.class)
// .addMember("value", "$S", "unchecked")
// .addMember("value", "$S", "rawtypes").build());
ctx.instanceFields().add(ImmutableInstanceField.builder()
.type(ClassName.get(CodecRegistry.class)).name("registry").build());
ctx.instanceFields()
.add(ImmutableInstanceField.builder()
.type(ClassName.get(BsonTypeClassMap.class))
.name("bsonTypeClassMap").build());
}
示例11: MongoStorage
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@SuppressWarnings( "unchecked" )
public MongoStorage( oap.storage.MongoClient mongoClient, String database, String table,
LockStrategy lockStrategy ) {
super( IdentifierBuilder
.annotation()
.suggestion( ar -> ObjectId.get().toString() )
.size( 24 )
.idOptions()
.build(), lockStrategy );
this.database = mongoClient.getDatabase( database );
final Object o = new TypeReference<Metadata<T>>() {};
final CodecRegistry codecRegistry = CodecRegistries.fromRegistries(
CodecRegistries.fromCodecs( new JsonCodec<>( ( TypeReference<Metadata> ) o,
Metadata.class, ( m ) -> identifier.get( ( T ) m.object ) ) ),
this.database.getCodecRegistry()
);
final Object metadataMongoCollection = this.database
.getCollection( table, Metadata.class )
.withCodecRegistry( codecRegistry );
this.collection = ( MongoCollection<Metadata<T>> ) metadataMongoCollection;
load();
}
示例12: toBsonDocument
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Override
public <TDocument> BsonDocument toBsonDocument(Class<TDocument> arg0,
CodecRegistry codecRegistry) {
System.out.println("toBsonDocument called");
return new BsonDocumentWrapper<SyncConnectionInfo>(this,
codecRegistry.get(SyncConnectionInfo.class));
}
示例13: get
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
if (clazz.isEnum()) {
return new EnumCodec(clazz);
}
return null;
}
示例14: getCodecRegistry
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Bean()
public static CodecRegistry getCodecRegistry() {
return CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(
new EnumCodecProvider(),
PojoCodecProvider.builder()
.register(TypeCodecProviderTest.class)
.register(new CustomTypeCodecProvider(), new SetOfStringTypeCodecProvider())
.build()
),
MongoClient.getDefaultCodecRegistry());
}
示例15: getCodecRegistry
import org.bson.codecs.configuration.CodecRegistry; //导入依赖的package包/类
@Bean()
public static CodecRegistry getCodecRegistry() {
return CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(
new EnumCodecProvider(),
PojoCodecProvider.builder()
.register(NoDiscriminatorForPolymorphicLeafClassesTest.class)
.build()
),
MongoClient.getDefaultCodecRegistry());
}