Author: tolusha
Date: 2010-07-12 06:09:26 -0400 (Mon, 12 Jul 2010)
New Revision: 2767
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java
Log:
EXOJCR-837: fix ClassCastException, more shortly solution
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-07-12
09:22:10 UTC (rev 2766)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-07-12
10:09:26 UTC (rev 2767)
@@ -441,75 +441,19 @@
public void restore() throws IOException
{
- int index = 0;
- int restoredItemStateId = index < listFixupStream.size() ?
listFixupStream.get(index).getItemSateId() : -1;
- int restoredValueDataId = index < listFixupStream.size() ?
listFixupStream.get(index).getValueDataId() : -1;
-
- TransactionChangesLog restoredItemDataChangesLog = new TransactionChangesLog();
-
- ChangesLogIterator logIterator = itemDataChangesLog.getLogIterator();
- int curItemStateId = 0;
- while (logIterator.hasNextLog())
+ List<ItemState> listItemState = itemDataChangesLog.getAllStates();
+ for (int i = 0; i < this.listFixupStream.size(); i++)
{
- List<ItemState> restoredItems = new ArrayList<ItemState>();
+ ItemState itemState =
listItemState.get(listFixupStream.get(i).getItemSateId());
+ ItemData itemData = itemState.getData();
- PlainChangesLog log = logIterator.nextLog();
- for (ItemState item : log.getAllStates())
- {
- if (curItemStateId != restoredItemStateId)
- {
- restoredItems.add(item);
- }
- else
- {
- List<ValueData> restoredValues = new
ArrayList<ValueData>();
+ PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
+ ValueData vd =
(propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
- PersistedPropertyData propertyData =
(PersistedPropertyData)item.getData();
- for (int curValueDataId = 0; curValueDataId <
propertyData.getValues().size(); curValueDataId++)
- {
- ValueData valueData = propertyData.getValues().get(curValueDataId);
-
- if (curItemStateId == restoredItemStateId && curValueDataId
== restoredValueDataId)
- {
- // reinit valuedata
- ValueData restoredValueData =
- new StreamPersistedValueData(valueData.getOrderNumber(), new
SpoolFile(listFile.get(index)
- .getAbsolutePath()));
-
- restoredValues.add(restoredValueData);
-
- index++;
- restoredItemStateId =
- index < listFixupStream.size() ?
listFixupStream.get(index).getItemSateId() : -1;
- restoredValueDataId =
- index < listFixupStream.size() ?
listFixupStream.get(index).getValueDataId() : -1;
- }
- else
- {
- restoredValues.add(valueData);
- }
- }
-
- PersistedPropertyData restoredPropertyData =
- new PersistedPropertyData(propertyData.getIdentifier(),
propertyData.getQPath(), propertyData
- .getParentIdentifier(), propertyData.getPersistedVersion(),
propertyData.getType(),
- propertyData.isMultiValued(), restoredValues);
-
- ItemState restoredItem =
- new ItemState(restoredPropertyData, item.getState(),
item.isEventFire(), item.getAncestorToSave(),
- item.isInternallyCreated(), item.isPersisted());
-
- restoredItems.add(restoredItem);
- }
-
- curItemStateId++;
- }
-
- PlainChangesLog restoredLog =
- new PlainChangesLogImpl(restoredItems, log.getSessionId(),
log.getEventType(), log.getPairId());
- restoredItemDataChangesLog.addLog(restoredLog);
+ // re-init the value
+ propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
+ new StreamPersistedValueData(vd.getOrderNumber(), new
SpoolFile(listFile.get(i).getAbsolutePath())));
}
- itemDataChangesLog = restoredItemDataChangesLog;
for (int i = 0; i < listFile.size(); i++)
fileCleaner.addFile(listFile.get(i));
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java 2010-07-12
09:22:10 UTC (rev 2766)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java 2010-07-12
10:09:26 UTC (rev 2767)
@@ -18,10 +18,7 @@
*/
package org.exoplatform.services.jcr.ext.backup.impl;
-import org.exoplatform.services.jcr.dataflow.ChangesLogIterator;
import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
import org.exoplatform.services.jcr.datamodel.ItemData;
@@ -486,75 +483,19 @@
{
// TODO same code as in BackupWorkspaceInitializer?
- int index = 0;
- int restoredItemStateId = index < listFixupStream.size() ?
listFixupStream.get(index).getItemSateId() : -1;
- int restoredValueDataId = index < listFixupStream.size() ?
listFixupStream.get(index).getValueDataId() : -1;
-
- TransactionChangesLog restoredItemDataChangesLog = new TransactionChangesLog();
-
- ChangesLogIterator logIterator = itemDataChangesLog.getLogIterator();
- int curItemStateId = 0;
- while (logIterator.hasNextLog())
+ List<ItemState> listItemState = itemDataChangesLog.getAllStates();
+ for (int i = 0; i < this.listFixupStream.size(); i++)
{
- List<ItemState> restoredItems = new ArrayList<ItemState>();
+ ItemState itemState =
listItemState.get(listFixupStream.get(i).getItemSateId());
+ ItemData itemData = itemState.getData();
- PlainChangesLog log = logIterator.nextLog();
- for (ItemState item : log.getAllStates())
- {
- if (curItemStateId != restoredItemStateId)
- {
- restoredItems.add(item);
- }
- else
- {
- List<ValueData> restoredValues = new ArrayList<ValueData>();
+ PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
+ ValueData vd =
(propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
- PersistedPropertyData propertyData =
(PersistedPropertyData)item.getData();
- for (int curValueDataId = 0; curValueDataId <
propertyData.getValues().size(); curValueDataId++)
- {
- ValueData valueData = propertyData.getValues().get(curValueDataId);
-
- if (curItemStateId == restoredItemStateId && curValueDataId ==
restoredValueDataId)
- {
- // reinit valuedata
- ValueData restoredValueData =
- new StreamPersistedValueData(valueData.getOrderNumber(), new
SpoolFile(listFile.get(index)
- .getAbsolutePath()));
-
- restoredValues.add(restoredValueData);
-
- index++;
- restoredItemStateId =
- index < listFixupStream.size() ?
listFixupStream.get(index).getItemSateId() : -1;
- restoredValueDataId =
- index < listFixupStream.size() ?
listFixupStream.get(index).getValueDataId() : -1;
- }
- else
- {
- restoredValues.add(valueData);
- }
- }
-
- PersistedPropertyData restoredPropertyData =
- new PersistedPropertyData(propertyData.getIdentifier(),
propertyData.getQPath(), propertyData
- .getParentIdentifier(), propertyData.getPersistedVersion(),
propertyData.getType(), propertyData
- .isMultiValued(), restoredValues);
-
- ItemState restoredItem =
- new ItemState(restoredPropertyData, item.getState(),
item.isEventFire(), item.getAncestorToSave(),
- item.isInternallyCreated(), item.isPersisted());
-
- restoredItems.add(restoredItem);
- }
-
- curItemStateId++;
- }
-
- PlainChangesLog restoredLog =
- new PlainChangesLogImpl(restoredItems, log.getSessionId(),
log.getEventType(), log.getPairId());
- restoredItemDataChangesLog.addLog(restoredLog);
+ // re-init the value
+ propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
+ new StreamPersistedValueData(vd.getOrderNumber(), new
SpoolFile(listFile.get(i).getAbsolutePath())));
}
- itemDataChangesLog = restoredItemDataChangesLog;
if (listRandomAccessFile != null)
for (int i = 0; i < listRandomAccessFile.size(); i++)
Show replies by date