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