You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/09/11 11:57:24 UTC

svn commit: r442150 - in /maven/shared/trunk/maven-user/maven-user-acegi/src/main: java/org/apache/maven/user/acegi/acl/ resources/ resources/org/ resources/org/apache/ resources/org/apache/maven/ resources/org/apache/maven/user/ resources/org/apache/m...

Author: carlos
Date: Mon Sep 11 02:57:23 2006
New Revision: 442150

URL: http://svn.apache.org/viewvc?view=rev&rev=442150
Log:
Move AclInitializer from Continuum

Added:
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java   (with props)
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-derby.sql
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-hsql.sql

Added: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java?view=auto&rev=442150
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java (added)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java Mon Sep 11 02:57:23 2006
@@ -0,0 +1,154 @@
+package org.apache.maven.user.acegi.acl;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.acegisecurity.acl.basic.jdbc.JdbcExtendedDaoImpl;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.codehaus.mojo.sql.SqlExecMojo;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.util.IOUtil;
+
+/**
+ * Initialize the ACL system with some default values.
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class AclInitializer
+    extends AbstractLogEnabled
+    implements Initializable
+{
+    public static final String ROLE = AclInitializer.class.getName();
+
+    private JdbcExtendedDaoImpl dao;
+
+    private SqlExecMojo sqlMojo;
+
+    private String sqlClasspathResource;
+
+    public void setDao( JdbcExtendedDaoImpl dao )
+    {
+        this.dao = dao;
+    }
+
+    public JdbcExtendedDaoImpl getDao()
+    {
+        return dao;
+    }
+
+    public void setSqlMojo( SqlExecMojo sqlMojo )
+    {
+        this.sqlMojo = sqlMojo;
+    }
+
+    public SqlExecMojo getSqlMojo()
+    {
+        return sqlMojo;
+    }
+
+    public void setSqlClasspathResource( String sqlClasspathResource )
+    {
+        this.sqlClasspathResource = sqlClasspathResource;
+    }
+
+    /**
+     * Classpath resource that contains the SQL to be executed.
+     * 
+     * @return classpath path
+     */
+    public String getSqlClasspathResource()
+    {
+        return sqlClasspathResource;
+    }
+
+    public void initialize()
+        throws InitializationException
+    {
+
+        InputStream is = null;
+        String sql = null;
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream( getSqlClasspathResource() );
+            if ( is == null )
+            {
+                throw new InitializationException( getSqlClasspathResource() + " does not exist in the classpath" );
+            }
+            sql = IOUtil.toString( is );
+        }
+        catch ( IOException e )
+        {
+            throw new InitializationException( "Unable to read sql file from classpath: " + getSqlClasspathResource(),
+                                               e );
+        }
+        finally
+        {
+            if ( is != null )
+            {
+                try
+                {
+                    is.close();
+                }
+                catch ( IOException e )
+                {
+                    // nothing to do here
+                }
+            }
+        }
+
+        getSqlMojo().addText( sql );
+
+        if ( getSqlMojo().getPassword() == null )
+        {
+            getSqlMojo().setPassword( "" );
+        }
+
+        try
+        {
+            getSqlMojo().execute();
+        }
+        catch ( MojoExecutionException e )
+        {
+            throw new InitializationException( e.getMessage(), e );
+        }
+
+        /* execute Spring initialization callback */
+        getDao().afterPropertiesSet();
+
+        /* poor check to see if this is the first time initializing the database */
+        if ( getSqlMojo().getSuccessfulStatements() >= 2 )
+        {
+            /* tables were created, insert default values */
+            getLogger().info( "Initializing ACL database" );
+
+            insertDefaultData();
+        }
+
+    }
+
+    /**
+     * Callback to insert default data when tables are created
+     */
+    protected void insertDefaultData()
+    {
+    }
+}

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/AclInitializer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-derby.sql
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-derby.sql?view=auto&rev=442150
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-derby.sql (added)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-derby.sql Mon Sep 11 02:57:23 2006
@@ -0,0 +1,32 @@
+CREATE SCHEMA sa;
+
+CREATE TABLE acl_object_identity (
+     id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT acl_object_identity_PK PRIMARY KEY,
+     object_identity VARCHAR(250) NOT NULL,
+     parent_object INTEGER,
+     acl_class VARCHAR(250) NOT NULL,
+     CONSTRAINT unique_object_identity UNIQUE(object_identity),
+     FOREIGN KEY (parent_object) REFERENCES acl_object_identity(id) ON DELETE CASCADE
+);
+
+CREATE TABLE acl_permission (
+     id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT acl_permission_PK PRIMARY KEY,
+     acl_object_identity INTEGER NOT NULL,
+     recipient VARCHAR(100) NOT NULL,
+     mask INTEGER NOT NULL,
+     CONSTRAINT unique_recipient UNIQUE(acl_object_identity, recipient),
+     FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity(id) ON DELETE CASCADE
+);
+
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:1', null, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:2', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:3', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:4', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:5', 3, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:6', 3, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (1, 'ROLE_ADMIN', 1);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (2, 'ROLE_ADMIN', 0);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (2, 'marissa', 2);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (3, 'scott', 14);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (6, 'scott', 1);

Added: maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-hsql.sql
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-hsql.sql?view=auto&rev=442150
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-hsql.sql (added)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/resources/org/apache/maven/user/acegi/acl/acegi-acl-hsql.sql Mon Sep 11 02:57:23 2006
@@ -0,0 +1,30 @@
+CREATE TABLE acl_object_identity (
+     id INTEGER GENERATED BY DEFAULT AS IDENTITY,
+     object_identity VARCHAR(250) NOT NULL,
+     parent_object INTEGER,
+     acl_class VARCHAR(250) NOT NULL,
+     CONSTRAINT unique_object_identity UNIQUE(object_identity),
+     FOREIGN KEY (parent_object) REFERENCES acl_object_identity(id) ON DELETE CASCADE
+);
+
+CREATE TABLE acl_permission (
+     id INTEGER GENERATED BY DEFAULT AS IDENTITY,
+     acl_object_identity INTEGER NOT NULL,
+     recipient VARCHAR(100) NOT NULL,
+     mask INTEGER NOT NULL,
+     CONSTRAINT unique_recipient UNIQUE(acl_object_identity, recipient),
+     FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity(id) ON DELETE CASCADE
+);
+
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:1', null, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:2', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:3', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:4', 1, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:5', 3, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+--INSERT INTO acl_object_identity (object_identity, parent_object, acl_class) VALUES ('org.apache.maven.continuum.model.project.ProjectGroup:6', 3, 'org.acegisecurity.acl.basic.SimpleAclEntry');
+
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (1, 'ROLE_ADMIN', 1);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (2, 'ROLE_ADMIN', 0);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (2, 'marissa', 2);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (3, 'scott', 14);
+--INSERT INTO acl_permission (acl_object_identity, recipient, mask) VALUES (6, 'scott', 1);