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

io.knowledgelinks.cicd.semantic.versioning.parsers.VersionParserFactory Maven / Gradle / Ivy

package io.knowledgelinks.cicd.semantic.versioning.parsers;

/*-
 * #%L
 * Semantic Versioning
 * %%
 * Copyright (C) 2022 - 2023 Knowledgelinks
 * %%
 * 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.
 * #L%
 */

import java.lang.reflect.InvocationTargetException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.knowledgelinks.cicd.semantic.versioning.config.Configuration;
import io.knowledgelinks.cicd.semantic.versioning.enums.ArtifactTypes;
import io.knowledgelinks.cicd.semantic.versioning.exceptions.SemanticVersioningException;

public class VersionParserFactory {
  private static Logger logger = LoggerFactory.getLogger(VersionParserFactory.class);

  private Configuration config;


  public VersionParserFactory(Configuration config) throws SemanticVersioningException {
    this.config = (config == null) ? Configuration.getInstance() : config;
  }

  public VersionParser get() throws SemanticVersioningException {
    return get(config.getDefaultVersionParser());
  }

  public VersionParser get(ArtifactTypes artifactType) {
    switch (artifactType) {
      case JAR:
        break;
      case WHEEL:
        break;
      default:
        break;

    }
    return null;
  }

  private VersionParser get(String versionParserClassName) throws SemanticVersioningException {
    Class versionParser = getVersionParserClass(versionParserClassName);
    try {
      return (VersionParser) versionParser.getDeclaredConstructor(Configuration.class)
          .newInstance(config);
    } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
        | InvocationTargetException | NoSuchMethodException | SecurityException e) {

      logger.error("unable to get constructor for: {}", versionParserClassName, e);
      return new StandardVersionPatternParser(config);
    }
  }

  private Class getVersionParserClass(String versionParserName) {
    try {
      return Class.forName(versionParserName);
    } catch (ClassNotFoundException e) {
      return StandardVersionPatternParser.class;
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy