mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 17:26:22 +01:00
use ahc for internal http operations
This commit is contained in:
@@ -43,7 +43,7 @@ import sonia.scm.installer.HgInstallerFactory;
|
|||||||
import sonia.scm.installer.HgPackage;
|
import sonia.scm.installer.HgPackage;
|
||||||
import sonia.scm.installer.HgPackageReader;
|
import sonia.scm.installer.HgPackageReader;
|
||||||
import sonia.scm.installer.HgPackages;
|
import sonia.scm.installer.HgPackages;
|
||||||
import sonia.scm.net.HttpClient;
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
import sonia.scm.repository.HgConfig;
|
import sonia.scm.repository.HgConfig;
|
||||||
import sonia.scm.repository.HgRepositoryHandler;
|
import sonia.scm.repository.HgRepositoryHandler;
|
||||||
|
|
||||||
@@ -89,8 +89,8 @@ public class HgConfigResource
|
|||||||
* @param pkgReader
|
* @param pkgReader
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public HgConfigResource(HttpClient client, HgRepositoryHandler handler,
|
public HgConfigResource(AdvancedHttpClient client,
|
||||||
HgPackageReader pkgReader)
|
HgRepositoryHandler handler, HgPackageReader pkgReader)
|
||||||
{
|
{
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
@@ -338,7 +338,7 @@ public class HgConfigResource
|
|||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private HttpClient client;
|
private AdvancedHttpClient client;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private HgRepositoryHandler handler;
|
private HgRepositoryHandler handler;
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ package sonia.scm.installer;
|
|||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
import sonia.scm.net.HttpClient;
|
|
||||||
import sonia.scm.repository.HgConfig;
|
import sonia.scm.repository.HgConfig;
|
||||||
import sonia.scm.repository.HgRepositoryHandler;
|
import sonia.scm.repository.HgRepositoryHandler;
|
||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
@@ -44,6 +43,7 @@ import sonia.scm.util.IOUtil;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -93,7 +93,7 @@ public abstract class AbstractHgInstaller implements HgInstaller
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean installPackage(HttpClient client, HgRepositoryHandler handler,
|
public boolean installPackage(AdvancedHttpClient client, HgRepositoryHandler handler,
|
||||||
File baseDirectory, HgPackage pkg)
|
File baseDirectory, HgPackage pkg)
|
||||||
{
|
{
|
||||||
return new HgPackageInstaller(client, handler, baseDirectory,
|
return new HgPackageInstaller(client, handler, baseDirectory,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ package sonia.scm.installer;
|
|||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
import sonia.scm.net.HttpClient;
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
import sonia.scm.repository.HgConfig;
|
import sonia.scm.repository.HgConfig;
|
||||||
import sonia.scm.repository.HgRepositoryHandler;
|
import sonia.scm.repository.HgRepositoryHandler;
|
||||||
|
|
||||||
@@ -78,8 +78,8 @@ public interface HgInstaller
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean installPackage(HttpClient client, HgRepositoryHandler handler,
|
public boolean installPackage(AdvancedHttpClient client,
|
||||||
File baseDirectory, HgPackage pkg);
|
HgRepositoryHandler handler, File baseDirectory, HgPackage pkg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method description
|
* Method description
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import sonia.scm.SCMContext;
|
import sonia.scm.SCMContext;
|
||||||
import sonia.scm.io.ZipUnArchiver;
|
import sonia.scm.io.ZipUnArchiver;
|
||||||
import sonia.scm.net.HttpClient;
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
import sonia.scm.repository.HgWindowsPackageFix;
|
|
||||||
import sonia.scm.repository.HgConfig;
|
import sonia.scm.repository.HgConfig;
|
||||||
import sonia.scm.repository.HgRepositoryHandler;
|
import sonia.scm.repository.HgRepositoryHandler;
|
||||||
|
import sonia.scm.repository.HgWindowsPackageFix;
|
||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
@@ -80,8 +80,8 @@ public class HgPackageInstaller implements Runnable
|
|||||||
* @param baseDirectory
|
* @param baseDirectory
|
||||||
* @param pkg
|
* @param pkg
|
||||||
*/
|
*/
|
||||||
public HgPackageInstaller(HttpClient client, HgRepositoryHandler handler,
|
public HgPackageInstaller(AdvancedHttpClient client,
|
||||||
File baseDirectory, HgPackage pkg)
|
HgRepositoryHandler handler, File baseDirectory, HgPackage pkg)
|
||||||
{
|
{
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
@@ -155,7 +155,7 @@ public class HgPackageInstaller implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO error handling
|
// TODO error handling
|
||||||
input = client.get(pkg.getUrl()).getContent();
|
input = client.get(pkg.getUrl()).request().contentAsStream();
|
||||||
output = new FileOutputStream(file);
|
output = new FileOutputStream(file);
|
||||||
IOUtil.copy(input, output);
|
IOUtil.copy(input, output);
|
||||||
}
|
}
|
||||||
@@ -265,7 +265,7 @@ public class HgPackageInstaller implements Runnable
|
|||||||
private File baseDirectory;
|
private File baseDirectory;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private HttpClient client;
|
private AdvancedHttpClient client;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private HgRepositoryHandler handler;
|
private HgRepositoryHandler handler;
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ package sonia.scm.installer;
|
|||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -44,22 +43,17 @@ import org.slf4j.LoggerFactory;
|
|||||||
import sonia.scm.PlatformType;
|
import sonia.scm.PlatformType;
|
||||||
import sonia.scm.cache.Cache;
|
import sonia.scm.cache.Cache;
|
||||||
import sonia.scm.cache.CacheManager;
|
import sonia.scm.cache.CacheManager;
|
||||||
import sonia.scm.net.HttpClient;
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
import sonia.scm.net.HttpResponse;
|
|
||||||
import sonia.scm.util.IOUtil;
|
|
||||||
import sonia.scm.util.SystemUtil;
|
import sonia.scm.util.SystemUtil;
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.JAXB;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Sebastian Sdorra
|
* @author Sebastian Sdorra
|
||||||
@@ -85,14 +79,14 @@ public class HgPackageReader
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param cacheManager
|
* @param cacheManager
|
||||||
* @param httpClientProvider
|
* @param httpClient
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public HgPackageReader(CacheManager cacheManager,
|
public HgPackageReader(CacheManager cacheManager,
|
||||||
Provider<HttpClient> httpClientProvider)
|
AdvancedHttpClient httpClient)
|
||||||
{
|
{
|
||||||
cache = cacheManager.getCache(String.class, HgPackages.class, CACHENAME);
|
cache = cacheManager.getCache(String.class, HgPackages.class, CACHENAME);
|
||||||
this.httpClientProvider = httpClientProvider;
|
this.httpClient = httpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- get methods ----------------------------------------------------------
|
//~--- get methods ----------------------------------------------------------
|
||||||
@@ -218,23 +212,19 @@ public class HgPackageReader
|
|||||||
}
|
}
|
||||||
|
|
||||||
HgPackages packages = null;
|
HgPackages packages = null;
|
||||||
InputStream input = null;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpResponse response = httpClientProvider.get().get(PACKAGEURL);
|
//J-
|
||||||
|
packages = httpClient.get(PACKAGEURL)
|
||||||
input = response.getContent();
|
.request()
|
||||||
packages = JAXB.unmarshal(input, HgPackages.class);
|
.contentFromXml(HgPackages.class);
|
||||||
|
//J+
|
||||||
}
|
}
|
||||||
catch (IOException ex)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
logger.error("could not read HgPackages from ".concat(PACKAGEURL), ex);
|
logger.error("could not read HgPackages from ".concat(PACKAGEURL), ex);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
IOUtil.close(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (packages == null)
|
if (packages == null)
|
||||||
{
|
{
|
||||||
@@ -251,5 +241,5 @@ public class HgPackageReader
|
|||||||
private Cache<String, HgPackages> cache;
|
private Cache<String, HgPackages> cache;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<HttpClient> httpClientProvider;
|
private AdvancedHttpClient httpClient;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,9 +47,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import sonia.scm.ConfigChangedListener;
|
import sonia.scm.ConfigChangedListener;
|
||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
import sonia.scm.net.HttpClient;
|
|
||||||
import sonia.scm.net.HttpRequest;
|
|
||||||
import sonia.scm.net.HttpResponse;
|
|
||||||
import sonia.scm.util.HttpUtil;
|
import sonia.scm.util.HttpUtil;
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
|
|
||||||
@@ -60,6 +57,7 @@ import java.io.IOException;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -86,17 +84,17 @@ public class HgHookManager implements ConfigChangedListener<ScmConfiguration>
|
|||||||
*
|
*
|
||||||
* @param configuration
|
* @param configuration
|
||||||
* @param httpServletRequestProvider
|
* @param httpServletRequestProvider
|
||||||
* @param httpClientProvider
|
* @param httpClient
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public HgHookManager(ScmConfiguration configuration,
|
public HgHookManager(ScmConfiguration configuration,
|
||||||
Provider<HttpServletRequest> httpServletRequestProvider,
|
Provider<HttpServletRequest> httpServletRequestProvider,
|
||||||
Provider<HttpClient> httpClientProvider)
|
AdvancedHttpClient httpClient)
|
||||||
{
|
{
|
||||||
this.configuration = configuration;
|
this.configuration = configuration;
|
||||||
this.configuration.addListener(this);
|
this.configuration.addListener(this);
|
||||||
this.httpServletRequestProvider = httpServletRequestProvider;
|
this.httpServletRequestProvider = httpServletRequestProvider;
|
||||||
this.httpClientProvider = httpClientProvider;
|
this.httpClient = httpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
@@ -359,20 +357,16 @@ public class HgHookManager implements ConfigChangedListener<ScmConfiguration>
|
|||||||
{
|
{
|
||||||
url = url.concat("?ping=true");
|
url = url.concat("?ping=true");
|
||||||
|
|
||||||
if (logger.isTraceEnabled())
|
|
||||||
{
|
|
||||||
logger.trace("check hook url {}", url);
|
logger.trace("check hook url {}", url);
|
||||||
}
|
//J-
|
||||||
|
int sc = httpClient.get(url)
|
||||||
HttpRequest request = new HttpRequest(url);
|
.disableHostnameValidation(true)
|
||||||
|
.disableCertificateValidation(true)
|
||||||
request.setDisableCertificateValidation(true);
|
.ignoreProxySettings(true)
|
||||||
request.setDisableHostnameValidation(true);
|
.request()
|
||||||
request.setIgnoreProxySettings(true);
|
.getStatus();
|
||||||
|
//J+
|
||||||
HttpResponse response = httpClientProvider.get().get(request);
|
result = sc == 204;
|
||||||
|
|
||||||
result = response.getStatusCode() == 204;
|
|
||||||
}
|
}
|
||||||
catch (IOException ex)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
@@ -397,7 +391,7 @@ public class HgHookManager implements ConfigChangedListener<ScmConfiguration>
|
|||||||
private volatile String hookUrl;
|
private volatile String hookUrl;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<HttpClient> httpClientProvider;
|
private AdvancedHttpClient httpClient;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<HttpServletRequest> httpServletRequestProvider;
|
private Provider<HttpServletRequest> httpServletRequestProvider;
|
||||||
|
|||||||
@@ -74,7 +74,9 @@ import sonia.scm.util.HttpUtil;
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Sebastian Sdorra
|
* @author Sebastian Sdorra
|
||||||
|
* @deprecated use {@link sonia.scm.net.ahc.AdvancedHttpClient}
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public class URLHttpClient implements HttpClient
|
public class URLHttpClient implements HttpClient
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -40,21 +40,18 @@ import com.google.common.collect.ImmutableSet.Builder;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.ConfigChangedListener;
|
import sonia.scm.ConfigChangedListener;
|
||||||
import sonia.scm.ConfigurationException;
|
|
||||||
import sonia.scm.SCMContext;
|
import sonia.scm.SCMContext;
|
||||||
import sonia.scm.SCMContextProvider;
|
import sonia.scm.SCMContextProvider;
|
||||||
import sonia.scm.cache.Cache;
|
import sonia.scm.cache.Cache;
|
||||||
import sonia.scm.cache.CacheManager;
|
import sonia.scm.cache.CacheManager;
|
||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
import sonia.scm.io.ZipUnArchiver;
|
import sonia.scm.io.ZipUnArchiver;
|
||||||
import sonia.scm.net.HttpClient;
|
|
||||||
import sonia.scm.util.AssertUtil;
|
import sonia.scm.util.AssertUtil;
|
||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
import sonia.scm.util.SecurityUtil;
|
import sonia.scm.util.SecurityUtil;
|
||||||
@@ -79,9 +76,7 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.xml.bind.JAXB;
|
import javax.xml.bind.JAXB;
|
||||||
import javax.xml.bind.JAXBContext;
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
import javax.xml.bind.JAXBException;
|
|
||||||
import javax.xml.bind.Unmarshaller;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -122,18 +117,18 @@ public class DefaultPluginManager
|
|||||||
* @param configuration
|
* @param configuration
|
||||||
* @param pluginLoader
|
* @param pluginLoader
|
||||||
* @param cacheManager
|
* @param cacheManager
|
||||||
* @param clientProvider
|
* @param httpClient
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public DefaultPluginManager(SCMContextProvider context,
|
public DefaultPluginManager(SCMContextProvider context,
|
||||||
ScmConfiguration configuration, PluginLoader pluginLoader,
|
ScmConfiguration configuration, PluginLoader pluginLoader,
|
||||||
CacheManager cacheManager, Provider<HttpClient> clientProvider)
|
CacheManager cacheManager, AdvancedHttpClient httpClient)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.configuration = configuration;
|
this.configuration = configuration;
|
||||||
this.cache = cacheManager.getCache(String.class, PluginCenter.class,
|
this.cache = cacheManager.getCache(String.class, PluginCenter.class,
|
||||||
CACHE_NAME);
|
CACHE_NAME);
|
||||||
this.clientProvider = clientProvider;
|
this.httpClient = httpClient;
|
||||||
installedPlugins = new HashMap<String, Plugin>();
|
installedPlugins = new HashMap<String, Plugin>();
|
||||||
|
|
||||||
for (Plugin plugin : pluginLoader.getInstalledPlugins())
|
for (Plugin plugin : pluginLoader.getInstalledPlugins())
|
||||||
@@ -146,16 +141,6 @@ public class DefaultPluginManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
unmarshaller =
|
|
||||||
JAXBContext.newInstance(PluginCenter.class).createUnmarshaller();
|
|
||||||
}
|
|
||||||
catch (JAXBException ex)
|
|
||||||
{
|
|
||||||
throw new ConfigurationException(ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
File file = findAdvancedConfiguration();
|
File file = findAdvancedConfiguration();
|
||||||
|
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
@@ -654,21 +639,9 @@ public class DefaultPluginManager
|
|||||||
|
|
||||||
if (Util.isNotEmpty(pluginUrl))
|
if (Util.isNotEmpty(pluginUrl))
|
||||||
{
|
{
|
||||||
InputStream input = null;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
input = clientProvider.get().get(pluginUrl).getContent();
|
center = httpClient.get(pluginUrl).request().contentFromXml(PluginCenter.class);
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO: add gzip support
|
|
||||||
*
|
|
||||||
* if (gzip)
|
|
||||||
* {
|
|
||||||
* input = new GZIPInputStream(input);
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
center = (PluginCenter) unmarshaller.unmarshal(input);
|
|
||||||
preparePlugins(center);
|
preparePlugins(center);
|
||||||
cache.put(PluginCenter.class.getName(), center);
|
cache.put(PluginCenter.class.getName(), center);
|
||||||
|
|
||||||
@@ -690,10 +663,6 @@ public class DefaultPluginManager
|
|||||||
{
|
{
|
||||||
logger.error("could not load plugins from plugin center", ex);
|
logger.error("could not load plugins from plugin center", ex);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
IOUtil.close(input);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (center == null)
|
if (center == null)
|
||||||
@@ -794,7 +763,7 @@ public class DefaultPluginManager
|
|||||||
private Cache<String, PluginCenter> cache;
|
private Cache<String, PluginCenter> cache;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<HttpClient> clientProvider;
|
private AdvancedHttpClient httpClient;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private ScmConfiguration configuration;
|
private ScmConfiguration configuration;
|
||||||
@@ -807,7 +776,4 @@ public class DefaultPluginManager
|
|||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private AetherPluginHandler pluginHandler;
|
private AetherPluginHandler pluginHandler;
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private Unmarshaller unmarshaller;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user