[jboss-svn-commits] JBL Code SVN: r9626 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/server and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 20 00:20:45 EST 2007
Author: michael.neale at jboss.com
Date: 2007-02-20 00:20:45 -0500 (Tue, 20 Feb 2007)
New Revision: 9626
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/RepositoryManager.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/FileUploadServletTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/RepositoryManagerTest.java
Removed:
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/AssetContentFormatHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/SessionHelper.java
Log:
JBRULES-668 model upload + refactoring, more tests
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -58,7 +58,7 @@
form.add( fields );
FormStyleLayout layout = new FormStyleLayout("images/model_large.png",
- asset.metaData.name + "." + asset.metaData.format);
+ asset.metaData.name);
layout.addAttribute( "Upload new version:", form );
@@ -82,8 +82,7 @@
}
public void onSubmitComplete(FormSubmitCompleteEvent ev) {
- if (ev.getResults().indexOf( "OK" ) > -1) {
- Window.alert( "Model archive was uploaded successfully.");
+ if (ev.getResults().indexOf( "OK" ) > -1) {
viewer.refreshDataAndView();
} else {
ErrorPopup.showMessage( "Unable to upload the file." );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/AssetContentFormatHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/AssetContentFormatHandler.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/AssetContentFormatHandler.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -136,6 +136,8 @@
} else if (asset.content instanceof DSLRuleData) {
DSLRuleData data = (DSLRuleData) asset.content;
repoAsset.updateContent( data.text.content );
+ } else if (asset.metaData.format.equals( AssetFormats.MODEL )) {
+ //do nothing, as we have an attachment
} else {
throw new SerializableException("Not able to handle that type of content just yet...");
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -15,6 +15,9 @@
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.drools.brms.client.packages.ModelArchiveFileWidget;
+import org.drools.brms.server.util.RepositoryManager;
+import org.drools.repository.AssetItem;
+import org.drools.repository.RulesRepository;
import org.drools.repository.RulesRepositoryException;
/**
@@ -24,6 +27,8 @@
*/
public class FileUploadServlet extends HttpServlet {
+ private static final long serialVersionUID = 3909768997932550498L;
+
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
@@ -34,12 +39,25 @@
response.getWriter().write( "NO-SCRIPT-DATA" );
return;
}
-
- //TODO: this is where we attach the file to the asset.
+
+ RepositoryManager repoMan = new RepositoryManager();
+ RulesRepository repo = repoMan.getRepositoryFrom( request.getSession() );
+ attachFile( uploadItem, repo );
+
+ uploadItem.file.getInputStream().close();
+
response.getWriter().write( "OK" );
}
+ void attachFile(FormData uploadItem,
+ RulesRepository repo) throws IOException {
+ AssetItem item = repo.loadAssetByUUID( uploadItem.uuid );
+ item.updateBinaryContentAttachment( uploadItem.file.getInputStream() );
+ item.updateBinaryContentAttachmentFileName( uploadItem.file.getName() );
+ item.checkin( "Attached file: " + uploadItem.file.getName() );
+ }
+
/**
* This will return the file and the Asset UUID that it is to be attached to.
*/
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -12,6 +12,8 @@
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import org.drools.brms.client.common.AssetFormats;
@@ -23,6 +25,7 @@
import org.drools.brms.client.rpc.TableDataResult;
import org.drools.brms.client.rpc.TableDataRow;
import org.drools.brms.server.util.MetaDataMapper;
+import org.drools.brms.server.util.RepositoryManager;
import org.drools.brms.server.util.TableDisplayHandler;
import org.drools.repository.AssetHistoryIterator;
import org.drools.repository.AssetItem;
@@ -52,11 +55,9 @@
private static final long serialVersionUID = 3150768417428383474L;
private static final DateFormat dateFormatter = DateFormat.getInstance();
- /**
- * The shared repository instance. This could be bound to JNDI eventually.
- */
- public static Repository repository;
+
+
private MetaDataMapper metaDataMapper;
@@ -151,74 +152,20 @@
/** Get the rule repository for the "current" user */
RulesRepository getRulesRepository() {
- return this.getRepositoryFrom( getSession() );
+ RepositoryManager helper = new RepositoryManager();
+ return helper.getRepositoryFrom( getSession() );
}
private HttpSession getSession() {
return this.getThreadLocalRequest().getSession();
}
- /**
- * Pull or create the repository from session.
- * If it is not found, it will create one and then bind it to the session.
- */
- RulesRepository getRepositoryFrom(HttpSession session) {
- Object obj = session.getAttribute( "drools.repository" );
- if ( obj == null ) {
- obj = createRuleRepositoryInstance();
- session.setAttribute( "drools.repository",
- obj );
- }
- return (RulesRepository) obj;
- }
- /** Initialse the repository, set it up if it is brand new */
- RulesRepository createRuleRepositoryInstance() {
-
- RepositoryConfigurator config = new RepositoryConfigurator();
- try {
-
- Session session;
- if (repository == null) {
- long start = System.currentTimeMillis();
- session = initialiseRepo( config );
- System.out.println("initialise repo time: " + (System.currentTimeMillis() - start));
- } else {
- long start = System.currentTimeMillis();
- session = config.login( repository );
- System.out.println("login repo time: " + (System.currentTimeMillis() - start));
-
- }
-
- return new RulesRepository( session );
- } catch ( LoginException e ) {
- throw new RuntimeException( e );
- } catch ( RepositoryException e ) {
- throw new RuntimeException( "Unable to get a repository: " + e.getMessage() );
- }
- }
-
-
- /** This will create a new repository instance (should only happen once after startup) */
- private Session initialiseRepo(RepositoryConfigurator config) throws LoginException,
- RepositoryException {
- Session session = config.login( getJCRRepository( config ) );
-
- config.setupRulesRepository( session );
- return session;
- }
- synchronized static Repository getJCRRepository(RepositoryConfigurator config) {
- if (repository == null) {
- repository = config.createRepository();
- }
- return repository;
- }
-
/**
* This actually does the hard work of loading up an asset based
* on its format.
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/RepositoryManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/RepositoryManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/RepositoryManager.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -0,0 +1,88 @@
+package org.drools.brms.server.util;
+
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.servlet.http.HttpSession;
+
+import org.drools.repository.RepositoryConfigurator;
+import org.drools.repository.RulesRepository;
+
+/**
+ * Currently a collection of hacked utilities for setting up the repo.
+ * TODO: repository itself should be injected into the context,
+ * and session should be created on each request.
+ *
+ * Also, repository creation should be distinct from instantiation.
+ *
+ * @author Michael Neale
+ *
+ */
+public class RepositoryManager {
+
+ /**
+ * The shared repository instance. This could be bound to JNDI eventually.
+ */
+ public static Repository repository;
+
+ /** This will create a new repository instance (should only happen once after startup) */
+ private Session initialiseRepo(RepositoryConfigurator config) throws LoginException,
+ RepositoryException {
+ Session session = config.login( getJCRRepository( config ) );
+
+ config.setupRulesRepository( session );
+ return session;
+ }
+
+ public synchronized static Repository getJCRRepository(RepositoryConfigurator config) {
+ if (repository == null) {
+ repository = config.createRepository();
+ }
+ return repository;
+ }
+
+ /** Initialse the repository, set it up if it is brand new */
+ public RulesRepository createRuleRepositoryInstance() {
+
+ RepositoryConfigurator config = new RepositoryConfigurator();
+
+ try {
+
+ Session session;
+ if (repository == null) {
+ //this should only need to be done on server startup
+ long start = System.currentTimeMillis();
+ session = initialiseRepo( config );
+ System.out.println("initialise repo time: " + (System.currentTimeMillis() - start));
+ } else {
+ //ok this is probably fast enough to do with each request I think
+ long start = System.currentTimeMillis();
+ session = config.login( repository );
+ System.out.println("login repo time: " + (System.currentTimeMillis() - start));
+
+ }
+
+ return new RulesRepository( session );
+ } catch ( LoginException e ) {
+ throw new RuntimeException( e );
+ } catch ( RepositoryException e ) {
+ throw new RuntimeException( "Unable to get a repository: " + e.getMessage() );
+ }
+ }
+
+ /**
+ * Pull or create the repository from session.
+ * If it is not found, it will create one and then bind it to the session.
+ */
+ public RulesRepository getRepositoryFrom(HttpSession session) {
+ Object obj = session.getAttribute( "drools.repository" );
+ if ( obj == null ) {
+ obj = createRuleRepositoryInstance();
+ session.setAttribute( "drools.repository",
+ obj );
+ }
+ return (RulesRepository) obj;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/RepositoryManager.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/FileUploadServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/FileUploadServletTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/FileUploadServletTest.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -0,0 +1,115 @@
+package org.drools.brms.server;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+import org.apache.commons.fileupload.FileItem;
+import org.drools.repository.AssetItem;
+import org.drools.repository.RulesRepository;
+
+import junit.framework.TestCase;
+
+public class FileUploadServletTest extends TestCase {
+
+ public void testUploadFile() throws Exception {
+ FileUploadServlet serv = new FileUploadServlet();
+ FileUploadServlet.FormData upload = new FileUploadServlet.FormData();
+ upload.file = new MockFile();
+
+
+
+ RulesRepository repo = new RulesRepository(SessionHelper.getSession());
+
+ AssetItem item = repo.loadDefaultPackage().addAsset( "testUploadFile", "description" );
+ upload.uuid = item.getUUID();
+
+ serv.attachFile( upload, repo );
+
+ AssetItem item2 = repo.loadDefaultPackage().loadAsset( "testUploadFile" );
+ byte[] data = item2.getBinaryContentAsBytes();
+
+ assertNotNull(data);
+ assertEquals("foo bar", new String(data));
+ assertEquals("foo.bar", item2.getBinaryContentAttachmentFileName());
+
+ }
+
+ static class MockFile implements FileItem {
+
+ InputStream stream = new ByteArrayInputStream("foo bar".getBytes());
+
+ public void delete() {
+
+
+ }
+
+ public byte[] get() {
+
+ return null;
+ }
+
+ public String getContentType() {
+
+ return null;
+ }
+
+ public String getFieldName() {
+
+ return null;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return stream;
+ }
+
+ public String getName() {
+ return "foo.bar";
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+
+ return null;
+ }
+
+ public long getSize() {
+ return 0;
+ }
+
+ public String getString() {
+ return null;
+ }
+
+ public String getString(String arg0) throws UnsupportedEncodingException {
+ return null;
+ }
+
+ public boolean isFormField() {
+ return false;
+ }
+
+ public boolean isInMemory() {
+ return false;
+ }
+
+ public void setFieldName(String arg0) {
+
+
+ }
+
+ public void setFormField(boolean arg0) {
+
+
+ }
+
+ public void write(File arg0) throws Exception {
+
+
+ }
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/FileUploadServletTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -1,123 +0,0 @@
-package org.drools.brms.server;
-
-import java.util.Calendar;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionContext;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.drools.brms.client.rpc.RuleContentText;
-import org.drools.repository.RulesRepository;
-
-/**
- * This tests the basic http stuff for the servlet.
- */
-public class JBRMSServiceServletTest extends TestCase {
-
- public void testInit() throws Exception {
- JBRMSServiceServlet serv = new JBRMSServiceServlet();
- MockHttpSession session = new MockHttpSession();
- RulesRepository repo = serv.getRepositoryFrom( session );
- assertTrue(session.sessionData.containsKey( "drools.repository" ));
- assertEquals(repo, session.getAttribute( "drools.repository" ));
-
- RulesRepository repo2 = serv.getRepositoryFrom( session );
- assertSame(repo, repo2);
-
-
- }
-
- public void testGetRepository() throws Exception {
- JBRMSServiceServlet serv = new JBRMSServiceServlet();
- RulesRepository repo = serv.createRuleRepositoryInstance();
- assertNotNull(repo);
- }
-
-
-
-
-
- static class MockHttpSession implements HttpSession {
-
- public Map sessionData = new HashMap();
-
- public Object getAttribute(String arg0) {
-
- return sessionData.get( arg0 );
- }
-
- public Enumeration getAttributeNames() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public long getCreationTime() {
- return 0;
- }
-
- public String getId() {
- return null;
- }
-
- public long getLastAccessedTime() {
- return 0;
- }
-
- public int getMaxInactiveInterval() {
- return 0;
- }
-
- public ServletContext getServletContext() {
- return null;
- }
-
- public HttpSessionContext getSessionContext() {
- return null;
- }
-
- public Object getValue(String arg0) {
- return null;
- }
-
- public String[] getValueNames() {
- return null;
- }
-
- public void invalidate() {
- }
-
- public boolean isNew() {
- return false;
- }
-
- public void putValue(String arg0,
- Object arg1) {
- Assert.fail("DO NOT USE THIS METHOD !");
-
- }
-
- public void removeAttribute(String arg0) {
- this.sessionData.remove( arg0 );
- }
-
- public void removeValue(String arg0) {
- }
-
- public void setAttribute(String arg0,
- Object arg1) {
- sessionData.put( arg0, arg1 );
- }
-
- public void setMaxInactiveInterval(int arg0) {
-
-
- }
-
- }
-}
Copied: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/RepositoryManagerTest.java (from rev 9623, labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/RepositoryManagerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/RepositoryManagerTest.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -0,0 +1,122 @@
+package org.drools.brms.server;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.drools.brms.server.util.RepositoryManager;
+import org.drools.repository.RulesRepository;
+
+/**
+ * This tests the basic http stuff for the servlet.
+ */
+public class RepositoryManagerTest extends TestCase {
+
+ public void testInit() throws Exception {
+ RepositoryManager serv = new RepositoryManager();
+ MockHttpSession session = new MockHttpSession();
+ RulesRepository repo = serv.getRepositoryFrom( session );
+ assertTrue(session.sessionData.containsKey( "drools.repository" ));
+ assertEquals(repo, session.getAttribute( "drools.repository" ));
+
+ RulesRepository repo2 = serv.getRepositoryFrom( session );
+ assertSame(repo, repo2);
+
+
+ }
+
+ public void testGetRepository() throws Exception {
+ RepositoryManager serv = new RepositoryManager();
+ RulesRepository repo = serv.createRuleRepositoryInstance();
+ assertNotNull(repo);
+ }
+
+
+
+
+
+ static class MockHttpSession implements HttpSession {
+
+ public Map sessionData = new HashMap();
+
+ public Object getAttribute(String arg0) {
+
+ return sessionData.get( arg0 );
+ }
+
+ public Enumeration getAttributeNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public long getCreationTime() {
+ return 0;
+ }
+
+ public String getId() {
+ return null;
+ }
+
+ public long getLastAccessedTime() {
+ return 0;
+ }
+
+ public int getMaxInactiveInterval() {
+ return 0;
+ }
+
+ public ServletContext getServletContext() {
+ return null;
+ }
+
+ public HttpSessionContext getSessionContext() {
+ return null;
+ }
+
+ public Object getValue(String arg0) {
+ return null;
+ }
+
+ public String[] getValueNames() {
+ return null;
+ }
+
+ public void invalidate() {
+ }
+
+ public boolean isNew() {
+ return false;
+ }
+
+ public void putValue(String arg0,
+ Object arg1) {
+ Assert.fail("DO NOT USE THIS METHOD !");
+
+ }
+
+ public void removeAttribute(String arg0) {
+ this.sessionData.remove( arg0 );
+ }
+
+ public void removeValue(String arg0) {
+ }
+
+ public void setAttribute(String arg0,
+ Object arg1) {
+ sessionData.put( arg0, arg1 );
+ }
+
+ public void setMaxInactiveInterval(int arg0) {
+
+
+ }
+
+ }
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/SessionHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/SessionHelper.java 2007-02-20 05:19:46 UTC (rev 9625)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/SessionHelper.java 2007-02-20 05:20:45 UTC (rev 9626)
@@ -3,6 +3,7 @@
import javax.jcr.Repository;
import javax.jcr.Session;
+import org.drools.brms.server.util.RepositoryManager;
import org.drools.repository.RepositoryConfigurator;
/**
@@ -16,7 +17,7 @@
public static Session getSession() throws Exception {
if (testSession == null) {
RepositoryConfigurator config = new RepositoryConfigurator();
- Repository repo = JBRMSServiceServlet.getJCRRepository( config );
+ Repository repo = RepositoryManager.getJCRRepository( config );
testSession = config.login( repo );
config.clearRulesRepository( testSession );
config.setupRulesRepository( testSession );
More information about the jboss-svn-commits
mailing list