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

com.datastax.oss.driver.api.core.metadata.schema.SchemaChangeListener Maven / Gradle / Ivy

There is a newer version: 4.17.0
Show newest version
/*
 * Copyright DataStax, Inc.
 *
 * 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
 *
 * http://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.datastax.oss.driver.api.core.metadata.schema;

import com.datastax.oss.driver.api.core.session.Session;
import com.datastax.oss.driver.api.core.session.SessionBuilder;
import com.datastax.oss.driver.api.core.type.UserDefinedType;
import edu.umd.cs.findbugs.annotations.NonNull;

/**
 * Tracks schema changes.
 *
 * 

An implementation of this interface can be registered in the configuration, or with {@link * SessionBuilder#withSchemaChangeListener(SchemaChangeListener)}. * *

Note that the methods defined by this interface will be executed by internal driver threads, * and are therefore expected to have short execution times. If you need to perform long * computations or blocking calls in response to schema change events, it is strongly recommended to * schedule them asynchronously on a separate thread provided by your application code. * *

If you implement this interface but don't need to implement all the methods, extend {@link * SchemaChangeListenerBase}. */ public interface SchemaChangeListener extends AutoCloseable { void onKeyspaceCreated(@NonNull KeyspaceMetadata keyspace); void onKeyspaceDropped(@NonNull KeyspaceMetadata keyspace); void onKeyspaceUpdated(@NonNull KeyspaceMetadata current, @NonNull KeyspaceMetadata previous); void onTableCreated(@NonNull TableMetadata table); void onTableDropped(@NonNull TableMetadata table); void onTableUpdated(@NonNull TableMetadata current, @NonNull TableMetadata previous); void onUserDefinedTypeCreated(@NonNull UserDefinedType type); void onUserDefinedTypeDropped(@NonNull UserDefinedType type); void onUserDefinedTypeUpdated( @NonNull UserDefinedType current, @NonNull UserDefinedType previous); void onFunctionCreated(@NonNull FunctionMetadata function); void onFunctionDropped(@NonNull FunctionMetadata function); void onFunctionUpdated(@NonNull FunctionMetadata current, @NonNull FunctionMetadata previous); void onAggregateCreated(@NonNull AggregateMetadata aggregate); void onAggregateDropped(@NonNull AggregateMetadata aggregate); void onAggregateUpdated(@NonNull AggregateMetadata current, @NonNull AggregateMetadata previous); void onViewCreated(@NonNull ViewMetadata view); void onViewDropped(@NonNull ViewMetadata view); void onViewUpdated(@NonNull ViewMetadata current, @NonNull ViewMetadata previous); /** * Invoked when the session is ready to process user requests. * *

This corresponds to the moment when {@link SessionBuilder#build()} returns, or the future * returned by {@link SessionBuilder#buildAsync()} completes. If the session initialization fails, * this method will not get called. * *

Listener methods are invoked from different threads; if you store the session in a field, * make it at least volatile to guarantee proper publication. * *

This method is guaranteed to be the first one invoked on this object. * *

The default implementation is empty. */ default void onSessionReady(@NonNull Session session) {} }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy