diff --git a/bom/pom.xml b/bom/pom.xml index 50a7c41..dab213e 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT sourcehawk-bom diff --git a/configuration/pom.xml b/configuration/pom.xml index 8d6b4de..5a6789e 100644 --- a/configuration/pom.xml +++ b/configuration/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT sourcehawk-configuration diff --git a/core/pom.xml b/core/pom.xml index b7c1d51..e4cb4ce 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/core/src/main/java/com/optum/sourcehawk/core/scan/FlattenConfigResult.java b/core/src/main/java/com/optum/sourcehawk/core/scan/FlattenConfigResult.java index c8df23f..a81044d 100644 --- a/core/src/main/java/com/optum/sourcehawk/core/scan/FlattenConfigResult.java +++ b/core/src/main/java/com/optum/sourcehawk/core/scan/FlattenConfigResult.java @@ -1,5 +1,6 @@ package com.optum.sourcehawk.core.scan; +import com.optum.sourcehawk.core.utils.StringUtils; import lombok.Builder; import lombok.NonNull; import lombok.Value; @@ -37,7 +38,7 @@ public class FlattenConfigResult implements Serializable { @NonNull @Builder.Default @SuppressWarnings("squid:S1948") // Lombok generates private modifier - String formattedMessage = "Flatten successful"; + String formattedMessage = "Flatten successful"; /** @@ -55,7 +56,7 @@ public static FlattenConfigResult success(final byte[] content) { * @return the flatten result */ public static FlattenConfigResult error(final String message) { - return new FlattenConfigResult(null, true, message); + return new FlattenConfigResult(null, true, StringUtils.defaultString(message, "No error message provided")); } diff --git a/distributions/debian/pom.xml b/distributions/debian/pom.xml index 9243be5..1f65a09 100644 --- a/distributions/debian/pom.xml +++ b/distributions/debian/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-dist - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/distributions/docker/pom.xml b/distributions/docker/pom.xml index 2d0a074..1e10490 100644 --- a/distributions/docker/pom.xml +++ b/distributions/docker/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-dist - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/distributions/linux/pom.xml b/distributions/linux/pom.xml index b04519a..3ee9a99 100644 --- a/distributions/linux/pom.xml +++ b/distributions/linux/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-dist - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/distributions/pom.xml b/distributions/pom.xml index 88542ab..4652959 100644 --- a/distributions/pom.xml +++ b/distributions/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/distributions/rpm/pom.xml b/distributions/rpm/pom.xml index 9587cfd..6820d96 100644 --- a/distributions/rpm/pom.xml +++ b/distributions/rpm/pom.xml @@ -8,7 +8,7 @@ sourcehawk-dist com.optum.sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT sourcehawk-dist-rpm diff --git a/enforcer/core/pom.xml b/enforcer/core/pom.xml index d6f1ed1..edf1f2e 100644 --- a/enforcer/core/pom.xml +++ b/enforcer/core/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/aot/pom.xml b/enforcer/file/aot/pom.xml index ae56514..6683acb 100644 --- a/enforcer/file/aot/pom.xml +++ b/enforcer/file/aot/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/common/pom.xml b/enforcer/file/common/pom.xml index 7a0a578..02e7881 100644 --- a/enforcer/file/common/pom.xml +++ b/enforcer/file/common/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/core/pom.xml b/enforcer/file/core/pom.xml index 92bce48..d7e2fc3 100644 --- a/enforcer/file/core/pom.xml +++ b/enforcer/file/core/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/docker/pom.xml b/enforcer/file/docker/pom.xml index 420c808..a3cc568 100644 --- a/enforcer/file/docker/pom.xml +++ b/enforcer/file/docker/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/maven/pom.xml b/enforcer/file/maven/pom.xml index 13a4372..fe50504 100644 --- a/enforcer/file/maven/pom.xml +++ b/enforcer/file/maven/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/pom.xml b/enforcer/file/pom.xml index 6e3073b..b6dd5c2 100644 --- a/enforcer/file/pom.xml +++ b/enforcer/file/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/file/registry/pom.xml b/enforcer/file/registry/pom.xml index 9032497..7cb5af4 100644 --- a/enforcer/file/registry/pom.xml +++ b/enforcer/file/registry/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-enforcer-file - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/enforcer/pom.xml b/enforcer/pom.xml index 0261221..0cc25eb 100644 --- a/enforcer/pom.xml +++ b/enforcer/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/exec/pom.xml b/exec/pom.xml index cff13e9..36c2e02 100644 --- a/exec/pom.xml +++ b/exec/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigCommand.java b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigCommand.java index 437c0ec..76ec654 100644 --- a/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigCommand.java +++ b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigCommand.java @@ -1,18 +1,13 @@ package com.optum.sourcehawk.exec; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.optum.sourcehawk.configuration.SourcehawkConfiguration; import com.optum.sourcehawk.core.constants.SourcehawkConstants; -import com.optum.sourcehawk.core.repository.LocalRepositoryFileWriter; import com.optum.sourcehawk.core.scan.FlattenConfigResult; import com.optum.sourcehawk.core.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import lombok.val; import picocli.CommandLine; -import java.io.IOException; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.concurrent.Callable; /** @@ -29,9 +24,6 @@ ) class FlattenConfigCommand implements Callable { - private static final ObjectWriter WRITER_WITH_DEFAULT_PRETTY_PRINTER = Sourcehawk.YAML_FORMATTER.writerWithDefaultPrettyPrinter(); - private static final String SOURCEHAWK_FLATTENED_YML = "sourcehawk-flattened.yml"; - static final String COMMAND_NAME = "flatten-config"; @CommandLine.Option( @@ -70,9 +62,7 @@ public Integer call() { return CommandLine.ExitCode.SOFTWARE; } try { - flattenResult = ConfigurationReader.readConfiguration(Paths.get("."), configurationFileLocation) - .map(sourcehawkConfiguration -> executeFlatten(configurationFileLocation, sourcehawkConfiguration)) - .orElseGet(() -> FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation))); + flattenResult = FlattenConfigExecutor.flatten(configurationFileLocation); } catch (final Exception e) { flattenResult = FlattenConfigResult.error(e.getMessage()); } @@ -82,7 +72,7 @@ public Integer call() { return CommandLine.ExitCode.SOFTWARE; } - outputResults(flattenResult, output); + FlattenConfigResultLogger.log(flattenResult, output); return CommandLine.ExitCode.OK; } @@ -98,80 +88,4 @@ private String getConfigurationFileLocation() { } return configurationFileLocation; } - - /** - * Execute the flatten iterating over all configuration locations and aggregate the results - * - * @param configurationFileLocation the configuration location - * @param sourcehawkConfiguration the flattened configuration object - * @return the aggregated flatten result - */ - private static FlattenConfigResult executeFlatten(final String configurationFileLocation, - final SourcehawkConfiguration sourcehawkConfiguration) { - byte[] content; - try { - content = WRITER_WITH_DEFAULT_PRETTY_PRINTER.writeValueAsBytes(sourcehawkConfiguration); - } catch (IOException e) { - return handleException(configurationFileLocation, e); - } - - return FlattenConfigResult.success(content); - } - - /** - * Handle exceptions from Serialization - * - * @param configurationFileLocation the configuration location - * @param e the exception - * @return an error flatten result - */ - private static FlattenConfigResult handleException(final String configurationFileLocation, final IOException e) { - val message = String.format("Error flattening sourcehawk configuration at %s with error: %s", configurationFileLocation, e.getMessage()); - return FlattenConfigResult.error(message); - } - - /** - * Log the result of the flatten which will either output to a file or console based on params - * - * @param flattenResult the flatten result - * @param repositoryFilePath the repository file path - */ - void outputResults(final FlattenConfigResult flattenResult, - final Path repositoryFilePath) { - if (repositoryFilePath == null || StringUtils.isBlankOrEmpty(repositoryFilePath.toString())) { - handleDryRunOutput(flattenResult); - } else { - handleFileSystemOutput(flattenResult, repositoryFilePath); - } - } - - /** - * Log the result of the flatten to the file system - * - * @param flattenResult the flatten result - * @param repositoryFilePath the repository file path - */ - private static void handleFileSystemOutput(final FlattenConfigResult flattenResult, final Path repositoryFilePath) { - try { - val writerPath = StringUtils.defaultString(repositoryFilePath.toString(), SOURCEHAWK_FLATTENED_YML); - LocalRepositoryFileWriter.writer().write(writerPath, flattenResult.getContent()); - Sourcehawk.CONSOLE_RAW_LOGGER.info(flattenResult.getFormattedMessage()); - Sourcehawk.CONSOLE_RAW_LOGGER.info("Output to {}", writerPath); - } catch (IOException e) { - Sourcehawk.CONSOLE_RAW_LOGGER.error("Could not flatten file due to {}", e.getMessage()); - } - } - - /** - * Log the result of the flatten to the console - * - * @param flattenResult the flatten result - */ - private static void handleDryRunOutput(final FlattenConfigResult flattenResult) { - if (flattenResult != null && flattenResult.getContent() != null) { - Sourcehawk.CONSOLE_RAW_LOGGER.info(new String(flattenResult.getContent())); - } else { - Sourcehawk.CONSOLE_RAW_LOGGER.error("No flattened file produced!"); - } - } } diff --git a/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigExecutor.java b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigExecutor.java new file mode 100644 index 0000000..7cb63f7 --- /dev/null +++ b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigExecutor.java @@ -0,0 +1,71 @@ +package com.optum.sourcehawk.exec; + +import com.fasterxml.jackson.databind.ObjectWriter; +import com.optum.sourcehawk.configuration.SourcehawkConfiguration; +import com.optum.sourcehawk.core.scan.FlattenConfigResult; +import com.optum.sourcehawk.core.utils.StringUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import lombok.val; + +import java.io.IOException; +import java.nio.file.Paths; + +/** + * Entry point for executing Sourcehawk flatten command + * + * @author Christian Oestreich + */ +@Slf4j +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class FlattenConfigExecutor { + + private static final ObjectWriter WRITER_WITH_DEFAULT_PRETTY_PRINTER = Sourcehawk.YAML_FORMATTER.writerWithDefaultPrettyPrinter(); + + /** + * Run the flatten config based on the provided configuration file location + * + * @param configurationFileLocation the sourcehawk configuration location + * @return the flatten config result + */ + public static FlattenConfigResult flatten(final String configurationFileLocation) { + if (StringUtils.isBlankOrEmpty(configurationFileLocation)) { + return FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation)); + } + return ConfigurationReader.readConfiguration(Paths.get("."), configurationFileLocation) + .map(sourcehawkConfiguration -> executeFlatten(configurationFileLocation, sourcehawkConfiguration)) + .orElseGet(() -> FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation))); + } + + /** + * Execute the flatten iterating over all configuration locations and aggregate the results + * + * @param configurationFileLocation the configuration location + * @param sourcehawkConfiguration the flattened configuration object + * @return the aggregated flatten result + */ + private static FlattenConfigResult executeFlatten(final String configurationFileLocation, + final SourcehawkConfiguration sourcehawkConfiguration) { + byte[] content; + try { + content = WRITER_WITH_DEFAULT_PRETTY_PRINTER.writeValueAsBytes(sourcehawkConfiguration); + } catch (IOException e) { + return handleException(configurationFileLocation, e); + } + + return FlattenConfigResult.success(content); + } + + /** + * Handle exceptions from Serialization + * + * @param configurationFileLocation the configuration location + * @param e the exception + * @return an error flatten result + */ + private static FlattenConfigResult handleException(final String configurationFileLocation, final IOException e) { + val message = String.format("Error flattening sourcehawk configuration at %s with error: %s", configurationFileLocation, e.getMessage()); + return FlattenConfigResult.error(message); + } +} diff --git a/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigResultLogger.java b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigResultLogger.java new file mode 100644 index 0000000..8136b9a --- /dev/null +++ b/exec/src/main/java/com/optum/sourcehawk/exec/FlattenConfigResultLogger.java @@ -0,0 +1,84 @@ +package com.optum.sourcehawk.exec; + +import com.optum.sourcehawk.core.repository.LocalRepositoryFileWriter; +import com.optum.sourcehawk.core.scan.FlattenConfigResult; +import com.optum.sourcehawk.core.utils.StringUtils; +import lombok.experimental.UtilityClass; +import lombok.val; + +import java.nio.file.Path; + +/** + * A logger for flatten config results + * + * @author Christian Oestreich + * @see com.optum.sourcehawk.core.scan.FlattenConfigResult + */ +@UtilityClass +class FlattenConfigResultLogger { + + private static final String SOURCEHAWK_FLATTENED_YML = "sourcehawk-flattened.yml"; + + /** + * Log the result of the fix in the specified format + * + * @param flattenConfigResult the flatten config result + * @param output the output location of the results + */ + void log(final FlattenConfigResult flattenConfigResult, final Path output) { + if (output == null || StringUtils.isBlankOrEmpty(output.toString())) { + handleConsoleOutput(flattenConfigResult); + } else { + handleFileSystemOutput(flattenConfigResult, output); + } + } + + /** + * Log the result of the flatten to the file system + * + * @param flattenResult the flatten result + * @param repositoryFilePath the repository file path + */ + private static void handleFileSystemOutput(final FlattenConfigResult flattenResult, final Path repositoryFilePath) { + try { + val outputPath = getOutputPath(repositoryFilePath); + LocalRepositoryFileWriter.writer().write(outputPath, flattenResult.getContent()); + Sourcehawk.CONSOLE_RAW_LOGGER.info(flattenResult.getFormattedMessage()); + Sourcehawk.CONSOLE_RAW_LOGGER.info("Output to {}", outputPath); + } catch (Exception e) { + Sourcehawk.CONSOLE_RAW_LOGGER.error("Could not flatten file due to {}", e.getMessage()); + } + } + + /** + * Get the output path or default path of sourcehawk-flattened.yml + * if not provided + * + * @param repositoryFilePath The path to output the + * @return The output file name to use + */ + private static String getOutputPath(final Path repositoryFilePath) { + if (repositoryFilePath != null) { + return StringUtils.defaultString(repositoryFilePath.toString(), SOURCEHAWK_FLATTENED_YML); + } + return SOURCEHAWK_FLATTENED_YML; + } + + /** + * Log the result of the flatten to the console + * + * @param flattenResult the flatten result + */ + private static void handleConsoleOutput(final FlattenConfigResult flattenResult) { + if (flattenResult != null && flattenResult.getContent() != null) { + if (flattenResult.isError()) { + Sourcehawk.CONSOLE_RAW_LOGGER.error(new String(flattenResult.getContent())); + } else { + Sourcehawk.CONSOLE_RAW_LOGGER.info(new String(flattenResult.getContent())); + } + } else { + Sourcehawk.CONSOLE_RAW_LOGGER.error("No flattened file produced!"); + } + } + +} diff --git a/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigCommandSpec.groovy b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigCommandSpec.groovy index b5dbfe2..3e99754 100644 --- a/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigCommandSpec.groovy +++ b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigCommandSpec.groovy @@ -1,6 +1,6 @@ package com.optum.sourcehawk.exec -import com.optum.sourcehawk.core.scan.FlattenConfigResult + import spock.lang.Unroll class FlattenConfigCommandSpec extends CliBaseSpecification { @@ -144,27 +144,4 @@ class FlattenConfigCommandSpec extends CliBaseSpecification { where: arg << ["-n", "--none"] } - - def "handleException"() { - when: - def result = FlattenConfigCommand.handleException("test", new IOException("message")) - - then: - result.error - result.formattedMessage == "Error flattening sourcehawk configuration at test with error: message" - } - def "handleDryRunOutput"() { - when: - FlattenConfigCommand.handleDryRunOutput(null) - - then: - notThrown(Exception) - - when: - FlattenConfigCommand.handleDryRunOutput(FlattenConfigResult.success(null)) - - then: - notThrown(Exception) - - } } diff --git a/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigExecutorSpec.groovy b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigExecutorSpec.groovy new file mode 100644 index 0000000..16ad695 --- /dev/null +++ b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigExecutorSpec.groovy @@ -0,0 +1,38 @@ +package com.optum.sourcehawk.exec + +import spock.lang.Unroll + +class FlattenConfigExecutorSpec extends FileBaseSpecification { + + def "handleException"() { + when: + def result = FlattenConfigExecutor.handleException("test", new IOException("message")) + + then: + result.error + result.formattedMessage == "Error flattening sourcehawk configuration at test with error: message" + } + + def "flatten"() { + when: + def result = FlattenConfigExecutor.flatten(repositoryRoot.toString() + "/sourcehawk.yml") + + then: + !result.error + result.formattedMessage == "Flatten successful" + new String(result.content).trim() == new File(testResourcesRoot.toString() + "/flattened/sourcehawk-flattened-base.yml").text.trim() + } + + @Unroll + def "flatten no config file #configurationFileLocation"() { + when: + def result = FlattenConfigExecutor.flatten(configurationFileLocation) + + then: + result.error + result.formattedMessage + + where: + configurationFileLocation << ["", " ", null] + } +} diff --git a/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigLoggerSpec.groovy b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigLoggerSpec.groovy new file mode 100644 index 0000000..e7bf8fb --- /dev/null +++ b/exec/src/test/groovy/com/optum/sourcehawk/exec/FlattenConfigLoggerSpec.groovy @@ -0,0 +1,46 @@ +package com.optum.sourcehawk.exec + +import com.optum.sourcehawk.core.scan.FlattenConfigResult + +class FlattenConfigLoggerSpec extends FileBaseSpecification { + + def "handleDryRunOutput"() { + when: + FlattenConfigResultLogger.handleConsoleOutput(null) + + then: + notThrown(Exception) + + when: + FlattenConfigResultLogger.handleConsoleOutput(FlattenConfigResult.success(null)) + + then: + notThrown(Exception) + + when: + FlattenConfigResultLogger.handleConsoleOutput(FlattenConfigResult.error(null)) + + then: + notThrown(Exception) + + when: + FlattenConfigResultLogger.handleConsoleOutput(FlattenConfigResult.error("test")) + + then: + notThrown(Exception) + + when: + FlattenConfigResultLogger.handleConsoleOutput(FlattenConfigResult.builder().error(true).content("hello".bytes).build()) + + then: + notThrown(Exception) + } + + def "handleFileSystemOutput"() { + when: + FlattenConfigResultLogger.handleFileSystemOutput(null, null) + + then: + notThrown(Exception) + } +} diff --git a/pom.xml b/pom.xml index cf2db02..5164f6d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT pom Sourcehawk diff --git a/protocol/core/pom.xml b/protocol/core/pom.xml index 688b27f..a585061 100644 --- a/protocol/core/pom.xml +++ b/protocol/core/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-protocol - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/protocol/file/pom.xml b/protocol/file/pom.xml index 10442d1..701a24e 100644 --- a/protocol/file/pom.xml +++ b/protocol/file/pom.xml @@ -8,7 +8,7 @@ com.optum.sourcehawk sourcehawk-protocol - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml diff --git a/protocol/pom.xml b/protocol/pom.xml index 82984ab..1c6ec3b 100644 --- a/protocol/pom.xml +++ b/protocol/pom.xml @@ -4,12 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT com.optum.sourcehawk sourcehawk - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT ../pom.xml