diff options
Diffstat (limited to 'openecomp-be/tools/artifact-copy-plugin')
4 files changed, 0 insertions, 467 deletions
diff --git a/openecomp-be/tools/artifact-copy-plugin/pom.xml b/openecomp-be/tools/artifact-copy-plugin/pom.xml deleted file mode 100644 index 1e35ac0c39..0000000000 --- a/openecomp-be/tools/artifact-copy-plugin/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>artifact-copy-plugin</artifactId> - <packaging>maven-plugin</packaging> - <parent> - <artifactId>sdc-onboarding</artifactId> - <groupId>org.openecomp.sdc</groupId> - <version>1.3.3-SNAPSHOT</version> - <relativePath>../../../onboarding/pom.xml</relativePath> - </parent> - <properties> - <classes>classes/**/*.class</classes> - <mavenStatus>maven-status/**</mavenStatus> - <skipTestRun>true</skipTestRun> - </properties> - <dependencies> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-core</artifactId> - <version>${maven-core.version}</version> - </dependency> - <dependency> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-annotations</artifactId> - <version>${maven-plugin-annotations.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-plugin-plugin</artifactId> - <version>${maven-plugin-plugin.version}</version> - </plugin> - </plugins> - </build> - -</project>
\ No newline at end of file diff --git a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java deleted file mode 100644 index ce63a8d466..0000000000 --- a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * 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 a "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 org.openecomp.sdc.onboarding.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.Set; - -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.project.MavenProject; - -public class ArtifactHelper { - - private MavenProject project; - private MavenSession session; - private static final Map<String, byte[]> store = new HashMap<>(); - private static final Set<String> terminalModuleCoordinates = new HashSet<>(); - private String unicornRoot = null; - private static File unicornMetaLocation = null; - private final File tempLocation = Paths.get(System.getProperties().getProperty("java.io.tmpdir")).toFile(); - private static int snapshotBuildNumber = 0; - private static final String HYPHEN = "-"; - - void init(String terminalModuleCoordinate) { - setUnicornMetaLocation(getUnicornRootFile(unicornRoot.substring(0, unicornRoot.indexOf('/')), project)); - setTerminalModuleCoordinates(session.getProjects().get(session.getProjects().size() - 1)); - terminalModuleCoordinates.add(terminalModuleCoordinate); - } - - private static void setUnicornMetaLocation(File file) { - unicornMetaLocation = file; - } - - static void setSnapshotBuildNumber(int number) { - snapshotBuildNumber = number; - } - - List<ArtifactRepository> getRepositories(boolean snapshotRepo) { - List<ArtifactRepository> list = new ArrayList<>(); - for (ArtifactRepository artRepo : project.getRemoteArtifactRepositories()) { - if (snapshotRepo) { - if (artRepo.getSnapshots().isEnabled()) { - list.add(artRepo); - } - } else { - if (artRepo.getReleases().isEnabled()) { - list.add(artRepo); - } - } - } - return list; - } - - private void setTerminalModuleCoordinates(MavenProject project) { - terminalModuleCoordinates.add(getModuleCoordinate(project)); - } - - private boolean isModuleTerminal(MavenProject project) { - return terminalModuleCoordinates.contains(getModuleCoordinate(project)); - } - - File getUnicornMetaLocation() { - return unicornMetaLocation; - } - - String getContents(URL path) throws IOException { - try (InputStream is = path.openStream(); Scanner scanner = new Scanner(is).useDelimiter("\\A")) { - return scanner.hasNext() ? scanner.next() : ""; - } - } - - void store(String artifactId, byte[] data) { - store.put(artifactId, data); - } - - void deleteAll(File f) { - - if (!f.exists() || !f.isDirectory()) { - return; - } - - File[] fileList = f.listFiles(); - if (fileList == null) { - return; - } - - for (File file : fileList) { - - if (file.isFile()) { - file.delete(); - } - } - } - - String getModuleCoordinate(MavenProject project) { - return project.getGroupId() + ":" + project.getArtifactId(); - } - - private File getUnicornRootFile(String moduleCoordinate, MavenProject mavenProject) { - return getStateFile(moduleCoordinate, mavenProject, unicornRoot); - } - - private File getStateFile(String moduleCoordinate, MavenProject mavenProject, String filePath) { - return new File(getTopParentProject(moduleCoordinate, mavenProject).getBasedir(), - filePath.substring(filePath.indexOf('/') + 1)); - } - - MavenProject getTopParentProject(String moduleCoordinate, MavenProject mavenProject) { - if (getModuleCoordinate(mavenProject).equals(moduleCoordinate) || mavenProject.getParent() == null) { - return mavenProject; - } else { - return getTopParentProject(moduleCoordinate, mavenProject.getParent()); - } - } - - void shutDown(MavenProject project) throws IOException, ClassNotFoundException { - File file = new File(unicornMetaLocation, "compileState.dat"); - HashMap dataStore; - if (isModuleTerminal(project) && file.exists()) { - try (InputStream is = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(is)) { - dataStore = (HashMap) ois.readObject(); - //noinspection unchecked - dataStore.put("shutdownTime", (System.currentTimeMillis() / 1000) * 1000 + snapshotBuildNumber); - //noinspection unchecked - dataStore.put("version", project.getVersion()); - } - try (OutputStream os = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(os)) { - oos.writeObject(dataStore); - } - Files.copy(file.toPath(), - Paths.get(tempLocation.getAbsolutePath(), file.getName() + HYPHEN + project.getVersion()), - StandardCopyOption.REPLACE_EXISTING); - } - } -} - - diff --git a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/CalibrateArtifactPlugin.java b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/CalibrateArtifactPlugin.java deleted file mode 100644 index fa871c20c5..0000000000 --- a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/CalibrateArtifactPlugin.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.openecomp.sdc.onboarding.util; - -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.*; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectHelper; - -import java.io.File; -import java.io.IOException; - -@Mojo(name = "calibrate-artifact-helper", threadSafe = true, defaultPhase = LifecyclePhase.INSTALL, - requiresDependencyResolution = ResolutionScope.TEST) -public class CalibrateArtifactPlugin extends AbstractMojo { - - private static final String ARTIFACT_COPY_PATH = "artifactPathToCopy"; - - @Parameter(defaultValue = "${session}") - private MavenSession session; - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject project; - @Component - private MavenProjectHelper projectHelper; - @Parameter - private String groupId; - @Parameter - private String artifactId; - @Parameter - private String version; - @Parameter - private String excludePackaging; - @Parameter - private ArtifactHelper artifactHelper; - - @Override - public void execute() throws MojoExecutionException, MojoFailureException { - if (project.getPackaging().equals(excludePackaging)) { - return; - } - if (project.getProperties().containsKey(ARTIFACT_COPY_PATH) - && project.getProperties().getProperty(ARTIFACT_COPY_PATH) != null) { - File f = new File(project.getProperties().getProperty(ARTIFACT_COPY_PATH)); - if (f.exists()) { - project.getArtifact().setFile(f); - } - } - try { - artifactHelper.shutDown(project); - } catch (IOException | ClassNotFoundException e) { - throw new MojoExecutionException("Unexpected Error Occured during shutdown activities", e); - } - } -} diff --git a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java deleted file mode 100644 index afe5d3e702..0000000000 --- a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * 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 a "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 org.openecomp.sdc.onboarding.util; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.plugins.annotations.ResolutionScope; -import org.apache.maven.project.MavenProject; -import org.apache.maven.settings.Proxy; - -@Mojo(name = "init-artifact-helper", threadSafe = true, defaultPhase = LifecyclePhase.PRE_CLEAN, - requiresDependencyResolution = ResolutionScope.NONE) -public class InitializationHelperMojo extends AbstractMojo { - - private static final String UNICORN_INITIALIZED = "unicorn_initialized"; - private static final String HTTP = "http"; - private static final String HTTPS = "https"; - private static final String SNAPSHOT = "SNAPSHOT"; - private static final String DOT = "."; - - @Parameter(defaultValue = "${session}") - private MavenSession session; - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject project; - @Parameter - private String groupId; - @Parameter - private String artifactId; - @Parameter - private String version; - @Parameter - private String excludePackaging; - @Parameter - private ArtifactHelper artifactHelper; - - @Override - public void execute() throws MojoExecutionException { - if (System.getProperties().containsKey(UNICORN_INITIALIZED)) { - try { - artifactHelper.shutDown(project); - } catch (IOException | ClassNotFoundException e) { - throw new MojoExecutionException("Unexpected Error Occurred during shutdown activities", e); - } - return; - } - artifactHelper.init(groupId + ":" + artifactId); - artifactHelper.deleteAll(artifactHelper.getUnicornMetaLocation()); - String resolvedVersion = - getResolvedVersion(artifactHelper.getRepositories(version.contains(SNAPSHOT)), artifactId); - getLog().info(resolvedVersion.equals(version) ? "Unicorn Initialization Failed!!!" : - "Unicorn Initialization Completed Successfully!!!"); - System.getProperties().setProperty(UNICORN_INITIALIZED, Boolean.TRUE.toString()); - } - - private String getResolvedVersion(List<ArtifactRepository> list, String artifactId) { - Pattern timestampPattern = Pattern.compile(".*<timestamp>(.*)</timestamp>.*"); - Pattern buildNumberPattern = Pattern.compile(".*<buildNumber>(.*)</buildNumber>.*"); - - String timestamp = null; - String buildNumber = null; - for (ArtifactRepository repo : list) { - try { - URL url = new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version - + "/maven-metadata.xml"); - setProxy(url); - String content = artifactHelper.getContents(url); - Matcher m = timestampPattern.matcher(content); - if (m.find()) { - timestamp = m.group(1); - } - m = buildNumberPattern.matcher(content); - if (m.find()) { - buildNumber = m.group(1); - } - - URL fallbackUrl = - new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version + '/'); - timestamp = verifyBuildTimestamp(buildNumber, timestamp, fallbackUrl); - if (timestamp != null && buildNumber != null) { - byte[] data = fetchContents(repo.getUrl(), artifactId, timestamp + "-" + buildNumber); - artifactHelper.store(artifactId, data); - getLog().info(artifactId + " Version to be copied is " + timestamp + "-" + buildNumber); - ArtifactHelper.setSnapshotBuildNumber(Integer.parseInt(buildNumber) + 1); - return timestamp + "-" + buildNumber; - } - } catch (IOException e) { - getLog().debug(e); - } - } - return version; - } - - private String verifyBuildTimestamp(String buildNumber, String timestamp, URL fallbackUrl) throws IOException { - if (buildNumber == null) { - return timestamp; - } - String buildPage = artifactHelper.getContents(fallbackUrl); - Pattern verifyPattern = Pattern.compile( - ".*" + artifactId + "-" + version.replace(SNAPSHOT, "") + "(.*)" + "-" + buildNumber + ".jar</a>.*"); - Matcher m = verifyPattern.matcher(buildPage); - if (m.find()) { - String str = m.group(1); - if (!str.equals(timestamp)) { - return str; - } - } - return timestamp; - } - - private byte[] fetchContents(String repoUrl, String artifactId, String resolvedVersion) throws IOException { - File location = Paths.get(project.getBuild().getDirectory(), "build-data").toFile(); - location.mkdirs(); - File file = new File(location, artifactId + "-" + (version.equals(resolvedVersion) ? version : - version.replace(SNAPSHOT, resolvedVersion)) + DOT - + "jar"); - URL path = new URL(repoUrl + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version + '/' + artifactId - + "-" + (version.equals(resolvedVersion) ? version : - version.replace(SNAPSHOT, resolvedVersion)) + DOT + "jar"); - try (InputStream is = path.openStream()) { - Files.copy(is, file.toPath(), StandardCopyOption.REPLACE_EXISTING); - } - byte[] data = Files.readAllBytes(file.toPath()); - try { - addJarToClasspath(file); - } catch (Exception e) { - getLog().error("Error while feeding the build-data into system.", e); - } - - return data; - } - - private void setProxy(URL url) { - if (url.getProtocol().equalsIgnoreCase(HTTP)) { - setProperties("http.proxyHost", "http.proxyPort", "http.nonProxyHosts", HTTP); - } else if (url.getProtocol().equalsIgnoreCase(HTTPS)) { - setProperties("https.proxyHost", "https.proxyPort", "https.nonProxyHosts", HTTPS); - } - } - - private void setProperties(String proxyHostProperty, String proxyPortProperty, String nonProxyHostsProperty, - String protocol) { - for (Proxy proxy : session.getSettings().getProxies()) { - if (proxy.isActive() && proxy.getProtocol().equalsIgnoreCase(protocol)) { - if (proxy.getHost() != null && !proxy.getHost().trim().isEmpty()) { - System.setProperty(proxyHostProperty, proxy.getHost()); - System.setProperty(proxyPortProperty, String.valueOf(proxy.getPort())); - } - if (proxy.getNonProxyHosts() != null && !proxy.getNonProxyHosts().trim().isEmpty()) { - System.setProperty(nonProxyHostsProperty, proxy.getNonProxyHosts()); - } - } - } - } - - public void addJarToClasspath(File jar) throws MojoFailureException { - try { - ClassLoader cl = ClassLoader.getSystemClassLoader(); - Class<?> clazz = cl.getClass(); - - Method method = clazz.getSuperclass().getDeclaredMethod("addURL", URL.class); - - method.setAccessible(true); - method.invoke(cl, jar.toURI().toURL()); - } catch (Exception e) { - throw new MojoFailureException("Problem while loading build-data", e); - } - } - -} |