Java源码示例:io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem

示例1
@BuildStep(onlyIf = NativeBuild.class)
List<RuntimeInitializedClassBuildItem> runtimeInitializedClasses() {
    return Arrays.asList(
            new RuntimeInitializedClassBuildItem("com.alibaba.fastjson.serializer.JodaCodec"),
            new RuntimeInitializedClassBuildItem("com.alibaba.fastjson.serializer.GuavaCodec"),
            new RuntimeInitializedClassBuildItem("com.alibaba.fastjson.support.moneta.MonetaCodec"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.Env"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.init.InitExecutor"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.cluster.ClusterStateManager"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.node.metric.MetricTimerListener"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.node.metric.MetricWriter"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.util.TimeUtil"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.eagleeye.StatLogController"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.slots.logger.EagleEyeLogUtil"),
            new RuntimeInitializedClassBuildItem("com.alibaba.csp.sentinel.eagleeye.EagleEye"));
}
 
示例2
@BuildStep
void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) {
    for (String className : RUNTIME_INITIALIZED_CLASSES) {
        runtimeInitializedClass
                .produce(new RuntimeInitializedClassBuildItem(className));
    }
}
 
示例3
@BuildStep
void miscSetup(
        Consumer<RuntimeInitializedClassBuildItem> runtimeInit,
        Consumer<NativeImageSystemPropertyBuildItem> systemProp,
        Consumer<ServiceProviderBuildItem> provider) {
    runtimeInit.accept(new RuntimeInitializedClassBuildItem("org.jboss.logmanager.formatters.TrueColorHolder"));
    systemProp
            .accept(new NativeImageSystemPropertyBuildItem("java.util.logging.manager", "org.jboss.logmanager.LogManager"));
    provider.accept(
            new ServiceProviderBuildItem(EmbeddedConfigurator.class.getName(), InitialConfigurator.class.getName()));
}
 
示例4
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitializedClasses() {
    return new RuntimeInitializedClassBuildItem("org.asynchttpclient.netty.ws.NettyWebSocket");
}
 
示例5
@BuildStep
void configure(BuildProducer<RuntimeInitializedClassBuildItem> runtimeClasses) {
    // Avoid use of sun.security.provider.NativePRNG at image runtime
    runtimeClasses.produce(new RuntimeInitializedClassBuildItem(BoxDeveloperEditionAPIConnection.class.getCanonicalName()));
    runtimeClasses.produce(new RuntimeInitializedClassBuildItem(BoxAPIRequest.class.getCanonicalName()));
}
 
示例6
@BuildStep
RuntimeInitializedClassBuildItem cryptoConfiguration() {
    return new RuntimeInitializedClassBuildItem(CryptoConfiguration.class.getCanonicalName());
}
 
示例7
@BuildStep
RuntimeInitializedClassBuildItem fastInfosetStreamWriterOutput() {
    return new RuntimeInitializedClassBuildItem(FastInfosetStreamWriterOutput.class.getCanonicalName());
}
 
示例8
@BuildStep
void configureRuntimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) {
    for (String className : RUNTIME_INITIALIZED_CLASSES) {
        runtimeInitializedClass.produce(new RuntimeInitializedClassBuildItem(className));
    }
}
 
示例9
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitializedClasses() {
    return new RuntimeInitializedClassBuildItem("com.google.api.client.auth.oauth.OAuthParameters");
}
 
示例10
@BuildStep
public RuntimeInitializedClassBuildItem runtimeInitializedClass() {
    return new RuntimeInitializedClassBuildItem(ClassFieldAccessorFactory.class.getName());
}
 
示例11
@BuildStep
List<RuntimeInitializedClassBuildItem> runtimeInitializedClasses() {
    return Arrays.asList(
            new RuntimeInitializedClassBuildItem("org.eclipse.jgit.transport.HttpAuthMethod$Digest"),
            new RuntimeInitializedClassBuildItem("org.eclipse.jgit.lib.GpgSigner"));
}
 
示例12
@BuildStep
void runtimeInit(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitialized) {
    //MastersSlavesListener starts threads in DynamicSizedSchedulerImpl which is disallowed during build time in GraalVM
    runtimeInitialized
            .produce(new RuntimeInitializedClassBuildItem("org.mariadb.jdbc.internal.failover.impl.MastersSlavesListener"));
}
 
示例13
@BuildStep
public RuntimeInitializedClassBuildItem runtimeInitializedClass() {
    return new RuntimeInitializedClassBuildItem("com.microsoft.sqlserver.jdbc.KerbAuthentication");
}
 
示例14
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitBcryptUtil() {
    // this holds a direct allocated byte buffer that needs to be initialised at run time
    return new RuntimeInitializedClassBuildItem(EmptyByteBufStub.class.getName());
}
 
示例15
@BuildStep
RuntimeInitializedClassBuildItem configureNativeCompilation() {
    return new RuntimeInitializedClassBuildItem("io.vertx.ext.web.handler.sockjs.impl.XhrTransport");
}
 
示例16
@BuildStep
public void registerRuntimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> resource) {
    //org.apache.tika.parser.pdf.PDFParser (https://issues.apache.org/jira/browse/PDFBOX-4548)
    resource.produce(new RuntimeInitializedClassBuildItem("org.apache.pdfbox.pdmodel.font.PDType1Font"));
}
 
示例17
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitBcryptUtil() {
    // this holds a SecureRandom static var that needs to be initialised at run time
    return new RuntimeInitializedClassBuildItem(BcryptUtil.class.getName());
}
 
示例18
@BuildStep
RuntimeInitializedClassBuildItem el() {
    return new RuntimeInitializedClassBuildItem(EL.class.getCanonicalName());
}
 
示例19
@BuildStep
RuntimeInitializedClassBuildItem nativeBuild() {
    return new RuntimeInitializedClassBuildItem(
            "biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler");
}
 
示例20
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitialized() {
    return new RuntimeInitializedClassBuildItem(PortWatcherRunTime.class.getName());
}
 
示例21
@BuildStep(onlyIf = NativeBuild.class)
public void process(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
        BuildProducer<NativeImageProxyDefinitionBuildItem> proxyDefinition,
        BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitialized,
        BuildProducer<NativeImageResourceBuildItem> resource) {
    runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("com.amazonaws.xray.AWSXRay"));
    runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("com.amazonaws.xray.AWSXRayRecorder"));
    runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("com.amazonaws.xray.interceptors.TracingInterceptor"));
    runtimeInitialized.produce(
            new RuntimeInitializedClassBuildItem("com.amazonaws.xray.strategy.sampling.LocalizedSamplingStrategy"));
    reflectiveClass.produce(new ReflectiveClassBuildItem(
            true, true, true,
            "com.amazonaws.xray.handlers.config.AWSServiceHandlerManifest",
            "com.amazonaws.xray.AWSXRay",
            "com.amazonaws.xray.strategy.sampling.manifest.SamplingRuleManifest",
            "com.amazonaws.xray.strategy.sampling.rule.SamplingRule",
            "com.amazonaws.xray.strategy.sampling.reservoir.Reservoir",
            "com.amazonaws.xray.strategy.sampling.reservoir.Reservoir$MaxFunction",
            "com.amazonaws.xray.strategy.sampling.reservoir.Reservoir$LessThan10",
            "com.amazonaws.xray.strategy.sampling.reservoir.Reservoir$AtLeast10",
            "com.amazonaws.auth.AWS4Signer",
            "com.amazonaws.xray.handlers.config.AWSOperationHandlerManifest",
            "com.amazonaws.xray.handlers.config.AWSOperationHandler",
            "com.amazonaws.xray.handlers.config.AWSOperationHandlerRequestDescriptor",
            "com.amazonaws.xray.handlers.config.AWSOperationHandlerResponseDescriptor",
            "com.amazonaws.xray.entities.ThrowableDescription",
            "com.amazonaws.xray.entities.SubsegmentImpl",
            "com.amazonaws.xray.entities.EntityImpl",
            "com.amazonaws.xray.entities.TraceID",
            "com.amazonaws.xray.entities.Cause",
            "com.amazonaws.xray.entities.SegmentImpl",
            "com.fasterxml.jackson.databind.ser.std.ToStringSerializer"));

    resource.produce(new NativeImageResourceBuildItem(
            "com/amazonaws/xray/interceptors/DefaultOperationParameterWhitelist.json",
            "com/amazonaws/xray/strategy/sampling/DefaultSamplingRules.json",
            "com/amazonaws/xray/sdk.properties"));

    //Register Apache client 
    proxyDefinition.produce(
            new NativeImageProxyDefinitionBuildItem("org.apache.http.conn.HttpClientConnectionManager",
                    "org.apache.http.pool.ConnPoolControl",
                    "com.amazonaws.http.conn.Wrapped"));
}
 
示例22
@BuildStep(onlyIf = NativeBuild.class)
@Record(STATIC_INIT)
void nativeImageConfiguration(
        LiquibaseRecorder recorder,
        LiquibaseBuildTimeConfig liquibaseBuildConfig,
        List<JdbcDataSourceBuildItem> jdbcDataSourceBuildItems,
        BuildProducer<ReflectiveClassBuildItem> reflective,
        BuildProducer<NativeImageResourceBuildItem> resource,
        BuildProducer<GeneratedResourceBuildItem> generatedResource,
        BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitialized,
        BuildProducer<NativeImageResourceBundleBuildItem> resourceBundle) {

    runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("liquibase.diff.compare.CompareControl"));

    reflective.produce(new ReflectiveClassBuildItem(false, true, false,
            "liquibase.change.AbstractSQLChange",
            "liquibase.database.jvm.JdbcConnection"));

    reflective.produce(new ReflectiveClassBuildItem(true, true, true,
            "liquibase.change.ColumnConfig",
            "liquibase.change.AddColumnConfig"));

    reflective.produce(new ReflectiveClassBuildItem(false, false, true,
            "liquibase.change.ConstraintsConfig"));

    addReflection(reflective, true, liquibase.change.Change.class);

    // add all implementation of these classes to the reflection process
    addReflection(reflective, false,
            liquibase.configuration.ConfigurationContainer.class,
            liquibase.parser.LiquibaseParser.class,
            liquibase.structure.DatabaseObject.class,
            liquibase.sql.visitor.SqlVisitor.class);

    // load the liquibase services
    Map<String, List<String>> serviceClassesImplementationRegistry = new HashMap<>();

    Stream.of(liquibase.diff.compare.DatabaseObjectComparator.class,
            liquibase.parser.NamespaceDetails.class,
            liquibase.precondition.Precondition.class,
            liquibase.database.Database.class,
            liquibase.parser.ChangeLogParser.class,
            liquibase.change.Change.class,
            liquibase.snapshot.SnapshotGenerator.class,
            liquibase.changelog.ChangeLogHistoryService.class,
            liquibase.datatype.LiquibaseDataType.class,
            liquibase.executor.Executor.class,
            liquibase.lockservice.LockService.class,
            liquibase.sqlgenerator.SqlGenerator.class,
            liquibase.command.LiquibaseCommand.class,
            liquibase.structure.DatabaseObject.class,
            liquibase.diff.output.changelog.ChangeGenerator.class,
            liquibase.diff.DiffGenerator.class)
            .forEach(t -> addService(reflective, t, true, serviceClassesImplementationRegistry));

    addService(reflective, liquibase.license.LicenseService.class, false, serviceClassesImplementationRegistry);

    recorder.setServicesImplementations(serviceClassesImplementationRegistry);

    Collection<String> dataSourceNames = jdbcDataSourceBuildItems.stream()
            .map(i -> i.getName())
            .collect(Collectors.toSet());

    resource.produce(
            new NativeImageResourceBuildItem(getChangeLogs(dataSourceNames, liquibaseBuildConfig).toArray(new String[0])));

    // liquibase XSD
    resource.produce(new NativeImageResourceBuildItem(
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd",
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd",
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.7.xsd",
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd",
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.9.xsd",
            "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd",
            "www.liquibase.org/xml/ns/pro/liquibase-pro-3.8.xsd",
            "liquibase.build.properties"));

    // liquibase resource bundles
    resourceBundle.produce(new NativeImageResourceBundleBuildItem("liquibase/i18n/liquibase-core"));
}
 
示例23
@BuildStep
@Record(RUNTIME_INIT)
public void build(NarayanaJtaRecorder recorder,
        BuildProducer<AdditionalBeanBuildItem> additionalBeans,
        BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
        BuildProducer<RuntimeInitializedClassBuildItem> runtimeInit,
        BuildProducer<FeatureBuildItem> feature,
        TransactionManagerConfiguration transactions) {
    feature.produce(new FeatureBuildItem(Feature.NARAYANA_JTA));
    additionalBeans.produce(new AdditionalBeanBuildItem(NarayanaJtaProducers.class));
    additionalBeans.produce(new AdditionalBeanBuildItem(CDIDelegatingTransactionManager.class));
    runtimeInit.produce(new RuntimeInitializedClassBuildItem(
            "com.arjuna.ats.internal.jta.resources.arjunacore.CommitMarkableResourceRecord"));
    reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, JTAEnvironmentBean.class.getName(),
            UserTransactionImple.class.getName(),
            CheckedActionFactoryImple.class.getName(),
            TransactionManagerImple.class.getName(),
            TransactionSynchronizationRegistryImple.class.getName(),
            ObjectStoreEnvironmentBean.class.getName(),
            ShadowNoFileLockStore.class.getName()));

    AdditionalBeanBuildItem.Builder builder = AdditionalBeanBuildItem.builder();
    builder.addBeanClass(TransactionalInterceptorSupports.class);
    builder.addBeanClass(TransactionalInterceptorNever.class);
    builder.addBeanClass(TransactionalInterceptorRequired.class);
    builder.addBeanClass(TransactionalInterceptorRequiresNew.class);
    builder.addBeanClass(TransactionalInterceptorMandatory.class);
    builder.addBeanClass(TransactionalInterceptorNotSupported.class);
    additionalBeans.produce(builder.build());

    //we want to force Arjuna to init at static init time
    Properties defaultProperties = PropertiesFactory.getDefaultProperties();
    //we don't want to store the system properties here
    //we re-apply them at runtime
    for (Object i : System.getProperties().keySet()) {
        defaultProperties.remove(i);
    }
    recorder.setDefaultProperties(defaultProperties);
    // This must be done before setNodeName as the code in setNodeName will create a TSM based on the value of this property
    recorder.disableTransactionStatusManager();
    recorder.setNodeName(transactions);
    recorder.setDefaultTimeout(transactions);
}
 
示例24
@BuildStep
RuntimeInitializedClassBuildItem registerClasses() {
    // make sure that the config provider gets initialized only at run time
    return new RuntimeInitializedClassBuildItem(ExecutorRecorder.class.getName());
}
 
示例25
@BuildStep
RuntimeInitializedClassBuildItem runtimeInitializedClass() {
    return new RuntimeInitializedClassBuildItem(InetRunTime.class.getName());
}