Author: [email protected]
Date: Mon Mar 26 16:42:15 2012
New Revision: 2156
Log:
[AMDATUCASSANDRA-178] Implemented support for ownerid filter in consumer store
Modified:
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/pom.xml
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
Modified:
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/pom.xml
==============================================================================
---
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/pom.xml
(original)
+++
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/pom.xml
Mon Mar 26 16:42:15 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:
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
==============================================================================
---
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
(original)
+++
branches/amdatu-cassandra-0.2.3/cassandra-stores/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
Mon Mar 26 16:42:15 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