Author: [email protected]
Date: Mon Mar 26 16:29:37 2012
New Revision: 2155

Log:
[AMDATUCASSANDRA-178] Implemented support for ownerid filter in consumer store

Modified:
   trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/pom.xml
   
trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java

Modified: 
trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/pom.xml    
(original)
+++ trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/pom.xml    
Mon Mar 26 16:29:37 2012
@@ -69,6 +69,12 @@
       <version>20090211</version>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.2</version>
+      <scope>compile</scope>
+    </dependency>
   </dependencies>
 
   <build>

Modified: 
trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
        (original)
+++ 
trunk/amdatu-cassandra/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
        Mon Mar 26 16:29:37 2012
@@ -35,6 +35,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.collections.iterators.ArrayIterator;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.ServiceDependency;
@@ -43,6 +44,8 @@
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.type.TypeFactory;
 import org.json.JSONObject;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.log.LogService;
 
 /**
@@ -59,6 +62,7 @@
     private volatile LogService m_logService;
     private volatile DependencyManager m_dependencyManager;
     private volatile Tenant m_tenant;
+    private volatile BundleContext m_bundleContext;
 
     // Column names
     private static final String NAME = "name";
@@ -126,10 +130,40 @@
         persist(consumer);
     }
 
+    @SuppressWarnings("unchecked")
     @Override
-    public Iterator<OAuthServiceConsumer> getConsumers(final String filter) 
throws ConsumerRegistryStorageException {
-        // FIXME: implement this the LDAP way
-        throw new ConsumerRegistryStorageException("NOT YET IMPLEMENTED");
+    public Iterator<OAuthServiceConsumer> getConsumers(final String 
filterString)
+        throws ConsumerRegistryStorageException {
+        String filterConsumer = null;
+        if (filterString != null && !filterString.isEmpty()) {
+            try {
+                m_bundleContext.createFilter(filterString);
+                if (filterString.matches("\\(" + OAuthServiceConsumer.OWNERID 
+ "=[^|&]*\\)")) {
+                    // Ah, this filter we know
+                    filterConsumer =
+                        filterString
+                            .substring(("(" + 
OAuthServiceConsumer.OWNERID).length() + 1, filterString.length() - 1);
+                }
+                else {
+                    throw new ConsumerRegistryStorageException("Filter string 
'" + filterString + "' not supported");
+                }
+            }
+            catch (InvalidSyntaxException e) {
+                throw new ConsumerRegistryStorageException(e);
+            }
+        }
+
+        List<String> rows = m_pm.getRowKeys(CF_CONSUMER, NAME, null);
+        List<OAuthServiceConsumer> consumers = new 
ArrayList<OAuthServiceConsumer>();
+        for (String row : rows) {
+            OAuthServiceConsumer consumer = getConsumer(row);
+            if (filterConsumer == null
+                || 
consumer.getProperties().get(OAuthServiceConsumer.OWNERID).equals(filterConsumer))
 {
+                consumers.add(getConsumer(row));
+            }
+        }
+
+        return new ArrayIterator(consumers.toArray(new 
OAuthServiceConsumer[consumers.size()]));
     }
 
     @Override
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to