Index: JetspeedProfilerService.java =================================================================== RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java,v retrieving revision 1.47 diff -u -r1.47 JetspeedProfilerService.java --- JetspeedProfilerService.java 8 Apr 2003 21:35:30 -0000 1.47 +++ JetspeedProfilerService.java 11 Apr 2003 03:28:38 -0000 @@ -93,6 +93,8 @@ import org.apache.jetspeed.om.profile.PSMLDocument; import org.apache.jetspeed.om.profile.psml.PsmlControl; import org.apache.jetspeed.om.profile.psml.PsmlController; +import org.apache.jetspeed.om.profile.psml.PsmlEntry; +import org.apache.jetspeed.om.profile.psml.PsmlReference; import org.apache.jetspeed.om.profile.Control; import org.apache.jetspeed.om.profile.Controller; import org.apache.jetspeed.om.profile.Skin; @@ -110,6 +112,7 @@ import org.apache.jetspeed.services.PsmlManager; import org.apache.jetspeed.services.PortalToolkit; import org.apache.jetspeed.services.customlocalization.CustomLocalizationService; +import org.apache.jetspeed.services.idgenerator.JetspeedIdGenerator; // jetspeed.util import org.apache.jetspeed.util.MimeType; @@ -1045,9 +1044,14 @@ locator.setMediaType(contentType); PSMLDocument doc = fallback(locator); + + if (doc != null) + { + regenerateId(doc.getPortlets()); profile.setDocument(doc); + } profile.setName( resourceDefault + resourceExt ); @@ -1076,7 +1080,46 @@ } - /** Create a new profile. + /** + * Regenerates the ids for the portlets + * + * @param portlets + */ + private void regenerateId(Portlets portlets) + { + if(portlets != null) + { + String newId = JetspeedIdGenerator.getNextPeid(); + portlets.setId(newId); + + Iterator entryIter = portlets.getEntriesIterator(); + while(entryIter.hasNext()) + { + PsmlEntry entry = (PsmlEntry)entryIter.next(); + + String newEntryId = JetspeedIdGenerator.getNextPeid(); + entry.setId(newEntryId); + } + + Iterator refIter = portlets.getReferenceIterator(); + while(refIter.hasNext()) + { + PsmlReference psmlRef = (PsmlReference)refIter.next(); + + String newRefId = JetspeedIdGenerator.getNextPeid(); + psmlRef.setId(newRefId); + } + + Iterator portletIter = portlets.getPortletsIterator(); + while(portletIter.hasNext()) + { + Portlets child = (Portlets)portletIter.next(); + regenerateId(child); + } + } + } + + /** Create a new profile. * * @deprecated Should be removed when old customizer is removed. *