[jboss-svn-commits] JBL Code SVN: r25311 - in labs/jbossrules/trunk/drools-process/drools-workitems: src/main/java/org/drools/process/workitem and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 17 12:59:12 EST 2009
Author: salaboy21
Date: 2009-02-17 12:59:12 -0500 (Tue, 17 Feb 2009)
New Revision: 25311
Added:
labs/jbossrules/trunk/drools-process/drools-workitems/drools.ftp.conf
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties
labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/
labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java
Modified:
labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
Log:
FTPUPload file Custom work item. Using FTPServer and apache commons.net.ftp.FTPClient
Added: labs/jbossrules/trunk/drools-process/drools-workitems/drools.ftp.conf
===================================================================
Modified: labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml 2009-02-17 17:45:28 UTC (rev 25310)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml 2009-02-17 17:59:12 UTC (rev 25311)
@@ -89,8 +89,30 @@
<version>0.9</version>
</dependency>
-
-
+ <!-- FTP Client LIB -->
+ <dependency>
+ <groupId>commons-net</groupId>
+ <artifactId>commons-net</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ftpserver</groupId>
+ <artifactId>ftpserver-core</artifactId>
+ <version>1.0.0-RC2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.5.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.5.6</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- END FTP Client LIB -->
</dependencies>
</project>
Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java 2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2009 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.process.workitem.ftp;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.SocketException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.net.ftp.FTP;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemManager;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+import org.drools.process.workitem.email.Connection;
+
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class FTPUploadWorkItemHandler implements WorkItemHandler {
+ private String user;
+ private String password;
+ private String server;
+ private String filePath;
+ private int port;
+ private FTPClient client;
+
+ private Connection connection;
+ private boolean result = false;
+
+ public void setConnection(String host, String port, String userName, String password) {
+ connection = new Connection();
+ connection.setHost(host);
+ connection.setPort(port);
+ connection.setUserName(userName);
+ connection.setPassword(password);
+ }
+
+
+
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+
+
+
+ this.user = (String) workItem.getParameter("User");
+ this.password = (String) workItem.getParameter("Password");
+ this.filePath = (String) workItem.getParameter("FilePath");
+
+ client = new FTPClient();
+ try {
+ if(connection != null){
+ client.connect(connection.getHost(), Integer.parseInt(connection.getPort()));
+ int reply = client.getReplyCode();
+
+ if (FTPReply.isPositiveCompletion(reply))
+ {
+
+ if(client.login(user, password)){
+
+ InputStream input;
+ input = new FileInputStream(filePath);
+ client.setFileType(FTP.BINARY_FILE_TYPE);
+ this.setResult(client.storeFile(filePath, input));
+ client.logout();
+ }
+ }
+
+ }
+ } catch (SocketException ex) {
+ Logger.getLogger(FTPUploadWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IOException ex) {
+ Logger.getLogger(FTPUploadWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+
+
+
+ manager.completeWorkItem(workItem.getId(), null);
+
+
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * @return the result
+ */
+ public boolean isResult() {
+ return result;
+ }
+
+ /**
+ * @param result the result to set
+ */
+ public void setResult(boolean result) {
+ this.result = result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf 2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,2 @@
+host = localhost
+port = 21
Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties 2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,9 @@
+ ftpserver.user.anon.homedirectory=/
+ ftpserver.user.anon.userpassword=anon
+ ftpserver.user.anon.enableflag=true
+ ftpserver.user.anon.writepermission=true
+ ftpserver.user.anon.idletime=0
+ ftpserver.user.anon.maxloginnumber=0
+ ftpserver.user.anon.maxloginperip=0
+ ftpserver.user.anon.uploadrate=0
+ ftpserver.user.anon.downloadrate=0
Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java 2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,75 @@
+package org.drools.process.workitem.ftp;
+
+
+
+import java.io.File;
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.FtpServer;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.ftplet.UserManager;
+import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
+import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.util.ChainedProperties;
+
+
+
+public class FTPWorkItemHandlerTest extends TestCase {
+ FtpServerFactory serverFactory;
+ FtpServer server;
+ String ftpHost;
+ String ftpPort;
+
+ @Override
+ protected void setUp() throws Exception {
+ ChainedProperties props = new ChainedProperties( "ftp.conf" );
+ ftpHost = props.getProperty( "host", "localhost" );
+ ftpPort = props.getProperty( "port", "21" );
+ serverFactory = new FtpServerFactory();
+
+ //Set properties to the server factory
+ PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
+ //Users information
+ userManagerFactory.setFile(new File("myusers.properties"));
+ //We are using clear text passwords
+ userManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor());
+ UserManager userManager = userManagerFactory.createUserManager();
+ serverFactory.setUserManager(userManager);
+
+ server = serverFactory.createServer();
+ // start the server
+ server.start();
+
+
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ server.stop();
+ }
+
+
+
+ public void testUploadFile() throws Exception {
+ FTPUploadWorkItemHandler handler = new FTPUploadWorkItemHandler();
+ handler.setConnection( ftpHost, ftpPort, null, null );
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ //File to upload
+ workItem.setParameter( "FilePath","drools.ftp.conf" );
+ //User and password. look in the myusers.properties to change this values
+ workItem.setParameter( "User", "anon" );
+ workItem.setParameter( "Password", "anon" );
+
+ WorkItemManager manager = new DefaultWorkItemManager(null);
+ handler.executeWorkItem( workItem, manager );
+ assertEquals( true, handler.isResult() );
+
+
+ }
+
+
+}
More information about the jboss-svn-commits
mailing list