Archived
0

Пересмотрена структура проекта

Изменено название: ArcadexSystem -> ASys.
Изменены корневые пакеты: eu.arcadex.system -> asys
Не разработанные модули удалены. В проект будут
включены только базовые модули, без которых система
не сможет выполнять базовый функционал.
This commit is contained in:
2016-06-22 17:09:10 +03:00
parent 57c03d3323
commit bf8a4f5787
18 changed files with 64 additions and 519 deletions

View File

@@ -1,3 +1,11 @@
# ArcadexSystem: Core # ASys
Ядро системы ## Описание
Модульная система управления группой Bukkit-based серверов.
## Базовые модули
### Core
Ядро системы.

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>build_files</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>filesystem</artifactId>
<version>${global.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>configuration</artifactId>
<packaging>jar</packaging>
</project>

View File

@@ -7,17 +7,17 @@
<name>Core</name> <name>Core</name>
<artifactId>core</artifactId> <artifactId>core</artifactId>
<version>0.1-SNAPSHOT</version> <version>0.2</version>
<packaging>bundle</packaging> <packaging>bundle</packaging>
<parent> <parent>
<artifactId>arcadexsystem</artifactId> <groupId>asys</groupId>
<groupId>eu.arcadex.system</groupId> <artifactId>asys</artifactId>
<version>${global.version}</version> <version>${asys.version}</version>
</parent> </parent>
<build> <build>
<finalName>${groupId}.${artifactId}-${version}</finalName> <finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.felix</groupId> <groupId>org.apache.felix</groupId>
@@ -26,10 +26,10 @@
<extensions>true</extensions> <extensions>true</extensions>
<configuration> <configuration>
<instructions> <instructions>
<Bundle-Name>Arcadex System: ${name} ${version}</Bundle-Name> <Bundle-Name>ASys: ${project.name} ${project.version}</Bundle-Name>
<Bundle-SymbolicName>${groupId}.${artifactId}</Bundle-SymbolicName> <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Activator>eu.arcadex.system.core.ASysCoreActivator</Bundle-Activator> <Bundle-Activator>asys.core.ASysCoreActivator</Bundle-Activator>
<Export-Package>eu.arcadex.system.core.api</Export-Package> <Export-Package>asys.core.api</Export-Package>
<Import-Package>*</Import-Package> <Import-Package>*</Import-Package>
</instructions> </instructions>
</configuration> </configuration>

View File

@@ -1,6 +1,10 @@
package eu.arcadex.system.core; /*
* DmitriyMX <mail@dmitriymx.ru>
* 2016-04-06
*/
package asys.core;
import eu.arcadex.system.core.api.ICore; import asys.core.api.ICore;
import org.osgi.framework.Bundle; import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException; import org.osgi.framework.BundleException;
@@ -11,10 +15,6 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/**
* @author DmitriyMX <mail@dmitriymx.ru>
* 2016
*/
class ASysCore implements ICore { class ASysCore implements ICore {
private Logger logger = LoggerFactory.getLogger(ASysCore.class.getName()); private Logger logger = LoggerFactory.getLogger(ASysCore.class.getName());
private BundleContext bundleContext; private BundleContext bundleContext;
@@ -68,6 +68,7 @@ class ASysCore implements ICore {
private void stopBundles(List<Bundle> bundleList) { private void stopBundles(List<Bundle> bundleList) {
for (Bundle bundle : bundleList) { for (Bundle bundle : bundleList) {
try { try {
logger.trace("Stop module \"{}\"", bundle.getSymbolicName());
bundle.stop(); bundle.stop();
} catch (BundleException e) { } catch (BundleException e) {
logger.error(String.format("Error stop bundle \"%s\"", bundle.getSymbolicName()), e); logger.error(String.format("Error stop bundle \"%s\"", bundle.getSymbolicName()), e);

View File

@@ -1,14 +1,14 @@
package eu.arcadex.system.core; /*
* DmitriyMX <mail@dmitriymx.ru>
* 2016-04-06
*/
package asys.core;
import eu.arcadex.system.core.api.ICore; import asys.core.api.ICore;
import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration; import org.osgi.framework.ServiceRegistration;
/**
* @author DmitriyMX <mail@dmitriymx.ru>
* 2016
*/
public class ASysCoreActivator implements BundleActivator { public class ASysCoreActivator implements BundleActivator {
private ServiceRegistration<?> service; private ServiceRegistration<?> service;

View File

@@ -0,0 +1,9 @@
/*
* DmitriyMX <mail@dmitriymx.ru>
* 2016-04-06
*/
package asys.core.api;
public interface ICore {
void reloadMoludes();
}

View File

@@ -1,9 +0,0 @@
package eu.arcadex.system.core.api;
/**
* @author DmitriyMX <mail@dmitriymx.ru>
* 2016
*/
public interface ICore {
void reloadMoludes();
}

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>database</artifactId>
<packaging>jar</packaging>
</project>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>filesystem</artifactId>
<packaging>jar</packaging>
</project>

View File

@@ -1,145 +0,0 @@
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
/**
* File System proxy lib
* <p>
* Created by daniil on 02.04.16.
*/
public class FileSystemLib {
/**
* Copy data from InputStream to OutputStream
*
* @param from Input Stream
* @param to Output Stream
* @return size of copied data
* @throws IOException
*/
protected static long copy(InputStream from, OutputStream to) throws IOException {
assert from != null;
assert to != null;
byte[] buf = new byte[4096];
long total = 0L;
while (true) {
int r = from.read(buf);
if (r == -1) {
return total;
}
to.write(buf, 0, r);
total += (long) r;
}
}
/**
* Copy file or directory from one direction to another
*
* @param from File to copy
* @param to Destination
* @param replace replace the destination file if present?
* @throws IOException
*/
public void copy(Path from, Path to, boolean replace) throws IOException {
assert from != null;
assert to != null;
if (!replace)
Files.copy(from, to);
else
Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING);
}
/**
* Delete file
*
* @param file file to delete
* @throws IOException, FileNotFoundException
*/
public void delete(File file) throws IOException {
assert file != null;
if (!file.exists())
throw new FileNotFoundException("Unable to delete nonexistent file");
if (!file.delete())
throw new IOException("Unable to delete this file");
}
/**
* Create a symlink
*
* @param linkFile Where symlink should be created
* @param actualFile Where should it point to
* @throws IOException
*/
public void createSymlink(Path linkFile, Path actualFile) throws IOException {
assert linkFile != null;
assert actualFile != null;
if (!actualFile.toFile().exists())
throw new FileNotFoundException("Couldn't find symlink destination");
Files.createSymbolicLink(linkFile, actualFile);
}
public void restoreFromResources(String resourceName, File destination, boolean replace) throws IOException {
assert resourceName != null;
assert destination != null;
if (destination.exists() && !replace)
return;
try {
if (!destination.createNewFile())
throw new IOException("Unable to create new file");
try (InputStream is = this.getClass().getClassLoader().getResourceAsStream(resourceName);
OutputStream os = new FileOutputStream(destination)) {
copy(is, os);
}
} catch (IOException e) {
throw new IOException("Unable to restore file from resource");
}
}
/**
* Get FileReader for the file
* <p>
* We need this to make the code testable
*
* @param file file to read
* @return FileReader
* @throws FileNotFoundException
*/
public Reader getReader(File file) throws FileNotFoundException {
assert file != null;
return new FileReader(file);
}
/**
* Get FileWriter for the file
* <p>
* We need this to make the code testable
*
* @param file file to write to
* @return FileWriter
* @throws IOException
*/
public Writer getWriter(File file) throws IOException {
return new FileWriter(file);
}
/**
* Unzip archive to directory
*
* @param archive archive to extract
* @param directory destination
* @throws IOException
*/
public void unzip(String archive, String directory) throws IOException {
UnzipUtility zip = new UnzipUtility();
zip.unzip(archive, directory);
}
}

View File

@@ -1,69 +0,0 @@
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* This utility extracts files and directories of a standard zip file to
* a destination directory.
*
* @author www.codejava.net
*/
public class UnzipUtility {
/**
* Size of the buffer to read/write data
*/
private static final int BUFFER_SIZE = 4096;
/**
* Extracts a zip file specified by the zipFilePath to a directory specified by
* destDirectory (will be created if does not exists)
*
* @param zipFilePath path of the archive
* @param destDirectory where to extract to
* @throws IOException
*/
public void unzip(String zipFilePath, String destDirectory) throws IOException {
File destDir = new File(destDirectory);
if (!destDir.exists()) {
if (!destDir.mkdir())
throw new IOException("Unable to create a root directory to unzip the archive");
}
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
// iterates over entries in the zip file
while (entry != null) {
String filePath = destDirectory + File.separator + entry.getName();
if (!entry.isDirectory()) {
// if the entry is a file, extracts it
extractFile(zipIn, filePath);
} else {
// if the entry is a directory, make the directory
File dir = new File(filePath);
if (!dir.mkdir()) {
throw new IOException("Unable to create a directory to unzip the directory");
}
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
/**
* Extracts a zip entry (file entry)
*
* @param zipIn ZipInputStream
* @param filePath Where to extract to
* @throws IOException
*/
private void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[BUFFER_SIZE];
int read;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
}
}

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>netty_api</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>database</artifactId>
<version>${global.version}</version>
</dependency>
</dependencies>
</project>

58
pom.xml
View File

@@ -1,53 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 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> <modelVersion>4.0.0</modelVersion>
<name>Arcadex System</name> <name>ASys</name>
<properties> <properties>
<global.version>0.1</global.version> <asys.version>0.2</asys.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties> </properties>
<groupId>eu.arcadex.system</groupId> <groupId>asys</groupId>
<artifactId>arcadexsystem</artifactId> <artifactId>asys</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>${global.version}</version> <version>${asys.version}</version>
<modules> <modules>
<module>core</module> <module>core</module>
<module>configuration</module>
<module>database</module>
<module>filesystem</module>
<module>screen</module>
<module>build_files</module>
<module>netty_api</module>
<module>web_api</module>
<module>server_manager</module>
</modules> </modules>
<repositories>
<repository>
<id>SonatypeRepo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
@@ -60,4 +33,19 @@
<version>6.0.0</version> <version>6.0.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>screen</artifactId>
<packaging>jar</packaging>
</project>

View File

@@ -1,65 +0,0 @@
import java.io.IOException;
import java.nio.file.Path;
/**
* Realization of class dedicated to the control
* of GNU Screen sessions
* <p>
* Created by daniil on 02.04.16.
*/
public class ScreenLib {
/**
* Start a screen with certain ID
* and execute a command inside it
*
* @param screenName Screen ID
* @param runPath Home path of started screen
* @param command Command [+args] to execute inside the screen
* @throws IOException
*/
public void startScreen(String screenName, Path runPath, String... command) throws IOException {
assert screenName != null && screenName.length() != 0;
assert runPath != null;
// Merge two arrays
String[] commandBase = new String[command.length + 3];
commandBase[0] = "screen";
commandBase[1] = "-dmS";
commandBase[2] = screenName;
System.arraycopy(command, 0, commandBase, 3, command.length);
ProcessBuilder processBuilder = new ProcessBuilder(commandBase);
processBuilder.directory(runPath.toFile());
processBuilder.start();
}
/**
* Send command to specific screen
*
* @param screenName Screen ID
* @param command Command to send
* @throws IOException
*/
public void sendCommand(String screenName, String command) throws IOException {
assert screenName != null;
assert command != null;
ProcessBuilder processBuilder = new ProcessBuilder("screen", "-S", screenName, "-p", "0", "-X", "stuff", String.format(command + "%n"));
processBuilder.start();
}
/**
* Force terminate a screen session
*
* @param screenName Screen ID
* @throws IOException
*/
public void killScreen(String screenName) throws IOException {
assert screenName != null;
ProcessBuilder processBuilder = new ProcessBuilder("screen", "-X", "-S", screenName, "quit");
processBuilder.start();
}
}

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>server_manager</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>build_files</artifactId>
<version>${global.version}</version>
</dependency>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>screen</artifactId>
<version>${global.version}</version>
</dependency>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>netty_api</artifactId>
<version>${global.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>arcadexsystem</artifactId>
<groupId>eu.arcadex.system</groupId>
<version>${global.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>web_api</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>database</artifactId>
<version>${global.version}</version>
</dependency>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>configuration</artifactId>
<version>${global.version}</version>
</dependency>
<dependency>
<groupId>eu.arcadex.system</groupId>
<artifactId>server_manager</artifactId>
<version>${global.version}</version>
</dependency>
</dependencies>
</project>