Repository: incubator-usergrid Updated Branches: refs/heads/USERGRID-652 283cc1f47 -> d4bb9ef70
Adds meta support on GET. The delete is not working correctly. Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/b2695201 Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/b2695201 Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/b2695201 Branch: refs/heads/USERGRID-652 Commit: b2695201c162ea2aad06c9e64bbb637e189951d8 Parents: 45ce5d2 Author: Todd Nine <tn...@apigee.com> Authored: Mon Jun 1 17:08:21 2015 -0600 Committer: Todd Nine <tn...@apigee.com> Committed: Tue Jun 2 11:29:06 2015 -0600 ---------------------------------------------------------------------- .../corepersistence/CpEntityManager.java | 38 +++++++++++++- .../usergrid/corepersistence/CpWalker.java | 4 +- .../corepersistence/util/CpNamingUtils.java | 52 ++++++++++++++++++-- .../usergrid/persistence/AbstractEntity.java | 11 +++++ .../usergrid/persistence/EntityManager.java | 19 +++++++ .../apache/usergrid/persistence/EntityRef.java | 5 ++ .../persistence/MultiQueryIterator.java | 10 ++++ .../persistence/SimpleCollectionRef.java | 8 +++ .../usergrid/persistence/SimpleEntityRef.java | 7 +++ .../usergrid/persistence/SimpleRoleRef.java | 8 +++ .../cassandra/ConnectionRefImpl.java | 8 +++ .../apache/usergrid/utils/EdgeTestUtils.java | 4 +- .../usergrid/services/AbstractService.java | 16 +++--- 13 files changed, 173 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java index 14d1bed..0565d58 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -81,6 +82,10 @@ import org.apache.usergrid.persistence.exceptions.RequiredPropertyNotFoundExcept import org.apache.usergrid.persistence.exceptions.UnexpectedEntityTypeException; import org.apache.usergrid.persistence.graph.GraphManager; import org.apache.usergrid.persistence.graph.GraphManagerFactory; +import org.apache.usergrid.persistence.graph.SearchByEdgeType; +import org.apache.usergrid.persistence.graph.SearchEdgeType; +import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType; +import org.apache.usergrid.persistence.graph.impl.SimpleSearchEdgeType; import org.apache.usergrid.persistence.index.query.CounterResolution; import org.apache.usergrid.persistence.index.query.Identifier; import org.apache.usergrid.persistence.map.MapManager; @@ -123,6 +128,8 @@ import static me.prettyprint.hector.api.factory.HFactory.createMutator; import static org.apache.commons.lang.StringUtils.capitalize; import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.usergrid.corepersistence.util.CpEntityMapUtils.entityToCpEntity; +import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createConnectionTypeSearch; +import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getConnectionNameFromEdgeName; import static org.apache.usergrid.persistence.Schema.COLLECTION_ROLES; import static org.apache.usergrid.persistence.Schema.COLLECTION_USERS; import static org.apache.usergrid.persistence.Schema.DICTIONARY_PERMISSIONS; @@ -862,6 +869,9 @@ public class CpEntityManager implements EntityManager { return convertMvccEntityToEntity( fieldSet.getEntity( uniqueLookupRepairField ).getEntity().get() ); } + + + @Override public EntityRef getAlias( String aliasType, String alias ) throws Exception { @@ -2853,7 +2863,7 @@ public class CpEntityManager implements EntityManager { @Override public IndexBucketLocator getIndexBucketLocator() { - throw new UnsupportedOperationException( "Not supported yet." ); + throw new UnsupportedOperationException( "Not supported ever." ); } @@ -2869,6 +2879,32 @@ public class CpEntityManager implements EntityManager { } + @Override + public Set<String> getConnectionsAsSource( final EntityRef entityRef ) { + + Preconditions.checkNotNull( entityRef, "entityRef cannot be null" ); + + final GraphManager graphManager = graphManagerFactory.createEdgeManager( applicationScope ); + + final SearchEdgeType searchByEdgeType = createConnectionTypeSearch( entityRef.asId() ); + + return graphManager.getEdgeTypesFromSource( searchByEdgeType ).map( edgeName -> getConnectionNameFromEdgeName( edgeName ) ).collect( + () -> new HashSet<String>(), ( r, s ) -> r.add( s ) ).toBlocking().last(); + } + + + @Override + public Set<String> getConnectionsAsTarget( final EntityRef entityRef ) { + Preconditions.checkNotNull( entityRef, "entityRef cannot be null" ); + + final GraphManager graphManager = graphManagerFactory.createEdgeManager( applicationScope ); + + final SearchEdgeType searchByEdgeType = createConnectionTypeSearch( entityRef.asId() ); + + return graphManager.getEdgeTypesToTarget( searchByEdgeType ).map( + edgeName -> getConnectionNameFromEdgeName( edgeName ) ).collect( () -> new HashSet<String>( ), ( r, s ) -> r.add(s) ).toBlocking().last(); + } + http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java index 15e4341..722d200 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java @@ -34,8 +34,6 @@ import org.apache.usergrid.persistence.model.entity.SimpleId; import com.google.common.base.Optional; import rx.Observable; -import rx.functions.Action1; -import rx.functions.Func1; import rx.schedulers.Schedulers; import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getNameFromEdgeType; @@ -98,7 +96,7 @@ public class CpWalker { final String edgeType; if ( collectionName == null ) { // only search edge types that end with collections suffix - edgeType = CpNamingUtils.EDGE_COLL_SUFFIX; + edgeType = CpNamingUtils.EDGE_COLL_PREFIX; } else { // only search edges to one collection http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java index 77dd9f1..3cd0fab 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java @@ -29,8 +29,10 @@ import org.apache.usergrid.persistence.entities.Application; import org.apache.usergrid.persistence.graph.Edge; import org.apache.usergrid.persistence.graph.SearchByEdge; import org.apache.usergrid.persistence.graph.SearchByEdgeType; +import org.apache.usergrid.persistence.graph.SearchEdgeType; import org.apache.usergrid.persistence.graph.impl.SimpleEdge; import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdge; +import org.apache.usergrid.persistence.graph.impl.SimpleSearchEdgeType; import org.apache.usergrid.persistence.index.IndexEdge; import org.apache.usergrid.persistence.index.SearchEdge; import org.apache.usergrid.persistence.index.impl.IndexEdgeImpl; @@ -48,10 +50,20 @@ import org.apache.usergrid.utils.UUIDUtils; public class CpNamingUtils { /** Edge types for collection suffix */ - public static final String EDGE_COLL_SUFFIX = "zzzcollzzz"; + public static final String EDGE_COLL_PREFIX = "zzzcollzzz"; + + /** + * The length used when we trim a string + */ + private static final int EDGE_COLL_PREFIX_LENGTH = EDGE_COLL_PREFIX.length() + 1; /** Edge types for connection suffix */ - public static final String EDGE_CONN_SUFFIX = "zzzconnzzz"; + public static final String EDGE_CONN_PREFIX = "zzzconnzzz"; + + /** + * The length used when we trim a string on edge names + */ + private static final int EDGE_CONN_PREFIX_LENGTH = EDGE_CONN_PREFIX.length()+1; /** App where we store management info */ public static final UUID MANAGEMENT_APPLICATION_ID = UUID.fromString( "b6768a08-b5d5-11e3-a495-11ddb1de66c8" ); @@ -81,19 +93,38 @@ public class CpNamingUtils { * @param connectionType The type of connection made */ public static String getEdgeTypeFromConnectionType( String connectionType ) { - return ( EDGE_CONN_SUFFIX + "|" + connectionType ).toLowerCase(); + return ( EDGE_CONN_PREFIX + "|" + connectionType ).toLowerCase(); } /** + * Get the name of the collection from the edge name + * @param edgeName + * @return + */ + public static String getConnectionNameFromEdgeName(final String edgeName){ + return edgeName.substring( EDGE_CONN_PREFIX_LENGTH ); + } + + /** * Generate a standard edges from for a collection * * To be used only for searching DO NOT use for creation. Use the createCollectionEdge instead. */ public static String getEdgeTypeFromCollectionName( String collectionName ) { - return ( EDGE_COLL_SUFFIX + "|" + collectionName ).toLowerCase(); + return ( EDGE_COLL_PREFIX + "|" + collectionName ).toLowerCase(); } + /** + * Get the name of the collection from the edge name + * @param edgeName + * @return + */ + public static String getCollectionNameFromEdgeName(final String edgeName){ + return edgeName.substring( EDGE_COLL_PREFIX_LENGTH ); + } + + /** * Get the index scope for the edge from the source to the target. The entity being indexed @@ -210,6 +241,17 @@ public class CpNamingUtils { } + + /** + * Create a search edge based on the type + * + * @param sourceId The id in the search + */ + public static SearchEdgeType createConnectionTypeSearch( final Id sourceId ) { + return new SimpleSearchEdgeType( sourceId, EDGE_CONN_PREFIX, null ); + } + + /** * Get the application scope from the given uuid * @@ -263,7 +305,7 @@ public class CpNamingUtils { private static boolean isCollectionEdgeType( String type ) { - return type.startsWith( EDGE_COLL_SUFFIX ); + return type.startsWith( EDGE_COLL_PREFIX ); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java index 706a28d..afe246d 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java @@ -28,6 +28,8 @@ import java.util.UUID; import javax.xml.bind.annotation.XmlRootElement; import org.apache.usergrid.persistence.annotations.EntityProperty; +import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; @@ -88,6 +90,14 @@ public abstract class AbstractEntity implements Entity { } + + @Override + public Id asId() { + return new SimpleId( uuid, getType() ); + } + + + @Override @EntityProperty(indexed = true, required = true, mutable = false) @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) @@ -105,6 +115,7 @@ public abstract class AbstractEntity implements Entity { } + @Override @EntityProperty(indexed = true, required = true, mutable = true) @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java index 774a0fb..a6fa717 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java @@ -247,6 +247,8 @@ public interface EntityManager { public Set<Object> getDictionaryAsSet( EntityRef entityRef, String dictionaryName ) throws Exception; + + /** * Adds the specified value to the named entity list property. Lists are a special type of * entity property that can contain an unordered set of non-duplicate values. @@ -332,6 +334,7 @@ public interface EntityManager { throws Exception; + /** * Gets the collections for the specified entity. Collection for a given type are encoded * in the schema, this method loads the entity type and returns the collections from the schema. @@ -697,4 +700,20 @@ public interface EntityManager { public Entity getUniqueEntityFromAlias( String aliasType, String aliasValue ); + + + /** + * Get the outgoing edge types where the entity ref is the source in the graph + * @param entityRef + * @return + */ + Set<String> getConnectionsAsSource(final EntityRef entityRef); + + + /** + * Get the outgoing edge types where the entity ref is the target node in the graph + * @param entityRef + * @return + */ + Set<String> getConnectionsAsTarget(final EntityRef entityRef); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/EntityRef.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityRef.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityRef.java index 56c75cc..8fece32 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityRef.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityRef.java @@ -18,6 +18,9 @@ package org.apache.usergrid.persistence; import java.util.UUID; +import org.apache.usergrid.persistence.model.entity.Id; + + public interface EntityRef { /** @@ -33,4 +36,6 @@ public interface EntityRef { * @return the type */ public String getType(); + + public Id asId(); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/MultiQueryIterator.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/MultiQueryIterator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/MultiQueryIterator.java index 3662c63..c5de5c1 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/MultiQueryIterator.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/MultiQueryIterator.java @@ -20,6 +20,9 @@ package org.apache.usergrid.persistence; import java.util.Iterator; import java.util.UUID; +import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; + /** * For each in a set of source refs executes a sub-query and provides a unified iterator over @@ -123,6 +126,13 @@ public class MultiQueryIterator implements ResultsIterator { return type; } + + @Override + public Id asId() { + return new SimpleId(uuid, type); + } + + public void setType( String type ) { this.type = type; } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleCollectionRef.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleCollectionRef.java b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleCollectionRef.java index 9418cce..3af5b12 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleCollectionRef.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleCollectionRef.java @@ -20,6 +20,8 @@ package org.apache.usergrid.persistence; import java.util.UUID; import org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils; +import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; public class SimpleCollectionRef implements CollectionRef { @@ -73,6 +75,12 @@ public class SimpleCollectionRef implements CollectionRef { @Override + public Id asId() { + return new SimpleId( id, type ); + } + + + @Override public String toString() { if ( ( type == null ) && ( id == null ) ) { return "CollectionRef(" + SimpleEntityRef.NULL_ID.toString() + ")"; http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleEntityRef.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleEntityRef.java b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleEntityRef.java index f5949af..f891dde 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleEntityRef.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleEntityRef.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.UUID; import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; public class SimpleEntityRef implements EntityRef { @@ -74,6 +75,12 @@ public class SimpleEntityRef implements EntityRef { } + @Override + public Id asId() { + return new SimpleId( uuid, type ); + } + + public static EntityRef ref( String entityType, UUID entityId ) { return new SimpleEntityRef( entityType, entityId ); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleRoleRef.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleRoleRef.java b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleRoleRef.java index fb2411a..69d4efc 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleRoleRef.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/SimpleRoleRef.java @@ -22,6 +22,8 @@ import java.util.UUID; import org.springframework.util.Assert; import org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils; import org.apache.usergrid.persistence.entities.Group; +import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; import org.apache.usergrid.utils.StringUtils; import org.apache.usergrid.utils.UUIDUtils; @@ -99,6 +101,12 @@ public class SimpleRoleRef implements RoleRef { @Override + public Id asId() { + return new SimpleId( id, "role" ); + } + + + @Override public EntityRef getGroupRef() { return new SimpleEntityRef( Group.ENTITY_TYPE, groupId ); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/ConnectionRefImpl.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/ConnectionRefImpl.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/ConnectionRefImpl.java index 5509c37..1ad9413 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/ConnectionRefImpl.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/ConnectionRefImpl.java @@ -31,6 +31,8 @@ import org.apache.usergrid.persistence.ConnectedEntityRef; import org.apache.usergrid.persistence.ConnectionRef; import org.apache.usergrid.persistence.EntityRef; import org.apache.usergrid.persistence.SimpleEntityRef; +import org.apache.usergrid.persistence.model.entity.Id; +import org.apache.usergrid.persistence.model.entity.SimpleId; import org.apache.commons.codec.binary.Hex; import org.apache.commons.lang.StringUtils; @@ -343,6 +345,12 @@ public class ConnectionRefImpl implements ConnectionRef { } + @Override + public Id asId() { + return new SimpleId(id, CONNECTION_ENTITY_TYPE ); + } + + public UUID getIndexId() { return getIndexId( getSourceRefs(), getConnectionType(), getConnectedEntityType(), pairedConnections.toArray(new ConnectedEntityRef[pairedConnections.size()])); http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java ---------------------------------------------------------------------- diff --git a/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java b/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java index f217338..1795c5b 100644 --- a/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java +++ b/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java @@ -40,11 +40,11 @@ public class EdgeTestUtils { public static boolean isCollectionEdgeType( String type ) { - return type.startsWith( CpNamingUtils.EDGE_COLL_SUFFIX ); + return type.startsWith( CpNamingUtils.EDGE_COLL_PREFIX ); } public static boolean isConnectionEdgeType( String type ) { - return type.startsWith( CpNamingUtils.EDGE_CONN_SUFFIX ); + return type.startsWith( CpNamingUtils.EDGE_CONN_PREFIX ); } } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b2695201/stack/services/src/main/java/org/apache/usergrid/services/AbstractService.java ---------------------------------------------------------------------- diff --git a/stack/services/src/main/java/org/apache/usergrid/services/AbstractService.java b/stack/services/src/main/java/org/apache/usergrid/services/AbstractService.java index 957d7c7..569a58c 100644 --- a/stack/services/src/main/java/org/apache/usergrid/services/AbstractService.java +++ b/stack/services/src/main/java/org/apache/usergrid/services/AbstractService.java @@ -18,6 +18,7 @@ package org.apache.usergrid.services; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -28,6 +29,10 @@ import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; + +import org.apache.commons.lang.NotImplementedException; +import org.apache.shiro.subject.Subject; + import org.apache.usergrid.persistence.Entity; import org.apache.usergrid.persistence.EntityManager; import org.apache.usergrid.persistence.EntityRef; @@ -43,9 +48,6 @@ import org.apache.usergrid.services.exceptions.ServiceInvocationException; import org.apache.usergrid.services.exceptions.ServiceResourceNotFoundException; import org.apache.usergrid.services.exceptions.UnsupportedServiceOperationException; -import org.apache.commons.lang.NotImplementedException; -import org.apache.shiro.subject.Subject; - import static org.apache.usergrid.security.shiro.utils.SubjectUtils.getPermissionFromPath; import static org.apache.usergrid.services.ServiceParameter.filter; import static org.apache.usergrid.services.ServiceParameter.mergeQueries; @@ -484,7 +486,8 @@ public abstract class AbstractService implements Service { public Set<Object> getConnectedTypesSet( EntityRef ref ) throws Exception { - Set<Object> connections = em.getDictionaryAsSet( ref, Schema.DICTIONARY_CONNECTED_TYPES ); + final Set<String> connections = em.getConnectionsAsSource( ref ); + if ( connections == null ) { return null; } @@ -494,7 +497,7 @@ public abstract class AbstractService implements Service { connections.removeAll( privateConnections ); } if ( connections.size() > 0 ) { - return new LinkedHashSet<Object>( connections ); + return new HashSet<Object>( connections ); } } return null; @@ -502,7 +505,8 @@ public abstract class AbstractService implements Service { public Set<Object> getConnectingTypesSet( EntityRef ref ) throws Exception { - Set<Object> connections = em.getDictionaryAsSet( ref, Schema.DICTIONARY_CONNECTING_TYPES ); + final Set<String> connections = em.getConnectionsAsTarget( ref ); + if ( connections == null ) { return null; }