Author: [email protected]
Date: Tue Oct  4 15:28:57 2011
New Revision: 1430

Log:
[AMDATUCASSANDRA-101] Fixed compile error in example gadget. Also refactored 
external gadget store to be a required dependency. Having an optional 
dependency caused unpredictable results, caused by undefined startup order

Modified:
   trunk/amdatu-opensocial/examples/gadgetrepository/pom.xml
   
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/osgi/Activator.java
   
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/service/ExampleGadgetRepositoryServiceImpl.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/bean/Widget.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStore.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStoreImpl.java
   
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/test/java/org/amdatu/opensocial/test/unit/gadgetmanagement/GadgetManagementTest.java

Modified: trunk/amdatu-opensocial/examples/gadgetrepository/pom.xml
==============================================================================
--- trunk/amdatu-opensocial/examples/gadgetrepository/pom.xml   (original)
+++ trunk/amdatu-opensocial/examples/gadgetrepository/pom.xml   Tue Oct  4 
15:28:57 2011
@@ -14,6 +14,11 @@
 
   <dependencies>
     <dependency>
+      <groupId>org.amdatu.core</groupId>
+      <artifactId>org.amdatu.core.tenant</artifactId>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
       <groupId>org.amdatu.opensocial</groupId>
       <artifactId>org.amdatu.opensocial.gadgetmanagement</artifactId>
       <type>bundle</type>

Modified: 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/osgi/Activator.java
  (original)
+++ 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/osgi/Activator.java
  Tue Oct  4 15:28:57 2011
@@ -32,10 +32,9 @@
     @Override
     public void init(BundleContext context, DependencyManager manager) throws 
Exception {
         manager.add(
-            createComponent()
+            createAdapterService(GadgetManagement.class, null)
             .setInterface(ExampleGadgetRepositoryService.class.getName(), null)
             .setImplementation(ExampleGadgetRepositoryServiceImpl.class)
-            
.add(createServiceDependency().setService(GadgetManagement.class).setRequired(true))
             
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
     }
 

Modified: 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/service/ExampleGadgetRepositoryServiceImpl.java
==============================================================================
--- 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/service/ExampleGadgetRepositoryServiceImpl.java
      (original)
+++ 
trunk/amdatu-opensocial/examples/gadgetrepository/src/main/java/org/amdatu/opensocial/example/gadgetrepository/service/ExampleGadgetRepositoryServiceImpl.java
      Tue Oct  4 15:28:57 2011
@@ -15,11 +15,11 @@
  */
 package org.amdatu.opensocial.example.gadgetrepository.service;
 
-import 
org.amdatu.opensocial.example.gadgetrepository.ExampleGadgetRepositoryService;
-import org.amdatu.opensocial.gadgetmanagement.GadgetCategory;
-import org.amdatu.opensocial.gadgetmanagement.GadgetDefinition;
-import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
-import org.osgi.service.log.LogService;
+import 
org.amdatu.opensocial.example.gadgetrepository.ExampleGadgetRepositoryService;
+import org.amdatu.opensocial.gadgetmanagement.GadgetCategory;
+import org.amdatu.opensocial.gadgetmanagement.GadgetDefinition;
+import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
+import org.osgi.service.log.LogService;
 
 /**
  * This service provides an example gadget repository. It registers some 
example gadgets which
@@ -37,8 +37,9 @@
         "http://blah.appspot.com/wave/sudoku/sudoku.xml";,  // Sudoko
         "http://pesta.appspot.com/gadgets/ratings/ratings.xml";, // Ratings
         "http://igooglegadget.buienradar.nl/buienradar.xml";, // Buienradar
-        "http://www.google.com/ig/modules/datetime_v2/datetime_v2.xml";, // 
Date and time
-        "http://www.google.com/ig/modules/tabnews.xml"; // Google news
+        
"http://www.gstatic.com/ig/modules/datetime_v2/kennedy/datetime_v2.xml";, // 
Date and time
+        "http://www.google.com/ig/modules/tabnews.xml";, // Google news
+        "http://brainden.com/gadgets/illusions-gadget.xml"; // Optical illusions
     };
 
     // Services injected by the Felix dependency manager
@@ -54,8 +55,6 @@
 
     public void start() {
         // initialize the default gadget categories.
-        m_gadgetManagement.addCategory(AMDATU_EXAMPLE_CATEGORY);
-
         for (String gadgetUrl : EXAMPLE_GADGETS) {
             GadgetDefinition gadget = new GadgetDefinition(gadgetUrl, 
GadgetCategory.THIRDPARTY, false);
             m_gadgetManagement.addGadget(gadget);

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/bean/Widget.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/bean/Widget.java
   (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/bean/Widget.java
   Tue Oct  4 15:28:57 2011
@@ -55,7 +55,7 @@
     public void setUrl(String url) {
         m_url = url;
     }
-
+ 
     public String getColumn() {
         return m_column;
     }

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
        (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
        Tue Oct  4 15:28:57 2011
@@ -21,7 +21,6 @@
 import org.amdatu.core.tenant.Tenant;
 import org.amdatu.libraries.utilities.osgi.ServiceDependentActivator;
 import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
-import org.amdatu.opensocial.gadgetmanagement.GadgetStorageProvider;
 import 
org.amdatu.opensocial.gadgetmanagement.service.GadgetManagementRESTServiceImpl;
 import 
org.amdatu.opensocial.gadgetmanagement.service.GadgetManagementServiceImpl;
 import org.amdatu.opensocial.gadgetmanagement.service.InternalGadgetStore;
@@ -74,8 +73,6 @@
                     .setInterface(new String[] 
{GadgetManagement.class.getName(), ResourceProvider.class.getName()}, 
properties)
                     .setImplementation(GadgetManagementServiceImpl.class)
                     
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                    // NB: the external gadget storage provider is optional
-                    
.add(createServiceDependency().setService(GadgetStorageProvider.class).setRequired(false))
                     
.add(createServiceDependency().setService(HttpContextManagerService.class).setRequired(true)));
         
         // Create and register the REST gadget management service

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
   (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
   Tue Oct  4 15:28:57 2011
@@ -36,6 +36,7 @@
 import org.amdatu.web.httpcontext.ResourceProvider;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
@@ -52,19 +53,22 @@
     private volatile DependencyManager m_dependencyManager;
     private volatile BundleContext m_bundleContext;
     private volatile LogService m_logService;
-    private volatile GadgetStorageProvider m_externalGadgetStore;
 
     // Tenant aware service dependencies
     private volatile InternalGadgetStore m_internalGadgetStore;
+    private volatile GadgetStorageProvider m_externalGadgetStore;
 
     public void init(final Component component) {
-        component.add(m_dependencyManager.createServiceDependency()
+        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(InternalGadgetStore.class, 
getTenantFilter(InternalGadgetStore.class))
-            .setInstanceBound(true));
-
-        component.add(m_dependencyManager.createServiceDependency()
+            .setInstanceBound(true)
+            .setRequired(true));
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(GadgetStorageProvider.class, 
getTenantFilter(GadgetStorageProvider.class))
-            .setCallbacks("onExternalStoreAdded", "onExternalStoreRemoved"));
+            .setInstanceBound(true)
+            .setRequired(true));
+        component.add(dependencies);
     }
 
     private String getTenantFilter(Class<?> clazz) {
@@ -73,21 +77,23 @@
     }
 
     public void start() {
+        // Initialize the gadget category count for external gadgets.
+        for (GadgetDefinition gadget : m_externalGadgetStore.getGadgets()) {
+            m_internalGadgetStore.increaseCount(gadget.getCategory().getId());
+        }
+
         m_logService.log(LogService.LOG_INFO,
             this.getClass().getName() + " service started for tenant '" + 
m_tenant.getId() + "'");
     }
 
-    public synchronized void onExternalStoreAdded(GadgetStorageProvider store) 
{
-        m_externalGadgetStore = store;
-
-        // Initialize the gadget category count for external gadgets.
+    public void stop() {
+        // Update the gadget category count for external gadgets.
         for (GadgetDefinition gadget : m_externalGadgetStore.getGadgets()) {
-            m_internalGadgetStore.increaseCount(gadget.getCategory().getId());
+            m_internalGadgetStore.decreaseCount(gadget.getCategory().getId());
         }
-    }
 
-    public synchronized void onExternalStoreRemoved(GadgetStorageProvider 
store) {
-        m_externalGadgetStore = null;
+        m_logService.log(LogService.LOG_INFO,
+            this.getClass().getName() + " service stopped for tenant '" + 
m_tenant.getId() + "'");
     }
 
     /**
@@ -98,12 +104,7 @@
     }
 
     public synchronized GadgetDefinition[] getGadgets() {
-        if (m_externalGadgetStore != null) {
-            return merge(m_internalGadgetStore.getGadgets(), 
m_externalGadgetStore.getGadgets());
-        }
-        else {
-            return m_internalGadgetStore.getGadgets();
-        }
+        return merge(m_internalGadgetStore.getGadgets(), 
m_externalGadgetStore.getGadgets());
     }
 
     public synchronized GadgetDefinition getGadget(String gadgetUrl) {
@@ -112,12 +113,9 @@
             return m_internalGadgetStore.getGadget(gadgetUrl);
         }
         else {
-            if (m_externalGadgetStore != null) {
-                // Only external gadgets use absolute URLs
-                return m_externalGadgetStore.getGadget(gadgetUrl);
-            }
+            // Only external gadgets use absolute URLs
+            return m_externalGadgetStore.getGadget(gadgetUrl);
         }
-        return null;
     }
 
     public synchronized GadgetDefinition[] getDefaultGadgets() {
@@ -130,12 +128,10 @@
             }
         }
 
-        if (m_externalGadgetStore != null) {
-            // Append external gadgets (registered using this service)
-            for (GadgetDefinition gadgetDef : 
m_externalGadgetStore.getGadgets()) {
-                if (gadgetDef.isDefaultVisible()) {
-                    gadgets.add(gadgetDef);
-                }
+        // Append external gadgets (registered using this service)
+        for (GadgetDefinition gadgetDef : m_externalGadgetStore.getGadgets()) {
+            if (gadgetDef.isDefaultVisible()) {
+                gadgets.add(gadgetDef);
             }
         }
 
@@ -149,21 +145,17 @@
             throw new IllegalArgumentException(errorMsg);
         }
 
-        if (m_externalGadgetStore != null) {
-            // If the gadget with this URL was already registered, ignore it
-            if (m_externalGadgetStore.getGadget(gadget.getUrl()) == null) {
-                
m_internalGadgetStore.increaseCount(gadget.getCategory().getId());
-                m_externalGadgetStore.addGadget(gadget);
-            }
+        // If the gadget with this URL was already registered, ignore it
+        if (m_externalGadgetStore.getGadget(gadget.getUrl()) == null) {
+            m_internalGadgetStore.increaseCount(gadget.getCategory().getId());
+            m_externalGadgetStore.addGadget(gadget);
         }
     }
 
     public synchronized void removeGadget(final GadgetDefinition gadget) {
-        if (m_externalGadgetStore != null) {
-            if (m_externalGadgetStore.getGadget(gadget.getUrl()) != null) {
-                m_externalGadgetStore.removeGadget(gadget);
-                
m_internalGadgetStore.decreaseCount(gadget.getCategory().getId());
-            }
+        if (m_externalGadgetStore.getGadget(gadget.getUrl()) != null) {
+            m_externalGadgetStore.removeGadget(gadget);
+            m_internalGadgetStore.decreaseCount(gadget.getCategory().getId());
         }
     }
 
@@ -217,12 +209,14 @@
     private GadgetDefinition[] merge(GadgetDefinition[] defs1, 
GadgetDefinition[] defs2) {
         if (defs1 == null && defs2 == null) {
             return new GadgetDefinition[0];
-        } else if (defs1 == null) {
+        }
+        else if (defs1 == null) {
             return defs2;
-        } else if (defs2 == null) {
+        }
+        else if (defs2 == null) {
             return defs1;
         }
-        
+
         GadgetDefinition[] defs = new GadgetDefinition[defs1.length + 
defs2.length];
         for (int i = 0; i < defs1.length; i++) {
             defs[i] = defs1[i];

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStore.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStore.java
   (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStore.java
   Tue Oct  4 15:28:57 2011
@@ -21,6 +21,7 @@
 import org.amdatu.opensocial.gadgetmanagement.GadgetDefinition;
 import org.amdatu.opensocial.gadgetmanagement.GadgetStorageException;
 
+
 /**
  * Interface of the internal gadget store.
  * @author ivol

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStoreImpl.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStoreImpl.java
       (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/InternalGadgetStoreImpl.java
       Tue Oct  4 15:28:57 2011
@@ -86,7 +86,7 @@
             // Add category (if it does not yet exist)
             addCategory(gadget.getCategory());
 
-            // Increase gasget counter for this category
+            // Increase gadget counter for this category
             increaseCount(gadget.getCategory().getId());
         }
     }

Modified: 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/test/java/org/amdatu/opensocial/test/unit/gadgetmanagement/GadgetManagementTest.java
==============================================================================
--- 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/test/java/org/amdatu/opensocial/test/unit/gadgetmanagement/GadgetManagementTest.java
        (original)
+++ 
trunk/amdatu-opensocial/opensocial-gadgetmanagement/src/test/java/org/amdatu/opensocial/test/unit/gadgetmanagement/GadgetManagementTest.java
        Tue Oct  4 15:28:57 2011
@@ -36,6 +36,8 @@
         GadgetDefinition gadgetDef = new 
GadgetDefinition("http://dummyurl.com";, category, false);
         Assert.assertEquals(gadgetDef.getUrl(), "http://dummyurl.com";);
         Assert.assertEquals(gadgetDef.getCategory(), category);
-        Assert.assertEquals(gadgetDef.isDefaultVisible(), false);
+        Assert.assertEquals(gadgetDef.isDefaultVisible(), false);
+        
+        //GadgetManagementServiceImpl
     }
 }
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to