[jboss-svn-commits] JBL Code SVN: r23543 - in labs/jbossrules/trunk/drools-atom/src: test/java/org/drools/atom and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 21 23:44:58 EDT 2008


Author: jervisliu
Date: 2008-10-21 23:44:57 -0400 (Tue, 21 Oct 2008)
New Revision: 23543

Modified:
   labs/jbossrules/trunk/drools-atom/src/main/java/org/drools/atom/AtomRulesRepository.java
   labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/AtomRulesRepositoryServer.java
   labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/ClientServerAtomRulesRepositoryTest.java
   labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/resources/expected_get_assets.txt
Log:
get individual asset info from repository using atomPub. 

Modified: labs/jbossrules/trunk/drools-atom/src/main/java/org/drools/atom/AtomRulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-atom/src/main/java/org/drools/atom/AtomRulesRepository.java	2008-10-22 02:37:17 UTC (rev 23542)
+++ labs/jbossrules/trunk/drools-atom/src/main/java/org/drools/atom/AtomRulesRepository.java	2008-10-22 03:44:57 UTC (rev 23543)
@@ -180,7 +180,7 @@
     }
     
     @GET
-    @Path("/packages/{packageName}/")
+    @Path("/packages/{packageName}")
     @ProduceMime({"application/atom+xml"})
     public Entry getPackageAsEntry(@PathParam("packageName") String packageName, @Context UriInfo uParam) throws PackageNotFoundFault {
         System.out.println("----invoking getPackageAsEntry with packageName: " + packageName);
@@ -195,6 +195,34 @@
         }
     }
             
+    @GET
+    @Path("/packages/{packageName}/assets/{assetName}")
+    @ProduceMime({"application/atom+xml"})
+    public Entry getAssetAsEntry(@PathParam("packageName") String packageName, 
+    		@Context UriInfo uParam,
+    		@PathParam("assetName") String assetName) throws PackageNotFoundFault {
+        System.out.println("----invoking getPackageAsEntry with packageName: " + packageName + ", assetName: " + assetName);
+        
+        try {             
+            PackageItem packageItem = repository.loadPackage(packageName);
+            for ( Iterator iter = packageItem.getAssets(); iter.hasNext(); ) {
+                AssetItem as = (AssetItem) iter.next();
+                if (as.getName().equals(assetName)) {
+                	return createDetailedAssetItemEntry(as, uParam);
+                }
+            }
+        } catch (RulesRepositoryException e) {
+        	PackageNotFoundDetails details = new PackageNotFoundDetails();
+            details.setName(packageName);
+            throw new PackageNotFoundFault(details);       	
+        }
+        
+        //TODO: Better exception handling
+    	PackageNotFoundDetails details = new PackageNotFoundDetails();
+        details.setName(assetName);
+        throw new PackageNotFoundFault(details);       	
+    }
+    
     @POST
     @Path("/packages")
     @ConsumeMime("application/atom+xml")
@@ -285,7 +313,7 @@
         }
         e.setTitle(asset.getName());
         URI uri = 
-        	baseUri.getBaseUriBuilder().path("repository", "packages", "packageName", "asset",
+        	baseUri.getBaseUriBuilder().path("repository", "packages", packageName, "assets",
         			asset.getName()).build();
         e.addLink(uri.toString());
 
@@ -317,6 +345,31 @@
         return e;
     }
     
+    private static Entry createDetailedAssetItemEntry(AssetItem asset, UriInfo baseUri) {
+        Factory factory = Abdera.getNewFactory();
+        
+        Entry e = factory.getAbdera().newEntry();
+        if (baseUri != null) {
+            e.setBaseUri(baseUri.getAbsolutePath().toString());
+        }
+        e.setTitle(asset.getName());
+        e.setId(asset.getUUID());
+        e.setSummary(asset.getDescription());
+        
+        URI uri = 
+        	baseUri.getBaseUriBuilder().path("repository", "packages",  
+        			asset.getName()).build();
+        e.addLink(uri.toString());
+        e.setUpdated(asset.getLastModified().getTime());
+        
+        //TODO: What content to return?
+        e.setContentElement(factory.newContent());
+        e.getContentElement().setContentType(Content.Type.TEXT);
+        e.getContentElement().setValue("archived=" +  asset.isArchived());
+        
+        return e;
+    }
+    
 	public RulesRepository getRulesRepository() {
 		return repository;
 	}

Modified: labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/AtomRulesRepositoryServer.java
===================================================================
--- labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/AtomRulesRepositoryServer.java	2008-10-22 02:37:17 UTC (rev 23542)
+++ labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/AtomRulesRepositoryServer.java	2008-10-22 03:44:57 UTC (rev 23543)
@@ -28,8 +28,8 @@
         repo = RepositorySessionUtil.getRepository();
         PackageItem pkg = repo.createPackage("testPackage1", "desc1");
         repo.loadCategory( "/" ).addCategory( "AtomRulesRepositoryTestCat", "X" );
-        pkg.addAsset( "testAsset1", "x", "/AtomRulesRepositoryTestCat", "drl");
-        pkg.addAsset( "testAsset2", "x", "/AtomRulesRepositoryTestCat", "drl");
+        pkg.addAsset( "testAsset1", "testAsset1Desc1", "/AtomRulesRepositoryTestCat", "drl");
+        pkg.addAsset( "testAsset2", "testAsset2Desc1", "/AtomRulesRepositoryTestCat", "drl");
 
         repo.save();
 

Modified: labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/ClientServerAtomRulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/ClientServerAtomRulesRepositoryTest.java	2008-10-22 02:37:17 UTC (rev 23542)
+++ labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/ClientServerAtomRulesRepositoryTest.java	2008-10-22 03:44:57 UTC (rev 23543)
@@ -126,6 +126,26 @@
     }  
     
     @Test
+    public void testGetAsset() throws Exception {
+        String endpointAddress =
+            "http://localhost:9080/repository/packages/testPackage1/assets/testAsset1"; 
+        GetMethod get = new GetMethod(endpointAddress);
+        get.setRequestHeader("Content-Type", "*/*");
+        //get.setRequestHeader("Accept", type);
+        HttpClient httpClient = new HttpClient();
+        try {
+            httpClient.executeMethod(get);           
+            String response = getStringFromInputStream(get.getResponseBodyAsStream());
+            //System.out.print(response);
+            assertTrue(response.indexOf("testAsset1") > 0);
+            assertTrue(response.indexOf("testAsset1Desc1") > 0);
+            assertTrue(response.indexOf("archived=false") > 0);
+        } finally {
+            get.releaseConnection();
+        }
+    }  
+    
+    @Test
     public void testAddAndDeletePackage() throws Exception {
     	//Create a new package called testPackage2
         String endpointAddress =

Modified: labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/resources/expected_get_assets.txt
===================================================================
--- labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/resources/expected_get_assets.txt	2008-10-22 02:37:17 UTC (rev 23542)
+++ labs/jbossrules/trunk/drools-atom/src/test/java/org/drools/atom/resources/expected_get_assets.txt	2008-10-22 03:44:57 UTC (rev 23543)
@@ -1 +1 @@
-<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">Assets</title><entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">testAsset1</title><link href="http://localhost:9080/repository/packages/packageName/asset/testAsset1" /></entry><entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">testAsset2</title><link href="http://localhost:9080/repository/packages/packageName/asset/testAsset2" /></entry></feed>
\ No newline at end of file
+<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">Assets</title><entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">testAsset1</title><link href="http://localhost:9080/repository/packages/testPackage1/assets/testAsset1" /></entry><entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets"><title type="text">testAsset2</title><link href="http://localhost:9080/repository/packages/testPackage1/assets/testAsset2" /></entry></feed>
\ No newline at end of file




More information about the jboss-svn-commits mailing list