When users are added to the XWikiAllGroup, the class which is created is called
Main.WebHome instead of XWiki.XWikiGroupClass
testwiki=> select baseobject0_.XWO_CLASSNAME, stringprop1_.XWS_VALUE as col_0_0_ from
xwikiobjects baseobject0_, xwikistrings stringprop1_ inner join xwikiproperties
stringprop1_1_ on stringprop1_.XWS_ID=stringprop1_1_.XWP_ID and
stringprop1_.XWS_NAME=stringprop1_1_.XWP_NAME where
baseobject0_.XWO_NAME='XWiki.XWikiAllGroup' and
baseobject0_.XWO_ID=stringprop1_.XWS_ID and (trim(both from
stringprop1_.XWS_VALUE)<>'' or (trim(both from stringprop1_.XWS_VALUE) is
not null) and ('' is null));
xwo_classname | col_0_0_
-------------------+-----------------
XWiki.XWikiGroups | XWiki.Admin
Main.WebHome | XWiki.JohnSmith
Main.WebHome | XWiki.meme
(3 rows)
That is why the createAndDeleteUser test is failing
Author: vmassol
Date: 2010-01-21 09:25:54 +0100 (Thu, 21 Jan 2010)
New Revision: 26271
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/BaseObject.java
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
Log:
XWIKI-4753: Refactor old model to use the new Entity Reference classes
* More deprecation removal + added @deprecated annotations for BaseClass/BaseObject's
get/SetName() to find places where they shouldn't be used
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java 2010-01-21
08:20:26 UTC (rev 26270)
+++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java 2010-01-21
08:25:54 UTC (rev 26271)
@@ -3796,10 +3796,10 @@
XWikiDocument groupDoc = getDocument(groupName, context);
BaseObject memberObject = (BaseObject) groupClass.newObject(context);
- memberObject.setClassName(groupClass.getName());
- memberObject.setName(groupDoc.getFullName());
+ memberObject.setXClassReference(groupClass.getXClassReference());
+ memberObject.setDocumentReference(groupDoc.getDocumentReference());
memberObject.setStringValue("member", userName);
- groupDoc.addObject(groupClass.getName(), memberObject);
+ groupDoc.addXObject(groupClass.getDocumentReference(), memberObject);
if (groupDoc.isNew()) {
saveDocument(groupDoc,
context.getMessageTool().get("core.comment.addedUserToGroup"), context);
} else {
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/BaseObject.java
===================================================================
---
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/BaseObject.java 2010-01-21
08:20:26 UTC (rev 26270)
+++
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/BaseObject.java 2010-01-21
08:25:54 UTC (rev 26271)
@@ -42,6 +42,26 @@
private String guid = UUID.randomUUID().toString();
/**
+ * Note: This method is overridden to add the deprecation warning so that code using
is can see it's deprecated.
+ * @deprecated since 2.2M2 use {@link #getDocumentReference()}
+ */
+ @Deprecated
+ @Override public String getName()
+ {
+ return super.getName();
+ }
+
+ /**
+ * Note: This method is overridden to add the deprecation warning so that code using
is can see it's deprecated.
+ * @deprecated since 2.2M2 use {@link
#setDocumentReference(org.xwiki.model.reference.DocumentReference)}
+ */
+ @Deprecated
+ @Override public void setName(String name)
+ {
+ super.setName(name);
+ }
+
+ /**
* {@inheritDoc}
*
* @see com.xpn.xwiki.objects.BaseCollection#hashCode()
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
===================================================================
---
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java 2010-01-21
08:20:26 UTC (rev 26270)
+++
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java 2010-01-21
08:25:54 UTC (rev 26271)
@@ -76,6 +76,26 @@
private String nameField;
/**
+ * Note: This method is overridden to add the deprecation warning so that code using
is can see it's deprecated.
+ * @deprecated since 2.2M2 use {@link #getDocumentReference()}
+ */
+ @Deprecated
+ @Override public String getName()
+ {
+ return super.getName();
+ }
+
+ /**
+ * Note: This method is overridden to add the deprecation warning so that code using
is can see it's deprecated.
+ * @deprecated since 2.2M2 use {@link
#setDocumentReference(org.xwiki.model.reference.DocumentReference)}
+ */
+ @Deprecated
+ @Override public void setName(String name)
+ {
+ super.setName(name);
+ }
+
+ /**
* {@inheritDoc}
* <p>
* This insures natural ordering between properties.
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
===================================================================
---
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java 2010-01-21
08:20:26 UTC (rev 26270)
+++
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java 2010-01-21
08:25:54 UTC (rev 26271)
@@ -491,8 +491,8 @@
}
// Verify if the document already exists
- Query query =
- session.createQuery("select xwikidoc.id from XWikiDocument as
xwikidoc where xwikidoc.id = :id");
+ Query query = session.createQuery(
+ "select xwikidoc.id from XWikiDocument as xwikidoc where
xwikidoc.id = :id");
query.setLong("id", doc.getId());
if (query.uniqueResult() == null) {
session.save(doc);
@@ -503,16 +503,16 @@
}
// Remove objects planned for removal
- if (doc.getObjectsToRemove().size() > 0) {
- for (BaseObject removedObject : doc.getObjectsToRemove()) {
+ if (doc.getXObjectsToRemove().size() > 0) {
+ for (BaseObject removedObject : doc.getXObjectsToRemove()) {
deleteXWikiObject(removedObject, context, false);
}
- doc.setObjectsToRemove(new ArrayList<BaseObject>());
+ doc.setXObjectsToRemove(new ArrayList<BaseObject>());
}
// We should only save the class if we are using the class table mode
if (bclass != null) {
- bclass.setName(doc.getFullName());
+ bclass.setDocumentReference(doc.getDocumentReference());
if ((bclass.getFieldList().size() > 0) &&
(useClassesTable(true, context))) {
saveXWikiClass(bclass, context, false);
}
@@ -525,18 +525,14 @@
// migrate values of list properties
if (prop instanceof StaticListClass || prop instanceof DBListClass)
{
ListClass lc = (ListClass) prop;
- String[] classes =
- {DBStringListProperty.class.getName(),
StringListProperty.class.getName(),
- StringProperty.class.getName()}; // @see
- // ListClass#newProperty()
+ String[] classes = { DBStringListProperty.class.getName(),
StringListProperty.class.getName(),
+ StringProperty.class.getName()}; // @see
ListClass#newProperty()
for (int i = 0; i < classes.length; i++) {
String oldclass = classes[i];
if (!oldclass.equals(lc.newProperty().getClass().getName()))
{
- Query q =
- session.createQuery(
- "select p from " + oldclass + "
as p, BaseObject as o" + " where o.className=?"
- + " and p.id=o.id and
p.name=?").setString(0, bclass.getName()).setString(
- 1, lc.getName());
+ Query q = session.createQuery("select p from "
+ oldclass + " as p, BaseObject as o"
+ + " where o.className=? and p.id=o.id and
p.name=?").setString(0,
+ bclass.getName()).setString(1, lc.getName());
for (Iterator it = q.list().iterator(); it.hasNext();)
{
BaseProperty lp = (BaseProperty) it.next();
BaseProperty lp1 = lc.newProperty();
@@ -609,7 +605,7 @@
for (List<BaseObject> objects : doc.getXObjects().values()) {
for (BaseObject obj : objects) {
if (obj != null) {
- obj.setName(doc.getFullName());
+ obj.setDocumentReference(doc.getDocumentReference());
/* If the object doesn't have a GUID, create it before
saving */
if (StringUtils.isEmpty(obj.getGuid())) {
obj.setGuid(UUID.randomUUID().toString());
_______________________________________________
notifications mailing list
notifications(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/notifications