Make a UTF-8 string from an array of bytes
authorChristos KK Loverdos <loverdos@gmail.com>
Mon, 2 Apr 2012 13:28:58 +0000 (16:28 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Mon, 2 Apr 2012 13:28:58 +0000 (16:28 +0300)
src/main/scala/gr/grnet/aquarium/processor/actor/EventProcessorService.scala
src/main/scala/gr/grnet/aquarium/util/package.scala

index 8c8e8b4..dda9992 100644 (file)
@@ -35,7 +35,7 @@
 
 package gr.grnet.aquarium.processor.actor
 
-import gr.grnet.aquarium.util.{Lifecycle, Loggable}
+import gr.grnet.aquarium.util.{Lifecycle, Loggable, makeString}
 
 import akka.actor._
 import akka.actor.Actor._
@@ -138,13 +138,14 @@ abstract class EventProcessorService[E <: AquariumEvent] extends AkkaAMQP with L
 
           case failed @ Failed(e, m) ⇒
             persistUnparsed(payload)
-            logger.error("Could not parse payload {}", new String(payload, "UTF-8"))
+            logger.error("Could not parse payload {}", makeString(payload))
             throw e
 
           case NoVal ⇒
             persistUnparsed(payload)
-            logger.error("Could not parse payload {}", new String(payload, "UTF-8"))
-            throw new AquariumException("Unexpected NoVal")
+            val errMsg = "Unexpected NoVal. Could not parse payload %s".format(makeString(payload))
+            logger.error(errMsg)
+            throw new AquariumException(errMsg)
         }
         inFlightEvents.put(deliveryTag, event)
 
index 47062da..9adcf75 100644 (file)
@@ -36,6 +36,7 @@
 package gr.grnet.aquarium
 
 import com.ckkloverdos.maybe.{Failed, MaybeOption, Just, NoVal, Maybe}
+import java.nio.charset.Charset
 
 
 /**
@@ -44,6 +45,8 @@ import com.ckkloverdos.maybe.{Failed, MaybeOption, Just, NoVal, Maybe}
  * @author Christos KK Loverdos <loverdos@gmail.com>.
  */
 package object util {
+  final val UTF_8_Charset = Charset.forName("UTF-8")
+
   def tryOption[A](f: => A): Option[A] = {
     try Some(f)
     catch {
@@ -160,4 +163,8 @@ package object util {
   def justForSure[A](maybe: Maybe[A]): Just[A] = {
     maybe.asInstanceOf[Just[A]]
   }
+
+  def makeString(bytes: Array[Byte]): String = {
+    new String(bytes, UTF_8_Charset)
+  }
 }
\ No newline at end of file