提交 34c655c9 编写于 作者: H hot13399

add jgit example

上级 ab19b65c
......@@ -8,6 +8,7 @@ http://spring.io/guides
在这个项目里主要实现了以下技术:
* spring-webmvc
* svnkit
* jgit
* javax.mail
* jasypt
* dom4j
......
此差异已折叠。
......@@ -196,6 +196,17 @@
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.0.1.201506240215-r</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.archive</artifactId>
<version>4.0.1.201506240215-r</version>
</dependency>
</dependencies>
<repositories>
<!-- For testing against latest Spring snapshots -->
......
......@@ -14,3 +14,5 @@ path.json=resources/svn_temp/morstatus.json
web.hostname=localhost
path.git.ssh=git@github.com:hot13399/spring-mvc-mini.git
path.git.ssh.key=/root/.ssh/github_rsa
此差异已折叠。
此差异已折叠。
package com.spring.mvc.mini.git;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.TransportConfigCallback;
import org.eclipse.jgit.api.errors.*;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.transport.*;
import org.eclipse.jgit.util.FS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
/**
* Created by n2zhang on 2015/7/31.
*/
@Component
public class GitHandler {
static Logger LOGGER = LoggerFactory.getLogger(GitHandler.class);
@Value("${path.git.ssh}")
private String gitSshPath;
@Value("${path.git.ssh.key}")
private String gitSshKey;
public void checkin() {
File repositoryPath = new File(gitSshPath);
Repository repository = null;
try {
repository = FileRepositoryBuilder.create(new File(repositoryPath, ".git"));
Git git = new Git(repository);
git.add()
.addFilepattern(".")
.call();
git.commit()
.setMessage("new managed object commited")
.call();
final SshSessionFactory sshSessionFactory = new JschConfigSessionFactory() {
@Override
protected void configure(OpenSshConfig.Host host, Session session) {
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
}
@Override
protected JSch createDefaultJSch(FS fs) throws JSchException {
JSch defaultJSch = super.createDefaultJSch(fs);
defaultJSch.addIdentity(gitSshKey);
return defaultJSch;
}
};
Iterable resultIterable = git.push().setRemote(gitSshPath).setTransportConfigCallback(new TransportConfigCallback() {
@Override
public void configure(Transport transport) {
SshTransport sshTransport = (SshTransport) transport;
sshTransport.setSshSessionFactory(sshSessionFactory);
}
}).call();
Iterator iterator = resultIterable.iterator();
while (iterator.hasNext () ) {
PushResult result = (PushResult) iterator.next ();
LOGGER.info(result.getMessages());
}
LOGGER.info("Json SVN Checked in at " + new Date());
} catch (IOException e) {
LOGGER.error(e.toString());
} catch (UnmergedPathsException e) {
LOGGER.error(e.toString());
} catch (WrongRepositoryStateException e) {
LOGGER.error(e.toString());
} catch (ConcurrentRefUpdateException e) {
LOGGER.error(e.toString());
} catch (NoFilepatternException e) {
LOGGER.error(e.toString());
} catch (AbortedByHookException e) {
LOGGER.error(e.toString());
} catch (NoHeadException e) {
LOGGER.error(e.toString());
} catch (InvalidRemoteException e) {
LOGGER.error(e.toString());
} catch (TransportException e) {
LOGGER.error(e.toString());
} catch (NoMessageException e) {
LOGGER.error(e.toString());
} catch (GitAPIException e) {
LOGGER.error(e.toString());
} finally {
repository.close();
}
}
}
package com.spring.mvc.mini.json;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.spring.mvc.mini.pojo.ObjectClass;
import com.spring.mvc.mini.pojo.RequestStatus;
import com.spring.mvc.mini.pojo.RequestStatusListType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.spring.mvc.mini.pojo.RequestStatus;
import com.spring.mvc.mini.pojo.RequestStatusListType;
import com.spring.mvc.mini.pojo.ObjectClass;
import com.spring.mvc.mini.properties.Properties;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@Component
public class RequestStatusJsonParser {
......
package com.spring.mvc.mini.mail;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.spring.mvc.mini.properties.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
@Component
public class MailSender {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册