You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2010/06/17 15:51:09 UTC
svn commit: r955596 - in /incubator/wookie/branches/pluggablepersistence:
readme.txt src/org/apache/wookie/beans/util/PersistenceManagerFactory.java
Author: scottbw
Date: Thu Jun 17 13:51:08 2010
New Revision: 955596
URL: http://svn.apache.org/viewvc?rev=955596&view=rev
Log:
Applied patch adding support for SQL scripts for initialization (Thanks to Randy Watler for the patch)
Modified:
incubator/wookie/branches/pluggablepersistence/readme.txt
incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java
Modified: incubator/wookie/branches/pluggablepersistence/readme.txt
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/readme.txt?rev=955596&r1=955595&r2=955596&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/readme.txt (original)
+++ incubator/wookie/branches/pluggablepersistence/readme.txt Thu Jun 17 13:51:08 2010
@@ -111,7 +111,21 @@ To shutdown the Wookie Tomcat server and
> CATALINA_HOME/bin/shutdown.sh
> export CATALINA_OPTS=
-There are also SQL scripts for all of the valid database configurations built as part of Wookie that can be used to initialize the database schema manually if desired.
+There are also SQL scripts for all of the valid database configurations built as part of Wookie that can be used to initialize the database schema manually if desired. These are located here:
+
+build/classes/org/apache/wookie/beans/jpa/db2-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/derby-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/hsqldb-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/mssql-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/mysql5-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/mysql-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/oracle10-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/oracle9-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/oracle-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/postgresql-wookie-schema.sql
+build/classes/org/apache/wookie/beans/jpa/sybase-wookie-schema.sql
+
+The Wookie server will populate the newly initialized database with seed data to complete the process when started.
Running Wookie using embedded Jackrabbit JCR
============================================
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java?rev=955596&r1=955595&r2=955596&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java Thu Jun 17 13:51:08 2010
@@ -76,17 +76,20 @@ public class PersistenceManagerFactory
initialized = true;
- // initialize persistence store using persistence manager
- if (initializeStore)
+ // initialize/verify/validate persistence store using persistence manager
+ try
{
- try
- {
- // allocate and begin persistence manager transaction
- IPersistenceManager persistenceManager = getPersistenceManager();
- persistenceManager.begin();
+ // allocate and begin persistence manager transaction
+ IPersistenceManager persistenceManager = getPersistenceManager();
+ persistenceManager.begin();
- // Widget
- IWidget widget = persistenceManager.newInstance(IWidget.class);
+ // Widget
+ boolean initializing = true;
+ IWidget widget = persistenceManager.findWidgetByGuid("http://notsupported");
+ if (widget == null)
+ {
+ // required: always create if not found
+ widget = persistenceManager.newInstance(IWidget.class);
widget.setHeight(350);
widget.setWidth(500);
widget.setGuid("http://notsupported");
@@ -126,17 +129,30 @@ public class PersistenceManagerFactory
widgetIcon.setLang("en");
widget.getWidgetIcons().add(widgetIcon);
persistenceManager.save(widget);
+ }
+ else
+ {
+ initializing = false;
+ }
- // WidgetDefault
+ // WidgetDefault
+ if (persistenceManager.findWidgetDefaultByType("unsupported") == null)
+ {
+ // required: always create if not found
IWidgetDefault widgetDefault = persistenceManager.newInstance(IWidgetDefault.class);
widgetDefault.setWidget(widget);
widgetDefault.setWidgetContext("unsupported");
persistenceManager.save(widgetDefault);
+ }
+ else
+ {
+ initializing = false;
+ }
- // WidgetService
- IWidgetService unsupportedWidgetService = persistenceManager.newInstance(IWidgetService.class);
- unsupportedWidgetService.setServiceName("unsupported");
- persistenceManager.save(unsupportedWidgetService);
+ // WidgetService
+ if (initializing && (persistenceManager.findAll(IWidgetService.class).length == 0))
+ {
+ // optional: create only if initializing
IWidgetService chatWidgetService = persistenceManager.newInstance(IWidgetService.class);
chatWidgetService.setServiceName("chat");
persistenceManager.save(chatWidgetService);
@@ -149,33 +165,89 @@ public class PersistenceManagerFactory
IWidgetService weatherWidgetService = persistenceManager.newInstance(IWidgetService.class);
weatherWidgetService.setServiceName("weather");
persistenceManager.save(weatherWidgetService);
+ }
+ else
+ {
+ initializing = false;
+ }
+ if (persistenceManager.findByValue(IWidgetService.class, "serviceName", "unsupported").length == 0)
+ {
+ // required: always create if not found
+ IWidgetService unsupportedWidgetService = persistenceManager.newInstance(IWidgetService.class);
+ unsupportedWidgetService.setServiceName("unsupported");
+ persistenceManager.save(unsupportedWidgetService);
+ }
+ else
+ {
+ initializing = false;
+ }
- // Whitelist
+ // Whitelist
+ if (initializing && (persistenceManager.findAll(IWhitelist.class).length == 0))
+ {
+ // optional: create only if initializing
+ IWhitelist wookieServerWhitelist = persistenceManager.newInstance(IWhitelist.class);
+ wookieServerWhitelist.setfUrl("http://incubator.apache.org/wookie");
+ persistenceManager.save(wookieServerWhitelist);
+ }
+ else
+ {
+ initializing = false;
+ }
+ if (persistenceManager.findByValue(IWhitelist.class, "fUrl", "http://127.0.0.1").length == 0)
+ {
+ // required: always create if not found
IWhitelist localhostIPAddrWhitelist = persistenceManager.newInstance(IWhitelist.class);
localhostIPAddrWhitelist.setfUrl("http://127.0.0.1");
persistenceManager.save(localhostIPAddrWhitelist);
+ }
+ else
+ {
+ initializing = false;
+ }
+ if (persistenceManager.findByValue(IWhitelist.class, "fUrl", "http://localhost").length == 0)
+ {
+ // required: always create if not found
IWhitelist localhostWhitelist = persistenceManager.newInstance(IWhitelist.class);
localhostWhitelist.setfUrl("http://localhost");
persistenceManager.save(localhostWhitelist);
- IWhitelist wookieServerWhitelist = persistenceManager.newInstance(IWhitelist.class);
- wookieServerWhitelist.setfUrl("http://incubator.apache.org/wookie");
- persistenceManager.save(wookieServerWhitelist);
+ }
+ else
+ {
+ initializing = false;
+ }
- // ApiKey
+ // ApiKey
+ if (initializing && (persistenceManager.findAll(IApiKey.class).length == 0))
+ {
+ // optional: create only if initializing
IApiKey apiKey = persistenceManager.newInstance(IApiKey.class);
apiKey.setValue("TEST");
apiKey.setEmail("test@127.0.0.1");
persistenceManager.save(apiKey);
+ }
+ else
+ {
+ initializing = false;
+ }
+
+ // commit persistence manager transaction
+ persistenceManager.commit();
- // commit persistence manager transaction
- persistenceManager.commit();
+ if (initializing)
+ {
+ logger.info("Initialized persistent store with seed data");
}
- finally
+ else
{
- // close persistence manager transaction
- closePersistenceManager();
+ logger.info("Validated persistent store seed data");
}
}
+ finally
+ {
+ // close persistence manager transaction
+ closePersistenceManager();
+ }
logger.info("Initialized with "+className);
}