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

io.kazuki.v0.store.lifecycle.LifecycleSupportBase Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2014 Sunny Gleason and original author or authors
 *
 * 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 io.kazuki.v0.store.lifecycle;

import io.kazuki.v0.internal.helper.LogTranslation;

import org.slf4j.Logger;

/**
 * Abstract base class to make it easy to implement Lifecycle support by only overriding one or two
 * methods.
 */
public abstract class LifecycleSupportBase implements LifecycleRegistration, LifecycleAware {
  protected final Logger log = LogTranslation.getLogger(getClass());
  protected volatile Lifecycle lifecycle;

  @Override
  public Lifecycle getLifecycle() {
    return this.lifecycle;
  }

  @Override
  public void register(Lifecycle lifecycle) {
    if (this.lifecycle != null && !this.lifecycle.equals(lifecycle)) {
      throw new IllegalStateException("lifecycle already registered with "
          + System.identityHashCode(this.lifecycle));
    }

    this.lifecycle = lifecycle;
    this.lifecycle.register(this);
  }

  public void init() {}

  public void start() {}

  public void announce() {}

  public void unannounce() {}

  public void shutdown() {}

  public void stop() {}

  @Override
  public void eventFired(LifecycleEvent event) {
    switch (event) {
      case INIT:
        init();
        break;
      case START:
        start();
        break;
      case ANNOUNCE:
        announce();
        break;
      case UNANNOUNCE:
        unannounce();
        break;
      case SHUTDOWN:
        shutdown();
        break;
      case STOP:
        stop();
        break;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy