added permissions to repository

This commit is contained in:
Sebastian Sdorra
2010-09-09 10:11:58 +02:00
parent e553f3fc34
commit db6ddfb59e
5 changed files with 249 additions and 10 deletions

View File

@@ -40,6 +40,17 @@ public class HgConfig
return configDirectory;
}
/**
* Method description
*
*
* @return
*/
public String getHgBinary()
{
return hgBinary;
}
/**
* Method description
*
@@ -64,6 +75,17 @@ public class HgConfig
this.configDirectory = configDirectory;
}
/**
* Method description
*
*
* @param hgBinary
*/
public void setHgBinary(String hgBinary)
{
this.hgBinary = hgBinary;
}
/**
* Method description
*
@@ -80,6 +102,9 @@ public class HgConfig
/** Field description */
private File configDirectory;
/** Field description */
private String hgBinary = "hg";
/** Field description */
private File repositoryDirectory;
}

View File

@@ -0,0 +1,157 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sonia.scm.repository;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Sebastian Sdorra
*/
@XmlRootElement(name="permissions")
@XmlAccessorType(XmlAccessType.FIELD)
public class Permission
{
/**
* Constructs ...
*
*/
public Permission() {}
/**
* Constructs ...
*
*
* @param name
* @param readable
* @param writeable
*/
public Permission(String name, boolean readable, boolean writeable)
{
this.name = name;
this.readable = readable;
this.writeable = writeable;
this.groupPermission = false;
}
/**
* Constructs ...
*
*
* @param name
* @param readable
* @param writeable
* @param groupPermission
*/
public Permission(String name, boolean readable, boolean writeable,
boolean groupPermission)
{
this.name = name;
this.readable = readable;
this.writeable = writeable;
this.groupPermission = groupPermission;
}
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @return
*/
@Override
public String toString()
{
StringBuilder buffer = new StringBuilder();
buffer.append(name);
if (groupPermission)
{
buffer.append(" (Group)");
}
buffer.append(" - ");
if (readable)
{
buffer.append("r");
}
if (writeable)
{
buffer.append("w");
}
return buffer.toString();
}
//~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @return
*/
public String getName()
{
return name;
}
/**
* Method description
*
*
* @return
*/
public boolean isGroupPermission()
{
return groupPermission;
}
/**
* Method description
*
*
* @return
*/
public boolean isReadable()
{
return readable;
}
/**
* Method description
*
*
* @return
*/
public boolean isWriteable()
{
return writeable;
}
//~--- fields ---------------------------------------------------------------
/** Field description */
private boolean groupPermission;
/** Field description */
private String name;
/** Field description */
private boolean readable;
/** Field description */
private boolean writeable;
}

View File

@@ -7,10 +7,18 @@
package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@@ -21,7 +29,7 @@ import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "repositories")
@XmlType(propOrder =
{
"type", "name", "contact", "description"
"type", "name", "contact", "description", "permissions"
})
public class Repository implements Serializable
{
@@ -58,14 +66,21 @@ public class Repository implements Serializable
* @param name
* @param contact
* @param description
* @param permissions
*/
public Repository(String type, String name, String contact,
String description)
String description, Permission... permissions)
{
this.type = type;
this.name = name;
this.contact = contact;
this.description = description;
this.permissions = new ArrayList<Permission>();
if (Util.isNotEmpty(permissions))
{
this.permissions.addAll(Arrays.asList(permissions));
}
}
//~--- get methods ----------------------------------------------------------
@@ -103,6 +118,17 @@ public class Repository implements Serializable
return name;
}
/**
* Method description
*
*
* @return
*/
public List<Permission> getPermissions()
{
return permissions;
}
/**
* Method description
*
@@ -149,6 +175,17 @@ public class Repository implements Serializable
this.name = name;
}
/**
* Method description
*
*
* @param permissions
*/
public void setPermissions(List<Permission> permissions)
{
this.permissions = permissions;
}
/**
* Method description
*
@@ -171,6 +208,9 @@ public class Repository implements Serializable
/** Field description */
private String name;
/** Field description */
private List<Permission> permissions;
/** Field description */
private String type;
}

View File

@@ -10,6 +10,8 @@ package sonia.scm.api.rest;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.group.Group;
import sonia.scm.repository.Repository;
//~--- JDK imports ------------------------------------------------------------
import com.sun.jersey.api.json.JSONConfiguration;
@@ -41,7 +43,9 @@ public class JsonJaxbContextResolver implements ContextResolver<JAXBContext>
{
this.context = new JSONJAXBContext(
JSONConfiguration.mapped().rootUnwrapping(true).arrays(
"member", "groups").build(), types.toArray(new Class[0]));
"member", "groups", "permissions").nonStrings(
"readable", "writeable", "groupPermission").build(), types.toArray(
new Class[0]));
}
//~--- get methods ----------------------------------------------------------
@@ -68,6 +72,6 @@ public class JsonJaxbContextResolver implements ContextResolver<JAXBContext>
private JAXBContext context;
/** Field description */
private List<Class> types = Arrays.asList(new Class[] {
Group.class });
private List<Class> types = Arrays.asList(new Class[] { Group.class,
Repository.class });
}

View File

@@ -9,6 +9,7 @@ package sonia.scm.api.rest.resources;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.Permission;
import sonia.scm.repository.Repository;
//~--- JDK imports ------------------------------------------------------------
@@ -47,20 +48,32 @@ public class RepositoryResource extends AbstractResource<Repository>
repositoryStore = new LinkedHashMap<String, Repository>();
repositoryStore.put("sonia.lib",
new Repository("hg", "sonia.lib", "csit@ostfalia.de",
"SONIA Library"));
"SONIA Library",
new Permission("csit", true, true,
true)));
repositoryStore.put("sonia.misc",
new Repository("hg", "sonia.misc", "csit@ostfalia.de",
"SONIA Miscelanious"));
"SONIA Miscelanious",
new Permission("csit", true, true,
true)));
repositoryStore.put("PWA",
new Repository("svn", "PWA",
"csit@fh-wolfenbuettel.de", "PWA"));
"csit@fh-wolfenbuettel.de", "PWA",
new Permission("th", true, true),
new Permission("sdorra", true, true),
new Permission("oelkersd", true,
false)));
repositoryStore.put("sonia.app",
new Repository("hg", "sonia.app", "csit@ostfalia.de",
"SONIA Applications"));
"SONIA Applications",
new Permission("csit", true, true,
true)));
repositoryStore.put("sonia.webapps",
new Repository("hg", "sonia.webapps",
"csit@ostfalia.de",
"SONIA WebApplications"));
"SONIA WebApplications",
new Permission("csit", true, true,
true)));
}
//~--- methods --------------------------------------------------------------