You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by vd...@apache.org on 2009/04/05 22:04:09 UTC
svn commit: r762144 - in
/incubator/esme/branches/access-pools/server/src/main/scala:
bootstrap/liftweb/ org/apache/esme/api/ org/apache/esme/model/
Author: vdichev
Date: Sun Apr 5 20:04:08 2009
New Revision: 762144
URL: http://svn.apache.org/viewvc?rev=762144&view=rev
Log:
Access pools and privilege model; pool creation via API.
Added:
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala (with props)
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala (with props)
Modified:
incubator/esme/branches/access-pools/server/src/main/scala/bootstrap/liftweb/Boot.scala
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Message.scala
Modified: incubator/esme/branches/access-pools/server/src/main/scala/bootstrap/liftweb/Boot.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/bootstrap/liftweb/Boot.scala?rev=762144&r1=762143&r2=762144&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/bootstrap/liftweb/Boot.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/bootstrap/liftweb/Boot.scala Sun Apr 5 20:04:08 2009
@@ -58,13 +58,15 @@
Message, Mailbox, Tag,
Group, Relationship, MessageTag,
AuthToken, UrlStore, Tracking,
- Action, DidPerform)
+ Action, DidPerform, AccessPool,
+ Privilege)
}
Schemifier.schemify(true, Log.infoF _, User, ExtSession, Message,
Mailbox, Tag,
Group, Relationship, MessageTag, AuthToken,
- UrlStore, Tracking, Action, DidPerform)
+ UrlStore, Tracking, Action, DidPerform,
+ AccessPool, Privilege)
LiftRules.statelessDispatchTable.append {
case r @ Req("api" :: "send_msg" :: Nil, "", PostRequest)
Modified: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala?rev=762144&r1=762143&r2=762144&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala Sun Apr 5 20:04:08 2009
@@ -97,6 +97,9 @@
case Req("api" :: "delete_action" :: Nil, "", PostRequest) =>
deleteAction _
+
+ case Req("api" :: "add_pool" :: poolName :: Nil, "", PostRequest) =>
+ () => addPool(poolName)
}
def findAction: Box[Action] =
@@ -340,6 +343,16 @@
r
}
+ def addPool(poolName: String): LiftResponse = {
+ val r: Box[Boolean] =
+ for (user <- User.currentUser;
+ pool = AccessPool.create.name(poolName).saveMe;
+ privilegeSaved = Privilege.create.pool(pool).user(user).permission(Privilege.Admin.toStr).save
+ ) yield privilegeSaved
+
+ r
+ }
+
def createTag(in: NodeSeq) = <esme_api>{in}</esme_api>
Added: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala?rev=762144&view=auto
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala (added)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala Sun Apr 5 20:04:08 2009
@@ -0,0 +1,38 @@
+package org.apache.esme.model
+
+/**
+ * Copyright 2008-2009 WorldWide Conferencing, LLC
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import net.liftweb._
+import mapper._
+import util._
+
+object AccessPool extends AccessPool with LongKeyedMetaMapper[AccessPool] {
+
+}
+
+class AccessPool extends LongKeyedMapper[AccessPool] {
+ def getSingleton = AccessPool // what's the "meta" server
+ def primaryKeyField = id
+
+ object id extends MappedLongIndex(this)
+ object name extends MappedText(this)
+}
Propchange: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala
------------------------------------------------------------------------------
svn:executable = *
Modified: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Message.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Message.scala?rev=762144&r1=762143&r2=762144&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Message.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Message.scala Sun Apr 5 20:04:08 2009
@@ -196,6 +196,8 @@
object conversation extends MappedLongForeignKey(this, Message)
+ object pool extends MappedLongForeignKey(this, AccessPool)
+
private[model] def preload(users: Map[Long, User]) {
author.can.foreach(id => this.author.primeObj(users.get(id)))
primeNameMap(users)
Added: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala?rev=762144&view=auto
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala (added)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala Sun Apr 5 20:04:08 2009
@@ -0,0 +1,51 @@
+package org.apache.esme.model
+
+/**
+ * Copyright 2008-2009 WorldWide Conferencing, LLC
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import net.liftweb._
+import mapper._
+import util._
+
+object Privilege extends Privilege with LongKeyedMetaMapper[Privilege] {
+
+}
+
+class Privilege extends LongKeyedMapper[Privilege] {
+ def getSingleton = Privilege // what's the "meta" server
+ def primaryKeyField = id
+
+ object id extends MappedLongIndex(this)
+ object pool extends MappedLongForeignKey(this, AccessPool)
+ object user extends MappedLongForeignKey(this, User)
+ object permission extends MappedString(this, 256) with Permission
+
+ sealed trait Permission
+ case object Read extends Permission {
+ def toStr = "Read"
+ }
+ case object Write extends Permission {
+ def toStr = "Write"
+ }
+ case object Admin extends Permission {
+ def toStr = "Admin"
+ }
+}
Propchange: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala
------------------------------------------------------------------------------
svn:executable = *