package service
package dispatcher
-import gr.grnet.aquarium.logic.events.{ResourceEvent, UserEvent}
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.util.json.{JsonHelpers, JsonSupport}
+import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
/**
import gr.grnet.aquarium.actor._
import gr.grnet.aquarium.Configurator
import gr.grnet.aquarium.user._
-import gr.grnet.aquarium.logic.events.{UserEvent, WalletEntry}
import gr.grnet.aquarium.util.Loggable
import gr.grnet.aquarium.util.date.TimeHelpers
import gr.grnet.aquarium.actor.message.config.user.UserActorInitWithUserId
import gr.grnet.aquarium.actor.message.service.dispatcher._
import message.config.{ActorProviderConfigured, AquariumPropertiesLoaded}
+import gr.grnet.aquarium.events.{WalletEntry, UserEvent}
/**
*/
package gr.grnet.aquarium
-package logic.events
+package events
import util.json.JsonSupport
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.logic.events
+package gr.grnet.aquarium
+package events
import gr.grnet.aquarium.logic.accounting.Chargeslot
import gr.grnet.aquarium.util.json.JsonHelpers
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.logic.events
+package gr.grnet.aquarium
+package events
import net.liftweb.json.{Extraction, parse => parseJson}
import gr.grnet.aquarium.util.json.JsonHelpers
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.logic.events
+package gr.grnet.aquarium
+package events
import net.liftweb.json.{JsonAST, Xml}
import gr.grnet.aquarium.util.json.JsonHelpers
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.logic.events
+package gr.grnet.aquarium
+package events
import gr.grnet.aquarium.util.json.JsonHelpers
import net.liftweb.json.{Extraction, parse => parseJson}
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.logic.events
+package gr.grnet.aquarium
+package events
import gr.grnet.aquarium.util.json.JsonHelpers
import java.util.Date
import gr.grnet.aquarium.util.shortClassNameOf
import algorithm.CostPolicyAlgorithmCompiler
import dsl._
-import gr.grnet.aquarium.logic.events.{WalletEntry, ResourceEvent}
import collection.immutable.SortedMap
import java.util.Date
import com.ckkloverdos.maybe.{NoVal, Maybe, Failed, Just}
import gr.grnet.aquarium.util.{ContextualLogger, CryptoUtils, Loggable}
import gr.grnet.aquarium.store.PolicyStore
import gr.grnet.aquarium.AquariumException
+import gr.grnet.aquarium.events.{WalletEntry, ResourceEvent}
/**
* A timeslot together with the algorithm and unit price that apply for this particular timeslot.
package gr.grnet.aquarium.logic.accounting.dsl
import com.ckkloverdos.maybe.{NoVal, Failed, Just, Maybe}
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
import gr.grnet.aquarium.AquariumException
/**
* in which case it is ignored.
*
* @param oldAmount the old accumulating amount
- * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.logic.events.ResourceEvent]]
+ * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.events.ResourceEvent]]
* @return
*/
def computeNewAccumulatingAmount(oldAmount: Double, newEventValue: Double): Double
package gr.grnet.aquarium.logic.accounting.dsl
-import gr.grnet.aquarium.logic.events.PolicyEntry
import gr.grnet.aquarium.util.CryptoUtils
import gr.grnet.aquarium.util.date.TimeHelpers
+import gr.grnet.aquarium.events.PolicyEntry
/**
* Root object for the Aquarium policy configuration tree.
import gr.grnet.aquarium.messaging.AkkaAMQP
import akka.amqp._
import java.util.concurrent.{ConcurrentHashMap, ConcurrentSkipListSet}
-import gr.grnet.aquarium.logic.events.AquariumEvent
import gr.grnet.aquarium.Configurator
import com.ckkloverdos.maybe._
+import gr.grnet.aquarium.events.AquariumEvent
/**
* An abstract service that retrieves Aquarium events from a queue,
package gr.grnet.aquarium.service
-import gr.grnet.aquarium.logic.events.ResourceEvent
import gr.grnet.aquarium.actor.DispatcherRole
import gr.grnet.aquarium.Configurator.Keys
import gr.grnet.aquarium.store.LocalFSEventStore
import com.ckkloverdos.maybe.{Maybe, Just, Failed, NoVal}
import gr.grnet.aquarium.actor.message.service.dispatcher.ProcessResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
/**
package gr.grnet.aquarium.service
-import gr.grnet.aquarium.logic.events.UserEvent
import gr.grnet.aquarium.actor.DispatcherRole
import gr.grnet.aquarium.Configurator.Keys
import gr.grnet.aquarium.store.LocalFSEventStore
import com.ckkloverdos.maybe.{Maybe, NoVal, Failed, Just}
import gr.grnet.aquarium.Configurator
import gr.grnet.aquarium.actor.message.service.dispatcher.ProcessUserEvent
+import gr.grnet.aquarium.events.UserEvent
/**
* An event processor service for user events coming from the IM system
package gr.grnet.aquarium.simulation
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
+
/**
* A simulator for a resource instance.
import java.util.Date
import com.ckkloverdos.maybe.Maybe
import gr.grnet.aquarium.store.RecordID
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
/**
* A simulator for an instance of the standard `bandwidth` resource.
package gr.grnet.aquarium.simulation
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
import gr.grnet.aquarium.store.RecordID
import com.ckkloverdos.maybe.Maybe
import java.util.Date
import com.ckkloverdos.maybe.Maybe
import java.util.Date
import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
/**
* A simulator for an instance of the standard `vmtime` resource.
package gr.grnet.aquarium.simulation
import java.util.Date
-import gr.grnet.aquarium.logic.events.ResourceEvent
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.store.{RecordID, ResourceEventStore}
+import gr.grnet.aquarium.store.RecordID
import math.Ordering
+import gr.grnet.aquarium.events.ResourceEvent
/**
* A simulator for a user.
import gr.grnet.aquarium.Configurator
import java.io.{FileOutputStream, File}
-import gr.grnet.aquarium.logic.events.{UserEvent, ResourceEvent}
import gr.grnet.aquarium.util.{Loggable, stringOfStackTrace}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
import gr.grnet.aquarium.simulation.uid.{EAIOUUIDGenerator, UIDGenerator}
+import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
/**
* This is used whenever the property `events.store.folder` is setup in aquarium configuration.
package gr.grnet.aquarium.store
import scala.collection.immutable
-import gr.grnet.aquarium.logic.events.PolicyEntry
import collection.immutable.SortedMap
import gr.grnet.aquarium.logic.accounting.dsl.{DSL, DSLPolicy, Timeslot}
import com.ckkloverdos.maybe.{NoVal, Just, Maybe}
+import gr.grnet.aquarium.events.PolicyEntry
/**
* A store for serialized policy entries.
package gr.grnet.aquarium.store
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
/**
* An abstraction for Aquarium `ResourceEvent` stores.
package gr.grnet.aquarium.store
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.logic.events.UserEvent
+import gr.grnet.aquarium.events.UserEvent
/**
* Store for external user events
package gr.grnet.aquarium.store
-import gr.grnet.aquarium.logic.events.{WalletEntry}
import java.util.Date
import com.ckkloverdos.maybe.Maybe
+import gr.grnet.aquarium.events.WalletEntry
/**
* A store for Wallet entries.
import scala.collection.JavaConversions._
import java.util.Date
import collection.mutable.ConcurrentMap
-import gr.grnet.aquarium.logic.events.{WalletEntry, ResourceEvent, UserEvent, PolicyEntry}
import java.util.concurrent.ConcurrentHashMap
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.simulation.uid.ConcurrentVMLocalUIDGenerator
import gr.grnet.aquarium.{AquariumException, Configurable}
+import gr.grnet.aquarium.events.{UserEvent, WalletEntry, ResourceEvent, PolicyEntry}
/**
* An implementation of various stores that persists data in memory.
import com.mongodb.util.JSON
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.user.UserState.{JsonNames => UserStateJsonNames}
-import gr.grnet.aquarium.util.displayableObjectInfo
import gr.grnet.aquarium.util.json.JsonSupport
import collection.mutable.ListBuffer
import gr.grnet.aquarium.store._
-import gr.grnet.aquarium.logic.events.ResourceEvent.{JsonNames => ResourceJsonNames}
-import gr.grnet.aquarium.logic.events.UserEvent.{JsonNames => UserEventJsonNames}
-import gr.grnet.aquarium.logic.events.WalletEntry.{JsonNames => WalletJsonNames}
-import gr.grnet.aquarium.logic.events.PolicyEntry.{JsonNames => PolicyJsonNames}
+import gr.grnet.aquarium.events.ResourceEvent.{JsonNames => ResourceJsonNames}
+import gr.grnet.aquarium.events.UserEvent.{JsonNames => UserEventJsonNames}
+import gr.grnet.aquarium.events.WalletEntry.{JsonNames => WalletJsonNames}
+import gr.grnet.aquarium.events.PolicyEntry.{JsonNames => PolicyJsonNames}
import java.util.Date
import gr.grnet.aquarium.logic.accounting.Policy
-import gr.grnet.aquarium.logic.events._
import com.mongodb._
import com.ckkloverdos.maybe.{NoVal, Maybe}
-import gr.grnet.aquarium.logic.accounting.dsl.{DSLResource, Timeslot, DSLPolicy, DSLComplexResource}
import org.bson.types.ObjectId
-import gr.grnet.aquarium.actor.service.user.UserActor
+import gr.grnet.aquarium.events._
/**
* Mongodb implementation of the various aquarium stores.
}
/**
- * Collection holding the [[gr.grnet.aquarium.logic.events.ResourceEvent]]s.
+ * Collection holding the [[gr.grnet.aquarium.events.ResourceEvent]]s.
*
* Resource events are coming from all systems handling billable resources.
*/
final val USER_STATES_COLLECTION = "userstates"
/**
- * Collection holding [[gr.grnet.aquarium.logic.events.UserEvent]]s.
+ * Collection holding [[gr.grnet.aquarium.events.UserEvent]]s.
*
* User events are coming from the IM module (external).
*/
final val USER_EVENTS_COLLECTION = "userevents"
/**
- * Collection holding [[gr.grnet.aquarium.logic.events.UserEvent]]s that could not be parsed to normal objects.
+ * Collection holding [[gr.grnet.aquarium.events.UserEvent]]s that could not be parsed to normal objects.
*
* We of course assume at least a valid JSON representation.
*
final val UNPARSED_USER_EVENTS_COLLECTION = "unparsed_userevents"
/**
- * Collection holding [[gr.grnet.aquarium.logic.events.WalletEntry]].
+ * Collection holding [[gr.grnet.aquarium.events.WalletEntry]].
*
* Wallet entries are generated internally in Aquarium.
*/
// final val POLICIES_COLLECTION = "policies"
/**
- * Collection holding [[gr.grnet.aquarium.logic.events.PolicyEntry]].
+ * Collection holding [[gr.grnet.aquarium.events.PolicyEntry]].
*/
final val POLICY_ENTRIES_COLLECTION = "policyEntries"
import gr.grnet.aquarium.util.{findFromMapAsMaybe, findAndRemoveFromMap, shortClassNameOf}
import gr.grnet.aquarium.logic.accounting.Policy
import java.util.Date
-import com.ckkloverdos.maybe.{Failed, NoVal, Maybe, Just}
-import logic.events.ResourceEvent
-import logic.events.ResourceEvent.FullMutableResourceTypeMap
+import com.ckkloverdos.maybe.{NoVal, Maybe, Just}
+import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent.FullMutableResourceTypeMap
import logic.accounting.dsl.{Timeslot, DSLAgreement}
import collection.immutable.{TreeMap, SortedMap}
import util.date.MutableDateCalc
* - If the resource is complex, the (name, instanceId) is (DSLResource.name, instance-id)
* - If the resource is simple, the (name, instanceId) is (DSLResource.name, "1")
*
- * @param resource Same as `resource` of [[gr.grnet.aquarium.logic.events.ResourceEvent]]
- * @param instanceId Same as `instanceId` of [[gr.grnet.aquarium.logic.events.ResourceEvent]]
+ * @param resource Same as `resource` of [[gr.grnet.aquarium.events.ResourceEvent]]
+ * @param instanceId Same as `instanceId` of [[gr.grnet.aquarium.events.ResourceEvent]]
* @param instanceAmount This is the amount kept for the resource instance.
* The general rule is that an amount saved in a [[gr.grnet.aquarium.user.ResourceInstanceSnapshot]]
- * represents a total value, while a value appearing in a [[gr.grnet.aquarium.logic.events.ResourceEvent]]
+ * represents a total value, while a value appearing in a [[gr.grnet.aquarium.events.ResourceEvent]]
* represents a difference. How these two values are combined to form the new amount is dictated
* by the underlying [[gr.grnet.aquarium.logic.accounting.dsl.DSLCostPolicy]]
* @param snapshotTime
import gr.grnet.aquarium.logic.accounting.dsl.DSLAgreement
import com.ckkloverdos.maybe.{Failed, Maybe}
import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.store.RecordID
-import gr.grnet.aquarium.logic.events.{NewWalletEntry, UserEvent, WalletEntry}
+import gr.grnet.aquarium.events.{UserEvent, NewWalletEntry, WalletEntry}
/**
import scala.collection.mutable
import com.ckkloverdos.maybe.{Failed, NoVal, Just, Maybe}
import gr.grnet.aquarium.util.{ContextualLogger, Loggable, justForSure, failedForSure}
-import gr.grnet.aquarium.logic.events.{NewWalletEntry, ResourceEvent}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
import gr.grnet.aquarium.logic.accounting.dsl.{DSLAgreement, DSLResourcesMap}
import gr.grnet.aquarium.store.{StoreProvider, PolicyStore}
import gr.grnet.aquarium.logic.accounting.Accounting
import gr.grnet.aquarium.logic.accounting.algorithm.CostPolicyAlgorithmCompiler
import gr.grnet.aquarium.AquariumException
+import gr.grnet.aquarium.events.{NewWalletEntry, ResourceEvent}
/**
*
import akka.amqp._
import util.Random
-import gr.grnet.aquarium.logic.events.{UserEvent, ResourceEvent}
+import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
import scopt.OptionParser
import gr.grnet.aquarium.messaging.AkkaAMQP
import java.lang.StringBuffer
package gr.grnet.aquarium.util.json
import net.liftweb.json.ext.JodaTimeSerializers
-import gr.grnet.aquarium.logic.events.AquariumEvent
import net.liftweb.json.JsonAST.JValue
import net.liftweb.json._
-import gr.grnet.aquarium.logic.accounting.dsl._
+import gr.grnet.aquarium.events.AquariumEvent
/**
* Provides conversion methods from and to JSON.
--- /dev/null
+/*
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and
+ * documentation are those of the authors and should not be
+ * interpreted as representing official policies, either expressed
+ * or implied, of GRNET S.A.
+ */
+
+package gr.grnet.aquarium.converter
+
+import org.junit.Test
+import gr.grnet.aquarium.util.json.JsonHelpers
+import java.util.Date
+
+/**
+ *
+ * @author Christos KK Loverdos <loverdos@gmail.com>
+ */
+
+case class Foo(aDouble: Double, aDate: Date, map: Map[Int, Int])
+
+class ConverterTest {
+// @Test
+// def testJSONMapConversion: Unit = {
+// val foo = Foo(1.0, new Date(), Map(1 -> 1, 2 -> 2, 3 -> 3))
+// val json = JsonHelpers.anyToJson(foo)
+// }
+}
import java.util.Date
import junit.framework.Assert._
import gr.grnet.aquarium.logic.accounting.{Accounting}
-import gr.grnet.aquarium.logic.events.{WalletEntry, ResourceEvent}
+import gr.grnet.aquarium.events.{WalletEntry, ResourceEvent}
import com.ckkloverdos.maybe.Just
/**
package gr.grnet.aquarium.processor.actor
/**
- *
+ *
* @author Christos KK Loverdos <loverdos@gmail.com>.
*/
object Constants {
val RemoteHost = "localhost"
val RemotePort = 2552
- val LocalHost = "localhost"
- val LocalPort = 2551
+ val LocalHost = "localhost"
+ val LocalPort = 2551
val ActorNameEcho = "echo"
val ActorNameSilent = "silent"
}
import org.junit.Assume._
import gr.grnet.aquarium.Configurator._
import gr.grnet.aquarium.util.{RandomEventGenerator, TestMethods}
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.events.ResourceEvent
import collection.mutable.ArrayBuffer
import org.junit.{After, Test, Before}
import gr.grnet.aquarium.{StoreConfigurator, LogicTestsAssumptions}