You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/01/28 23:21:29 UTC
[19/96] [abbrv] [partial] Change package namespace to
org.apache.usergrid
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/ConsumerTransaction.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/ConsumerTransaction.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/ConsumerTransaction.java
deleted file mode 100644
index 6466c47..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/ConsumerTransaction.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.usergrid.locking.Lock;
-import org.usergrid.locking.LockManager;
-import org.usergrid.locking.exception.UGLockException;
-import org.usergrid.mq.Message;
-import org.usergrid.mq.QueueQuery;
-import org.usergrid.mq.QueueResults;
-import org.usergrid.persistence.cassandra.CassandraService;
-import org.usergrid.persistence.exceptions.QueueException;
-import org.usergrid.persistence.exceptions.TransactionNotFoundException;
-import org.usergrid.utils.UUIDUtils;
-
-import me.prettyprint.hector.api.Keyspace;
-import me.prettyprint.hector.api.beans.HColumn;
-import me.prettyprint.hector.api.mutation.Mutator;
-import me.prettyprint.hector.api.query.SliceQuery;
-
-import static me.prettyprint.hector.api.factory.HFactory.createColumn;
-import static me.prettyprint.hector.api.factory.HFactory.createMutator;
-import static me.prettyprint.hector.api.factory.HFactory.createSliceQuery;
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getConsumerId;
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getQueueClientTransactionKey;
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getQueueId;
-import static org.usergrid.mq.cassandra.QueuesCF.CONSUMER_QUEUE_TIMEOUTS;
-
-
-/**
- * Reads from the queue and starts a transaction
- *
- * @author tnine
- */
-public class ConsumerTransaction extends NoTransactionSearch
-{
-
- private static final Logger logger = LoggerFactory.getLogger( ConsumerTransaction.class );
- private static final int MAX_READ = 10000;
- private final LockManager lockManager;
- private final UUID applicationId;
- protected final CassandraService cass;
-
- //timeout on reading lock
- private final int lockTimeout;
-
-
- /**
- * @param ko
- */
- public ConsumerTransaction( UUID applicationId, Keyspace ko, LockManager lockManager, CassandraService cass, int lockTimeout )
- {
- super( ko );
- this.applicationId = applicationId;
- this.lockManager = lockManager;
- this.cass = cass;
- this.lockTimeout = lockTimeout;
- }
-
-
- /**
- * Renew the existing transaction. Does so by deleting the exiting timeout, and replacing it with a new value
- *
- * @param queuePath The queue path
- * @param transactionId The transaction id
- * @param query The query params
- *
- * @return The new transaction uuid
- */
- public UUID renewTransaction( String queuePath, UUID transactionId, QueueQuery query )
- throws TransactionNotFoundException
- {
- long now = System.currentTimeMillis();
-
- if ( query == null )
- {
- query = new QueueQuery();
- }
-
- UUID queueId = getQueueId( queuePath );
- UUID consumerId = getConsumerId( queueId, query );
- ByteBuffer key = getQueueClientTransactionKey( queueId, consumerId );
-
- // read the original transaction, if it's not there, then we can't possibly
- // extend it
- SliceQuery<ByteBuffer, UUID, UUID> q = createSliceQuery( ko, be, ue, ue );
- q.setColumnFamily( CONSUMER_QUEUE_TIMEOUTS.getColumnFamily() );
- q.setKey( key );
- q.setColumnNames( transactionId );
-
- HColumn<UUID, UUID> col = q.execute().get().getColumnByName( transactionId );
-
- if ( col == null )
- {
- throw new TransactionNotFoundException(
- String.format( "No transaction with id %s exists", transactionId ) );
- }
-
- UUID origTrans = col.getName();
- UUID messageId = col.getValue();
-
- // Generate a new expiration and insert it
- UUID expirationId = UUIDUtils.newTimeUUID( now + query.getTimeout() );
-
- logger.debug( "Writing new timeout at '{}' for message '{}'", expirationId, messageId );
-
- Mutator<ByteBuffer> mutator = createMutator( ko, be );
-
- mutator.addInsertion( key, CONSUMER_QUEUE_TIMEOUTS.getColumnFamily(),
- createColumn( expirationId, messageId, cass.createTimestamp(), ue, ue ) );
-
- mutator.execute();
-
- // now delete the old value
- deleteTransaction( queueId, consumerId, origTrans );
-
- return expirationId;
- }
-
-
- /** Delete the specified transaction */
- public void deleteTransaction( String queuePath, UUID transactionId, QueueQuery query )
- {
-
- if ( query == null )
- {
- query = new QueueQuery();
- }
-
- UUID queueId = getQueueId( queuePath );
- UUID consumerId = getConsumerId( queueId, query );
-
- deleteTransaction( queueId, consumerId, transactionId );
- }
-
-
- /** Delete the specified transaction */
- private void deleteTransaction( UUID queueId, UUID consumerId, UUID transactionId )
- {
-
- Mutator<ByteBuffer> mutator = createMutator( ko, be );
- ByteBuffer key = getQueueClientTransactionKey( queueId, consumerId );
-
- mutator.addDeletion( key, CONSUMER_QUEUE_TIMEOUTS.getColumnFamily(), transactionId, ue,
- cass.createTimestamp() );
-
- mutator.execute();
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.usergrid.mq.cassandra.io.QueueSearch#getResults(java.lang.String,
- * org.usergrid.mq.QueueQuery)
- */
- @Override
- public QueueResults getResults( String queuePath, QueueQuery query )
- {
-
- UUID queueId = getQueueId( queuePath );
- UUID consumerId = getConsumerId( queueId, query );
-
- if ( query.getLimit() > MAX_READ )
- {
- throw new IllegalArgumentException( String.format(
- "You specified a size of %d, you cannot specify a size larger than %d when using transations",
- query.getLimit( DEFAULT_READ ), MAX_READ ) );
- }
-
- QueueResults results = null;
-
- Lock lock = lockManager.createLock( applicationId, queueId.toString(), consumerId.toString() );
-
- try
- {
-
- //only try to get a lock with a timeout, if we can't bail
- if(!lock.tryLock(lockTimeout, TimeUnit.SECONDS)){
- throw new QueueException( "Unable to obtain a lock on queue '" + queuePath + "' after '" + lockTimeout + "'seconds" );
- }
-
- long startTime = System.currentTimeMillis();
-
- UUID startTimeUUID = UUIDUtils.newTimeUUID( startTime, 0 );
-
- QueueBounds bounds = getQueueBounds( queueId );
-
- //queue has never been written to
- if ( bounds == null )
- {
- return createResults( new ArrayList<Message>( 0 ), queuePath, queueId, consumerId );
- }
-
- // with transactional reads, we can't read into the future, set the bounds
- // to be now
- bounds = new QueueBounds( bounds.getOldest(), startTimeUUID );
-
- SearchParam params = getParams( queueId, consumerId, query );
-
- List<UUID> ids = getQueueRange( queueId, bounds, params );
-
- // get a list of ids from the consumer.
-
- List<TransactionPointer> pointers = getConsumerIds( queueId, consumerId, params, startTimeUUID );
-
- TransactionPointer pointer = null;
-
- int lastTransactionIndex = -1;
-
- for ( int i = 0; i < pointers.size(); i++ )
- {
-
- pointer = pointers.get( i );
-
- int insertIndex = Collections.binarySearch( ids, pointer.expiration );
-
- // we're done, this message goes at the end, no point in continuing
- // since
- // we have our full result set
- if ( insertIndex <= params.limit * -1 - 1 )
- {
- break;
- }
-
- // get the insertion index into the set
- insertIndex = ( insertIndex + 1 ) * -1;
-
- ids.add( insertIndex, pointer.targetMessage );
-
- lastTransactionIndex = i;
- }
-
- // now we've merge the results, trim them to size;
- if ( ids.size() > params.limit )
- {
- ids = ids.subList( 0, params.limit );
- }
-
- // load the messages
- List<Message> messages = loadMessages( ids, params.reversed );
-
- // write our future timeouts for all these messages
- writeTransactions( messages, query.getTimeout() + startTime, queueId, consumerId );
-
- // remove all read transaction pointers
- deleteTransactionPointers( pointers, lastTransactionIndex + 1, queueId, consumerId );
-
- // return the results
- results = createResults( messages, queuePath, queueId, consumerId );
-
- UUID lastReadTransactionPointer =
- lastTransactionIndex == -1 ? null : pointers.get( lastTransactionIndex ).expiration;
-
- UUID lastId = messages.size() == 0 ? null : messages.get( messages.size() - 1 ).getUuid();
-
- // our last read id will either be the last read transaction pointer, or
- // the
- // last read messages uuid, whichever is greater
- UUID lastReadId = UUIDUtils.max( lastReadTransactionPointer, lastId );
-
- writeClientPointer( queueId, consumerId, lastReadId );
- }
- catch ( UGLockException e )
- {
- logger.debug( "Unable to acquire lock", e );
- throw new QueueException( "Unable to acquire lock", e );
- }
- finally
- {
- try
- {
- lock.unlock();
- }
- catch ( UGLockException e )
- {
- logger.debug( "Unable to release lock", e );
- throw new QueueException( "Unable to release lock", e );
- }
- }
-
- return results;
- }
-
-
- /**
- * Get all pending transactions that have timed out
- *
- * @param queueId The queue id
- * @param consumerId The consumer id
- * @param params The server params
- * @param startTimeUUID The start time
- */
- protected List<TransactionPointer> getConsumerIds( UUID queueId, UUID consumerId, SearchParam params,
- UUID startTimeUUID )
- {
-
- SliceQuery<ByteBuffer, UUID, UUID> q = createSliceQuery( ko, be, ue, ue );
- q.setColumnFamily( CONSUMER_QUEUE_TIMEOUTS.getColumnFamily() );
- q.setKey( getQueueClientTransactionKey( queueId, consumerId ) );
- q.setRange( params.startId, startTimeUUID, false, params.limit + 1 );
-
- List<HColumn<UUID, UUID>> cassResults = q.execute().get().getColumns();
-
- List<TransactionPointer> results = new ArrayList<TransactionPointer>( params.limit );
-
- for ( HColumn<UUID, UUID> column : cassResults )
- {
-
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Adding uuid '{}' for original message '{}' to results for queue '{}' and consumer '{}'",
- new Object[] { column.getName(), column.getValue(), queueId, consumerId } );
- logger.debug( "Max timeuuid : '{}', Current timeuuid : '{}', comparison '{}'", new Object[] {
- startTimeUUID, column.getName(), UUIDUtils.compare( startTimeUUID, column.getName() )
- } );
- }
-
- results.add( new TransactionPointer( column.getName(), column.getValue() ) );
- }
-
- return results;
- }
-
-
- public boolean hasOutstandingTransactions( UUID queueId, UUID consumerId )
- {
- SliceQuery<ByteBuffer, UUID, UUID> q = createSliceQuery( ko, be, ue, ue );
- q.setColumnFamily( CONSUMER_QUEUE_TIMEOUTS.getColumnFamily() );
- q.setKey( getQueueClientTransactionKey( queueId, consumerId ) );
- q.setRange( null, null, false, 1 );
- return q.execute().get().getColumns().size() > 0;
- }
-
-
- /**
- * Delete all re-read transaction pointers
- *
- * @param pointers The list of transaction pointers
- * @param maxIndex The index to stop at (exclusive)
- * @param queueId The queue id
- * @param consumerId The consumer id
- */
- protected void deleteTransactionPointers( List<TransactionPointer> pointers, int maxIndex, UUID queueId,
- UUID consumerId )
- {
-
- if ( maxIndex == 0 || pointers.size() == 0 )
- {
- return;
- }
-
- Mutator<ByteBuffer> mutator = createMutator( ko, be );
- ByteBuffer key = getQueueClientTransactionKey( queueId, consumerId );
-
- for ( int i = 0; i < maxIndex && i < pointers.size(); i++ )
- {
- UUID pointer = pointers.get( i ).expiration;
-
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Removing transaction pointer '{}' for queue '{}' and consumer '{}'", new Object[] {
- pointer, queueId, consumerId
- } );
- }
-
- mutator.addDeletion( key, CONSUMER_QUEUE_TIMEOUTS.getColumnFamily(), pointer, ue, cass.createTimestamp() );
- }
-
- mutator.execute();
- }
-
-
- /**
- * Write the transaction timeouts
- *
- * @param messages The messages to load
- * @param futureTimeout The time these message should expire
- * @param queueId The queue UUId
- * @param consumerId The consumer Id
- */
- protected void writeTransactions( List<Message> messages, final long futureTimeout, UUID queueId, UUID consumerId )
- {
-
- Mutator<ByteBuffer> mutator = createMutator( ko, be );
-
- ByteBuffer key = getQueueClientTransactionKey( queueId, consumerId );
-
- int counter = 0;
-
- long time = cass.createTimestamp();
-
- for ( Message message : messages )
- {
- // note we're not incrementing futureSnapshot on purpose. The uuid
- // generation should give us a sequenced unique ID for each response, even
- // if the
- // time is the same since we increment the counter. If we read more than
- // 10k messages in a single transaction, our millisecond will roll to the
- // next due to 10k being the max amount of 1/10 microsecond headroom. Not
- // possible to avoid this given the way time uuids are encoded.
- UUID expirationId = UUIDUtils.newTimeUUID( futureTimeout, counter );
- UUID messageId = message.getUuid();
-
- logger.debug( "Writing new timeout at '{}' for message '{}'", expirationId, messageId );
-
- mutator.addInsertion( key, CONSUMER_QUEUE_TIMEOUTS.getColumnFamily(),
- createColumn( expirationId, messageId, time, ue, ue ) );
-
- // add the transactionid to the message
- message.setTransaction( expirationId );
- counter++;
- }
-
- mutator.execute();
- }
-
-
- private static class TransactionPointer
- {
- private UUID expiration;
- private UUID targetMessage;
-
-
- /**
- * @param expiration
- * @param targetMessage
- */
- public TransactionPointer( UUID expiration, UUID targetMessage )
- {
- super();
- this.expiration = expiration;
- this.targetMessage = targetMessage;
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString()
- {
- return "TransactionPointer [expiration=" + expiration + ", targetMessage=" + targetMessage + "]";
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/EndSearch.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/EndSearch.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/EndSearch.java
deleted file mode 100644
index 4ca09aa..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/EndSearch.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import java.util.UUID;
-
-import org.usergrid.mq.QueueQuery;
-
-import me.prettyprint.hector.api.Keyspace;
-
-
-/**
- * Reads from the queue without starting transactions.
- *
- * @author tnine
- */
-public class EndSearch extends NoTransactionSearch
-{
-
- /**
- * @param ko
- * @param cassTimestamp
- */
- public EndSearch( Keyspace ko )
- {
- super( ko );
- } /*
- * (non-Javadoc)
- *
- * @see org.usergrid.mq.cassandra.io.NoTransaction#getParams(java.util.UUID,
- * java.util.UUID, org.usergrid.mq.QueueQuery)
- */
-
-
- @Override
- protected SearchParam getParams( UUID queueId, UUID consumerId, QueueQuery query )
- {
- UUID lastMessageId = query.getLastMessageId();
- return new SearchParam( lastMessageId, true, lastMessageId != null, query.getLimit( DEFAULT_READ ) );
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.usergrid.mq.cassandra.io.FifoSearch#writeClientPointer(java.util.UUID,
- * java.util.UUID, java.util.UUID)
- */
- @Override
- protected void writeClientPointer( UUID queueId, UUID consumerId, UUID lastReturnedId )
- {
- // no op for searches from the end
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/FilterSearch.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/FilterSearch.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/FilterSearch.java
deleted file mode 100644
index 0f629a3..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/FilterSearch.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import java.nio.ByteBuffer;
-import java.util.Iterator;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.usergrid.mq.Message;
-import org.usergrid.mq.QueryProcessor;
-import org.usergrid.mq.QueryProcessor.QuerySlice;
-import org.usergrid.mq.QueueQuery;
-import org.usergrid.mq.QueueResults;
-
-import com.fasterxml.uuid.UUIDComparator;
-
-import me.prettyprint.hector.api.Keyspace;
-import me.prettyprint.hector.api.beans.AbstractComposite.ComponentEquality;
-import me.prettyprint.hector.api.beans.DynamicComposite;
-import me.prettyprint.hector.api.beans.HColumn;
-
-import static me.prettyprint.hector.api.factory.HFactory.createSliceQuery;
-import static org.usergrid.mq.Queue.getQueueId;
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getConsumerId;
-import static org.usergrid.mq.cassandra.QueueManagerImpl.DEFAULT_SEARCH_COUNT;
-import static org.usergrid.mq.cassandra.QueueManagerImpl.QUEUE_SHARD_INTERVAL;
-import static org.usergrid.mq.cassandra.QueuesCF.PROPERTY_INDEX;
-import static org.usergrid.persistence.cassandra.CassandraPersistenceUtils.key;
-import static org.usergrid.utils.CompositeUtils.setEqualityFlag;
-import static org.usergrid.utils.ConversionUtils.bytebuffer;
-import static org.usergrid.utils.NumberUtils.roundLong;
-import static org.usergrid.utils.UUIDUtils.getTimestampInMillis;
-
-
-/**
- * Searches in the queue without transactions
- *
- * @author tnine
- */
-public class FilterSearch extends NoTransactionSearch
-{
-
- private static final Logger logger = LoggerFactory.getLogger( FilterSearch.class );
-
-
- /**
- *
- */
- public FilterSearch( Keyspace ko )
- {
- super( ko );
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.usergrid.mq.cassandra.io.QueueSearch#getResults(java.lang.String,
- * org.usergrid.mq.QueueQuery)
- */
- @Override
- public QueueResults getResults( String queuePath, QueueQuery query )
- {
-
- QueryProcessor qp = new QueryProcessor( query );
- List<QuerySlice> slices = qp.getSlices();
-
- long limit = query.getLimit();
-
- UUID queueId = getQueueId( queuePath );
- UUID consumerId = getConsumerId( queueId, query );
- QueueBounds bounds = getQueueBounds( queueId );
-
- UUIDComparator comparator = query.isReversed() ? new ReverseUUIDComparator() : new UUIDComparator();
-
- SortedSet<UUID> merged = null;
-
- for ( QuerySlice slice : slices )
- {
- SortedSet<UUID> results =
- searchQueueRange( ko, queueId, bounds, slice, query.getLastMessageId(), query.isReversed(),
- comparator );
-
- if ( merged == null )
- {
- merged = results;
- }
- else
- {
- merged.retainAll( results );
- }
- }
-
- // now trim. Not efficient, but when indexing is updated, seeking will
- // change, so I'm not worried about this.
- if ( merged.size() > limit )
- {
- Iterator<UUID> current = merged.iterator();
- UUID max = null;
-
-
- for ( int i = 0; i <= limit && current.hasNext(); i++ )
- {
- max = current.next();
- }
-
- merged = merged.headSet( max );
- }
-
- List<Message> messages = loadMessages( merged, query.isReversed() );
-
- QueueResults results = createResults( messages, queuePath, queueId, consumerId );
-
- return results;
- }
-
-
- public SortedSet<UUID> searchQueueRange( Keyspace ko, UUID queueId, QueueBounds bounds, QuerySlice slice, UUID last,
- boolean reversed, UUIDComparator comparator )
- {
-
- TreeSet<UUID> uuid_set = new TreeSet<UUID>( comparator );
-
- if ( bounds == null )
- {
- logger.error( "Necessary queue bounds not found" );
- return uuid_set;
- }
-
- UUID start_uuid = reversed ? bounds.getNewest() : bounds.getOldest();
-
- UUID finish_uuid = reversed ? bounds.getOldest() : bounds.getNewest();
-
- if ( last != null )
- {
- start_uuid = last;
- }
-
-
- if ( finish_uuid == null )
- {
- logger.error( "No last message in queue" );
- return uuid_set;
- }
-
- long start_ts_shard = roundLong( getTimestampInMillis( start_uuid ), QUEUE_SHARD_INTERVAL );
-
- long finish_ts_shard = roundLong( getTimestampInMillis( finish_uuid ), QUEUE_SHARD_INTERVAL );
-
- long current_ts_shard = start_ts_shard;
-
- if ( reversed )
- {
- current_ts_shard = finish_ts_shard;
- }
-
- ByteBuffer start = null;
- if ( slice.getCursor() != null )
- {
- start = slice.getCursor();
- }
- else if ( slice.getStart() != null )
- {
- DynamicComposite s = new DynamicComposite( slice.getStart().getCode(), slice.getStart().getValue() );
- if ( !slice.getStart().isInclusive() )
- {
- setEqualityFlag( s, ComponentEquality.GREATER_THAN_EQUAL );
- }
- start = s.serialize();
- }
-
- ByteBuffer finish = null;
- if ( slice.getFinish() != null )
- {
- DynamicComposite f = new DynamicComposite( slice.getFinish().getCode(), slice.getFinish().getValue() );
- if ( slice.getFinish().isInclusive() )
- {
- setEqualityFlag( f, ComponentEquality.GREATER_THAN_EQUAL );
- }
- finish = f.serialize();
- }
-
- while ( ( current_ts_shard >= start_ts_shard ) && ( current_ts_shard <= finish_ts_shard ) && ( uuid_set.size()
- < DEFAULT_SEARCH_COUNT ) )
- {
-
- while ( true )
- {
- List<HColumn<ByteBuffer, ByteBuffer>> results =
- createSliceQuery( ko, be, be, be ).setColumnFamily( PROPERTY_INDEX.getColumnFamily() )
- .setKey( bytebuffer( key( queueId, current_ts_shard, slice.getPropertyName() ) ) )
- .setRange( start, finish, false, DEFAULT_SEARCH_COUNT ).execute().get().getColumns();
-
- for ( HColumn<ByteBuffer, ByteBuffer> column : results )
- {
- DynamicComposite c = DynamicComposite.fromByteBuffer( column.getName().duplicate() );
- UUID uuid = c.get( 2, ue );
-
- uuid_set.add( uuid );
- }
-
- if ( results.size() < DEFAULT_SEARCH_COUNT )
- {
- break;
- }
-
- start = results.get( results.size() - 1 ).getName().duplicate();
- }
-
- if ( reversed )
- {
- current_ts_shard -= QUEUE_SHARD_INTERVAL;
- }
- else
- {
- current_ts_shard += QUEUE_SHARD_INTERVAL;
- }
- }
-
- // trim the results
- return uuid_set.headSet( finish_uuid ).tailSet( start_uuid );
- }
-
-
- private static class ReverseUUIDComparator extends UUIDComparator
- {
-
- /*
- * (non-Javadoc)
- *
- * @see com.fasterxml.uuid.UUIDComparator#compare(java.util.UUID,
- * java.util.UUID)
- */
- @Override
- public int compare( UUID u1, UUID u2 )
- {
- return super.compare( u1, u2 ) * -1;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/NoTransactionSearch.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/NoTransactionSearch.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/NoTransactionSearch.java
deleted file mode 100644
index 3ac4f6f..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/NoTransactionSearch.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import java.util.List;
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.usergrid.mq.Message;
-import org.usergrid.mq.QueueQuery;
-import org.usergrid.mq.QueueResults;
-
-import me.prettyprint.hector.api.Keyspace;
-
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getConsumerId;
-import static org.usergrid.mq.cassandra.CassandraMQUtils.getQueueId;
-
-
-/**
- * Reads from the queue without starting transactions.
- *
- * @author tnine
- */
-public class NoTransactionSearch extends AbstractSearch
-{
-
- private static final Logger logger = LoggerFactory.getLogger( NoTransactionSearch.class );
-
- protected static final int DEFAULT_READ = 1;
-
-
- /**
- * @param ko
- */
- public NoTransactionSearch( Keyspace ko )
- {
- super( ko );
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.usergrid.mq.cassandra.io.QueueSearch#getResults(java.lang.String,
- * org.usergrid.mq.QueueQuery)
- */
- @Override
- public QueueResults getResults( String queuePath, QueueQuery query )
- {
-
- UUID queueId = getQueueId( queuePath );
- UUID consumerId = getConsumerId( queueId, query );
- QueueBounds bounds = getQueueBounds( queueId );
- SearchParam params = getParams( queueId, consumerId, query );
-
- List<UUID> ids = getIds( queueId, consumerId, bounds, params );
-
- List<Message> messages = loadMessages( ids, params.reversed );
-
- QueueResults results = createResults( messages, queuePath, queueId, consumerId );
-
- writeClientPointer( queueId, consumerId, results.getLast() );
-
- return results;
- }
-
-
- /** Get information for reading no transactionally from the query. Subclasses can override this behavior */
- protected SearchParam getParams( UUID queueId, UUID consumerId, QueueQuery query )
- {
- UUID lastReadMessageId = getConsumerQueuePosition( queueId, consumerId );
-
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Last message id is '{}' for queueId '{}' and clientId '{}'",
- new Object[] { lastReadMessageId, queueId, consumerId } );
- }
-
- return new SearchParam( lastReadMessageId, false, lastReadMessageId != null, query.getLimit( DEFAULT_READ ) );
- }
-
-
- /** Get the list of ids we should load and return to the client. Message ids should be in order on return */
- protected List<UUID> getIds( UUID queueId, UUID consumerId, QueueBounds bounds, SearchParam params )
- {
- return getQueueRange( queueId, bounds, params );
- }
-
-
- protected static class SearchParam
- {
-
- /** The uuid to start seeking from */
- protected final UUID startId;
-
- /** true if we should seek from high to low */
- protected final boolean reversed;
- /** The number of results to include */
- protected final int limit;
- /** true if the first result should be skipped. Useful for paging from a previous result */
- protected final boolean skipFirst;
-
-
- /**
- * @param startId
- * @param reversed
- * @param count
- */
- public SearchParam( UUID startId, boolean reversed, boolean skipFirst, int count )
- {
- this.startId = startId;
- this.reversed = reversed;
- this.skipFirst = skipFirst;
- this.limit = count;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueBounds.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueBounds.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueBounds.java
deleted file mode 100644
index df5121b..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueBounds.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.usergrid.mq.cassandra.io;
-
-
-import java.util.UUID;
-
-
-public class QueueBounds
-{
-
- private final UUID oldest;
- private final UUID newest;
-
-
- public QueueBounds( UUID oldest, UUID newest )
- {
- this.oldest = oldest;
- this.newest = newest;
- }
-
-
- public UUID getOldest()
- {
- return oldest;
- }
-
-
- public UUID getNewest()
- {
- return newest;
- }
-
-
- @Override
- public int hashCode()
- {
- final int prime = 31;
- int result = 1;
- result = ( prime * result ) + ( ( newest == null ) ? 0 : newest.hashCode() );
- result = ( prime * result ) + ( ( oldest == null ) ? 0 : oldest.hashCode() );
- return result;
- }
-
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null )
- {
- return false;
- }
- if ( getClass() != obj.getClass() )
- {
- return false;
- }
- QueueBounds other = ( QueueBounds ) obj;
- if ( newest == null )
- {
- if ( other.newest != null )
- {
- return false;
- }
- }
- else if ( !newest.equals( other.newest ) )
- {
- return false;
- }
- if ( oldest == null )
- {
- if ( other.oldest != null )
- {
- return false;
- }
- }
- else if ( !oldest.equals( other.oldest ) )
- {
- return false;
- }
- return true;
- }
-
-
- @Override
- public String toString()
- {
- return "QueueBounds [oldest=" + oldest + ", newest=" + newest + "]";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueSearch.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueSearch.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueSearch.java
deleted file mode 100644
index 6832418..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/QueueSearch.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import org.usergrid.mq.QueueQuery;
-import org.usergrid.mq.QueueResults;
-
-
-/** @author tnine */
-public interface QueueSearch
-{
-
- /** Get the results for this queue search */
- public QueueResults getResults( String queuePath, QueueQuery query );
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/mq/cassandra/io/StartSearch.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/StartSearch.java b/stack/core/src/main/java/org/usergrid/mq/cassandra/io/StartSearch.java
deleted file mode 100644
index fbef8dd..0000000
--- a/stack/core/src/main/java/org/usergrid/mq/cassandra/io/StartSearch.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.mq.cassandra.io;
-
-
-import java.util.UUID;
-
-import org.usergrid.mq.QueueQuery;
-
-import me.prettyprint.hector.api.Keyspace;
-
-
-/**
- * Reads from the queue without starting transactions.
- *
- * @author tnine
- */
-public class StartSearch extends NoTransactionSearch
-{
-
- /**
- * @param ko
- * @param cassTimestamp
- */
- public StartSearch( Keyspace ko )
- {
- super( ko );
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.usergrid.mq.cassandra.io.NoTransaction#getParams(java.util.UUID,
- * java.util.UUID, org.usergrid.mq.QueueQuery)
- */
- @Override
- protected SearchParam getParams( UUID queueId, UUID consumerId, QueueQuery query )
- {
- UUID lastMessageId = query.getLastMessageId();
-
-
- return new SearchParam( lastMessageId, false, lastMessageId != null, query.getLimit( DEFAULT_READ ) );
- }
-
-
- /* (non-Javadoc)
- * @see org.usergrid.mq.cassandra.io.FifoSearch#writeClientPointer(java.util.UUID, java.util.UUID, java.util.UUID)
- */
- @Override
- protected void writeClientPointer( UUID queueId, UUID consumerId, UUID lastReturnedId )
- {
- //no op for searches from the start
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/AbstractEntity.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/AbstractEntity.java b/stack/core/src/main/java/org/usergrid/persistence/AbstractEntity.java
deleted file mode 100644
index 4c7e9c3..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/AbstractEntity.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.UUID;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.codehaus.jackson.annotate.JsonAnyGetter;
-import org.codehaus.jackson.annotate.JsonAnySetter;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-import org.usergrid.persistence.annotations.EntityProperty;
-
-import static org.usergrid.persistence.Schema.PROPERTY_NAME;
-
-
-/**
- * The abstract superclass implementation of the Entity interface.
- *
- * @author edanuff
- */
-@XmlRootElement
-public abstract class AbstractEntity implements Entity {
-
- protected UUID uuid;
-
- protected Long created;
-
- protected Long modified;
-
- protected Map<String, Object> dynamic_properties = new TreeMap<String, Object>( String.CASE_INSENSITIVE_ORDER );
-
- protected Map<String, Set<Object>> dynamic_sets = new TreeMap<String, Set<Object>>( String.CASE_INSENSITIVE_ORDER );
-
-
- @Override
- @EntityProperty(required = true, mutable = false, basic = true, indexed = false)
- @JsonSerialize(include = Inclusion.NON_NULL)
- public UUID getUuid() {
- return uuid;
- }
-
-
- @Override
- public void setUuid( UUID uuid ) {
- this.uuid = uuid;
- }
-
-
- @Override
- @EntityProperty(required = true, mutable = false, basic = true, indexed = false)
- public String getType() {
- return Schema.getDefaultSchema().getEntityType( this.getClass() );
- }
-
-
- @Override
- public void setType( String type ) {
- }
-
-
- @Override
- @EntityProperty(indexed = true, required = true, mutable = false)
- @JsonSerialize(include = Inclusion.NON_NULL)
- public Long getCreated() {
- return created;
- }
-
-
- @Override
- public void setCreated( Long created ) {
- if ( created == null ) {
- created = System.currentTimeMillis();
- }
- this.created = created;
- }
-
-
- @Override
- @EntityProperty(indexed = true, required = true, mutable = true)
- @JsonSerialize(include = Inclusion.NON_NULL)
- public Long getModified() {
- return modified;
- }
-
-
- @Override
- public void setModified( Long modified ) {
- if ( modified == null ) {
- modified = System.currentTimeMillis();
- }
- this.modified = modified;
- }
-
-
- @Override
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getName() {
- Object value = getProperty( PROPERTY_NAME );
-
- if ( value instanceof UUID ) {
- // fixes existing data that uses UUID in USERGRID-2099
- return value.toString();
- }
-
- return ( String ) value;
- }
-
-
- @Override
- @JsonIgnore
- public Map<String, Object> getProperties() {
- return Schema.getDefaultSchema().getEntityProperties( this );
- }
-
-
- @Override
- public final Object getProperty( String propertyName ) {
- return Schema.getDefaultSchema().getEntityProperty( this, propertyName );
- }
-
-
- @Override
- public final void setProperty( String propertyName, Object propertyValue ) {
- Schema.getDefaultSchema().setEntityProperty( this, propertyName, propertyValue );
- }
-
-
- @Override
- public void setProperties( Map<String, Object> properties ) {
- dynamic_properties = new TreeMap<String, Object>( String.CASE_INSENSITIVE_ORDER );
- addProperties( properties );
- }
-
-
- @Override
- public void addProperties( Map<String, Object> properties ) {
- if ( properties == null ) {
- return;
- }
- for ( Entry<String, Object> entry : properties.entrySet() ) {
- setProperty( entry.getKey(), entry.getValue() );
- }
- }
-
-
- @Override
- @JsonSerialize(include = Inclusion.NON_NULL)
- public Object getMetadata( String key ) {
- return getDataset( "metadata", key );
- }
-
-
- @Override
- public void setMetadata( String key, Object value ) {
- setDataset( "metadata", key, value );
- }
-
-
- @Override
- public void mergeMetadata( Map<String, Object> new_metadata ) {
- mergeDataset( "metadata", new_metadata );
- }
-
-
- @Override
- public void clearMetadata() {
- clearDataset( "metadata" );
- }
-
-
- public <T> T getDataset( String property, String key ) {
- Object md = dynamic_properties.get( property );
- if ( md == null ) {
- return null;
- }
- if ( !( md instanceof Map<?, ?> ) ) {
- return null;
- }
- @SuppressWarnings("unchecked") Map<String, T> metadata = ( Map<String, T> ) md;
- return metadata.get( key );
- }
-
-
- public <T> void setDataset( String property, String key, T value ) {
- if ( key == null ) {
- return;
- }
- Object md = dynamic_properties.get( property );
- if ( !( md instanceof Map<?, ?> ) ) {
- md = new HashMap<String, T>();
- dynamic_properties.put( property, md );
- }
- @SuppressWarnings("unchecked") Map<String, T> metadata = ( Map<String, T> ) md;
- metadata.put( key, value );
- }
-
-
- public <T> void mergeDataset( String property, Map<String, T> new_metadata ) {
- Object md = dynamic_properties.get( property );
- if ( !( md instanceof Map<?, ?> ) ) {
- md = new HashMap<String, T>();
- dynamic_properties.put( property, md );
- }
- @SuppressWarnings("unchecked") Map<String, T> metadata = ( Map<String, T> ) md;
- metadata.putAll( new_metadata );
- }
-
-
- public void clearDataset( String property ) {
- dynamic_properties.remove( property );
- }
-
-
- @Override
- public List<Entity> getCollections( String key ) {
- return getDataset( "collections", key );
- }
-
-
- @Override
- public void setCollections( String key, List<Entity> results ) {
- setDataset( "collections", key, results );
- }
-
-
- @Override
- public List<Entity> getConnections( String key ) {
- return getDataset( "connections", key );
- }
-
-
- @Override
- public void setConnections( String key, List<Entity> results ) {
- setDataset( "connections", key, results );
- }
-
-
- @Override
- public String toString() {
- return "Entity(" + getProperties() + ")";
- }
-
-
- @Override
- @JsonAnySetter
- public void setDynamicProperty( String key, Object value ) {
- dynamic_properties.put( key, value );
- }
-
-
- @Override
- @JsonAnyGetter
- public Map<String, Object> getDynamicProperties() {
- return dynamic_properties;
- }
-
-
- @Override
- public final int compareTo( Entity o ) {
- if ( o == null ) {
- return 1;
- }
- try {
- long t1 = getUuid().timestamp();
- long t2 = o.getUuid().timestamp();
- return ( t1 < t2 ) ? -1 : ( t1 == t2 ) ? 0 : 1;
- }
- catch ( UnsupportedOperationException e ) {
- }
- return getUuid().compareTo( o.getUuid() );
- }
-
-
- @Override
- public Entity toTypedEntity() {
- Entity entity = EntityFactory.newEntity( getUuid(), getType() );
- entity.setProperties( getProperties() );
- return entity;
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( uuid == null ) ? 0 : uuid.hashCode() );
- return result;
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals( Object obj ) {
- if ( this == obj ) {
- return true;
- }
- if ( obj == null ) {
- return false;
- }
- if ( getClass() != obj.getClass() ) {
- return false;
- }
- AbstractEntity other = ( AbstractEntity ) obj;
- if ( uuid == null ) {
- if ( other.uuid != null ) {
- return false;
- }
- }
- else if ( !uuid.equals( other.uuid ) ) {
- return false;
- }
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/AggregateCounter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/AggregateCounter.java b/stack/core/src/main/java/org/usergrid/persistence/AggregateCounter.java
deleted file mode 100644
index b78234a..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/AggregateCounter.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-public class AggregateCounter {
- private long timestamp;
- private long value;
-
-
- public AggregateCounter( long timestamp, long value ) {
- this.timestamp = timestamp;
- this.value = value;
- }
-
-
- public long getTimestamp() {
- return timestamp;
- }
-
-
- public void setTimestamp( long timestamp ) {
- this.timestamp = timestamp;
- }
-
-
- public long getValue() {
- return value;
- }
-
-
- public void setValue( long value ) {
- this.value = value;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/AggregateCounterSet.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/AggregateCounterSet.java b/stack/core/src/main/java/org/usergrid/persistence/AggregateCounterSet.java
deleted file mode 100644
index 44c1d34..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/AggregateCounterSet.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.List;
-import java.util.UUID;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-
-public class AggregateCounterSet {
- private String name;
- private UUID user;
- private UUID group;
- private UUID queue;
- private String category;
- private List<AggregateCounter> values;
-
-
- public AggregateCounterSet( String name, UUID user, UUID group, String category, List<AggregateCounter> values ) {
- this.name = name;
- this.user = user;
- this.group = group;
- this.category = category;
- this.values = values;
- }
-
-
- public AggregateCounterSet( String name, UUID queue, String category, List<AggregateCounter> values ) {
- this.name = name;
- setQueue( queue );
- this.category = category;
- this.values = values;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public UUID getUser() {
- return user;
- }
-
-
- public void setUser( UUID user ) {
- this.user = user;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public UUID getGroup() {
- return group;
- }
-
-
- public void setGroup( UUID group ) {
- this.group = group;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getCategory() {
- return category;
- }
-
-
- public void setCategory( String category ) {
- this.category = category;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getName() {
- return name;
- }
-
-
- public void setName( String name ) {
- this.name = name;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public List<AggregateCounter> getValues() {
- return values;
- }
-
-
- public void setValues( List<AggregateCounter> values ) {
- this.values = values;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public UUID getQueue() {
- return queue;
- }
-
-
- public void setQueue( UUID queue ) {
- this.queue = queue;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/AssociatedEntityRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/AssociatedEntityRef.java b/stack/core/src/main/java/org/usergrid/persistence/AssociatedEntityRef.java
deleted file mode 100644
index 27eda53..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/AssociatedEntityRef.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-public interface AssociatedEntityRef extends EntityRef {
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/CollectionRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/CollectionRef.java b/stack/core/src/main/java/org/usergrid/persistence/CollectionRef.java
deleted file mode 100644
index 13b2712..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/CollectionRef.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-public interface CollectionRef extends AssociatedEntityRef {
-
- public EntityRef getOwnerEntity();
-
- public String getCollectionName();
-
- public EntityRef getItemRef();
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/ConnectedEntityRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/ConnectedEntityRef.java b/stack/core/src/main/java/org/usergrid/persistence/ConnectedEntityRef.java
deleted file mode 100644
index fb734a5..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/ConnectedEntityRef.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-public interface ConnectedEntityRef extends EntityRef {
-
- public String getConnectionType();
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/ConnectionRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/ConnectionRef.java b/stack/core/src/main/java/org/usergrid/persistence/ConnectionRef.java
deleted file mode 100644
index 10ae473..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/ConnectionRef.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.List;
-
-
-/**
- * Connection tuple
- *
- * @author edanuff
- */
-public interface ConnectionRef extends ConnectedEntityRef, AssociatedEntityRef {
-
- public EntityRef getConnectingEntity();
-
- public List<ConnectedEntityRef> getPairedConnections();
-
- public ConnectedEntityRef getConnectedEntity();
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/CounterQuery.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/CounterQuery.java b/stack/core/src/main/java/org/usergrid/persistence/CounterQuery.java
deleted file mode 100644
index 9c645ce..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/CounterQuery.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.usergrid.persistence.Query.CounterFilterPredicate;
-import org.usergrid.utils.JsonUtils;
-
-import static org.usergrid.utils.ClassUtils.cast;
-import static org.usergrid.utils.ListUtils.firstBoolean;
-import static org.usergrid.utils.ListUtils.firstInteger;
-import static org.usergrid.utils.ListUtils.firstLong;
-import static org.usergrid.utils.ListUtils.isEmpty;
-import static org.usergrid.utils.MapUtils.toMapList;
-
-
-public class CounterQuery {
-
- public static final Logger logger = LoggerFactory.getLogger( CounterQuery.class );
-
- public static final int DEFAULT_MAX_RESULTS = 10;
-
- private int limit = 0;
- boolean limitSet = false;
-
- private Long startTime;
- private Long finishTime;
- private boolean pad;
- private CounterResolution resolution = CounterResolution.ALL;
- private List<String> categories;
- private List<CounterFilterPredicate> counterFilters;
-
-
- public CounterQuery() {
- }
-
-
- public CounterQuery( CounterQuery q ) {
- if ( q != null ) {
- limit = q.limit;
- limitSet = q.limitSet;
- startTime = q.startTime;
- finishTime = q.finishTime;
- resolution = q.resolution;
- pad = q.pad;
- categories = q.categories != null ? new ArrayList<String>( q.categories ) : null;
- counterFilters =
- q.counterFilters != null ? new ArrayList<CounterFilterPredicate>( q.counterFilters ) : null;
- }
- }
-
-
- public static CounterQuery newQueryIfNull( CounterQuery query ) {
- if ( query == null ) {
- query = new CounterQuery();
- }
- return query;
- }
-
-
- public static CounterQuery fromJsonString( String json ) {
- Object o = JsonUtils.parse( json );
- if ( o instanceof Map ) {
- @SuppressWarnings({ "unchecked", "rawtypes" }) Map<String, List<String>> params =
- cast( toMapList( ( Map ) o ) );
- return fromQueryParams( params );
- }
- return null;
- }
-
-
- public static CounterQuery fromQueryParams( Map<String, List<String>> params ) {
-
- CounterQuery q = null;
- Integer limit = null;
- Long startTime = null;
- Long finishTime = null;
- Boolean pad = null;
- CounterResolution resolution = null;
- List<CounterFilterPredicate> counterFilters = null;
- List<String> categories = null;
-
- List<String> l = null;
-
- limit = firstInteger( params.get( "limit" ) );
- startTime = firstLong( params.get( "start_time" ) );
- finishTime = firstLong( params.get( "end_time" ) );
-
- l = params.get( "resolution" );
- if ( !isEmpty( l ) ) {
- resolution = CounterResolution.fromString( l.get( 0 ) );
- }
-
- categories = params.get( "category" );
-
- l = params.get( "counter" );
- if ( !isEmpty( l ) ) {
- counterFilters = CounterFilterPredicate.fromList( l );
- }
-
- pad = firstBoolean( params.get( "pad" ) );
-
- if ( limit != null ) {
- q = newQueryIfNull( q );
- q.setLimit( limit );
- }
-
- if ( startTime != null ) {
- q = newQueryIfNull( q );
- q.setStartTime( startTime );
- }
-
- if ( finishTime != null ) {
- q = newQueryIfNull( q );
- q.setFinishTime( finishTime );
- }
-
- if ( resolution != null ) {
- q = newQueryIfNull( q );
- q.setResolution( resolution );
- }
-
- if ( categories != null ) {
- q = newQueryIfNull( q );
- q.setCategories( categories );
- }
-
- if ( counterFilters != null ) {
- q = newQueryIfNull( q );
- q.setCounterFilters( counterFilters );
- }
-
- if ( pad != null ) {
- q = newQueryIfNull( q );
- q.setPad( pad );
- }
-
- return q;
- }
-
-
- public int getLimit() {
- return getLimit( DEFAULT_MAX_RESULTS );
- }
-
-
- public int getLimit( int defaultMax ) {
- if ( limit <= 0 ) {
- if ( defaultMax > 0 ) {
- return defaultMax;
- }
- else {
- return DEFAULT_MAX_RESULTS;
- }
- }
- return limit;
- }
-
-
- public void setLimit( int limit ) {
- limitSet = true;
- this.limit = limit;
- }
-
-
- public CounterQuery withLimit( int limit ) {
- limitSet = true;
- this.limit = limit;
- return this;
- }
-
-
- public boolean isLimitSet() {
- return limitSet;
- }
-
-
- public Long getStartTime() {
- return startTime;
- }
-
-
- public void setStartTime( Long startTime ) {
- this.startTime = startTime;
- }
-
-
- public CounterQuery withStartTime( Long startTime ) {
- this.startTime = startTime;
- return this;
- }
-
-
- public Long getFinishTime() {
- return finishTime;
- }
-
-
- public void setFinishTime( Long finishTime ) {
- this.finishTime = finishTime;
- }
-
-
- public CounterQuery withFinishTime( Long finishTime ) {
- this.finishTime = finishTime;
- return this;
- }
-
-
- public boolean isPad() {
- return pad;
- }
-
-
- public void setPad( boolean pad ) {
- this.pad = pad;
- }
-
-
- public CounterQuery withPad( boolean pad ) {
- this.pad = pad;
- return this;
- }
-
-
- public void setResolution( CounterResolution resolution ) {
- this.resolution = resolution;
- }
-
-
- public CounterResolution getResolution() {
- return resolution;
- }
-
-
- public CounterQuery withResolution( CounterResolution resolution ) {
- this.resolution = resolution;
- return this;
- }
-
-
- public List<String> getCategories() {
- return categories;
- }
-
-
- public CounterQuery addCategory( String category ) {
- if ( categories == null ) {
- categories = new ArrayList<String>();
- }
- categories.add( category );
- return this;
- }
-
-
- public void setCategories( List<String> categories ) {
- this.categories = categories;
- }
-
-
- public CounterQuery withCategories( List<String> categories ) {
- this.categories = categories;
- return this;
- }
-
-
- public List<CounterFilterPredicate> getCounterFilters() {
- return counterFilters;
- }
-
-
- public CounterQuery addCounterFilter( String counter ) {
- CounterFilterPredicate p = CounterFilterPredicate.fromString( counter );
- if ( p == null ) {
- return this;
- }
- if ( counterFilters == null ) {
- counterFilters = new ArrayList<CounterFilterPredicate>();
- }
- counterFilters.add( p );
- return this;
- }
-
-
- public void setCounterFilters( List<CounterFilterPredicate> counterFilters ) {
- this.counterFilters = counterFilters;
- }
-
-
- public CounterQuery withCounterFilters( List<CounterFilterPredicate> counterFilters ) {
- this.counterFilters = counterFilters;
- return this;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/CounterResolution.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/CounterResolution.java b/stack/core/src/main/java/org/usergrid/persistence/CounterResolution.java
deleted file mode 100644
index 2a640e5..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/CounterResolution.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-public enum CounterResolution {
- ALL( 0 ), MINUTE( 1 ), FIVE_MINUTES( 5 ), HALF_HOUR( 30 ), HOUR( 60 ), SIX_HOUR( 60 * 6 ), HALF_DAY( 60 * 12 ),
- DAY( 60 * 24 ), WEEK( 60 * 24 * 7 ), MONTH( 60 * 24 * ( 365 / 12 ) );
-
- private final long interval;
-
-
- CounterResolution( long minutes ) {
- interval = minutes * 60 * 1000;
- }
-
-
- public long interval() {
- return interval;
- }
-
-
- public long round( long timestamp ) {
- if ( interval == 0 ) {
- return 1;
- }
- return ( timestamp / interval ) * interval;
- }
-
-
- public long next( long timestamp ) {
- return round( timestamp ) + interval;
- }
-
-
- public static CounterResolution fromOrdinal( int i ) {
- if ( ( i < 0 ) || ( i >= CounterResolution.values().length ) ) {
- throw new IndexOutOfBoundsException( "Invalid ordinal" );
- }
- return CounterResolution.values()[i];
- }
-
-
- public static CounterResolution fromMinutes( int m ) {
- m = m * 60 * 1000;
- for ( int i = CounterResolution.values().length - 1; i >= 0; i-- ) {
- if ( CounterResolution.values()[i].interval <= m ) {
- return CounterResolution.values()[i];
- }
- }
- return ALL;
- }
-
-
- public static CounterResolution fromString( String s ) {
- if ( s == null ) {
- return ALL;
- }
- try {
- return CounterResolution.valueOf( s.toUpperCase() );
- }
- catch ( IllegalArgumentException e ) {
- }
- try {
- return fromMinutes( Integer.valueOf( s ) );
- }
- catch ( NumberFormatException e ) {
- }
- return ALL;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/CredentialsInfo.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/CredentialsInfo.java b/stack/core/src/main/java/org/usergrid/persistence/CredentialsInfo.java
deleted file mode 100644
index 146af43..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/CredentialsInfo.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.codehaus.jackson.annotate.JsonAnyGetter;
-import org.codehaus.jackson.annotate.JsonAnySetter;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-
-@XmlRootElement
-public class CredentialsInfo implements Comparable<CredentialsInfo> {
-
- boolean recoverable;
- boolean encrypted;
- String cipher;
- String key;
- String secret;
- String hashType;
- Long created;
-
- /**
- * A list of crypto algorithms to apply to unecrypted input for comparison. Note that cipher and hashtype should be
- * deprecated
- */
- private String[] cryptoChain;
-
- protected Map<String, Object> properties = new TreeMap<String, Object>( String.CASE_INSENSITIVE_ORDER );
-
-
- public CredentialsInfo() {
- created = System.currentTimeMillis();
- }
-
-
- public boolean getRecoverable() {
- return recoverable;
- }
-
-
- public void setRecoverable( boolean recoverable ) {
- this.recoverable = recoverable;
- }
-
-
- public boolean getEncrypted() {
- return encrypted;
- }
-
-
- public void setEncrypted( boolean encrypted ) {
- this.encrypted = encrypted;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getCipher() {
- return cipher;
- }
-
-
- public void setCipher( String cipher ) {
- this.cipher = cipher;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getKey() {
- return key;
- }
-
-
- public void setKey( String key ) {
- this.key = key;
- }
-
-
- @JsonSerialize(include = Inclusion.NON_NULL)
- public String getSecret() {
- return secret;
- }
-
-
- public void setSecret( String secret ) {
- this.secret = secret;
- }
-
-
- public static String getCredentialsSecret( CredentialsInfo credentials ) {
- if ( credentials == null ) {
- return null;
- }
- return credentials.getSecret();
- }
-
-
- @JsonAnyGetter
- public Map<String, Object> getProperties() {
- return properties;
- }
-
-
- @JsonAnySetter
- public void setProperty( String key, Object value ) {
- properties.put( key, value );
- }
-
-
- public Object getProperty( String key ) {
- return properties.get( key );
- }
-
-
- /** @return the hashType */
- public String getHashType() {
- return hashType;
- }
-
-
- /**
- * Used for handling legacy passwords encrypted in md5 or similar.
- *
- * @param hashType the hashType to set
- */
- public void setHashType( String hashType ) {
- this.hashType = hashType;
- }
-
-
- /** @return the cryptoChain */
- public String[] getCryptoChain() {
- return cryptoChain;
- }
-
-
- /** @param cryptoChain the cryptoChain to set */
- public void setCryptoChain( String[] cryptoChain ) {
- this.cryptoChain = cryptoChain;
- }
-
-
- public Long getCreated() {
- return created;
- }
-
-
- @Override
- public int compareTo( CredentialsInfo o ) {
- if ( created == o.created ) {
- return 0;
- }
- if ( o.created == null ) {
- return 1;
- }
- return o.created.compareTo( created );
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/DynamicEntity.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/DynamicEntity.java b/stack/core/src/main/java/org/usergrid/persistence/DynamicEntity.java
deleted file mode 100644
index 455cfbc..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/DynamicEntity.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Map;
-import java.util.UUID;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.usergrid.persistence.annotations.EntityProperty;
-import org.usergrid.utils.UUIDUtils;
-
-
-/**
- * Dynamic entities can represent any entity type whether specified in the Schema or not.
- *
- * @author edanuff
- */
-@XmlRootElement
-public class DynamicEntity extends AbstractEntity {
-
- @EntityProperty(indexed = true, fulltextIndexed = false, required = false, mutable = true, aliasProperty = true,
- basic = true)
- protected String name;
-
- protected String type;
-
-
- /**
- *
- */
- public DynamicEntity() {
- // setId(UUIDUtils.newTimeUUID());
- }
-
-
- /**
- * @param id
- */
- public DynamicEntity( UUID id ) {
- setUuid( id );
- }
-
-
- /**
- * @param type
- */
- public DynamicEntity( String type ) {
- setUuid( UUIDUtils.newTimeUUID() );
- setType( type );
- }
-
-
- /**
- * @param id
- * @param type
- */
- public DynamicEntity( String type, UUID id ) {
- setUuid( id );
- setType( type );
- }
-
-
- /**
- * @param id
- * @param type
- */
- public DynamicEntity( String type, UUID id, Map<String, Object> propertyMap ) {
- setUuid( id );
- setType( type );
- setProperties( propertyMap );
- }
-
-
- @Override
- @EntityProperty(required = true, mutable = false, basic = true, indexed = false)
- public String getType() {
- return type;
- }
-
-
- @Override
- public void setType( String type ) {
- this.type = type;
- }
-
-
- @Override
- public String getName() {
- return name;
- }
-
-
- public void setName( String name ) {
- this.name = name;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/Entity.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/Entity.java b/stack/core/src/main/java/org/usergrid/persistence/Entity.java
deleted file mode 100644
index 2b47060..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/Entity.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.codehaus.jackson.annotate.JsonAnyGetter;
-import org.codehaus.jackson.annotate.JsonAnySetter;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonPropertyOrder;
-import org.usergrid.persistence.annotations.EntityProperty;
-
-import static org.usergrid.persistence.Schema.PROPERTY_NAME;
-import static org.usergrid.persistence.Schema.PROPERTY_TYPE;
-import static org.usergrid.persistence.Schema.PROPERTY_URI;
-import static org.usergrid.persistence.Schema.PROPERTY_UUID;
-
-
-/** Entities are the base object type in the service. */
-@XmlRootElement
-@JsonPropertyOrder({ PROPERTY_UUID, PROPERTY_TYPE, PROPERTY_URI, PROPERTY_NAME })
-public interface Entity extends EntityRef, Comparable<Entity> {
-
- @Override
- @EntityProperty(required = true, mutable = false, basic = true, indexed = false)
- public UUID getUuid();
-
- public void setUuid( UUID id );
-
- @Override
- @EntityProperty(required = true, mutable = false, basic = true, indexed = true)
- public String getType();
-
- public void setType( String type );
-
- public abstract String getName();
-
- @EntityProperty(indexed = true, required = true, mutable = false)
- public abstract Long getCreated();
-
- public abstract void setCreated( Long created );
-
- @EntityProperty(indexed = true, required = true, mutable = true)
- public abstract Long getModified();
-
- public abstract void setModified( Long modified );
-
- @JsonIgnore
- public Map<String, Object> getProperties();
-
- public void setProperties( Map<String, Object> properties );
-
- public void addProperties( Map<String, Object> properties );
-
- public abstract Object getProperty( String propertyName );
-
- public abstract void setProperty( String propertyName, Object propertyValue );
-
- @Override
- public abstract int compareTo( Entity o );
-
- public abstract Entity toTypedEntity();
-
- public abstract Object getMetadata( String key );
-
- public abstract void setMetadata( String key, Object value );
-
- public abstract void mergeMetadata( Map<String, Object> metadata );
-
- public abstract void clearMetadata();
-
- public abstract List<Entity> getCollections( String key );
-
- public abstract void setCollections( String name, List<Entity> results );
-
- public abstract List<Entity> getConnections( String key );
-
- public abstract void setConnections( String name, List<Entity> results );
-
- @JsonAnySetter
- public abstract void setDynamicProperty( String key, Object value );
-
- @JsonAnyGetter
- public abstract Map<String, Object> getDynamicProperties();
-}