diff --git a/LICENSE b/LICENSE index c17d7ab321..70268d9fe2 100755 --- a/LICENSE +++ b/LICENSE @@ -17,4 +17,4 @@ the License. --------------- Licenses for dependency projects can be found here: -[http://wiki.github.com/jboner/akka/licenses] \ No newline at end of file +[http://doc.akkasource.org/licenses] \ No newline at end of file diff --git a/README.textile b/README.textile index 2acfb63e8e..849f1621a7 100755 --- a/README.textile +++ b/README.textile @@ -1,70 +1,15 @@ -h1. Akka Transactors +h1. Akka -h2. Distributed Transactional RESTful Persistent Actors +We believe that writing correct concurrent, fault-tolerant and scalable applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction. -h3. "http://akkasource.org":http://akkasource.org +Akka is here to change that. -Akka implements a unique hybrid of: -* The Actor model (Actors and Active Objects), which gives you: -** Concurrency (high-level and simple) -** Asynchronous, non-blocking and highly performant components. -** Supervision with "let-it-crash" semantics. Components are loosely coupled and restarted upon failure. -* Software Transactional Memory (STM). -* BASE and ACID persistence - Pluggable Eventually Consistent or ACID distributed scalable persistent storage. -* Remoting - Distributed services with supervision and error management -* REST (JAX-RS) and Comet bindings. -* Monitoring and Management +Using the Actor Model together with Software Transactional Memory we raise the abstraction level and provides a better platform to build correct concurrent and scalable applications. -Akka can be used in two different ways: -* As a library: used by a web app, to be put into ‘WEB-INF/lib’ -* As a kernel: stand-alone kernel, embedding the servlet container +For fault-tolerance we adopt the "Let it crash" / "Embrace failure" model which have been used with great success in the telecom industry to build applications that self-heals, systems that never stop. -See the "Use-case and Deployment Scenarios":http://wiki.github.com/jboner/akka/use-case-and-deployment-scenarios for details. +Actors also provides the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications. -h1. What's Akka all about? Why should I care? +Akka is Open Source and available under the Apache 2 License. -If you are new to Akka then I suggest you start with either the: - -* "High Level View":http://wiki.github.com/jboner/akka/modules-the-high-level-view; which is outlining the different modules in Akka. -* "Use-case and Deployment Scenarios":http://wiki.github.com/jboner/akka/use-case-and-deployment-scenarios; outlining how and in which use-case and deployment scenarios can I use Akka? -* "Examples":http://wiki.github.com/jboner/akka/examples; showing how to build a RESTful, transactional, persistent Active Object and Actor. - -After that you can dive into the "Reference Manual":http://wiki.github.com/jboner/akka/akka-reference-manual. - -h1. Documentation - -Akka has pretty thorough "reference documentation":https://github.com/jboner/akka/wikis. Covering examples, APIs and configuration. - -h1. Distribution - -The latest distribution can be found in the "downloads section":https://github.com/jboner/akka/downloads - -h1. Mailing List - -If you have questions and/or feedback: please sign up to the Akka User mailing list: -"http://groups.google.com/group/akka-user":http://groups.google.com/group/akka-user - -h1. Professional Support - -Scalable Solutions AB is providing a variety of professional support packages for Akka, please visit their website for details: -"http://scalablesolutions.se":http://scalablesolutions.se - -h1. License - -
-This software is licensed under the Apache 2 license, quoted below.
-
-Copyright 2009 Scalable Solutions AB 
-
-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.
-
+Learn more at "http://akkasource.org":http://akkasource.org \ No newline at end of file diff --git a/akka-amqp/pom.xml b/akka-amqp/pom.xml index 6f099ae677..f7067e56b8 100644 --- a/akka-amqp/pom.xml +++ b/akka-amqp/pom.xml @@ -11,15 +11,9 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml - - akka-util - ${project.groupId} - ${project.version} - akka-core ${project.groupId} diff --git a/akka-comet/pom.xml b/akka-comet/pom.xml index 778940d242..ae64f166f3 100644 --- a/akka-comet/pom.xml +++ b/akka-comet/pom.xml @@ -12,16 +12,10 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml - - akka-core - ${project.groupId} - ${project.version} - akka-rest ${project.groupId} @@ -34,11 +28,7 @@ grizzly-comet-webserver ${grizzly.version} - + javax.servlet @@ -60,30 +50,5 @@ atmosphere-runtime ${atmosphere.version} - - diff --git a/akka-core/pom.xml b/akka-core/pom.xml index 12a4e95e36..a414d69740 100644 --- a/akka-core/pom.xml +++ b/akka-core/pom.xml @@ -12,7 +12,6 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml diff --git a/akka-core/src/main/scala/actor/Actor.scala b/akka-core/src/main/scala/actor/Actor.scala index c6181c515a..0118aea1c0 100644 --- a/akka-core/src/main/scala/actor/Actor.scala +++ b/akka-core/src/main/scala/actor/Actor.scala @@ -415,6 +415,10 @@ trait Actor extends TransactionManagement { def start: Actor = synchronized { if (_isShutDown) throw new IllegalStateException("Can't restart an actor that has been shut down with 'exit'") if (!_isRunning) { + if (messageDispatcher.isShutdown && + messageDispatcher.isInstanceOf[Dispatchers.globalExecutorBasedEventDrivenDispatcher.type]) { + messageDispatcher.asInstanceOf[ExecutorBasedEventDrivenDispatcher].init + } messageDispatcher.register(this) messageDispatcher.start _isRunning = true diff --git a/akka-core/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-core/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala index 3085ffcb11..7da13a10b3 100644 --- a/akka-core/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala +++ b/akka-core/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala @@ -57,9 +57,8 @@ class ExecutorBasedEventDrivenDispatcher(_name: String) extends MessageDispatche @volatile private var active: Boolean = false val name: String = "event-driven:executor:dispatcher:" + _name - - withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity.buildThreadPool - + init + def dispatch(invocation: MessageInvocation) = if (active) { executor.execute(new Runnable() { def run = { @@ -79,10 +78,14 @@ class ExecutorBasedEventDrivenDispatcher(_name: String) extends MessageDispatche } def shutdown = if (active) { + log.debug("Shutting down ThreadBasedDispatcher [%s]", name) executor.shutdownNow active = false + references.clear } - + def ensureNotActive: Unit = if (active) throw new IllegalStateException( "Can't build a new thread pool for a dispatcher that is already up and running") + + private[akka] def init = withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity.buildThreadPool } \ No newline at end of file diff --git a/akka-core/src/main/scala/dispatch/Reactor.scala b/akka-core/src/main/scala/dispatch/Reactor.scala index 1c5edc0400..f7bfa52215 100644 --- a/akka-core/src/main/scala/dispatch/Reactor.scala +++ b/akka-core/src/main/scala/dispatch/Reactor.scala @@ -6,7 +6,7 @@ package se.scalablesolutions.akka.dispatch import java.util.List -import se.scalablesolutions.akka.util.HashCode +import se.scalablesolutions.akka.util.{HashCode, Logging} import se.scalablesolutions.akka.stm.Transaction import se.scalablesolutions.akka.actor.Actor @@ -56,7 +56,7 @@ trait MessageInvoker { def invoke(message: MessageInvocation) } -trait MessageDispatcher { +trait MessageDispatcher extends Logging { protected val references = new ConcurrentHashMap[String, Actor] def dispatch(invocation: MessageInvocation) def start @@ -64,6 +64,7 @@ trait MessageDispatcher { def register(actor: Actor) = references.put(actor.uuid, actor) def unregister(actor: Actor) = references.remove(actor.uuid) def canBeShutDown: Boolean = references.isEmpty + def isShutdown: Boolean } trait MessageDemultiplexer { diff --git a/akka-core/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala b/akka-core/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala index 12de4ff0ec..15af513d62 100644 --- a/akka-core/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala +++ b/akka-core/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala @@ -36,6 +36,8 @@ class ReactorBasedSingleThreadEventDrivenDispatcher(name: String) extends Abstra selectorThread.start } + def isShutdown = !active + class Demultiplexer(private val messageQueue: ReactiveMessageQueue) extends MessageDemultiplexer { private val selectedQueue: List[MessageInvocation] = new LinkedList[MessageInvocation] diff --git a/akka-core/src/main/scala/dispatch/ThreadBasedDispatcher.scala b/akka-core/src/main/scala/dispatch/ThreadBasedDispatcher.scala index 98063f0bcb..27eb3a1ea5 100644 --- a/akka-core/src/main/scala/dispatch/ThreadBasedDispatcher.scala +++ b/akka-core/src/main/scala/dispatch/ThreadBasedDispatcher.scala @@ -39,9 +39,13 @@ class ThreadBasedDispatcher private[akka] (val name: String, val messageHandler: selectorThread.start } + def isShutdown = !active + def shutdown = if (active) { + log.debug("Shutting down ExecutorBasedEventDrivenDispatcher [%s]", name) active = false selectorThread.interrupt + references.clear } } diff --git a/akka-core/src/main/scala/dispatch/ThreadPoolBuilder.scala b/akka-core/src/main/scala/dispatch/ThreadPoolBuilder.scala index c73310cf29..cb465907cb 100644 --- a/akka-core/src/main/scala/dispatch/ThreadPoolBuilder.scala +++ b/akka-core/src/main/scala/dispatch/ThreadPoolBuilder.scala @@ -28,6 +28,8 @@ trait ThreadPoolBuilder { protected var executor: ExecutorService = _ + def isShutdown = executor.isShutdown + def buildThreadPool = synchronized { ensureNotActive inProcessOfBuilding = false diff --git a/akka-core/src/main/scala/remote/BootableRemoteActorService.scala b/akka-core/src/main/scala/remote/BootableRemoteActorService.scala index 70fe1bd965..b3ca8d4cb7 100644 --- a/akka-core/src/main/scala/remote/BootableRemoteActorService.scala +++ b/akka-core/src/main/scala/remote/BootableRemoteActorService.scala @@ -32,11 +32,12 @@ trait BootableRemoteActorService extends Bootable with Logging { } abstract override def onUnload = { - super.onUnload - + super.onUnload if (remoteServerThread.isAlive) { log.info("Shutting down Remote Actors Service") RemoteNode.shutdown + log.info("Shutting down Cluster Service") + Cluster.shutdown remoteServerThread.join(1000) } } diff --git a/akka-core/src/main/scala/remote/Cluster.scala b/akka-core/src/main/scala/remote/Cluster.scala index e1fd0c9e56..547b303567 100644 --- a/akka-core/src/main/scala/remote/Cluster.scala +++ b/akka-core/src/main/scala/remote/Cluster.scala @@ -8,11 +8,11 @@ import org.jgroups.{JChannel, View, Address, Message, ExtendedMembershipListener import se.scalablesolutions.akka.Config.config import se.scalablesolutions.akka.config.ScalaConfig._ -import se.scalablesolutions.akka.actor.{SupervisorFactory, Actor, ActorRegistry} import se.scalablesolutions.akka.remote.Cluster.{Node, RelayedMessage} +import se.scalablesolutions.akka.serialization.Serializer +import se.scalablesolutions.akka.actor.{Supervisor, SupervisorFactory, Actor, ActorRegistry} import scala.collection.immutable.{Map, HashMap} -import se.scalablesolutions.akka.serialization.Serializer /** * Interface for interacting with the Cluster Membership API. @@ -48,20 +48,24 @@ object Cluster extends Cluster { private[remote] case class Node(endpoints: List[RemoteAddress]) extends ClusterMessage private[remote] case class RelayedMessage(actorClassFQN: String, msg: AnyRef) extends ClusterMessage - private[remote] lazy val clusterActor: Option[ClusterActor] = { - config.getString("akka.remote.cluster.actor") map (name => { - val actor = Class.forName(name) - .newInstance - .asInstanceOf[ClusterActor] - SupervisorFactory( - SupervisorConfig( - RestartStrategy(OneForOne, 5, 1000, List(classOf[Exception])), - Supervise(actor, LifeCycle(Permanent)) :: Nil) - ).newInstance.start - actor - }) - } + private[remote] val clusterActor: Option[ClusterActor] = + config.getString("akka.remote.cluster.actor") map { name => + val a = Class.forName(name).newInstance.asInstanceOf[ClusterActor] + a.start + a + } + + private[remote] val supervisor: Option[Supervisor] = if (clusterActor.isDefined) { + val sup = SupervisorFactory( + SupervisorConfig( + RestartStrategy(OneForOne, 5, 1000, List(classOf[Exception])), + Supervise(clusterActor.get, LifeCycle(Permanent)) :: Nil) + ).newInstance + sup.start + Some(sup) + } else None + private[remote] lazy val serializer: Serializer = { val className = config.getString("akka.remote.cluster.serializer", Serializer.Java.getClass.getName) Class.forName(className).newInstance.asInstanceOf[Serializer] @@ -71,11 +75,13 @@ object Cluster extends Cluster { def lookup[T](pf: PartialFunction[RemoteAddress, T]): Option[T] = clusterActor.flatMap(_.lookup(pf)) - def registerLocalNode(hostname: String, port: Int): Unit = clusterActor.map(_.registerLocalNode(hostname, port)) + def registerLocalNode(hostname: String, port: Int): Unit = clusterActor.foreach(_.registerLocalNode(hostname, port)) - def deregisterLocalNode(hostname: String, port: Int): Unit = clusterActor.map(_.deregisterLocalNode(hostname, port)) + def deregisterLocalNode(hostname: String, port: Int): Unit = clusterActor.foreach(_.deregisterLocalNode(hostname, port)) - def relayMessage(to: Class[_ <: Actor], msg: AnyRef): Unit = clusterActor.map(_.relayMessage(to, msg)) + def relayMessage(to: Class[_ <: Actor], msg: AnyRef): Unit = clusterActor.foreach(_.relayMessage(to, msg)) + + def shutdown = supervisor.foreach(_.stop) } /** @@ -99,6 +105,8 @@ class JGroupsClusterActor extends ClusterActor { import JGroupsClusterActor._ import org.scala_tools.javautils.Implicits._ + + @volatile private var isActive = false @volatile private var local: Node = Node(Nil) @volatile private var channel: Option[JChannel] = None @volatile private var remotes: Map[Address, Node] = Map() @@ -107,6 +115,7 @@ class JGroupsClusterActor extends ClusterActor { log debug "Initiating JGroups-based cluster actor" remotes = new HashMap[Address, Node] val me = this + isActive = true // Set up the JGroups local endpoint channel = Some(new JChannel { @@ -115,15 +124,15 @@ class JGroupsClusterActor extends ClusterActor { def setState(state: Array[Byte]): Unit = () - def receive(msg: Message): Unit = me send msg + def receive(msg: Message): Unit = if (isActive) me send msg - def viewAccepted(view: View): Unit = me send view + def viewAccepted(view: View): Unit = if (isActive) me send view - def suspect(a: Address): Unit = me send Zombie(a) + def suspect(a: Address): Unit = if (isActive) me send Zombie(a) - def block: Unit = me send Block + def block: Unit = if (isActive) me send Block - def unblock: Unit = me send Unblock + def unblock: Unit = if (isActive) me send Unblock }) }) channel.map(_.connect(name)) @@ -213,8 +222,9 @@ class JGroupsClusterActor extends ClusterActor { } override def shutdown = { - log debug ("Shutting down %s", this.getClass.getName) - channel.map(_.shutdown) + log debug ("Shutting down %s", toString) + isActive = false + channel.foreach(_.shutdown) remotes = Map() channel = None } diff --git a/akka-core/src/main/scala/remote/RemoteServer.scala b/akka-core/src/main/scala/remote/RemoteServer.scala index 46f6f13eb7..315d6b8e49 100755 --- a/akka-core/src/main/scala/remote/RemoteServer.scala +++ b/akka-core/src/main/scala/remote/RemoteServer.scala @@ -43,7 +43,7 @@ import org.jboss.netty.handler.codec.compression.{ZlibEncoder, ZlibDecoder} * * @author Jonas Bonér */ -object RemoteNode extends RemoteServer +object RemoteNode extends RemoteServer(true) /** * This object holds configuration variables. @@ -116,8 +116,9 @@ object RemoteServer { * * @author Jonas Bonér */ -class RemoteServer extends Logging { +class RemoteServer(val registerNodeInCluster: Boolean) extends Logging { val name = "RemoteServer@" + hostname + ":" + port + def this() = this(false) private var hostname = RemoteServer.HOSTNAME private var port = RemoteServer.PORT @@ -155,7 +156,7 @@ class RemoteServer extends Logging { bootstrap.setOption("child.connectTimeoutMillis", RemoteServer.CONNECTION_TIMEOUT_MILLIS) openChannels.add(bootstrap.bind(new InetSocketAddress(hostname, port))) isRunning = true - Cluster.registerLocalNode(hostname, port) + if (registerNodeInCluster) Cluster.registerLocalNode(hostname, port) } } catch { case e => log.error(e, "Could not start up remote server") @@ -163,9 +164,14 @@ class RemoteServer extends Logging { } def shutdown = { - openChannels.close.awaitUninterruptibly() + openChannels.disconnect + openChannels.unbind + openChannels.close.awaitUninterruptibly(1000) bootstrap.releaseExternalResources - Cluster.deregisterLocalNode(hostname, port) + if (registerNodeInCluster) { + Cluster.deregisterLocalNode(hostname, port) + Cluster.shutdown + } } } diff --git a/akka-core/src/test/scala/Test.scala b/akka-core/src/test/scala/Test.scala new file mode 100644 index 0000000000..9b8d9a1fa9 --- /dev/null +++ b/akka-core/src/test/scala/Test.scala @@ -0,0 +1,34 @@ +package test + +import se.scalablesolutions.akka.actor.Actor +import se.scalablesolutions.akka.remote.RemoteNode + +object AkkaTest1 { + def main(args: Array[String]) { + + class MyActor extends Actor { + def receive = { + case "test" => println("received test") + case m@_ => println("received unknown message " + m) + } + } + + val myActor = new MyActor + myActor.start + myActor.send("test") + myActor.stop + // does not exit + } +} + + +// case 2 + +object AkkaTest2 { + def main(args: Array[String]) { + RemoteNode.start("localhost", 9999) + Thread.sleep(3000) + RemoteNode.shutdown + // does not exit + } +} \ No newline at end of file diff --git a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/AllTest.java b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/AllTest.java index b6753d3580..2e724f0324 100644 --- a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/AllTest.java +++ b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/AllTest.java @@ -8,7 +8,7 @@ public class AllTest extends TestCase { public static Test suite() { TestSuite suite = new TestSuite("All Java tests"); suite.addTestSuite(InMemoryStateTest.class); - suite.addTestSuite(InMemNestedStateTest.class); + //suite.addTestSuite(InMemNestedStateTest.class); suite.addTestSuite(RemoteInMemoryStateTest.class); suite.addTestSuite(ActiveObjectGuiceConfiguratorTest.class); //suite.addTestSuite(PersistentStateTest.class); diff --git a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java index 366403ef46..8a51feed6b 100644 --- a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java +++ b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java @@ -11,7 +11,7 @@ import static se.scalablesolutions.akka.config.JavaConfig.*; import se.scalablesolutions.akka.actor.*; import se.scalablesolutions.akka.Kernel; import junit.framework.TestCase; - +/* public class InMemNestedStateTest extends TestCase { static String messageLog = ""; @@ -133,3 +133,4 @@ public class InMemNestedStateTest extends TestCase { assertEquals("init", nested.getRefState()); // check that state is == init state } } +*/ \ No newline at end of file diff --git a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java index b25fcb8546..aa2704685f 100644 --- a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java +++ b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java @@ -93,7 +93,7 @@ public class InMemoryStateTest extends TestCase { } // expected assertEquals("init", stateful.getRefState()); // check that state is == init state } - /* +/* public void testNestedNonTransactionalMethodHangs() { InMemStateful stateful = conf.getInstance(InMemStateful.class); stateful.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init"); // set init state diff --git a/akka-kernel/pom.xml b/akka-kernel/pom.xml index e01b7272fd..c0ccec2db9 100755 --- a/akka-kernel/pom.xml +++ b/akka-kernel/pom.xml @@ -12,16 +12,10 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml - - akka-core - ${project.groupId} - ${project.version} - akka-rest ${project.groupId} diff --git a/akka-persistence-cassandra/pom.xml b/akka-persistence/akka-persistence-cassandra/pom.xml similarity index 70% rename from akka-persistence-cassandra/pom.xml rename to akka-persistence/akka-persistence-cassandra/pom.xml index 25745d00fc..9abb616796 100644 --- a/akka-persistence-cassandra/pom.xml +++ b/akka-persistence/akka-persistence-cassandra/pom.xml @@ -8,10 +8,9 @@ jar - akka + akka-persistence-parent se.scalablesolutions.akka 0.6 - ../pom.xml @@ -32,20 +31,6 @@ log4j 1.2.13 - - - - org.scalatest - scalatest - 1.0 - test - - - junit - junit - 4.5 - test - diff --git a/akka-persistence-cassandra/src/main/scala/CassandraSession.scala b/akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraSession.scala similarity index 100% rename from akka-persistence-cassandra/src/main/scala/CassandraSession.scala rename to akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraSession.scala diff --git a/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala b/akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala similarity index 100% rename from akka-persistence-cassandra/src/main/scala/CassandraStorage.scala rename to akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala diff --git a/akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala b/akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala similarity index 100% rename from akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala rename to akka-persistence/akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala diff --git a/akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala b/akka-persistence/akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala similarity index 100% rename from akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala rename to akka-persistence/akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala diff --git a/akka-persistence-common/pom.xml b/akka-persistence/akka-persistence-common/pom.xml similarity index 57% rename from akka-persistence-common/pom.xml rename to akka-persistence/akka-persistence-common/pom.xml index 21c425b987..e260d3c5a9 100644 --- a/akka-persistence-common/pom.xml +++ b/akka-persistence/akka-persistence-common/pom.xml @@ -8,19 +8,12 @@ jar - akka + akka-persistence-parent se.scalablesolutions.akka 0.6 - ../pom.xml - - akka-core - ${project.groupId} - ${project.version} - - com.facebook thrift @@ -31,20 +24,6 @@ commons-pool 1.5.1 - - - - org.scalatest - scalatest - 1.0 - test - - - junit - junit - 4.5 - test - diff --git a/akka-persistence-common/src/main/scala/Pool.scala b/akka-persistence/akka-persistence-common/src/main/scala/Pool.scala similarity index 100% rename from akka-persistence-common/src/main/scala/Pool.scala rename to akka-persistence/akka-persistence-common/src/main/scala/Pool.scala diff --git a/akka-persistence-common/src/main/scala/Storage.scala b/akka-persistence/akka-persistence-common/src/main/scala/Storage.scala similarity index 100% rename from akka-persistence-common/src/main/scala/Storage.scala rename to akka-persistence/akka-persistence-common/src/main/scala/Storage.scala diff --git a/akka-persistence-common/src/main/scala/StorageBackend.scala b/akka-persistence/akka-persistence-common/src/main/scala/StorageBackend.scala similarity index 100% rename from akka-persistence-common/src/main/scala/StorageBackend.scala rename to akka-persistence/akka-persistence-common/src/main/scala/StorageBackend.scala diff --git a/akka-persistence-mongo/pom.xml b/akka-persistence/akka-persistence-mongo/pom.xml similarity index 66% rename from akka-persistence-mongo/pom.xml rename to akka-persistence/akka-persistence-mongo/pom.xml index 0931be3274..f8543cdd67 100644 --- a/akka-persistence-mongo/pom.xml +++ b/akka-persistence/akka-persistence-mongo/pom.xml @@ -8,10 +8,9 @@ jar - akka + akka-persistence-parent se.scalablesolutions.akka 0.6 - ../pom.xml @@ -27,20 +26,6 @@ mongo-java-driver 1.1 - - - - org.scalatest - scalatest - 1.0 - test - - - junit - junit - 4.5 - test - diff --git a/akka-persistence-mongo/src/main/scala/MongoStorage.scala b/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorage.scala similarity index 100% rename from akka-persistence-mongo/src/main/scala/MongoStorage.scala rename to akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorage.scala diff --git a/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala b/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala similarity index 100% rename from akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala rename to akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala diff --git a/akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala b/akka-persistence/akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala similarity index 100% rename from akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala rename to akka-persistence/akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala diff --git a/akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala b/akka-persistence/akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala similarity index 100% rename from akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala rename to akka-persistence/akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala diff --git a/akka-persistence/akka-persistence-redis/pom.xml b/akka-persistence/akka-persistence-redis/pom.xml new file mode 100644 index 0000000000..71b5db8920 --- /dev/null +++ b/akka-persistence/akka-persistence-redis/pom.xml @@ -0,0 +1,31 @@ + + 4.0.0 + + akka-persistence-redis + Akka Persistence Redis Module + + jar + + + akka-persistence-parent + se.scalablesolutions.akka + 0.6 + + + + + akka-persistence-common + ${project.groupId} + ${project.version} + + + + + com.redis + redisclient + 1.0.1 + + + + diff --git a/akka-persistence-redis/src/main/scala/RedisStorage.scala b/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorage.scala similarity index 100% rename from akka-persistence-redis/src/main/scala/RedisStorage.scala rename to akka-persistence/akka-persistence-redis/src/main/scala/RedisStorage.scala diff --git a/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala b/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala similarity index 100% rename from akka-persistence-redis/src/main/scala/RedisStorageBackend.scala rename to akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala diff --git a/akka-persistence-redis/src/test/scala/RedisPersistentActorSpec.scala b/akka-persistence/akka-persistence-redis/src/test/scala/RedisPersistentActorSpec.scala similarity index 100% rename from akka-persistence-redis/src/test/scala/RedisPersistentActorSpec.scala rename to akka-persistence/akka-persistence-redis/src/test/scala/RedisPersistentActorSpec.scala diff --git a/akka-persistence-redis/src/test/scala/RedisStorageBackendSpec.scala b/akka-persistence/akka-persistence-redis/src/test/scala/RedisStorageBackendSpec.scala similarity index 100% rename from akka-persistence-redis/src/test/scala/RedisStorageBackendSpec.scala rename to akka-persistence/akka-persistence-redis/src/test/scala/RedisStorageBackendSpec.scala diff --git a/akka-persistence-redis/pom.xml b/akka-persistence/pom.xml similarity index 69% rename from akka-persistence-redis/pom.xml rename to akka-persistence/pom.xml index ba2f295aaf..20f15f8aff 100644 --- a/akka-persistence-redis/pom.xml +++ b/akka-persistence/pom.xml @@ -2,32 +2,30 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - akka-persistence-redis - Akka Persistence Redis Module + akka-persistence-parent + Akka Persistence Modules - jar + pom akka se.scalablesolutions.akka 0.6 - ../pom.xml + + akka-persistence-common + akka-persistence-redis + akka-persistence-mongo + akka-persistence-cassandra + + - akka-persistence-common + akka-core ${project.groupId} ${project.version} - - - - com.redis - redisclient - 1.0.1 - - org.scalatest @@ -42,5 +40,4 @@ test - diff --git a/akka-rest/pom.xml b/akka-rest/pom.xml index c354831cd4..812b73c862 100644 --- a/akka-rest/pom.xml +++ b/akka-rest/pom.xml @@ -12,7 +12,6 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml diff --git a/akka-samples-java/pom.xml b/akka-samples-java/pom.xml deleted file mode 100644 index 5f41981ad0..0000000000 --- a/akka-samples-java/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - 4.0.0 - - akka-samples-java - Akka Java Samples Module - - jar - - - akka - se.scalablesolutions.akka - 0.6 - ../pom.xml - - - - - akka-util-java - ${project.groupId} - ${project.version} - - - akka-util - ${project.groupId} - ${project.version} - - - akka-core - ${project.groupId} - ${project.version} - - - akka-rest - ${project.groupId} - ${project.version} - - - ${project.groupId} - akka-persistence-cassandra - ${project.version} - - - akka-kernel - ${project.groupId} - ${project.version} - - - javax.ws.rs - jsr311-api - 1.0 - - - - - src/main/java - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.5 - 1.5 - - **/* - - - - - maven-antrun-plugin - - - install - - - - - - - run - - - - - - - diff --git a/akka-samples-lift/pom.xml b/akka-samples-lift/pom.xml deleted file mode 100644 index 938f2b14fd..0000000000 --- a/akka-samples-lift/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - 4.0.0 - - akka-samples-lift - Akka Lift Samples Module - - war - - - akka - se.scalablesolutions.akka - 0.6 - ../pom.xml - - - - 1.1-M6 - - - - - akka-util-java - ${project.groupId} - ${project.version} - - - akka-util - ${project.groupId} - ${project.version} - - - akka-core - ${project.groupId} - ${project.version} - - - akka-persistence-cassandra - ${project.groupId} - ${project.version} - - - akka-rest - ${project.groupId} - ${project.version} - - - akka-kernel - ${project.groupId} - ${project.version} - - - javax.ws.rs - jsr311-api - 1.0 - - - org.scala-lang - scala-library - ${scala.version} - - - net.liftweb - lift-util - ${lift.version} - - - net.liftweb - lift-webkit - ${lift.version} - - - javax.servlet - servlet-api - 2.5 - provided - - - junit - junit - 4.5 - test - - - org.mortbay.jetty - jetty - [6.1.6,) - test - - - org.scala-lang - scala-compiler - ${scala.version} - test - - - diff --git a/akka-samples-security/pom.xml b/akka-samples-security/pom.xml deleted file mode 100644 index a94f8e7171..0000000000 --- a/akka-samples-security/pom.xml +++ /dev/null @@ -1,78 +0,0 @@ - - 4.0.0 - - akka-samples-security - Akka Sample Security Module - - jar - - - akka - se.scalablesolutions.akka - 0.6 - ../pom.xml - - - - - akka-util-java - ${project.groupId} - ${project.version} - - - akka-util - ${project.groupId} - ${project.version} - - - akka-core - ${project.groupId} - ${project.version} - - - akka-security - ${project.groupId} - ${project.version} - - - akka-persistence-cassandra - ${project.groupId} - ${project.version} - - - javax.ws.rs - jsr311-api - 1.0 - - - javax.annotation - jsr250-api - 1.0 - - - - - - src/main/scala - - - maven-antrun-plugin - - - install - - - - - - - run - - - - - - - diff --git a/akka-samples-chat/README b/akka-samples/akka-sample-chat/README similarity index 100% rename from akka-samples-chat/README rename to akka-samples/akka-sample-chat/README diff --git a/akka-samples/akka-sample-chat/pom.xml b/akka-samples/akka-sample-chat/pom.xml new file mode 100644 index 0000000000..9648a1f867 --- /dev/null +++ b/akka-samples/akka-sample-chat/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + akka-sample-chat + Akka Chat Sample Module + + jar + + + akka-samples-parent + se.scalablesolutions.akka + 0.6 + + + + src/main/scala + + + maven-antrun-plugin + + + install + + + + + + + run + + + + + + + diff --git a/akka-samples-chat/src/main/scala/ChatServer.scala b/akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala similarity index 100% rename from akka-samples-chat/src/main/scala/ChatServer.scala rename to akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala diff --git a/akka-samples-lift/config/akka.conf b/akka-samples/akka-sample-lift/config/akka.conf similarity index 100% rename from akka-samples-lift/config/akka.conf rename to akka-samples/akka-sample-lift/config/akka.conf diff --git a/akka-samples/akka-sample-lift/pom.xml b/akka-samples/akka-sample-lift/pom.xml new file mode 100644 index 0000000000..bc9d1f8eaa --- /dev/null +++ b/akka-samples/akka-sample-lift/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + akka-sample-lift + Akka Lift Sample Module + + war + + + akka-samples-parent + se.scalablesolutions.akka + 0.6 + + + + 1.1-M6 + + + + + net.liftweb + lift-util + ${lift.version} + + + net.liftweb + lift-webkit + ${lift.version} + + + javax.servlet + servlet-api + 2.5 + provided + + + junit + junit + 4.5 + test + + + org.mortbay.jetty + jetty + [6.1.6,) + test + + + diff --git a/akka-samples-lift/src/main/scala/akka/SimpleService.scala b/akka-samples/akka-sample-lift/src/main/scala/akka/SimpleService.scala similarity index 100% rename from akka-samples-lift/src/main/scala/akka/SimpleService.scala rename to akka-samples/akka-sample-lift/src/main/scala/akka/SimpleService.scala diff --git a/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala b/akka-samples/akka-sample-lift/src/main/scala/bootstrap/liftweb/Boot.scala similarity index 100% rename from akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala rename to akka-samples/akka-sample-lift/src/main/scala/bootstrap/liftweb/Boot.scala diff --git a/akka-samples-lift/src/main/scala/comet/.keep b/akka-samples/akka-sample-lift/src/main/scala/comet/.keep similarity index 100% rename from akka-samples-lift/src/main/scala/comet/.keep rename to akka-samples/akka-sample-lift/src/main/scala/comet/.keep diff --git a/akka-samples-lift/src/main/scala/model/.keep b/akka-samples/akka-sample-lift/src/main/scala/model/.keep similarity index 100% rename from akka-samples-lift/src/main/scala/model/.keep rename to akka-samples/akka-sample-lift/src/main/scala/model/.keep diff --git a/akka-samples-lift/src/main/scala/snippet/.keep b/akka-samples/akka-sample-lift/src/main/scala/snippet/.keep similarity index 100% rename from akka-samples-lift/src/main/scala/snippet/.keep rename to akka-samples/akka-sample-lift/src/main/scala/snippet/.keep diff --git a/akka-samples-lift/src/main/scala/snippet/HelloWorld.scala b/akka-samples/akka-sample-lift/src/main/scala/snippet/HelloWorld.scala similarity index 100% rename from akka-samples-lift/src/main/scala/snippet/HelloWorld.scala rename to akka-samples/akka-sample-lift/src/main/scala/snippet/HelloWorld.scala diff --git a/akka-samples-lift/src/main/scala/view/.keep b/akka-samples/akka-sample-lift/src/main/scala/view/.keep similarity index 100% rename from akka-samples-lift/src/main/scala/view/.keep rename to akka-samples/akka-sample-lift/src/main/scala/view/.keep diff --git a/akka-samples-lift/src/main/webapp/WEB-INF/web.xml b/akka-samples/akka-sample-lift/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from akka-samples-lift/src/main/webapp/WEB-INF/web.xml rename to akka-samples/akka-sample-lift/src/main/webapp/WEB-INF/web.xml diff --git a/akka-samples-lift/src/main/webapp/index.html b/akka-samples/akka-sample-lift/src/main/webapp/index.html similarity index 100% rename from akka-samples-lift/src/main/webapp/index.html rename to akka-samples/akka-sample-lift/src/main/webapp/index.html diff --git a/akka-samples-lift/src/main/webapp/templates-hidden/default.html b/akka-samples/akka-sample-lift/src/main/webapp/templates-hidden/default.html similarity index 100% rename from akka-samples-lift/src/main/webapp/templates-hidden/default.html rename to akka-samples/akka-sample-lift/src/main/webapp/templates-hidden/default.html diff --git a/akka-samples-lift/src/test/scala/LiftConsole.scala b/akka-samples/akka-sample-lift/src/test/scala/LiftConsole.scala similarity index 100% rename from akka-samples-lift/src/test/scala/LiftConsole.scala rename to akka-samples/akka-sample-lift/src/test/scala/LiftConsole.scala diff --git a/akka-samples-lift/src/test/scala/RunWebApp.scala b/akka-samples/akka-sample-lift/src/test/scala/RunWebApp.scala similarity index 100% rename from akka-samples-lift/src/test/scala/RunWebApp.scala rename to akka-samples/akka-sample-lift/src/test/scala/RunWebApp.scala diff --git a/akka-samples/akka-sample-rest-java/pom.xml b/akka-samples/akka-sample-rest-java/pom.xml new file mode 100644 index 0000000000..23ec858ff8 --- /dev/null +++ b/akka-samples/akka-sample-rest-java/pom.xml @@ -0,0 +1,49 @@ + + 4.0.0 + + akka-sample-rest-java + Akka REST Java Sample Module + + jar + + + akka-samples-parent + se.scalablesolutions.akka + 0.6 + + + + src/main/java + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.5 + 1.5 + + **/* + + + + + maven-antrun-plugin + + + install + + + + + + + run + + + + + + + diff --git a/akka-samples-java/src/main/java/sample/java/Boot.java b/akka-samples/akka-sample-rest-java/src/main/java/sample/java/Boot.java similarity index 100% rename from akka-samples-java/src/main/java/sample/java/Boot.java rename to akka-samples/akka-sample-rest-java/src/main/java/sample/java/Boot.java diff --git a/akka-samples-java/src/main/java/sample/java/PersistentSimpleService.java b/akka-samples/akka-sample-rest-java/src/main/java/sample/java/PersistentSimpleService.java similarity index 100% rename from akka-samples-java/src/main/java/sample/java/PersistentSimpleService.java rename to akka-samples/akka-sample-rest-java/src/main/java/sample/java/PersistentSimpleService.java diff --git a/akka-samples-java/src/main/java/sample/java/SimpleService.java b/akka-samples/akka-sample-rest-java/src/main/java/sample/java/SimpleService.java similarity index 100% rename from akka-samples-java/src/main/java/sample/java/SimpleService.java rename to akka-samples/akka-sample-rest-java/src/main/java/sample/java/SimpleService.java diff --git a/akka-samples/akka-sample-rest-scala/pom.xml b/akka-samples/akka-sample-rest-scala/pom.xml new file mode 100644 index 0000000000..b9268b76eb --- /dev/null +++ b/akka-samples/akka-sample-rest-scala/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + + akka-sample-rest-scala + Akka REST Scala Sample Module + + jar + + + akka-samples-parent + se.scalablesolutions.akka + 0.6 + + + + + javax.ws.rs + jsr311-api + 1.0 + + + + + src/main/scala + + + maven-antrun-plugin + + + install + + + + + + + run + + + + + + + diff --git a/akka-samples-scala/src/main/scala/SimpleService.scala b/akka-samples/akka-sample-rest-scala/src/main/scala/SimpleService.scala similarity index 100% rename from akka-samples-scala/src/main/scala/SimpleService.scala rename to akka-samples/akka-sample-rest-scala/src/main/scala/SimpleService.scala diff --git a/akka-samples-chat/pom.xml b/akka-samples/akka-sample-security/pom.xml similarity index 62% rename from akka-samples-chat/pom.xml rename to akka-samples/akka-sample-security/pom.xml index 09f8eaaaf0..4a2f44b3ae 100644 --- a/akka-samples-chat/pom.xml +++ b/akka-samples/akka-sample-security/pom.xml @@ -2,29 +2,29 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - akka-samples-chat - Akka Chat Sample Module + akka-sample-security + Akka Sample Security Module jar - akka + akka-samples-parent se.scalablesolutions.akka 0.6 - ../pom.xml - akka-core - ${project.groupId} - ${project.version} + javax.ws.rs + jsr311-api + 1.0 - akka-persistence-redis - ${project.groupId} - ${project.version} + javax.annotation + jsr250-api + 1.0 + @@ -37,8 +37,8 @@ install - + diff --git a/akka-samples-security/src/main/resources/akka.conf b/akka-samples/akka-sample-security/src/main/resources/akka.conf similarity index 100% rename from akka-samples-security/src/main/resources/akka.conf rename to akka-samples/akka-sample-security/src/main/resources/akka.conf diff --git a/akka-samples-security/src/main/scala/SimpleService.scala b/akka-samples/akka-sample-security/src/main/scala/SimpleService.scala similarity index 100% rename from akka-samples-security/src/main/scala/SimpleService.scala rename to akka-samples/akka-sample-security/src/main/scala/SimpleService.scala diff --git a/akka-samples-security/src/main/webapp/WEB-INF/web.xml b/akka-samples/akka-sample-security/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from akka-samples-security/src/main/webapp/WEB-INF/web.xml rename to akka-samples/akka-sample-security/src/main/webapp/WEB-INF/web.xml diff --git a/akka-samples-scala/pom.xml b/akka-samples/pom.xml similarity index 54% rename from akka-samples-scala/pom.xml rename to akka-samples/pom.xml index 0f21cec7b6..5b008bafde 100644 --- a/akka-samples-scala/pom.xml +++ b/akka-samples/pom.xml @@ -2,29 +2,26 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - akka-samples-scala - Akka Scala Samples Module + akka-samples-parent + Akka Sample Modules - jar + pom akka se.scalablesolutions.akka 0.6 - ../pom.xml + + akka-sample-chat + akka-sample-lift + akka-sample-security + akka-sample-rest-scala + akka-sample-rest-java + + - - akka-util-java - ${project.groupId} - ${project.version} - - - akka-util - ${project.groupId} - ${project.version} - akka-core ${project.groupId} @@ -35,43 +32,25 @@ ${project.groupId} ${project.version} + + akka-persistence-redis + ${project.groupId} + ${project.version} + akka-rest ${project.groupId} ${project.version} - akka-kernel + akka-comet ${project.groupId} ${project.version} - javax.ws.rs - jsr311-api - 1.0 + akka-security + ${project.groupId} + ${project.version} - - - src/main/scala - - - maven-antrun-plugin - - - install - - - - - - - run - - - - - - diff --git a/akka-security/pom.xml b/akka-security/pom.xml index 64bb6184a1..4b3dd43195 100644 --- a/akka-security/pom.xml +++ b/akka-security/pom.xml @@ -11,30 +11,14 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml - - org.scala-lang - scala-library - ${scala.version} - akka-core ${project.groupId} ${project.version} - - akka-persistence-cassandra - ${project.groupId} - ${project.version} - - - akka-util - ${project.groupId} - ${project.version} - javax.annotation jsr250-api diff --git a/akka-util-java/pom.xml b/akka-util-java/pom.xml index 2d2cbafec4..a09aed8ed2 100755 --- a/akka-util-java/pom.xml +++ b/akka-util-java/pom.xml @@ -11,7 +11,6 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml diff --git a/akka-util/pom.xml b/akka-util/pom.xml index 9f88c33554..e4e4622ad9 100644 --- a/akka-util/pom.xml +++ b/akka-util/pom.xml @@ -11,7 +11,6 @@ akka se.scalablesolutions.akka 0.6 - ../pom.xml diff --git a/pom.xml b/pom.xml index d9ff7d7a53..d37cccab1b 100755 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 - Akka Transactors + Akka Project akka se.scalablesolutions.akka 0.6 @@ -51,22 +51,15 @@ akka-util-java akka-util akka-core - akka-persistence-common - akka-persistence-cassandra - akka-persistence-mongo - akka-persistence-redis + akka-persistence akka-rest akka-comet akka-amqp akka-security + akka-spring akka-kernel akka-fun-test-java - akka-samples-scala - akka-samples-lift - akka-samples-chat - akka-samples-java - akka-samples-security - akka-spring + akka-samples diff --git a/scripts/remove_trailing_whitespace.sh b/scripts/remove_trailing_whitespace.sh index 35038ae44d..16e19e4c97 100755 --- a/scripts/remove_trailing_whitespace.sh +++ b/scripts/remove_trailing_whitespace.sh @@ -1,4 +1,3 @@ #!/bin/sh echo "removing all trailing whitespace from all *.scala, *.html and *.xml files" -find . -type f -name '*.scala' -exec sed -i 's/[ \t]*$//' {} \; - +find . -type f -name '*.scala' -exec sed -i 's/[ \t]*$//' {} \; \ No newline at end of file