Commit 13e190fd authored by Brian Long's avatar Brian Long
Browse files

initial checkin

parents
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+8 −0
Original line number Diff line number Diff line
# Maven
target

# Eclipse
.project
.classpath
.settings

pom.xml

0 → 100644
+77 −0
Original line number Diff line number Diff line
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>me.brianlong</groupId>
    <artifactId>github-api</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    
    <name>GitHub API &amp; Utilities</name>
    
    <properties>
    	<maven.compiler.source>1.8</maven.compiler.source>
    	<maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <dependencies>
        <dependency>
        	<groupId>org.eclipse.jgit</groupId>
        	<artifactId>org.eclipse.jgit</artifactId>
        	<version>5.9.0.202009080501-r</version>
        </dependency>
        <dependency>
        	<groupId>org.eclipse.jgit</groupId>
        	<artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
        	<version>5.9.0.202009080501-r</version>
        </dependency>
        <dependency>
        	<groupId>org.apache.httpcomponents</groupId>
        	<artifactId>httpclient</artifactId>
        	<version>4.5.12</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.jaxrs</groupId>
        	<artifactId>jackson-jaxrs-json-provider</artifactId>
        	<version>2.11.0</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.datatype</groupId>
        	<artifactId>jackson-datatype-jsr310</artifactId>
        	<version>2.11.0</version>
        </dependency>
        <dependency>
        	<groupId>junit</groupId>
        	<artifactId>junit</artifactId>
        	<version>4.13</version>
        	<scope>test</scope>
        </dependency>
        <dependency>
        	<groupId>org.apache.logging.log4j</groupId>
        	<artifactId>log4j-slf4j-impl</artifactId>
        	<version>2.13.2</version>
        	<scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
            	<groupId>org.apache.maven.plugins</groupId>
            	<artifactId>maven-surefire-plugin</artifactId>
            	<executions>
            		<execution>
            			<id>unit-tests</id>
            			<phase>test</phase>
            			<goals><goal>test</goal></goals>
            			<configuration>
            				<excludes>
            					<exclude>**/*IT.class</exclude>
            				</excludes>
            			</configuration>
            		</execution>
            	</executions>
            </plugin>
        </plugins>
    </build>
</project>

src/jetty/log4j2.xml

0 → 100644
+16 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="[%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
  	<Logger name="me.brianlong" level="trace" additivity="false">
  	  <AppenderRef ref="STDOUT" />
  	</Logger>
    <Root level="trace">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>
+29 −0
Original line number Diff line number Diff line
package me.brianlong.git;

import org.eclipse.jgit.api.CloneCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.lib.Repository;

public class CachedGit extends Git {
	
	public CachedGit(Git git) {
		super(git.getRepository());
	}
	
	public CachedGit(CloneCommand clone) throws TransportException, InvalidRemoteException, GitAPIException {
		super(clone.call().getRepository());
	}
	
	public CachedGit(Repository repo) {
		super(repo);
	}
	
	@Override
	public void close() {
		LocalRepositoryCache.getInstance().release(this);
	}

}
+53 −0
Original line number Diff line number Diff line
package me.brianlong.git;

import org.eclipse.jgit.api.CloneCommand;
import org.eclipse.jgit.api.FetchCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.LsRemoteCommand;
import org.eclipse.jgit.api.PullCommand;
import org.eclipse.jgit.api.PushCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.CredentialsProvider;

public class CredentialedGit extends CachedGit {
	
	private CredentialsProvider credProvider;
	
	public CredentialedGit(CloneCommand clone, GitCredentials creds) throws TransportException, InvalidRemoteException, GitAPIException {
		this(clone.setCredentialsProvider(creds.toJGitCredentialsProvider()).call(), creds);
	}
	
	public CredentialedGit(Git git, GitCredentials creds) {
		super(git.getRepository());
		this.credProvider = creds.toJGitCredentialsProvider();
	}
	
	public CredentialedGit(Repository repo, GitCredentials creds) {
		super(repo);
		this.credProvider = creds.toJGitCredentialsProvider();
	}
	
	@Override
	public FetchCommand fetch() {
		return super.fetch().setCredentialsProvider(this.credProvider);
	}
	
	@Override
	public LsRemoteCommand lsRemote() {
		return super.lsRemote().setCredentialsProvider(this.credProvider);
	}
	
	@Override
	public PullCommand pull() {
		return super.pull().setCredentialsProvider(this.credProvider);
	}
	
	@Override
	public PushCommand push() {
		return super.push().setCredentialsProvider(this.credProvider);
	}

}
Loading