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 = *