You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/04/28 15:58:16 UTC
cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl DefaultLinkService.java
cziegeler 2004/04/28 06:58:16
Modified: src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
DefaultLayoutFactory.java
src/blocks/portal/java/org/apache/cocoon/portal/source
CopletSourceFactory.java
src/blocks/portal/java/org/apache/cocoon/portal/profile/impl
AbstractProfileManager.java
src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
CIncludeCopletAspect.java
src/blocks/portal/java/org/apache/cocoon/portal/generation
PortalGenerator.java
src/blocks/portal/java/org/apache/cocoon/portal/impl
DefaultLinkService.java
Log:
Fixing NPE when a full screen coplet is removed (bug 28655) reported by roy_huang@nbmgroup.com (roy huang)
Revision Changes Path
1.18 +16 -6 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
Index: DefaultLayoutFactory.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- DefaultLayoutFactory.java 28 Apr 2004 11:53:09 -0000 1.17
+++ DefaultLayoutFactory.java 28 Apr 2004 13:58:16 -0000 1.18
@@ -48,6 +48,7 @@
import org.apache.cocoon.portal.event.Filter;
import org.apache.cocoon.portal.event.LayoutEvent;
import org.apache.cocoon.portal.event.Subscriber;
+import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent;
import org.apache.cocoon.portal.event.impl.LayoutRemoveEvent;
import org.apache.cocoon.portal.layout.CompositeLayout;
import org.apache.cocoon.portal.layout.Item;
@@ -395,6 +396,9 @@
}
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.layout.LayoutFactory#remove(org.apache.cocoon.portal.layout.Layout)
+ */
public void remove(Layout layout)
throws ProcessingException {
if ( layout != null ) {
@@ -411,21 +415,27 @@
}
PortalService service = null;
+ EventManager eventManager = null;
try {
- service = (PortalService)this.manager.lookup(PortalService.ROLE);
+ service = (PortalService)this.manager.lookup(PortalService.ROLE);
+ ProfileManager profileManager = service.getComponentManager().getProfileManager();
if ( layout instanceof CopletLayout ) {
+ // full screen?
+ if ( layout.equals(profileManager.getEntryLayout()) ) {
+ Event event = new FullScreenCopletEvent(((CopletLayout)layout).getCopletInstanceData(), null);
+ eventManager = (EventManager)this.manager.lookup(EventManager.ROLE);
+ eventManager.getPublisher().publish(event);
+ service.getComponentManager().getLinkService().addEventToLink(event);
+ }
CopletFactory factory = service.getComponentManager().getCopletFactory();
factory.remove( ((CopletLayout)layout).getCopletInstanceData());
}
- ProfileManager profileManager = service.getComponentManager().getProfileManager();
- if ( layout.equals(profileManager.getEntryLayout()) ) {
- profileManager.setEntryLayout(null);
- }
profileManager.unregister(layout);
} catch (ServiceException ce) {
throw new ProcessingException("Unable to lookup portal service.", ce);
} finally {
this.manager.release( service );
+ this.manager.release(eventManager);
}
}
}
1.8 +5 -3 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java
Index: CopletSourceFactory.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CopletSourceFactory.java 19 Apr 2004 14:47:31 -0000 1.7
+++ CopletSourceFactory.java 28 Apr 2004 13:58:16 -0000 1.8
@@ -78,10 +78,12 @@
location = location.substring(position+2);
}
PortalService service = null;
- CopletInstanceData coplet = null;
try {
service = (PortalService)this.manager.lookup(PortalService.ROLE);
- coplet = service.getComponentManager().getProfileManager().getCopletInstanceData(location);
+ CopletInstanceData coplet = service.getComponentManager().getProfileManager().getCopletInstanceData(location);
+ if ( coplet == null ) {
+ throw new IOException("Unable to get coplet for " + location);
+ }
CopletSource copletSource =
new CopletSource(uri, protocol,
coplet);
1.7 +6 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
Index: AbstractProfileManager.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AbstractProfileManager.java 5 Mar 2004 13:02:16 -0000 1.6
+++ AbstractProfileManager.java 28 Apr 2004 13:58:16 -0000 1.7
@@ -179,7 +179,11 @@
PortalService service = null;
try {
service = (PortalService) this.manager.lookup(PortalService.ROLE);
- service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
+ if ( object == null ) {
+ service.removeTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey);
+ } else {
+ service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
+ }
} catch (ServiceException e) {
throw new CascadingRuntimeException("Unable to lookup service manager.", e);
} finally {
1.6 +1 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/CIncludeCopletAspect.java
Index: CIncludeCopletAspect.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/CIncludeCopletAspect.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- CIncludeCopletAspect.java 25 Apr 2004 20:09:34 -0000 1.5
+++ CIncludeCopletAspect.java 28 Apr 2004 13:58:16 -0000 1.6
@@ -58,7 +58,6 @@
PortalService service,
ContentHandler handler)
throws SAXException {
-
CopletInstanceData cid = ((CopletLayout)layout).getCopletInstanceData();
XMLUtils.startElement(handler, "content");
1.8 +1 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/generation/PortalGenerator.java
Index: PortalGenerator.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/generation/PortalGenerator.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PortalGenerator.java 14 Apr 2004 18:25:11 -0000 1.7
+++ PortalGenerator.java 28 Apr 2004 13:58:16 -0000 1.8
@@ -49,7 +49,6 @@
*/
public void generate()
throws IOException, SAXException, ProcessingException {
-
// start the portal rendering
// 1. event processing
// 2. rendering
1.13 +2 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
Index: DefaultLinkService.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- DefaultLinkService.java 5 Mar 2004 13:02:13 -0000 1.12
+++ DefaultLinkService.java 28 Apr 2004 13:58:16 -0000 1.13
@@ -224,7 +224,7 @@
Object[] objects = (Object[])iter.next();
if ( ((ComparableEvent)objects[0]).equalsEvent((ComparableEvent)event) ) {
found = true;
- info.comparableEvents.remove(objects[0]);
+ info.comparableEvents.remove(objects);
}
}
info.comparableEvents.add( new Object[] {event, parameterName, value} );