blob: 3eac8527ad1f10d5351e2c9325f8d0a28eafdcff [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.buildcache;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
import org.apache.maven.buildcache.hash.HashFactory;
import org.apache.maven.buildcache.xml.Build;
import org.apache.maven.buildcache.xml.XmlService;
import org.apache.maven.buildcache.xml.build.Artifact;
import org.apache.maven.buildcache.xml.build.CompletedExecution;
import org.apache.maven.buildcache.xml.build.DigestItem;
import org.apache.maven.buildcache.xml.build.ProjectsInputInfo;
import org.apache.maven.buildcache.xml.build.PropertyValue;
import org.junit.jupiter.api.Test;
public class BuildInfoTest
{
@Test
public void name() throws Exception
{
XmlService xmlService = new XmlService();
ProjectsInputInfo main = new ProjectsInputInfo();
main.setChecksum( "dependencyChecksum" );
main.addItem( createItem( "pom", "<project><modelVersion>4.0.0</modelVersion></project>", "hash1" ) );
main.addItem( createItem( "file", Paths.get( "." ).toString(), "hash2" ) );
Artifact artifact = new Artifact();
artifact.setGroupId( "g" );
artifact.setArtifactId( "a" );
artifact.setType( "t" );
artifact.setClassifier( "c" );
artifact.setScope( "s" );
artifact.setFileName( "f" );
artifact.setFileSize( 123456 );
artifact.setFileHash( "456L" );
org.apache.maven.buildcache.xml.build.Build buildInfo = new org.apache.maven.buildcache.xml.build.Build();
buildInfo.setCacheImplementationVersion( "cacheImplementationVersion" );
buildInfo.setBuildServer( "server" );
buildInfo.setBuildTime( new Date() );
buildInfo.setArtifact( artifact );
buildInfo.setHashFunction( "SHA-256" );
buildInfo.setGoals( Collections.singletonList( "install" ) );
final org.apache.maven.artifact.Artifact attachedArtifact = new DefaultArtifact( "ag", "aa", "av", "as", "at",
"ac",
new DefaultArtifactHandler() );
buildInfo.setAttachedArtifacts( Build.createAttachedArtifacts( Collections.singletonList( attachedArtifact ),
HashFactory.XX.createAlgorithm() ) );
buildInfo.setProjectsInputInfo( main );
buildInfo.setExecutions( createExecutions() );
byte[] bytes = xmlService.toBytes( buildInfo );
System.out.println( new String( bytes, StandardCharsets.UTF_8 ) );
Path tempFilePath = Files.createTempFile( "test", "test" );
File file = tempFilePath.toFile();
file.deleteOnExit();
Files.write( tempFilePath, bytes );
org.apache.maven.buildcache.xml.build.Build buildInfo1 = xmlService.loadBuild( file );
System.out.println( buildInfo1 );
}
private List<CompletedExecution> createExecutions()
{
CompletedExecution execution = new CompletedExecution();
execution.setExecutionKey( "execkey" );
PropertyValue property = new PropertyValue();
property.setValue( "value" );
property.setName( "key" );
execution.addProperty( property );
return new ArrayList<>( Arrays.asList( execution ) );
}
private DigestItem createItem( String pom, String s, String hash1 )
{
final DigestItem d1 = new DigestItem();
d1.setType( pom );
d1.setHash( s );
d1.setValue( hash1 );
return d1;
}
}