This is an automated email from the ASF dual-hosted git repository. elecharny pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-ftpserver.git
The following commit(s) were added to refs/heads/master by this push: new a926479 Fixed some checkstyle violations a926479 is described below commit a9264794aeac6e93f294b99f195b5352e2d1f4f3 Author: emmanuel lecharny <elecha...@apache.org> AuthorDate: Wed Jan 5 09:32:01 2022 +0100 Fixed some checkstyle violations --- checkstyle-suppressions.xml | 1 + checkstyle.xml | 12 +++ .../org/apache/ftpserver/ConnectionConfig.java | 16 +-- .../impl/DefaultDataConnectionConfiguration.java | 12 +-- .../apache/ftpserver/impl/ServerFtpStatistics.java | 2 +- .../org/apache/ftpserver/util/StringUtils.java | 110 +++++++++++---------- .../example/springwar/FtpServerListener.java | 37 ++++--- .../example/springwar/FtpServerServlet.java | 38 ++++--- .../ftpserver/example/springwar/package-info.java} | 28 +----- .../src/main/resources/log4j.properties | 6 +- .../ftpserver/example/ftpletservice/MyFtplet.java | 14 +-- .../example/ftpletservice/impl/Activator.java | 15 ++- .../impl/{Activator.java => package-info.java} | 28 +----- .../{MyFtplet.java => package-info.java} | 35 +------ .../org/apache/ftpserver/ftplet/DefaultFtplet.java | 2 +- .../java/org/apache/ftpserver/ftplet/FtpFile.java | 30 +++--- .../java/org/apache/ftpserver/ftplet/FtpReply.java | 108 ++++++++++---------- .../java/org/apache/ftpserver/ftplet/Ftplet.java | 2 +- 18 files changed, 230 insertions(+), 266 deletions(-) diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml index e62645c..2fc6328 100644 --- a/checkstyle-suppressions.xml +++ b/checkstyle-suppressions.xml @@ -24,4 +24,5 @@ limitations under the License. <suppress checks="RedundantModifier" files="ConstructorUtilsTest" lines="0-99999"/> <!-- Windows-only workaround --> <suppress checks="NewlineAtEndOfFile" files="target[/\\]maven-archiver[/\\]pom.properties"/> + <suppress checks="FinalParametersCheck" files=".*"/> </suppressions> diff --git a/checkstyle.xml b/checkstyle.xml index d3e35d0..864649b 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -24,23 +24,34 @@ limitations under the License. <module name="Checker"> <property name="localeLanguage" value="en"/> <module name="JavadocPackage"/> + <module name="LineLength"> + <property name="fileExtensions" value="java"/> <property name="max" value="120"/> </module> + <module name="NewlineAtEndOfFile"> <property name="lineSeparator" value="lf" /> </module> + <module name="FileTabCharacter"> <property name="fileExtensions" value="java,xml"/> </module> + <module name="RegexpSingleline"> <!-- \s matches whitespace character, $ matches end of line. --> <property name="format" value="\s+$"/> <property name="message" value="Line has trailing spaces."/> </module> + <module name="SuppressionFilter"> <property name="file" value="checkstyle-suppressions.xml"/> </module> + + <module name="FinalParameters"> + <property name="ignorePrimitiveTypes" value="true"/> + </module> + <module name="TreeWalker"> <module name="AvoidStarImport"/> <module name="IllegalImport"/> @@ -61,3 +72,4 @@ limitations under the License. <module name="NoWhitespaceBefore"/> </module> </module> + diff --git a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java index 6a1869c..3ad14c8 100644 --- a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java +++ b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java @@ -21,7 +21,7 @@ package org.apache.ftpserver; /** * Interface for providing the configuration for the control socket connections. - * + * * * @author <a href="http://mina.apache.org">Apache MINA Project</a> * @@ -29,27 +29,27 @@ package org.apache.ftpserver; public interface ConnectionConfig { /** - * The maximum number of time an user can fail to login before getting disconnected + * The maximum number of time an user can fail to login before getting disconnected. * @return The maximum number of failure login attempts */ int getMaxLoginFailures(); /** - * The delay in number of milliseconds between login failures. Important to + * The delay in number of milliseconds between login failures. Important to * make brute force attacks harder. - * + * * @return The delay time in milliseconds */ int getLoginFailureDelay(); /** - * The maximum number of time an anonymous user can fail to login before getting disconnected + * The maximum number of time an anonymous user can fail to login before getting disconnected. * @return The maximum number of failer login attempts */ int getMaxAnonymousLogins(); /** - * The maximum number of concurrently logged in users + * The maximum number of concurrently logged in users. * @return The maximum number of users */ int getMaxLogins(); @@ -59,11 +59,11 @@ public interface ConnectionConfig { * @return true if anonymous logins are enabled */ boolean isAnonymousLoginEnabled(); - + /** * Returns the maximum number of threads the server is allowed to create for * processing client requests. - * + * * @return the maximum number of threads the server is allowed to create for * processing client requests. */ diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java index a1e3c0d..8f84eae 100644 --- a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java +++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java @@ -25,7 +25,7 @@ import org.apache.ftpserver.ssl.SslConfiguration; /** * <strong>Internal class, do not use directly.</strong> - * + * * Data connection configuration. * * @author <a href="http://mina.apache.org">Apache MINA Project</a> @@ -41,12 +41,12 @@ public class DefaultDataConnectionConfiguration implements private final String activeLocalAddress; private final int activeLocalPort; private final boolean activeIpCheck; - + private final String passiveAddress; private final String passiveExternalAddress; private final PassivePorts passivePorts; private final boolean passiveIpCheck; - + private final boolean implicitSsl; /** @@ -119,11 +119,11 @@ public class DefaultDataConnectionConfiguration implements public String getPassiveExernalAddress() { return passiveExternalAddress; } - + public boolean isPassiveIpCheck() { return passiveIpCheck; } - + /** * Get passive data port. Data port number zero (0) means that any available * port will be used. @@ -134,7 +134,7 @@ public class DefaultDataConnectionConfiguration implements /** * Retrive the passive ports configured for this data connection - * + * * @return The String of passive ports */ public String getPassivePorts() { diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java index a174ed0..cd654f3 100644 --- a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java +++ b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java @@ -24,7 +24,7 @@ import org.apache.ftpserver.ftplet.FtpStatistics; /** * <strong>Internal class, do not use directly.</strong> - * + * * This is same as <code>org.apache.ftpserver.ftplet.FtpStatistics</code> with * added observer and setting values functionalities. * diff --git a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java index a863599..8642079 100644 --- a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java +++ b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java @@ -23,7 +23,7 @@ import java.util.Map; /** * <strong>Internal class, do not use directly.</strong> - * + * * String utility methods. * * @author <a href="http://mina.apache.org">Apache MINA Project</a> @@ -33,7 +33,7 @@ public class StringUtils { /** * This is a string replacement method. */ - public final static String replaceString(String source, String oldStr, + public static final String replaceString(String source, String oldStr, String newStr) { StringBuilder sb = new StringBuilder(source.length()); int sind = 0; @@ -48,9 +48,9 @@ public class StringUtils { } /** - * Replace string + * Replace string. */ - public final static String replaceString(String source, Object[] args) { + public static final String replaceString(String source, Object[] args) { int startIndex = 0; int openIndex = source.indexOf('{', startIndex); if (openIndex == -1) { @@ -89,7 +89,7 @@ public class StringUtils { /** * Replace string. */ - public final static String replaceString(String source, + public static final String replaceString(String source, Map<String, Object> args) { int startIndex = 0; int openIndex = source.indexOf('{', startIndex); @@ -129,15 +129,15 @@ public class StringUtils { } /** - * This method is used to insert HTML block dynamically + * This method is used to insert HTML block dynamically. * * @param source the HTML code to be processes * @param bReplaceNl if true '\n' will be replaced by <br> - * @param bReplaceTag if true '<' will be replaced by < and + * @param bReplaceTag if true '<' will be replaced by < and * '>' will be replaced by > - * @param bReplaceQuote if true '\"' will be replaced by " + * @param bReplaceQuote if true '\"' will be replaced by " */ - public final static String formatHtml(String source, boolean bReplaceNl, + public static final String formatHtml(String source, boolean bReplaceNl, boolean bReplaceTag, boolean bReplaceQuote) { StringBuilder sb = new StringBuilder(); @@ -145,57 +145,65 @@ public class StringUtils { for (int i = 0; i < len; i++) { char c = source.charAt(i); switch (c) { - case '\"': - if (bReplaceQuote) - sb.append("""); - else - sb.append(c); - break; + case '\"': + if (bReplaceQuote) { + sb.append("""); + } else { + sb.append(c); + } - case '<': - if (bReplaceTag) - sb.append("<"); - else - sb.append(c); - break; + break; - case '>': - if (bReplaceTag) - sb.append(">"); - else - sb.append(c); - break; + case '<': + if (bReplaceTag) { + sb.append("<"); + } else { + sb.append(c); + } - case '\n': - if (bReplaceNl) { - if (bReplaceTag) - sb.append("<br>"); - else - sb.append("<br>"); - } else { - sb.append(c); - } - break; + break; - case '\r': - break; + case '>': + if (bReplaceTag) { + sb.append(">"); + } else { + sb.append(c); + } + + break; - case '&': - sb.append("&"); - break; + case '\n': + if (bReplaceNl) { + if (bReplaceTag) { + sb.append("<br>"); + } else { + sb.append("<br>"); + } + } else { + sb.append(c); + } - default: - sb.append(c); - break; + break; + + case '\r': + break; + + case '&': + sb.append("&"); + break; + + default: + sb.append(c); + break; } } return sb.toString(); } /** - * Pad string object + * Pad string object. */ - public final static String pad(String src, char padChar, boolean rightPad, + public static final String pad(String src, char padChar, boolean rightPad, int totalLength) { int srcLength = src.length(); @@ -217,9 +225,9 @@ public class StringUtils { } /** - * Get hex string from byte array + * Get hex string from byte array. */ - public final static String toHexString(byte[] res) { + public static final String toHexString(byte[] res) { StringBuilder sb = new StringBuilder(res.length << 1); for (int i = 0; i < res.length; i++) { String digit = Integer.toHexString(0xFF & res[i]); @@ -232,9 +240,9 @@ public class StringUtils { } /** - * Get byte array from hex string + * Get byte array from hex string. */ - public final static byte[] toByteArray(String hexString) { + public static final byte[] toByteArray(String hexString) { int arrLength = hexString.length() >> 1; byte buff[] = new byte[arrLength]; for (int i = 0; i < arrLength; i++) { diff --git a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java index 8277904..c42782e 100644 --- a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java +++ b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java @@ -30,35 +30,42 @@ import org.springframework.web.context.support.WebApplicationContextUtils; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class FtpServerListener implements ServletContextListener { - + /** The context name. */ public static final String FTPSERVER_CONTEXT_NAME = "org.apache.ftpserver"; - + + /** + * {@inheritDoc} + */ public void contextDestroyed(ServletContextEvent sce) { System.out.println("Stopping FtpServer"); - - FtpServer server = (FtpServer) sce.getServletContext().getAttribute(FTPSERVER_CONTEXT_NAME); - - if(server != null) { + + FtpServer server = (FtpServer) sce.getServletContext(). + getAttribute(FTPSERVER_CONTEXT_NAME); + + if (server != null) { server.stop(); - + sce.getServletContext().removeAttribute(FTPSERVER_CONTEXT_NAME); - + System.out.println("FtpServer stopped"); } else { System.out.println("No running FtpServer found"); } - } + /** + * {@inheritDoc} + */ public void contextInitialized(ServletContextEvent sce) { - System.out.println("Starting FtpServer"); + System.out.println("Starting FtpServer"); + + WebApplicationContext ctx = WebApplicationContextUtils. + getWebApplicationContext(sce.getServletContext()); - WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); - FtpServer server = (FtpServer) ctx.getBean("myServer"); - + sce.getServletContext().setAttribute(FTPSERVER_CONTEXT_NAME, server); - + try { server.start(); System.out.println("FtpServer started"); @@ -66,5 +73,5 @@ public class FtpServerListener implements ServletContextListener { throw new RuntimeException("Failed to start FtpServer", e); } } - } + diff --git a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java index 6c01ab4..15f9e93 100644 --- a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java +++ b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java @@ -36,14 +36,18 @@ public class FtpServerServlet extends HttpServlet { private static final long serialVersionUID = 5539642787624981705L; + /** + * {@inheritDoc} + */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - FtpServer server = (FtpServer) getServletContext().getAttribute(FtpServerListener.FTPSERVER_CONTEXT_NAME); - + + FtpServer server = (FtpServer) getServletContext(). + getAttribute(FtpServerListener.FTPSERVER_CONTEXT_NAME); + PrintWriter wr = resp.getWriter(); - + wr.print("<html>"); wr.print("<head>"); wr.print("<title>FtpServer status servlet</title>"); @@ -52,10 +56,10 @@ public class FtpServerServlet extends HttpServlet { wr.print("<form method='post'>"); - if(server.isStopped()) { + if (server.isStopped()) { wr.print("<p>FtpServer is stopped.</p>"); } else { - if(server.isSuspended()) { + if (server.isSuspended()) { wr.print("<p>FtpServer is suspended.</p>"); wr.print("<p><input type='submit' name='resume' value='Resume'></p>"); wr.print("<p><input type='submit' name='stop' value='Stop'></p>"); @@ -65,27 +69,31 @@ public class FtpServerServlet extends HttpServlet { wr.print("<p><input type='submit' name='stop' value='Stop'></p>"); } } - + wr.print("</form>"); wr.print("</body>"); wr.print("</html>"); } + /** + * {@inheritDoc} + */ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - FtpServer server = (FtpServer) getServletContext().getAttribute(FtpServerListener.FTPSERVER_CONTEXT_NAME); - - if(req.getParameter("stop") != null) { + + FtpServer server = (FtpServer) getServletContext(). + getAttribute(FtpServerListener.FTPSERVER_CONTEXT_NAME); + + if (req.getParameter("stop") != null) { server.stop(); - } else if(req.getParameter("resume") != null) { + } else if (req.getParameter("resume") != null) { server.resume(); - } else if(req.getParameter("suspend") != null) { + } else if (req.getParameter("suspend") != null) { server.suspend(); } - + resp.sendRedirect("/"); } - } + diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/package-info.java similarity index 53% copy from examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java copy to examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/package-info.java index b0bceb6..74090ed 100644 --- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java +++ b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/package-info.java @@ -16,31 +16,7 @@ * specific language governing permissions and limitations * under the License. */ - -package org.apache.ftpserver.example.ftpletservice.impl; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.apache.ftpserver.example.ftpletservice.MyFtplet; -import org.apache.ftpserver.ftplet.Ftplet; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/* +/** * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ -public class Activator implements BundleActivator { - - public void start(BundleContext context) throws Exception { - Dictionary<String, String> properties = new Hashtable<String, String>(); - properties.put("name", "myftplet"); - - context.registerService(Ftplet.class.getName(), new MyFtplet(), properties); - } - - public void stop(BundleContext context) throws Exception { - // do nothing - } - -} +package org.apache.ftpserver.example.springwar; diff --git a/examples/ftpserver-example-spring-war/src/main/resources/log4j.properties b/examples/ftpserver-example-spring-war/src/main/resources/log4j.properties index b6fb474..a78bf64 100644 --- a/examples/ftpserver-example-spring-war/src/main/resources/log4j.properties +++ b/examples/ftpserver-example-spring-war/src/main/resources/log4j.properties @@ -15,8 +15,8 @@ # specific language governing permissions and limitations # under the License. -log4j.rootLogger=DEBUG, C -log4j.appender.C=org.apache.log4j.ConsoleAppender -log4j.appender.C.layout=org.apache.log4j.PatternLayout +log4j.rootLogger=DEBUG, C +log4j.appender.C=org.apache.log4j.ConsoleAppender +log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=[%5p] %d [%X{userName}] [%X{remoteIp}] %m%n diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java index d5b6322..a45363a 100644 --- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java +++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java @@ -31,23 +31,25 @@ import org.apache.ftpserver.ftplet.FtpletResult; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class MyFtplet extends DefaultFtplet { - + /** + * {@inheritDoc} + */ @Override public FtpletResult onConnect(FtpSession session) throws FtpException, IOException { System.out.println("User connected to FtpServer"); - + return super.onConnect(session); } + /** + * {@inheritDoc} + */ @Override public FtpletResult onDisconnect(FtpSession session) throws FtpException, IOException { System.out.println("User connected to FtpServer"); - + return super.onDisconnect(session); } - - - } diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java index b0bceb6..2734939 100644 --- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java +++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java @@ -31,16 +31,21 @@ import org.osgi.framework.BundleContext; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class Activator implements BundleActivator { - + /** + * {@inheritDoc} + */ public void start(BundleContext context) throws Exception { Dictionary<String, String> properties = new Hashtable<String, String>(); properties.put("name", "myftplet"); - - context.registerService(Ftplet.class.getName(), new MyFtplet(), properties); + + context.registerService(Ftplet.class.getName(), + new MyFtplet(), properties); } + /** + * {@inheritDoc} + */ public void stop(BundleContext context) throws Exception { - // do nothing + // do nothing } - } diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/package-info.java similarity index 57% copy from examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java copy to examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/package-info.java index b0bceb6..c1cdd99 100644 --- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java +++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/package-info.java @@ -16,31 +16,7 @@ * specific language governing permissions and limitations * under the License. */ - -package org.apache.ftpserver.example.ftpletservice.impl; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.apache.ftpserver.example.ftpletservice.MyFtplet; -import org.apache.ftpserver.ftplet.Ftplet; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/* +/** * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ -public class Activator implements BundleActivator { - - public void start(BundleContext context) throws Exception { - Dictionary<String, String> properties = new Hashtable<String, String>(); - properties.put("name", "myftplet"); - - context.registerService(Ftplet.class.getName(), new MyFtplet(), properties); - } - - public void stop(BundleContext context) throws Exception { - // do nothing - } - -} +package org.apache.ftpserver.example.ftpletservice.impl; diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/package-info.java similarity index 55% copy from examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java copy to examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/package-info.java index d5b6322..f2bd051 100644 --- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java +++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/package-info.java @@ -16,38 +16,7 @@ * specific language governing permissions and limitations * under the License. */ - - -package org.apache.ftpserver.example.ftpletservice; - -import java.io.IOException; - -import org.apache.ftpserver.ftplet.DefaultFtplet; -import org.apache.ftpserver.ftplet.FtpException; -import org.apache.ftpserver.ftplet.FtpSession; -import org.apache.ftpserver.ftplet.FtpletResult; - -/* +/** * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ -public class MyFtplet extends DefaultFtplet { - - @Override - public FtpletResult onConnect(FtpSession session) throws FtpException, - IOException { - System.out.println("User connected to FtpServer"); - - return super.onConnect(session); - } - - @Override - public FtpletResult onDisconnect(FtpSession session) throws FtpException, - IOException { - System.out.println("User connected to FtpServer"); - - return super.onDisconnect(session); - } - - - -} +package org.apache.ftpserver.example.ftpletservice; diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java index 8e1d8e1..14a7954 100644 --- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java +++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java @@ -338,4 +338,4 @@ public class DefaultFtplet implements Ftplet { throws FtpException, IOException { return null; } -} \ No newline at end of file +} diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java index c96432b..5024ac2 100644 --- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java +++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java @@ -19,7 +19,6 @@ package org.apache.ftpserver.ftplet; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -40,7 +39,7 @@ public interface FtpFile { String getAbsolutePath(); /** - * Get the file name of the file + * Get the file name of the file. * @return the last part of the file path (the part after the last '/'). */ String getName(); @@ -112,26 +111,27 @@ public interface FtpFile { long getLastModified(); /** - * Set the last modified time stamp of a file + * Set the last modified time stamp of a file. * @param time The last modified time, in milliseconds since the epoch. See {@link File#setLastModified(long)}. + * @return <code>true</code> if and only if the operation succeeded; <code>false</code> otherwise */ boolean setLastModified(long time); - + /** * Get file size. * @return The size of the {@link FtpFile} in bytes */ long getSize(); - + /** - * Returns the physical location or path of the file. It is completely up to - * the implementation to return appropriate value based on the file system + * Returns the physical location or path of the file. It is completely up to + * the implementation to return appropriate value based on the file system * implementation. - * - * @return the physical location or path of the file. + * + * @return the physical location or path of the file. */ Object getPhysicalFile(); - + /** * Create directory. * @return true if the operation was successful @@ -160,22 +160,22 @@ public interface FtpFile { List<? extends FtpFile> listFiles(); /** - * Create output stream for writing. + * Create output stream for writing. * @param offset The number of bytes at where to start writing. * If the file is not random accessible, * any offset other than zero will throw an exception. * @return An {@link OutputStream} used to write to the {@link FtpFile} - * @throws IOException + * @throws IOException */ OutputStream createOutputStream(long offset) throws IOException; /** - * Create input stream for reading. - * @param offset The number of bytes of where to start reading. + * Create input stream for reading. + * @param offset The number of bytes of where to start reading. * If the file is not random accessible, * any offset other than zero will throw an exception. * @return An {@link InputStream} used to read the {@link FtpFile} - * @throws IOException + * @throws IOException */ InputStream createInputStream(long offset) throws IOException; } diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java index 721d138..921543d 100644 --- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java +++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java @@ -32,240 +32,240 @@ public interface FtpReply { * is User-process data stream marker, and mmmm server's equivalent marker * (note the spaces between markers and "="). */ - public static final int REPLY_110_RESTART_MARKER_REPLY = 110; + int REPLY_110_RESTART_MARKER_REPLY = 110; /** * 120 Service ready in nnn minutes. */ - public static final int REPLY_120_SERVICE_READY_IN_NNN_MINUTES = 120; + int REPLY_120_SERVICE_READY_IN_NNN_MINUTES = 120; /** * 125 Data connection already open; transfer starting. */ - public static final int REPLY_125_DATA_CONNECTION_ALREADY_OPEN = 125; + int REPLY_125_DATA_CONNECTION_ALREADY_OPEN = 125; /** * 150 File status okay; about to open data connection. */ - public static final int REPLY_150_FILE_STATUS_OKAY = 150; + int REPLY_150_FILE_STATUS_OKAY = 150; /** * 200 Command okay. */ - public static final int REPLY_200_COMMAND_OKAY = 200; + int REPLY_200_COMMAND_OKAY = 200; /** * 202 Command not implemented, superfluous at this site. */ - public static final int REPLY_202_COMMAND_NOT_IMPLEMENTED = 202; + int REPLY_202_COMMAND_NOT_IMPLEMENTED = 202; /** * 211 System status, or system help reply. */ - public static final int REPLY_211_SYSTEM_STATUS_REPLY = 211; + int REPLY_211_SYSTEM_STATUS_REPLY = 211; /** * 212 Directory status. */ - public static final int REPLY_212_DIRECTORY_STATUS = 212; + int REPLY_212_DIRECTORY_STATUS = 212; /** * 213 File status. */ - public static final int REPLY_213_FILE_STATUS = 213; + int REPLY_213_FILE_STATUS = 213; /** * 214 Help message. On how to use the server or the meaning of a particular * non-standard command. This reply is useful only to the human user. */ - public static final int REPLY_214_HELP_MESSAGE = 214; + int REPLY_214_HELP_MESSAGE = 214; /** * 215 NAME system type. Where NAME is an official system name from the list * in the Assigned Numbers document. */ - public static final int REPLY_215_NAME_SYSTEM_TYPE = 215; + int REPLY_215_NAME_SYSTEM_TYPE = 215; /** * 220 Service ready for new user. */ - public static final int REPLY_220_SERVICE_READY = 220; + int REPLY_220_SERVICE_READY = 220; /** * Service closing control connection. Logged out if appropriate. */ - public static final int REPLY_221_CLOSING_CONTROL_CONNECTION = 221; + int REPLY_221_CLOSING_CONTROL_CONNECTION = 221; /** * 225 Data connection open; no transfer in progress. */ - public static final int REPLY_225_DATA_CONNECTION_OPEN_NO_TRANSFER_IN_PROGRESS = 225; + int REPLY_225_DATA_CONNECTION_OPEN_NO_TRANSFER_IN_PROGRESS = 225; /** * Closing data connection. Requested file action successful (for example, * file transfer or file abort). */ - public static final int REPLY_226_CLOSING_DATA_CONNECTION = 226; + int REPLY_226_CLOSING_DATA_CONNECTION = 226; /** * 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). */ - public static final int REPLY_227_ENTERING_PASSIVE_MODE = 227; + int REPLY_227_ENTERING_PASSIVE_MODE = 227; /** * 230 User logged in, proceed. */ - public static final int REPLY_230_USER_LOGGED_IN = 230; + int REPLY_230_USER_LOGGED_IN = 230; /** * 250 Requested file action okay, completed. */ - public static final int REPLY_250_REQUESTED_FILE_ACTION_OKAY = 250; + int REPLY_250_REQUESTED_FILE_ACTION_OKAY = 250; /** * 257 "PATHNAME" created. */ - public static final int REPLY_257_PATHNAME_CREATED = 257; + int REPLY_257_PATHNAME_CREATED = 257; /** * 331 User name okay, need password. */ - public static final int REPLY_331_USER_NAME_OKAY_NEED_PASSWORD = 331; + int REPLY_331_USER_NAME_OKAY_NEED_PASSWORD = 331; /** * 332 Need account for login. */ - public static final int REPLY_332_NEED_ACCOUNT_FOR_LOGIN = 332; + int REPLY_332_NEED_ACCOUNT_FOR_LOGIN = 332; /** * 350 Requested file action pending further information. */ - public static final int REPLY_350_REQUESTED_FILE_ACTION_PENDING_FURTHER_INFORMATION = 350; + int REPLY_350_REQUESTED_FILE_ACTION_PENDING_FURTHER_INFORMATION = 350; /** * 421 Service not available, closing control connection. This may be a * reply to any command if the service knows it must shut down. */ - public static final int REPLY_421_SERVICE_NOT_AVAILABLE_CLOSING_CONTROL_CONNECTION = 421; + int REPLY_421_SERVICE_NOT_AVAILABLE_CLOSING_CONTROL_CONNECTION = 421; /** * 425 Can't open data connection. */ - public static final int REPLY_425_CANT_OPEN_DATA_CONNECTION = 425; + int REPLY_425_CANT_OPEN_DATA_CONNECTION = 425; /** * 426 Connection closed; transfer aborted. */ - public static final int REPLY_426_CONNECTION_CLOSED_TRANSFER_ABORTED = 426; + int REPLY_426_CONNECTION_CLOSED_TRANSFER_ABORTED = 426; /** * 450 Requested file action not taken. File unavailable (e.g., file busy). */ - public static final int REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN = 450; + int REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN = 450; /** * 451 Requested action aborted: local error in processing. */ - public static final int REPLY_451_REQUESTED_ACTION_ABORTED = 451; + int REPLY_451_REQUESTED_ACTION_ABORTED = 451; /** * 452 Requested action not taken. Insufficient storage space in system. */ - public static final int REPLY_452_REQUESTED_ACTION_NOT_TAKEN = 452; + int REPLY_452_REQUESTED_ACTION_NOT_TAKEN = 452; /** * 500 Syntax error, command unrecognized. This may include errors such as * command line too long. */ - public static final int REPLY_500_SYNTAX_ERROR_COMMAND_UNRECOGNIZED = 500; + int REPLY_500_SYNTAX_ERROR_COMMAND_UNRECOGNIZED = 500; /** * 501 Syntax error in parameters or arguments. */ - public static final int REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS = 501; + int REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS = 501; /** * 502 Command not implemented. */ - public static final int REPLY_502_COMMAND_NOT_IMPLEMENTED = 502; + int REPLY_502_COMMAND_NOT_IMPLEMENTED = 502; /** * 503 Bad sequence of commands. */ - public static final int REPLY_503_BAD_SEQUENCE_OF_COMMANDS = 503; + int REPLY_503_BAD_SEQUENCE_OF_COMMANDS = 503; /** * 504 Command not implemented for that parameter. */ - public static final int REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER = 504; + int REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER = 504; /** * 530 Not logged in. */ - public static final int REPLY_530_NOT_LOGGED_IN = 530; + int REPLY_530_NOT_LOGGED_IN = 530; /** * 532 Need account for storing files. */ - public static final int REPLY_532_NEED_ACCOUNT_FOR_STORING_FILES = 532; + int REPLY_532_NEED_ACCOUNT_FOR_STORING_FILES = 532; /** * 550 Requested action not taken. File unavailable (e.g., file not found, * no access). */ - public static final int REPLY_550_REQUESTED_ACTION_NOT_TAKEN = 550; + int REPLY_550_REQUESTED_ACTION_NOT_TAKEN = 550; /** * 551 Requested action aborted: page type unknown. */ - public static final int REPLY_551_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN = 551; + int REPLY_551_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN = 551; /** * 552 Requested file action aborted. Exceeded storage allocation (for * current directory or dataset). */ - public static final int REPLY_552_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE = 552; + int REPLY_552_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE = 552; /** * 553 Requested action not taken. File name not allowed. */ - public static final int REPLY_553_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED = 553; + int REPLY_553_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED = 553; /** - * The reply code - * + * The reply code. + * * @return The reply code */ int getCode(); /** - * The reply message, might be multiple lines - * + * The reply message, might be multiple lines. + * * @return The reply message */ String getMessage(); - + /** - * Returns the timestamp (in milliseconds since the epoch time) when this - * reply was sent. - * - * @return the timestamp (in milliseconds since the epoch time) when this + * Returns the timestamp (in milliseconds since the epoch time) when this + * reply was sent. + * + * @return the timestamp (in milliseconds since the epoch time) when this * reply was sent. */ long getSentTime(); - + /** * Must implement toString to format the reply as described in the RFC. Most * important is the handling of multi-line replies. - * + * * @return The formated reply */ String toString(); - + /** - * Tells whether or not this reply indicates a positive completion. - * @return <code>true</code>, if this reply is a positive completion or - * positive intermediate reply; <code>false</code>, otherwise. + * Tells whether or not this reply indicates a positive completion. + * @return <code>true</code>, if this reply is a positive completion or + * positive intermediate reply; <code>false</code>, otherwise. */ boolean isPositive(); } diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java index b503b97..37b73f9 100644 --- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java +++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java @@ -143,4 +143,4 @@ public interface Ftplet { */ FtpletResult onDisconnect(FtpSession session) throws FtpException, IOException; -} \ No newline at end of file +}