You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2011/03/08 00:05:12 UTC
svn commit: r1079014 - in /portals/jetspeed-2/portal/trunk: ./
maven/jetspeed-db-maven-plugin/
maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/
maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/
maven/jetspeed-d...
Author: ate
Date: Mon Mar 7 23:05:12 2011
New Revision: 1079014
URL: http://svn.apache.org/viewvc?rev=1079014&view=rev
Log:
JS2-1245: Update some external artifact dependencies to more recent and general available versions
See: https://issues.apache.org/jira/browse/JS2-1245
- Replace the ddlutils svn r551445 build artifact patched with http://issues.apache.org/jira/browse/DDLUTILS-75#action_12521579 with a CGLIB runtime instrumented ddlutils-1.0.jar instead.
ddlutils trunk (1.1-SNAPSHOT) does have DDLUTILS-75 fixed, however it is long time in coming to a release of that.
Instead, this alternative runtime "patch" does the same trick based on the ddlutils-1.0 release, and should be good until ddltuils eventually might come out with a newer version.
Added:
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java (with props)
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/db/
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/db/ddlutils/
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/db/ddlutils/io/
Modified:
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/pom.xml
portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/DDLGeneratorMojo.java
portals/jetspeed-2/portal/trunk/pom.xml
Modified: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/pom.xml?rev=1079014&r1=1079013&r2=1079014&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/pom.xml (original)
+++ portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/pom.xml Mon Mar 7 23:05:12 2011
@@ -58,6 +58,12 @@
<groupId>org.apache.ddlutils</groupId>
<artifactId>ddlutils</artifactId>
</dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <version>${cglib.version}</version>
+ </dependency>
+
<!-- Commons Digester (ddlutils->betwixt-digester) requires JCL -->
<dependency>
<groupId>org.slf4j</groupId>
Added: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java?rev=1079014&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java (added)
+++ portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java Mon Mar 7 23:05:12 2011
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+package org.apache.ddlutils.platform;
+
+import java.io.IOException;
+import java.sql.DatabaseMetaData;
+
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+import org.apache.ddlutils.Platform;
+import org.apache.ddlutils.model.Database;
+import org.apache.ddlutils.model.ForeignKey;
+import org.apache.ddlutils.model.Table;
+import org.apache.ddlutils.platform.CreationParameters;
+import org.apache.ddlutils.platform.SqlBuilder;
+
+/**
+ * SqlBuilder enhanced through cglib modifying ddlutils 1.0 behavior at runtime for
+ * https://issues.apache.org/jira/browse/DDLUTILS-75 which is fixed in ddlutils 1.1 but hasn't been released yet.
+ *
+ * @version $Id$
+ */
+public class EnhancedSqlBuilder extends SqlBuilder
+{
+ private SqlBuilder internal;
+
+ private class SqlBuilderEnhancer implements MethodInterceptor
+ {
+ public Object intercept(Object obj, java.lang.reflect.Method method, Object[] args, MethodProxy proxy) throws Throwable
+ {
+ if (method.getName().equals("writeEmbeddedForeignKeysStmt"))
+ {
+ EnhancedSqlBuilder.this.writeEmbeddedForeignKeysStmt((Database)args[0], (Table)args[1]);
+ return null;
+ }
+ else if (method.getName().equals("writeExternalForeignKeyCreateStmt"))
+ {
+ EnhancedSqlBuilder.this.writeExternalForeignKeyCreateStmt((Database)args[0], (Table)args[1], (ForeignKey)args[2]);
+ return null;
+ }
+ else
+ {
+ return proxy.invokeSuper(obj, args);
+ }
+ }
+ }
+
+ public EnhancedSqlBuilder(SqlBuilder sqlBuilder)
+ {
+ super(null);
+ Enhancer e = new Enhancer();
+ e.setSuperclass(sqlBuilder.getClass());
+ e.setCallback(new SqlBuilderEnhancer());
+ internal = (SqlBuilder)e.create(new Class[]{Platform.class}, new Object[]{sqlBuilder.getPlatform()});
+ internal.setIndent(sqlBuilder.getIndent());
+ internal.setValueLocale(sqlBuilder.getValueLocale());
+ internal.setWriter(sqlBuilder.getWriter());
+ }
+
+ public void createTables(Database database, CreationParameters params,
+ boolean dropTables) throws IOException
+ {
+ internal.createTables(database, params, dropTables);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected String getOnDeleteClauseForCode(int deleteRuleCode)
+ {
+ String platform = internal.getPlatform().getName();
+
+ if ( platform.equals("Firebird") ||
+ platform.equals("SapDB") ||
+ platform.equals("PostgreSql") ||
+ platform.equals("Derby") ||
+ platform.startsWith("MySQL") ||
+ platform.startsWith("DB2"))
+ {
+ switch (deleteRuleCode)
+ {
+ case DatabaseMetaData.importedKeyCascade:
+ return "ON DELETE CASCADE";
+ case DatabaseMetaData.importedKeyRestrict:
+ return "ON DELETE RESTRICT";
+ case DatabaseMetaData.importedKeySetNull:
+ return "ON DELETE SET NULL";
+ default:
+ return ""; // No action case
+ }
+ }
+ else if (platform.startsWith("HsqlDb") || platform.startsWith("Oracle"))
+ {
+ switch (deleteRuleCode)
+ {
+ case DatabaseMetaData.importedKeyCascade:
+ return "ON DELETE CASCADE";
+ case DatabaseMetaData.importedKeyRestrict:
+ return ""; // not supported
+ case DatabaseMetaData.importedKeySetNull:
+ return "ON DELETE SET NULL";
+ default:
+ return ""; // No action case
+ }
+ }
+ else if (platform.equals("MsSql"))
+ {
+ switch (deleteRuleCode)
+ {
+ case DatabaseMetaData.importedKeyCascade:
+ return "ON DELETE CASCADE";
+ case DatabaseMetaData.importedKeyRestrict:
+ return ""; // not supported
+ case DatabaseMetaData.importedKeySetNull:
+ return "ON DELETE SET NULL";
+ default:
+ return "ON DELETE NO ACTION"; // No action case
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Writes the foreign key constraints inside a create table () clause.
+ *
+ * @param database The database model
+ * @param table The table
+ */
+ protected void writeEmbeddedForeignKeysStmt(Database database, Table table) throws IOException
+ {
+ for (int idx = 0; idx < table.getForeignKeyCount(); idx++)
+ {
+ ForeignKey key = table.getForeignKey(idx);
+
+ if (key.getForeignTableName() == null)
+ {
+ internal._log.warn("Foreign key table is null for key " + key);
+ }
+ else
+ {
+ internal.printStartOfEmbeddedStatement();
+ if (internal.getPlatformInfo().isEmbeddedForeignKeysNamed())
+ {
+ internal.print("CONSTRAINT ");
+ internal.printIdentifier(internal.getForeignKeyName(table, key));
+ internal.print(" ");
+ }
+ internal.print("FOREIGN KEY (");
+ internal.writeLocalReferences(key);
+ internal.print(") REFERENCES ");
+ internal.printIdentifier(internal.getTableName(database.findTable(key.getForeignTableName())));
+ internal.print(" (");
+ internal.writeForeignReferences(key);
+ internal.print(")");
+
+ String onDeleteClause = getOnDeleteClauseForCode(((org.apache.jetspeed.maven.plugins.db.ddlutils.model.ForeignKey)key).getDeleteRuleCode());
+ if (onDeleteClause.trim().length() > 0)
+ {
+ internal.print(' ' + onDeleteClause);
+ }
+ }
+ }
+ }
+
+ /**
+ * Writes a single foreign key constraint using a alter table statement.
+ *
+ * @param database The database model
+ * @param table The table
+ * @param key The foreign key
+ */
+ protected void writeExternalForeignKeyCreateStmt(Database database, Table table, ForeignKey key) throws IOException
+ {
+ if (key.getForeignTableName() == null)
+ {
+ internal._log.warn("Foreign key table is null for key " + key);
+ }
+ else
+ {
+ internal.writeTableAlterStmt(table);
+
+ String platform = internal.getPlatform().getName();
+
+ if (platform.equals("SapDB") || platform.equals("MaxDB"))
+ {
+ internal.print(" ADD FOREIGN KEY ");
+ internal.printIdentifier(internal.getForeignKeyName(table, key));
+ internal.print(" (");
+ }
+ else
+ {
+ internal.print("ADD CONSTRAINT ");
+ internal.printIdentifier(internal.getForeignKeyName(table, key));
+ internal.print(" FOREIGN KEY (");
+ }
+
+ internal.writeLocalReferences(key);
+ internal.print(") REFERENCES ");
+ internal.printIdentifier(internal.getTableName(database.findTable(key.getForeignTableName())));
+ internal.print(" (");
+ internal.writeForeignReferences(key);
+ internal.print(")");
+ String onDeleteClause = getOnDeleteClauseForCode(((org.apache.jetspeed.maven.plugins.db.ddlutils.model.ForeignKey)key).getDeleteRuleCode());
+ if (onDeleteClause.trim().length() > 0)
+ {
+ internal.print(' ' + onDeleteClause);
+ }
+ internal.printEndOfStatement();
+ }
+ }
+}
Propchange: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/ddlutils/platform/EnhancedSqlBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/DDLGeneratorMojo.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/DDLGeneratorMojo.java?rev=1079014&r1=1079013&r2=1079014&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/DDLGeneratorMojo.java (original)
+++ portals/jetspeed-2/portal/trunk/maven/jetspeed-db-maven-plugin/src/main/java/org/apache/jetspeed/maven/plugins/DDLGeneratorMojo.java Mon Mar 7 23:05:12 2011
@@ -23,12 +23,14 @@ import java.io.StringWriter;
import org.apache.ddlutils.Platform;
import org.apache.ddlutils.PlatformFactory;
-import org.apache.ddlutils.io.DatabaseIO;
import org.apache.ddlutils.model.Database;
import org.apache.ddlutils.model.Table;
import org.apache.ddlutils.platform.CreationParameters;
+import org.apache.ddlutils.platform.EnhancedSqlBuilder;
+import org.apache.ddlutils.platform.SqlBuilder;
import org.apache.ddlutils.platform.oracle.Oracle8Platform;
import org.apache.ddlutils.task.TableSpecificParameter;
+import org.apache.jetspeed.maven.plugins.db.ddlutils.io.DatabaseIO;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -147,11 +149,14 @@ public class DDLGeneratorMojo extends Ab
{
StringWriter stringWriter = new StringWriter();
platform.getSqlBuilder().setWriter(stringWriter);
- platform.getSqlBuilder().createTables(model, params, false);
+ // use cglib enhanced wrapper for SqlBuilder to allow overriding ddlutils 1.0 behavior at runtime for
+ // https://issues.apache.org/jira/browse/DDLUTILS-75 which is fixed in ddlutils 1.1 but hasn't been released yet.
+ SqlBuilder sqlBuilder = new EnhancedSqlBuilder(platform.getSqlBuilder());
+ sqlBuilder.createTables(model, params, false);
int createSchemaLength = stringWriter.getBuffer().length();
writeOutput(new File(outputDir,"create-schema.sql"),stringWriter.toString());
stringWriter.getBuffer().setLength(0);
- platform.getSqlBuilder().createTables(model, params, true);
+ sqlBuilder.createTables(model, params, true);
stringWriter.getBuffer().setLength(stringWriter.getBuffer().length()-createSchemaLength);
writeOutput(new File(outputDir,"drop-schema.sql"), stringWriter.toString());
}
@@ -233,7 +238,7 @@ public class DDLGeneratorMojo extends Ab
protected Database readModel(File[] files) throws MojoExecutionException
{
- DatabaseIO reader = new DatabaseIO();
+ DatabaseIO reader = new DatabaseIO();
Database model = null;
reader.setValidateXml(validateXml);
Modified: portals/jetspeed-2/portal/trunk/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/pom.xml?rev=1079014&r1=1079013&r2=1079014&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/pom.xml (original)
+++ portals/jetspeed-2/portal/trunk/pom.xml Mon Mar 7 23:05:12 2011
@@ -249,8 +249,7 @@
<commons-lang.version>2.4</commons-lang.version>
<slf4j.version>1.5.6</slf4j.version>
<commons-pool.version>1.3</commons-pool.version>
- <!-- ddlutils svn r551445 with patch applied from http://issues.apache.org/jira/browse/DDLUTILS-75#action_12521579 -->
- <ddlutils.version>r551445-patched-75</ddlutils.version>
+ <ddlutils.version>1.0</ddlutils.version>
<directory.version>1.5.5</directory.version>
<dom4j.version>1.6.1</dom4j.version>
<ehcache.version>1.7.2</ehcache.version>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org