On Wed, 16 Jan 2008 11:49:21 +0100, Thomas Mortagne wrote
> 2008/1/16, rssh <[EMAIL PROTECTED]>:
> > > > - hsqldb :
> > > > - virtual : change main wiki database name and correctly apply
> > > > prefix (could be usefull)
> > > > - non-virtual : updateSchipt is done in toto and retrieve/save
> > > > document in PUBLIC (not ok)
> >
> >
> > Are you running hsql in file or server mode ?
> > (I try to reproduce error).
>
> XWiki's default hsql mode which is file.
>
I've found the reason of failure: setDatabase was enabled only for virtual
xwiki-s
patch is attached (tested with hsql in non-virtual mode in addition to oracle
in virtual/unvirtual). I will attach one to jira thought few seconds.
P.S. also note, that exitsts hibernate property 'default_schema' which (when
we change name) must not conflict with xwiki.db
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
> >
>
> --
> Thomas Mortagne
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
--
Ruslan Shevchenko
GradSoft. http://www.gradsoft.ua
Index: xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
===================================================================
--- xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java (revision 6802)
+++ xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java (working copy)
@@ -255,6 +255,7 @@
*/
public void updateSchema(XWikiContext context) throws HibernateException
{
+ log.debug("updateSchema: context.database is:"+context.getDatabase());
updateSchema(context, false);
}
@@ -323,7 +324,7 @@
* @return the database/schema name.
* @since XWiki Core 1.1.2, XWiki Core 1.2M2
*/
- protected String getSchemaFromWikiName(String wikiName, XWikiContext context)
+ protected String getSchemaFromWikiName(String wikiName, XWikiContext context) throws XWikiException
{
if (wikiName == null) {
return null;
@@ -331,14 +332,36 @@
DatabaseProduct databaseProduct = getDatabaseProductName(context);
- if (databaseProduct == DatabaseProduct.DERBY) {
- return wikiName.equalsIgnoreCase(context.getMainXWiki()) ? "APP" : wikiName.replace(
- '-', '_');
- } else if (databaseProduct == DatabaseProduct.HSQLDB) {
- return wikiName.equalsIgnoreCase(context.getMainXWiki()) ? "PUBLIC" : wikiName
- .replace('-', '_');
- } else
- return wikiName.replace('-', '_');
+ String retval = wikiName.replace('-','_');
+ boolean isMain = wikiName.equalsIgnoreCase(context.getMainXWiki());
+ XWiki wiki = context.getWiki();
+
+ if (isMain) {
+ String configuredMainDatabaseSchemaName = wiki.Param("xwiki.db","");
+ if (configuredMainDatabaseSchemaName.length()!=0) {
+ retval=configuredMainDatabaseSchemaName;
+ }else{
+ if (databaseProduct == DatabaseProduct.DERBY) {
+ retval="APP";
+ }else if (databaseProduct == DatabaseProduct.HSQLDB) {
+ retval = "PUBLIC";
+ }
+ }
+ }else{
+ // virtual
+ String configurableVirtualDabaseSchemaPrefix =
+ wiki.Param("xwiki.virtual.db.prefix","");
+ if (configurableVirtualDabaseSchemaPrefix.length()!=0) {
+ retval = configurableVirtualDabaseSchemaPrefix + retval;
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("schema for wiki " + context.getDatabase()+" is "+retval);
+ }
+
+ return retval;
+
}
/**
@@ -348,7 +371,7 @@
* @return the database/schema name.
* @since XWiki Core 1.1.2, XWiki Core 1.2M2
*/
- protected String getSchemaFromWikiName(XWikiContext context)
+ protected String getSchemaFromWikiName(XWikiContext context) throws XWikiException
{
return getSchemaFromWikiName(context.getDatabase(), context);
}
@@ -544,7 +567,7 @@
*/
public void setDatabase(Session session, XWikiContext context) throws XWikiException
{
- if (isVirtual(context)) {
+ if (isVirtual(context)||context.getWiki().Param("xwiki.db")!=null) {
try {
if (log.isDebugEnabled())
log.debug("Switch database to: " + context.getDatabase());
Index: xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java (revision 6802)
+++ xwiki-platform-core/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java (working copy)
@@ -249,7 +249,7 @@
*/
private static File tempDir = null;
- private static String getConfigPath() throws NamingException
+ private static String getConfigPath()
{
if (configPath == null) {
try {
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs