去除离线缓存 修复版本更新模块...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092 2016-01-09 13:13:49 +08:00
parent d1fd6daa9a
commit 5f69c0abbd
28 changed files with 2056 additions and 2020 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>cn.citycraft</groupId> <groupId>cn.citycraft</groupId>
<artifactId>Yum</artifactId> <artifactId>Yum</artifactId>
<version>1.9.6</version> <version>1.9.7</version>
<name>Yum</name> <name>Yum</name>
<description>Minecraft 服务器插件管理系统</description> <description>Minecraft 服务器插件管理系统</description>
<build> <build>
@ -55,7 +55,7 @@
</build> </build>
<properties> <properties>
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url> <jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
<update.description>&amp;c修复没有Gson的服务端仓库管理出错的问题...</update.description> <update.description>&amp;c去除离线缓存 修复版本更新模块...</update.description>
<env.BUILD_NUMBER>Debug</env.BUILD_NUMBER> <env.BUILD_NUMBER>Debug</env.BUILD_NUMBER>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>

View File

@ -14,24 +14,19 @@ import cn.citycraft.Yum.file.commands.FileCommand;
/** /**
* MC插件仓库 * MC插件仓库
* *
* @author 蒋天蓓 2015年8月21日下午5:14:39 * @author
* @since 2015年8月21日下午5:14:39
*/ */
public class Yum extends JavaPlugin { public class Yum extends JavaPlugin {
public FileConfig config; public FileConfig config;
@Override
public void onDisable() {
YumAPI.getRepo().cacheToJson(config);
}
@Override @Override
public void onEnable() { public void onEnable() {
new YumAPI(this); new YumAPI(this);
new YumCommand(this); new YumCommand(this);
new FileCommand(this); new FileCommand(this);
YumAPI.getRepo().jsonToCache(config);
YumAPI.updaterepo();
new VersionChecker(this); new VersionChecker(this);
YumAPI.updaterepo();
} }
@Override @Override

View File

@ -20,8 +20,8 @@ import cn.citycraft.Yum.manager.RepositoryManager;
/** /**
* Yum管理中心 * Yum管理中心
* *
* @author 蒋天蓓 * @author
* 2015年9月1日上午10:59:47 * @since 2015年9月1日上午10:59:47
*/ */
public class YumAPI { public class YumAPI {
private static DownloadManager download; private static DownloadManager download;
@ -298,7 +298,9 @@ public class YumAPI {
public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) { public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) {
final PluginInfo pi = repo.getPlugin(plugin.getName()); final PluginInfo pi = repo.getPlugin(plugin.getName());
if (pi != null) { if (pi != null) {
if (download.run(sender, pi.getUrl(sender, version), new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) { final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName());
if (download.run(sender, pi.getUrl(sender, version), pFile)) {
if (!oneKeyUpdate) { if (!oneKeyUpdate) {
sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹"); sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!"); sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandDelete extends BaseCommand { public class CommandDelete extends BaseCommand {
Yum main; Yum main;

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandFullDelete extends BaseCommand { public class CommandFullDelete extends BaseCommand {
Yum main; Yum main;

View File

@ -23,7 +23,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandInfo extends BaseCommand { public class CommandInfo extends BaseCommand {
Yum main; Yum main;

View File

@ -20,7 +20,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件安装命令类 * 插件安装命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandInstall extends BaseCommand { public class CommandInstall extends BaseCommand {
Yum main; Yum main;

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件查看命令类 * 插件查看命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandList extends BaseCommand { public class CommandList extends BaseCommand {
Yum main; Yum main;

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandLoad extends BaseCommand { public class CommandLoad extends BaseCommand {
Yum main; Yum main;

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandReload extends BaseCommand { public class CommandReload extends BaseCommand {
Yum main; Yum main;

View File

@ -20,7 +20,8 @@ import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandRepo extends BaseCommand { public class CommandRepo extends BaseCommand {
Yum main; Yum main;

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.api.YumAPI;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandUnload extends BaseCommand { public class CommandUnload extends BaseCommand {
Yum main; Yum main;

View File

@ -14,7 +14,8 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI; import cn.citycraft.Yum.api.YumAPI;
/** /**
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandUpdate extends BaseCommand { public class CommandUpdate extends BaseCommand {
Yum main; Yum main;
@ -22,13 +23,20 @@ public class CommandUpdate extends BaseCommand {
public CommandUpdate(final Yum main) { public CommandUpdate(final Yum main) {
super("u"); super("u");
this.main = main; this.main = main;
setMinimumArguments(1); setMinimumArguments(0);
setDescription("更新插件"); setDescription("更新插件或缓存");
setPossibleArguments("<插件名称> [插件版本]"); setPossibleArguments("[插件名称] [插件版本]");
} }
@Override @Override
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
switch (args.length) {
case 0:
YumAPI.getRepo().updateRepositories(sender);
sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
break;
case 1:
case 2:
final String pluginname = args[0]; final String pluginname = args[0];
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
sender.sendMessage("§a开始更新插件: " + pluginname); sender.sendMessage("§a开始更新插件: " + pluginname);
@ -46,5 +54,9 @@ public class CommandUpdate extends BaseCommand {
} else { } else {
sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!"); sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!");
} }
}; break;
default:
sendHelp(sender, label);
}
}
} }

View File

@ -13,7 +13,8 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI; import cn.citycraft.Yum.api.YumAPI;
/** /**
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandUpdateAll extends BaseCommand { public class CommandUpdateAll extends BaseCommand {
Yum main; Yum main;

View File

@ -14,7 +14,8 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI; import cn.citycraft.Yum.api.YumAPI;
/** /**
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandUpgrade extends BaseCommand { public class CommandUpgrade extends BaseCommand {
Yum main; Yum main;

View File

@ -3,6 +3,12 @@ package cn.citycraft.Yum.commands;
import cn.citycraft.PluginHelper.commands.HandlerSubCommand; import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.Yum;
/**
* Yum命令基类
*
* @since 2016年1月9日 上午10:02:24
* @author
*/
public class YumCommand { public class YumCommand {
public YumCommand(final Yum yum) { public YumCommand(final Yum yum) {
final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "yum"); final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "yum");

View File

@ -15,7 +15,8 @@ import cn.citycraft.Yum.Yum;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandDelete extends BaseCommand { public class CommandDelete extends BaseCommand {
public CommandDelete(final Yum main) { public CommandDelete(final Yum main) {

View File

@ -18,7 +18,8 @@ import cn.citycraft.Yum.manager.DownloadManager;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandDownLoad extends BaseCommand { public class CommandDownLoad extends BaseCommand {
Yum main; Yum main;

View File

@ -15,7 +15,8 @@ import cn.citycraft.Yum.Yum;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandLs extends BaseCommand { public class CommandLs extends BaseCommand {

View File

@ -15,7 +15,8 @@ import cn.citycraft.Yum.Yum;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandRename extends BaseCommand { public class CommandRename extends BaseCommand {
public CommandRename(final Yum main) { public CommandRename(final Yum main) {

View File

@ -16,7 +16,8 @@ import cn.citycraft.Yum.Yum;
/** /**
* 插件删除命令类 * 插件删除命令类
* *
* @author 蒋天蓓 2015年8月12日下午2:04:05 * @author
* @since 2015年8月12日下午2:04:05
*/ */
public class CommandRm extends BaseCommand { public class CommandRm extends BaseCommand {
Yum plugin; Yum plugin;

View File

@ -3,6 +3,12 @@ package cn.citycraft.Yum.file.commands;
import cn.citycraft.PluginHelper.commands.HandlerSubCommand; import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.Yum;
/**
* File命令基类
*
* @since 2016年1月9日 上午10:02:39
* @author
*/
public class FileCommand { public class FileCommand {
public FileCommand(final Yum yum) { public FileCommand(final Yum yum) {
final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "file"); final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "file");

View File

@ -9,12 +9,13 @@ import java.net.URL;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
/** /**
* 下载管理类 * 下载管理类
* *
* @author 蒋天蓓 * @author
* 2015年8月21日下午6:08:09 * @since 2015年8月21日下午6:08:09
*/ */
public class DownloadManager { public class DownloadManager {
Plugin plugin; Plugin plugin;
@ -134,7 +135,14 @@ public class DownloadManager {
} }
} }
} }
sender.sendMessage("§6文件: §a " + file.getName() + " 下载完成!"); String pVer = null;
try {
final PluginDescriptionFile desc = plugin.getPluginLoader().getPluginDescription(file);
pVer = desc.getVersion();
} catch (final Exception e) {
pVer = "";
}
sender.sendMessage("§6" + (pVer.isEmpty() ? "文件" : "插件") + ": §b" + file.getName() + (pVer.isEmpty() ? "" : " 版本 §e" + pVer) + " §a下载完成!");
return true; return true;
} catch (final Exception ex) { } catch (final Exception ex) {
sender.sendMessage("§6异常: §c" + ex.getMessage()); sender.sendMessage("§6异常: §c" + ex.getMessage());

View File

@ -100,7 +100,7 @@ public class PluginInfo {
} else if (pom != null && !pom.isEmpty()) { } else if (pom != null && !pom.isEmpty()) {
pom = pom.replace("[name]", name).replace("[branch]", branch); pom = pom.replace("[name]", name).replace("[branch]", branch);
sender.sendMessage("§6版本: §b尝试从在线POM文件获取最新版本..."); sender.sendMessage("§6版本: §b尝试从在线POM文件获取最新版本...");
ver = IOUtil.getXMLTag(pom, "version", plugin.version); ver = IOUtil.getXMLTag(pom, "version", null);
if (ver != null) { if (ver != null) {
sender.sendMessage("§6版本: §a成功获取到最新版本 §e" + ver + " §a..."); sender.sendMessage("§6版本: §a成功获取到最新版本 §e" + ver + " §a...");
} }
@ -108,7 +108,7 @@ public class PluginInfo {
} }
if (ver == null) { if (ver == null) {
ver = plugin.version; ver = plugin.version;
sender.sendMessage("§6版本: §a使用缓存的版本 §e" + ver + " §a..."); sender.sendMessage("§6版本: §d使用缓存的版本 §e" + ver + " §a...");
} }
switch (type) { switch (type) {
case DirectUrl: case DirectUrl:

View File

@ -37,7 +37,8 @@ import cn.citycraft.PluginHelper.utils.StringUtil;
/** /**
* 插件管理类 * 插件管理类
* *
* @author 蒋天蓓 2015年8月21日下午7:03:26 * @author
* @since 2015年8月21日下午7:03:26
*/ */
public class PluginsManager { public class PluginsManager {
private final Set<String> ignoreList = new HashSet<>(); private final Set<String> ignoreList = new HashSet<>();

View File

@ -6,11 +6,13 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import cn.citycraft.PluginHelper.PluginHelperLogger;
import cn.citycraft.PluginHelper.jsonresult.JsonHandle; import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
import cn.citycraft.PluginHelper.utils.IOUtil; import cn.citycraft.PluginHelper.utils.IOUtil;
import cn.citycraft.Yum.manager.RepoSerialization.Repositories; import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
public class RepoCache { public class RepoCache {
PluginHelperLogger logger = PluginHelperLogger.getLogger();
Map<String, PluginInfo> plugins = new HashMap<String, PluginInfo>(); Map<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
Map<String, Repositories> repos = new HashMap<String, Repositories>(); Map<String, Repositories> repos = new HashMap<String, Repositories>();
@ -24,6 +26,7 @@ public class RepoCache {
public Repositories addRepo(final String repo) { public Repositories addRepo(final String repo) {
if (repos.containsKey(repo) || repo.isEmpty()) { if (repos.containsKey(repo) || repo.isEmpty()) {
logger.debug("源地址为空或已存在 " + repo);
return null; return null;
} }
final Repositories reposes = getRepo(repo); final Repositories reposes = getRepo(repo);
@ -49,10 +52,12 @@ public class RepoCache {
public Repositories getRepo(final String repo) { public Repositories getRepo(final String repo) {
final String json = IOUtil.getData(repo); final String json = IOUtil.getData(repo);
if (json == null || json.isEmpty()) { if (json == null || json.isEmpty()) {
logger.debug("源地址获取数据为空 " + repo);
return null; return null;
} }
final Repositories reposes = JsonHandle.fromJson(json, Repositories.class); final Repositories reposes = JsonHandle.fromJson(json, Repositories.class);
if (reposes == null || reposes.repos.isEmpty()) { if (reposes == null || reposes.repos.isEmpty()) {
logger.debug("源地址解析Json为空 " + repo);
return null; return null;
} }
return reposes; return reposes;

View File

@ -9,8 +9,8 @@ import java.util.List;
/** /**
* 源仓库序列化类 * 源仓库序列化类
* *
* @author 蒋天蓓 * @author
* 2015年8月31日下午7:41:53 * @since 2015年8月31日下午7:41:53
*/ */
public class RepoSerialization { public class RepoSerialization {
public class PackageInfo { public class PackageInfo {

View File

@ -11,9 +11,8 @@ import java.util.Map.Entry;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import cn.citycraft.PluginHelper.config.FileConfig; import cn.citycraft.PluginHelper.PluginHelperLogger;
import cn.citycraft.PluginHelper.jsonresult.JsonHandle; import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
import cn.citycraft.PluginHelper.utils.IOUtil; import cn.citycraft.PluginHelper.utils.IOUtil;
import cn.citycraft.PluginHelper.utils.StringUtil; import cn.citycraft.PluginHelper.utils.StringUtil;
@ -27,9 +26,11 @@ import cn.citycraft.Yum.manager.RepoSerialization.URLType;
/** /**
* 仓库管理类 * 仓库管理类
* *
* @author 蒋天蓓 * @author
* @since 2016年1月9日 上午10:02:57
*/ */
public class RepositoryManager { public class RepositoryManager {
PluginHelperLogger logger = PluginHelperLogger.getLogger();
org.bukkit.plugin.Plugin main; org.bukkit.plugin.Plugin main;
RepoCache repocache; RepoCache repocache;
@ -60,11 +61,6 @@ public class RepositoryManager {
return updateRepositories(sender, repo); return updateRepositories(sender, repo);
} }
public void cacheToJson(final FileConfig config) {
config.set("reposcache", repocache.toString());
config.save();
}
public void clean() { public void clean() {
repocache.getPlugins().clear(); repocache.getPlugins().clear();
} }
@ -157,18 +153,6 @@ public class RepositoryManager {
return updateRepositories(sender, repo); return updateRepositories(sender, repo);
} }
public boolean jsonToCache(final FileConfiguration config) {
try {
final String reposcache = config.getString("reposcache");
if (reposcache != null && !reposcache.isEmpty()) {
repocache = RepoCache.fromJson(reposcache);
return true;
}
} catch (final Exception e) {
}
return false;
}
public PackageInfo jsonToPackage(final String json) { public PackageInfo jsonToPackage(final String json) {
try { try {
return JsonHandle.fromJson(json, PackageInfo.class); return JsonHandle.fromJson(json, PackageInfo.class);
@ -221,6 +205,7 @@ public class RepositoryManager {
sender = Bukkit.getConsoleSender(); sender = Bukkit.getConsoleSender();
} }
if (repocenter == null || repocenter.repos.isEmpty()) { if (repocenter == null || repocenter.repos.isEmpty()) {
logger.debug("源地址为Null或源列表为空!");
return false; return false;
} }
for (final Repository repo : repocenter.repos) { for (final Repository repo : repocenter.repos) {