@@ -0,0 +1,2587 @@
+/*%0A * See the NOTICE file distributed with this work for additional%0A * information regarding copyright ownership.%0A *%0A * This is free software; you can redistribute it and/or modify it%0A * under the terms of the GNU Lesser General Public License as%0A * published by the Free Software Foundation; either version 2.1 of%0A * the License, or (at your option) any later version.%0A *%0A * This software is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU%0A * Lesser General Public License for more details.%0A *%0A * You should have received a copy of the GNU Lesser General Public%0A * License along with this software; if not, write to the Free%0A * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA%0A * 02110-1301 USA, or see the FSF site: http://www.fsf.org.%0A *%0A */%0Apackage com.xpn.xwiki.web;%0A%0Aimport java.util.List;%0A%0Aimport javax.servlet.http.HttpServletResponse;%0A%0Aimport com.xpn.xwiki.XWiki;%0Aimport com.xpn.xwiki.XWikiContext;%0Aimport com.xpn.xwiki.XWikiException;%0Aimport com.xpn.xwiki.doc.XWikiDocument;%0Aimport com.xpn.xwiki.objects.BaseObject;%0Aimport com.xpn.xwiki.objects.BaseProperty;%0A%0A/**%0A * Synchronizes the objects in a document with their current classes, by removing any deprecated properties.%0A * %0A * @version $Id$%0A */%0Apublic class ObjectsSynchronizeAction extends XWikiAction%0A%7B%0A    /**%0A     * %7B@inheritDoc%7D%0A     * %0A     * @see XWikiAction#action(XWikiContext)%0A     */%0A    @Override%0A    public boolean action(XWikiContext context) throws XWikiException%0A    %7B%0A        XWiki xwiki = context.getWiki();%0A        XWikiResponse response = context.getResponse();%0A        XWikiDocument doc = context.getDoc();%0A%0A        for (List%3CBaseObject%3E classObjects : doc.getXObjects().values()) %7B%0A            for (BaseObject object : classObjects) %7B%0A                for (BaseProperty property : object.getXClass(context).getDeprecatedObjectProperties(object)) %7B%0A                    object.removeField(property.getName());%0A                %7D%0A            %7D%0A        %7D%0A%0A        xwiki.saveDocument(doc, context.getMessageTool().get(%22core.model.xobject.synchronizeObjects.versionSummary%22),%0A            true, context);%0A%0A        if (Utils.isAjaxRequest(context)) %7B%0A            response.setStatus(HttpServletResponse.SC_NO_CONTENT);%0A            response.setContentLength(0);%0A        %7D else %7B%0A            // forward to edit%0A            String redirect = Utils.getRedirect(%22edit%22, context);%0A            sendRedirect(response, redirect);%0A        %7D%0A        return false;%0A    %7D%0A%7D%0A

Add support for removing class properties Added Struts action for synchronizing document objects with their current classes.