All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.cloud.alloydb.nativeimage.AlloyDBFeature Maven / Gradle / Ivy

/*
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.cloud.alloydb.nativeimage;

import com.google.api.gax.nativeimage.NativeImageUtils;
import org.graalvm.nativeimage.hosted.Feature;
import org.graalvm.nativeimage.hosted.RuntimeReflection;

/**
 * Registers GraalVM configuration for the AlloyDB libraries.
 *
 * 

This class is only used when this library is used in GraalVM native image * compilation. */ class AlloyDBFeature implements Feature { private static final String ALLOYDB_SOCKET_CLASS = "com.google.cloud.alloydb.SocketFactory"; @Override public void beforeAnalysis(BeforeAnalysisAccess access) { if (access.findClassByName(ALLOYDB_SOCKET_CLASS) == null) { return; } // Register AlloyDB Socket. NativeImageUtils.registerClassForReflection(access, ALLOYDB_SOCKET_CLASS); // Register PostgreSQL driver config. NativeImageUtils.registerClassForReflection(access, "org.postgresql.PGProperty"); // Register Hikari configs if used with AlloyDB. if (access.findClassByName("com.zaxxer.hikari.HikariConfig") != null) { NativeImageUtils.registerClassForReflection(access, "com.zaxxer.hikari.HikariConfig"); RuntimeReflection.register( access.findClassByName("[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;")); RuntimeReflection.register(access.findClassByName("[Ljava.sql.Statement;")); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy