You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2012/07/17 10:27:10 UTC
svn commit: r1362405 [1/2] - in /sling/whiteboard/portal/container: ./
src/main/java/org/apache/sling/portal/container/
src/main/java/org/apache/sling/portal/container/internal/
src/main/java/org/apache/sling/portal/container/internal/impl/ src/main/ja...
Author: cziegeler
Date: Tue Jul 17 08:27:09 2012
New Revision: 1362405
URL: http://svn.apache.org/viewvc?rev=1362405&view=rev
Log:
Add spi interfaces for pluggin in custom services, clean up the code a little bit, switch to annotations and start implementing event handling
Added:
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/SlingPortletEntityImpl.java (with props)
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/spi/
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/spi/PortalCCPPProfileService.java (with props)
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/spi/PortalEventCoordinatorService.java (with props)
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/spi/PortalUserInfoService.java (with props)
Removed:
sling/whiteboard/portal/container/LICENSE
sling/whiteboard/portal/container/NOTICE
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletEntityRegistryListener.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingContainerServices.java
sling/whiteboard/portal/container/src/main/resources/
Modified:
sling/whiteboard/portal/container/pom.xml
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletRegistryService.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletWindowManager.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletContainer.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletEntity.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletWindowId.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ContainerServicesImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletContainer.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletWindowManager.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultUserInfoService.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyCCPPProfileServiceImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyProfile.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventCoordinationServiceImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletActionResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletContainerImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletEventResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletMimeResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRenderResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextServiceImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletStateAwareResponseContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/DefaultPortalURLFactory.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/PortletWindowIDImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultContainerInfo.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultNamespaceMapper.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletPreferencesService.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/FilterManagerServiceImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ui/UIServlet.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/util/ContextPathUtil.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/util/PortalUtil.java
Modified: sling/whiteboard/portal/container/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/pom.xml?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/pom.xml (original)
+++ sling/whiteboard/portal/container/pom.xml Tue Jul 17 08:27:09 2012
@@ -69,7 +69,8 @@
*
</Import-Package>
<Export-Package>
- org.apache.sling.portal.container
+ org.apache.sling.portal.container,
+ org.apache.sling.portal.container.spi;version:=1.0
</Export-Package>
<Private-Package>
org.apache.sling.portal.container.internal,
@@ -197,14 +198,24 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.jcr.api</artifactId>
+ <version>2.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.resource</artifactId>
- <version>2.0.4-incubator</version>
+ <version>2.0.10</version>
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-commons</artifactId>
- <version>1.4.2</version>
+ <version>2.2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletRegistryService.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletRegistryService.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletRegistryService.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletRegistryService.java Tue Jul 17 08:27:09 2012
@@ -57,8 +57,4 @@ public interface PortletRegistryService
void addApplicationListener(ApplicationRegistryListener listener);
void removeApplicationListener(ApplicationRegistryListener listener);
-
- void addPortletEntityListener(PortletEntityRegistryListener listener);
-
- void removePortletEntityListener(PortletEntityRegistryListener listener);
}
\ No newline at end of file
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletWindowManager.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletWindowManager.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletWindowManager.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/PortletWindowManager.java Tue Jul 17 08:27:09 2012
@@ -16,7 +16,6 @@
*/
package org.apache.sling.portal.container;
-import org.apache.pluto.container.PortletWindow;
import org.apache.sling.api.resource.ValueMap;
public interface PortletWindowManager {
@@ -28,7 +27,7 @@ public interface PortletWindowManager {
* @param config portlet window configuration
* @return The corresponding portlet window.
*/
- PortletWindow getPortletWindow(PortletEntityId id, String windowId, ValueMap config);
+ SlingPortletWindow getPortletWindow(PortletEntityId id, String windowId, ValueMap config);
/**
* Get the portlet window for window id
@@ -36,5 +35,5 @@ public interface PortletWindowManager {
* @param config portlet window configuration
* @return The corresponding portlet window.
*/
- PortletWindow getPortletWindow(String windowId, ValueMap config);
+ SlingPortletWindow getPortletWindow(String windowId, ValueMap config);
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletContainer.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletContainer.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletContainer.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletContainer.java Tue Jul 17 08:27:09 2012
@@ -17,6 +17,7 @@
package org.apache.sling.portal.container;
import org.apache.pluto.container.PortletContainer;
+import org.apache.sling.portal.container.spi.PortalEventCoordinatorService;
/**
* This is an extension of the portlet container
@@ -31,7 +32,6 @@ public interface SlingPortletContainer e
/**
* Get the window manager
- * @param request The current request.
* @return The portlet window manager.
*/
PortletWindowManager getPortletWindowManager();
@@ -40,4 +40,9 @@ public interface SlingPortletContainer e
* Get the portlet registry service.
*/
PortletRegistryService getPortletRegistryService();
+
+ /**
+ * Get the event coordinator.
+ */
+ PortalEventCoordinatorService getPortalEventCoordinatorService();
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletEntity.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletEntity.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletEntity.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletEntity.java Tue Jul 17 08:27:09 2012
@@ -18,19 +18,33 @@ package org.apache.sling.portal.containe
import javax.portlet.Portlet;
-
/**
* This object holds all relevant pieces of a portlet.
*/
public interface SlingPortletEntity {
+ /** The portlet configuration. */
SlingPortletConfig getPortletConfig();
+ /** The portlet context. */
SlingPortletContext getPortletContext();
+ /** Is this portlet loaded? */
boolean isLoaded();
+ /** The portlet object. */
Portlet getPortlet();
+ /** The portlet entity id. */
PortletEntityId getPortletEntityId();
+
+ /**
+ * Get the named attribute.
+ */
+ Object getAttribute(String name);
+
+ /**
+ * Store the named attribute
+ */
+ void setAttribute(String name, Object value);
}
\ No newline at end of file
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletWindowId.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletWindowId.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletWindowId.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/SlingPortletWindowId.java Tue Jul 17 08:27:09 2012
@@ -16,12 +16,10 @@
*/
package org.apache.sling.portal.container;
-import javax.portlet.PortletConfig;
-
import org.apache.pluto.container.PortletWindowID;
/**
- * This is an extension of the {@link PortletConfig} which
+ * This is an extension of the {@link PortletWindowID} which
* stores additional information.
*/
public interface SlingPortletWindowId extends PortletWindowID {
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ContainerServicesImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ContainerServicesImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ContainerServicesImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/ContainerServicesImpl.java Tue Jul 17 08:27:09 2012
@@ -16,10 +16,15 @@
*/
package org.apache.sling.portal.container.internal;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import javax.portlet.PortalContext;
import org.apache.pluto.container.CCPPProfileService;
import org.apache.pluto.container.ContainerInfo;
+import org.apache.pluto.container.ContainerServices;
import org.apache.pluto.container.EventCoordinationService;
import org.apache.pluto.container.FilterManagerService;
import org.apache.pluto.container.NamespaceMapper;
@@ -32,19 +37,24 @@ import org.apache.pluto.container.Reques
import org.apache.pluto.container.UserInfoService;
import org.apache.pluto.container.impl.PortletEnvironmentServiceImpl;
import org.apache.pluto.container.impl.RequestDispatcherServiceImpl;
+import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.portal.container.PortletRegistryService;
import org.apache.sling.portal.container.PortletWindowManager;
-import org.apache.sling.portal.container.SlingContainerServices;
+import org.apache.sling.portal.container.SlingPortletEntity;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.internal.services.DefaultNamespaceMapper;
import org.apache.sling.portal.container.internal.services.DefaultPortletInvokerService;
import org.apache.sling.portal.container.internal.services.DefaultPortletPreferencesService;
import org.apache.sling.portal.container.internal.services.DefaultPortletRegistryService;
import org.apache.sling.portal.container.internal.services.FilterManagerServiceImpl;
+import org.apache.sling.portal.container.spi.PortalCCPPProfileService;
+import org.apache.sling.portal.container.spi.PortalEventCoordinatorService;
+import org.apache.sling.portal.container.spi.PortalUserInfoService;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
-public class ContainerServicesImpl implements SlingContainerServices {
+public class ContainerServicesImpl implements ContainerServices {
/**
* required services
@@ -52,13 +62,11 @@ public class ContainerServicesImpl imple
private final PortalContext context;
private final EventCoordinationService eventCoordinationService;
private final PortletRequestContextService portletRequestContextService;
- private final CCPPProfileService defaultCcppProfileService;
private final FilterManagerServiceImpl filterManagerService;
private final PortletURLListenerService portletURLListenerService;
private final DefaultPortletPreferencesService portletPreferencesService;
private final PortletInvokerService portletInvokerService;
private final PortletEnvironmentService portletEnvironmentService;
- private final UserInfoService userInfoService;
private final NamespaceMapper namespaceMapper;
private final RequestDispatcherService rds = new RequestDispatcherServiceImpl(2);
@@ -68,7 +76,15 @@ public class ContainerServicesImpl imple
private final PortletRegistryService registry;
private final PortletWindowManager windowManager;
+ /**
+ * Pluggable services.
+ */
+ private final CCPPProfileService defaultCcppProfileService;
+ private final UserInfoService defaultUserInfoService;
+ private final PortalEventCoordinatorService defaultEventCoordinator;
private final ServiceTracker ccppProfileServiceTracker;
+ private final ServiceTracker userInfoServiceTracker;
+ private final ServiceTracker eventCoordinatorServiceTracker;
/**
* Default Constructor.
@@ -86,15 +102,35 @@ public class ContainerServicesImpl imple
this.portletRequestContextService = new PortletRequestContextServiceImpl();
this.filterManagerService = new FilterManagerServiceImpl(this.registry);
this.portletURLListenerService = new PortletURLListenerImpl();
- this.ccppProfileServiceTracker = new ServiceTracker(bundleContext, CCPPProfileService.class.getName(), null);
- this.ccppProfileServiceTracker.open();
- this.defaultCcppProfileService = new DummyCCPPProfileServiceImpl();
- this.portletPreferencesService = new DefaultPortletPreferencesService(repository, registry);
+ this.portletPreferencesService = new DefaultPortletPreferencesService(repository);
this.portletInvokerService = new DefaultPortletInvokerService(registry);
this.portletEnvironmentService = new PortletEnvironmentServiceImpl();
- this.userInfoService = new DefaultUserInfoService();
this.namespaceMapper = new DefaultNamespaceMapper();
this.windowManager = new DefaultPortletWindowManager(this.registry);
+
+ this.defaultCcppProfileService = new DummyCCPPProfileServiceImpl();
+ this.ccppProfileServiceTracker = new ServiceTracker(bundleContext, PortalCCPPProfileService.class.getName(), null);
+ this.ccppProfileServiceTracker.open();
+
+ this.defaultUserInfoService = new DefaultUserInfoService();
+ this.userInfoServiceTracker = new ServiceTracker(bundleContext, PortalUserInfoService.class.getName(), null);
+ this.userInfoServiceTracker.open();
+
+ this.defaultEventCoordinator = new PortalEventCoordinatorService() {
+
+ public List<SlingPortletWindow> getPortletWindow(final SlingHttpServletRequest request) {
+ final List<SlingPortletWindow> windows = new ArrayList<SlingPortletWindow>();
+ final Iterator<SlingPortletEntity> i = registry.getPortletEntities();
+ while ( i.hasNext() ) {
+ final SlingPortletEntity entity = i.next();
+ windows.add(windowManager.getPortletWindow(entity.getPortletEntityId(), null, null));
+ }
+
+ return windows;
+ }
+ };
+ this.eventCoordinatorServiceTracker = new ServiceTracker(bundleContext, PortalEventCoordinatorService.class.getName(), null);
+ this.eventCoordinatorServiceTracker.open();
noErrors = true;
} finally {
if ( !noErrors ) {
@@ -103,6 +139,9 @@ public class ContainerServicesImpl imple
}
}
+ /**
+ * Destroy this instance and clean up.
+ */
public void destroy() {
if ( this.portletPreferencesService != null ) {
this.portletPreferencesService.destroy();
@@ -113,6 +152,12 @@ public class ContainerServicesImpl imple
if ( this.ccppProfileServiceTracker != null ) {
this.ccppProfileServiceTracker.close();
}
+ if ( this.userInfoServiceTracker != null ) {
+ this.userInfoServiceTracker.close();
+ }
+ if ( this.eventCoordinatorServiceTracker != null ) {
+ this.eventCoordinatorServiceTracker.close();
+ }
}
/**
@@ -165,7 +210,11 @@ public class ContainerServicesImpl imple
* @see org.apache.pluto.container.ContainerServices#getUserInfoService()
*/
public UserInfoService getUserInfoService() {
- return this.userInfoService;
+ UserInfoService service = (UserInfoService)this.userInfoServiceTracker.getService();
+ if ( service == null ) {
+ service = defaultUserInfoService;
+ }
+ return service;
}
/**
@@ -197,20 +246,25 @@ public class ContainerServicesImpl imple
}
/**
- * @see org.apache.sling.portal.container.SlingContainerServices#getPortletRegistryService()
+ * @see org.apache.pluto.container.ContainerServices#getRequestDispatcherService()
*/
+ public RequestDispatcherService getRequestDispatcherService() {
+ return this.rds;
+ }
+
public PortletRegistryService getPortletRegistryService() {
return this.registry;
}
- /**
- * @see org.apache.sling.portal.container.SlingContainerServices#getPortletWindowManager()
- */
public PortletWindowManager getPortletWindowManager() {
return this.windowManager;
}
- public RequestDispatcherService getRequestDispatcherService() {
- return this.rds;
+ public PortalEventCoordinatorService getPortalEventCoordinatorService() {
+ PortalEventCoordinatorService service = (PortalEventCoordinatorService) this.eventCoordinatorServiceTracker.getService();
+ if ( service == null ) {
+ service = this.defaultEventCoordinator;
+ }
+ return service;
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletContainer.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletContainer.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletContainer.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletContainer.java Tue Jul 17 08:27:09 2012
@@ -39,6 +39,7 @@ import org.apache.sling.portal.container
import org.apache.sling.portal.container.SlingPortletContainer;
import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.internal.services.DefaultContainerInfo;
+import org.apache.sling.portal.container.spi.PortalEventCoordinatorService;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -81,7 +82,7 @@ public class DefaultPortletContainer imp
this.bundleContext = null;
try {
this.destroy();
- } catch (PortletContainerException e) {
+ } catch (final PortletContainerException e) {
this.logger.error("Error during shutdown of portlet container.", e);
}
}
@@ -122,9 +123,9 @@ public class DefaultPortletContainer imp
}
logger.debug("Portlet container initialized.");
- } catch (PortletContainerException pce) {
+ } catch (final PortletContainerException pce) {
throw pce;
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new PortletContainerException("Unable to initialize container.", e);
}
}
@@ -241,7 +242,7 @@ public class DefaultPortletContainer imp
public ContainerServices getContainerServices() {
try {
checkInit();
- } catch (PortletContainerException e) {
+ } catch (final PortletContainerException e) {
logger.error("Unable to start portlet container", e);
return null;
}
@@ -281,7 +282,7 @@ public class DefaultPortletContainer imp
public PortletWindowManager getPortletWindowManager() {
try {
checkInit();
- } catch (PortletContainerException e) {
+ } catch (final PortletContainerException e) {
logger.error("Unable to start portlet container", e);
return null;
}
@@ -294,10 +295,20 @@ public class DefaultPortletContainer imp
public PortletRegistryService getPortletRegistryService() {
try {
checkInit();
- } catch (PortletContainerException e) {
+ } catch (final PortletContainerException e) {
logger.error("Unable to start portlet container", e);
return null;
}
return this.portletContainer.getPortletRegistryService();
}
+
+ public PortalEventCoordinatorService getPortalEventCoordinatorService() {
+ try {
+ checkInit();
+ } catch (final PortletContainerException e) {
+ logger.error("Unable to start portlet container", e);
+ return null;
+ }
+ return this.portletContainer.getPortalEventCoordinatorService();
+ }
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletWindowManager.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletWindowManager.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletWindowManager.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultPortletWindowManager.java Tue Jul 17 08:27:09 2012
@@ -20,13 +20,13 @@ import javax.portlet.PortletMode;
import javax.portlet.WindowState;
import org.apache.pluto.container.PortletContainerException;
-import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.PortletWindowID;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.portal.container.PortletEntityId;
import org.apache.sling.portal.container.PortletRegistryService;
import org.apache.sling.portal.container.PortletWindowManager;
import org.apache.sling.portal.container.SlingPortletEntity;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.SlingPortletWindowId;
import org.apache.sling.portal.container.internal.impl.PortletWindowIDImpl;
import org.apache.sling.portal.container.internal.impl.PortletWindowImpl;
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
public class DefaultPortletWindowManager implements PortletWindowManager {
/** The logger. */
- private final static Logger LOGGER = LoggerFactory.getLogger(DefaultPortletWindowManager.class);
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final PortletRegistryService registry;
@@ -51,7 +51,7 @@ public class DefaultPortletWindowManager
/**
* @see org.apache.sling.portal.container.PortletWindowManager#getPortletWindow(org.apache.sling.portal.container.PortletEntityId, java.lang.String, org.apache.sling.api.resource.ValueMap)
*/
- public PortletWindow getPortletWindow(PortletEntityId id, String window, final ValueMap configuration) {
+ public SlingPortletWindow getPortletWindow(PortletEntityId id, String window, final ValueMap configuration) {
final PortletWindowID windowId = PortletWindowIDImpl.createFromIdentifier(id, window);
return this.getPortletWindow(id, windowId, configuration);
}
@@ -59,28 +59,28 @@ public class DefaultPortletWindowManager
/**
* @see org.apache.sling.portal.container.PortletWindowManager#getPortletWindow(java.lang.String, org.apache.sling.api.resource.ValueMap)
*/
- public PortletWindow getPortletWindow(final String windowId, final ValueMap configuration) {
+ public SlingPortletWindow getPortletWindow(final String windowId, final ValueMap configuration) {
final SlingPortletWindowId window = PortletWindowIDImpl.createFromString(windowId);
return this.getPortletWindow(window.getPortletEntityId(), window, configuration);
}
- protected PortletWindow getPortletWindow(final PortletEntityId id,
+ protected SlingPortletWindow getPortletWindow(final PortletEntityId id,
final PortletWindowID windowId,
final ValueMap configuration) {
SlingPortletEntity info = null;
try {
info = this.registry.getPortletEntity(id);
if ( info == null ) {
- LOGGER.info("Portlet entity for " + id + " not found in registry.");
+ logger.info("Portlet entity for " + id + " not found in registry.");
return null;
}
} catch (PortletContainerException e) {
- LOGGER.error("Unable to retrieve portlet window for " + windowId, e);
+ logger.error("Unable to retrieve portlet window for " + windowId, e);
return null;
}
final PortalRequestContext prc = PortalRequestContext.getContext();
if ( prc == null ) {
- LOGGER.error("Portlet filter is not enabled.");
+ logger.error("Portlet filter is not enabled.");
return null;
}
final PortletMode portletMode = prc.getRequestedPortalURL().getPortletMode(windowId.getStringId());
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultUserInfoService.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultUserInfoService.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultUserInfoService.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DefaultUserInfoService.java Tue Jul 17 08:27:09 2012
@@ -32,8 +32,8 @@ import org.apache.pluto.container.UserIn
*/
public class DefaultUserInfoService implements UserInfoService {
- public Map<String, String> getUserInfo(PortletRequest request, PortletWindow window)
- throws PortletContainerException {
+ public Map<String, String> getUserInfo(final PortletRequest request, final PortletWindow window)
+ throws PortletContainerException {
if ( request.getRemoteUser() != null ) {
return Collections.emptyMap();
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyCCPPProfileServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyCCPPProfileServiceImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyCCPPProfileServiceImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyCCPPProfileServiceImpl.java Tue Jul 17 08:27:09 2012
@@ -31,7 +31,7 @@ public class DummyCCPPProfileServiceImpl
/**
* @see org.apache.pluto.container.CCPPProfileService#getCCPPProfile(javax.servlet.http.HttpServletRequest)
*/
- public Profile getCCPPProfile(HttpServletRequest httpServletRequest) {
+ public Profile getCCPPProfile(final HttpServletRequest httpServletRequest) {
return SINGLETON;
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyProfile.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyProfile.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyProfile.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/DummyProfile.java Tue Jul 17 08:27:09 2012
@@ -38,7 +38,7 @@ public class DummyProfile implements Pro
/**
* @see javax.ccpp.Profile#getAttributes()
*/
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("rawtypes")
public Set getAttributes() {
return null;
}
@@ -53,7 +53,7 @@ public class DummyProfile implements Pro
/**
* @see javax.ccpp.Profile#getComponents()
*/
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("rawtypes")
public Set getComponents() {
return null;
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventCoordinationServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventCoordinationServiceImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventCoordinationServiceImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventCoordinationServiceImpl.java Tue Jul 17 08:27:09 2012
@@ -16,25 +16,181 @@
*/
package org.apache.sling.portal.container.internal;
+import java.io.IOException;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import javax.portlet.Event;
+import javax.portlet.PortletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
import org.apache.pluto.container.EventCoordinationService;
import org.apache.pluto.container.PortletContainer;
+import org.apache.pluto.container.PortletContainerException;
import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.container.om.portlet.EventDefinition;
+import org.apache.pluto.container.om.portlet.EventDefinitionReference;
+import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
+import org.apache.pluto.container.om.portlet.PortletDefinition;
+import org.apache.sling.portal.container.PortletRegistryService;
+import org.apache.sling.portal.container.SlingPortletConfig;
+import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
+import org.apache.sling.portal.container.internal.util.PortalUtil;
+import org.apache.sling.portal.container.spi.PortalEventCoordinatorService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EventCoordinationServiceImpl implements EventCoordinationService {
+
+ /** The logger. */
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ /** Request attribute caching the portlet windows for this request. */
+ private static final String ATTR_WINDOWS = EventCoordinationServiceImpl.class.getName() + "/windows";
+
+ /** Request attribute for the recursive count. */
+ private static final String ATTR_RECURSIVE = EventCoordinationServiceImpl.class.getName() + "/recursive";
+
+ /** Max recursion depth. */
+ private static final Integer MAX_DEPTH = 15;
-public class EventCoordinationServiceImpl implements EventCoordinationService
-{
/**
* @see org.apache.pluto.container.EventCoordinationService#processEvents(org.apache.pluto.container.PortletContainer, org.apache.pluto.container.PortletWindow, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.List)
*/
- public void processEvents(PortletContainer container,
- PortletWindow portletWindow, HttpServletRequest request,
- HttpServletResponse response, List<Event> events)
- {
- // we simply do nothing for now
+ @SuppressWarnings("unchecked")
+ public void processEvents(final PortletContainer container,
+ final PortletWindow portletWindow,
+ final HttpServletRequest request,
+ final HttpServletResponse response,
+ final List<Event> events) {
+ final SlingPortletContainer portletContainer = (SlingPortletContainer)container;
+
+ // get the list of relevant window - calculate this only once per request
+ final List<SlingPortletWindow> windows;
+ Object windowsObj = request.getAttribute(ATTR_WINDOWS);
+ if ( windowsObj != null ) {
+ windows = (List<SlingPortletWindow>)windowsObj;
+ } else {
+ final PortalEventCoordinatorService pecs = portletContainer.getPortalEventCoordinatorService();
+ windows = pecs.getPortletWindow(PortalUtil.getSlingHttpServletRequest(request));
+ request.setAttribute(ATTR_WINDOWS, windows);
+ }
+
+ final Integer depth = (Integer) request.getAttribute(ATTR_RECURSIVE);
+ if ( depth != null && depth.compareTo(MAX_DEPTH) == 0 ) {
+ logger.error("Max recursion depth of {} received for portlet event delivery.", MAX_DEPTH);
+ return;
+ }
+ try {
+ final int newDepth;
+ if ( depth == null ) {
+ newDepth = 1;
+ } else {
+ newDepth = depth + 1;
+ }
+ request.setAttribute(ATTR_RECURSIVE, newDepth);
+
+ final PortletRegistryService registry = portletContainer.getPortletRegistryService();
+
+ for (final Event event : events) {
+ final Set<SlingPortletWindow> receivers = this.getAllPortletsRegisteredForEvent(event, registry, windows);
+
+ for (final SlingPortletWindow receiver : receivers) {
+ try {
+ container.doEvent(receiver, request, response, event);
+ } catch (final PortletException e) {
+ logger.error("Unable to deliver event: " + e.getMessage(), e);
+ } catch (final IOException e) {
+ logger.error("Unable to deliver event: " + e.getMessage(), e);
+ } catch (final PortletContainerException e) {
+ logger.error("Unable to deliver event: " + e.getMessage(), e);
+ }
+ }
+ }
+ } finally {
+ request.setAttribute(ATTR_RECURSIVE, depth);
+ }
+ }
+
+ private Set<SlingPortletWindow> getAllPortletsRegisteredForEvent(final Event event,
+ final PortletRegistryService registry,
+ final List<SlingPortletWindow> windows) {
+
+ final Set<SlingPortletWindow> resultSet = new LinkedHashSet<SlingPortletWindow>();
+
+ final QName eventName = event.getQName();
+
+ for (final SlingPortletWindow portlet : windows) {
+ final SlingPortletConfig config = portlet.getPortletEntity().getPortletConfig();
+ final PortletDefinition portletDD = config.getPortletDefinition();
+
+ final List<? extends EventDefinitionReference> processingEvents = portletDD.getSupportedProcessingEvents();
+ if (processingEvents != null) {
+ final String defaultNamespace = config.getPortletDefinition().getApplication().getDefaultNamespace();
+
+ if (isEventSupported(processingEvents, eventName, defaultNamespace)) {
+ resultSet.add(portlet);
+ } else {
+ for (final EventDefinitionReference ref : processingEvents) {
+ final QName name = ref.getQualifiedName(defaultNamespace);
+ if (name == null) {
+ continue;
+ }
+ // add also grouped portlets, that ends with "."
+ if (name.toString().endsWith(".")
+ && eventName.toString().startsWith(name.toString())) {
+ resultSet.add(portlet);
+ break;
+ }
+ // also look for alias names:
+ final List<QName> aliases = getAllAliases(eventName, config.getPortletDefinition().getApplication());
+ if (aliases != null && aliases.contains(name) ) {
+ resultSet.add(portlet);
+ break;
+ }
+ // also look for default namespaced events
+ if (name.getNamespaceURI() == null || name.getNamespaceURI().equals("")) {
+ final QName qname = new QName(defaultNamespace, name.getLocalPart());
+ if (eventName.toString().equals(qname.toString())) {
+ resultSet.add(portlet);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return resultSet;
+ }
+
+ private boolean isEventSupported(final List<? extends EventDefinitionReference> supportedEvents, final QName eventName, final String defaultNamespace) {
+ if (supportedEvents != null) {
+ for (EventDefinitionReference ref : supportedEvents) {
+ final QName refQName = ref.getQualifiedName(defaultNamespace);
+ if (refQName != null && refQName.equals(eventName)) {
+
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private List<QName> getAllAliases(final QName eventName, final PortletApplicationDefinition portletAppDD) {
+ if (portletAppDD.getEventDefinitions() != null) {
+
+ for (final EventDefinition def : portletAppDD.getEventDefinitions()) {
+ final QName defQName = def.getQualifiedName(portletAppDD.getDefaultNamespace());
+ if (defQName != null && defQName.equals(eventName)){
+ return def.getAliases();
+ }
+ }
+ }
+ return null;
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java Tue Jul 17 08:27:09 2012
@@ -23,38 +23,57 @@ import javax.portlet.Event;
import javax.xml.namespace.QName;
import org.apache.pluto.container.EventProvider;
-import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.om.portlet.EventDefinition;
import org.apache.pluto.container.om.portlet.EventDefinitionReference;
import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
-
+import org.apache.sling.portal.container.SlingPortletWindow;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An event provider creates events for a specific portlet window.
+ */
public class EventProviderImpl implements EventProvider {
- private PortletWindow portletWindow;
+ /** Logger. */
+ private static final Logger LOGGER = LoggerFactory.getLogger(EventProviderImpl.class.getName());
+
+ /** The portlet window. */
+ private final SlingPortletWindow portletWindow;
- public EventProviderImpl(PortletWindow portletWindow) {
+ /**
+ * Constructor
+ */
+ public EventProviderImpl(final SlingPortletWindow portletWindow) {
this.portletWindow = portletWindow;
}
/**
* @see org.apache.pluto.container.EventProvider#createEvent(javax.xml.namespace.QName, java.io.Serializable)
*/
- public Event createEvent(QName qname, Serializable value) throws IllegalArgumentException {
+ public Event createEvent(final QName qname, final Serializable value) throws IllegalArgumentException {
if (isDeclaredAsPublishingEvent(qname)) {
if (value != null && !isValueInstanceOfDefinedClass(qname, value)) {
throw new IllegalArgumentException("Payload has not the right class");
}
- return new EventImpl(qname, value);
+ } else {
+ final String key = "event-provider-impl:" + qname.toString();
+ if ( portletWindow.getPortletEntity().getAttribute(key) == null ) {
+ LOGGER.warn("Portlet {} is sending undeclared events {} - value type is not checked!", portletWindow.getId().getStringId(), qname);
+ portletWindow.getPortletEntity().setAttribute(key, Boolean.TRUE);
+ }
}
- return null;
+ return new EventImpl(qname, value);
}
- private boolean isDeclaredAsPublishingEvent(QName qname) {
+ /**
+ * Check if the event is declared
+ */
+ private boolean isDeclaredAsPublishingEvent(final QName qname) {
final List<? extends EventDefinitionReference> events = portletWindow.getPortletDefinition().getSupportedPublishingEvents();
if (events != null) {
final String defaultNamespace = portletWindow.getPortletDefinition().getApplication().getDefaultNamespace();
- for (EventDefinitionReference ref : events)
- {
+ for (EventDefinitionReference ref : events) {
final QName name = ref.getQualifiedName(defaultNamespace);
if (name == null) {
continue;
@@ -67,11 +86,14 @@ public class EventProviderImpl implement
return false;
}
+ /**
+ * Check if the value has the right type
+ */
private boolean isValueInstanceOfDefinedClass(QName qname, Serializable value) {
final PortletApplicationDefinition app = portletWindow.getPortletDefinition().getApplication();
- List<? extends EventDefinition> events = app.getEventDefinitions();
+ final List<? extends EventDefinition> events = app.getEventDefinitions();
if (events != null) {
- for (EventDefinition def : events) {
+ for (final EventDefinition def : events) {
if (def.getQName() != null) {
if (def.getQName().equals(qname)) {
return value.getClass().getName().equals(def.getValueType());
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletActionResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletActionResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletActionResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletActionResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -23,46 +23,43 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import org.apache.pluto.container.PortletActionResponseContext;
-import org.apache.pluto.container.PortletWindow;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.internal.request.PortalRequestContext;
import org.apache.sling.portal.container.internal.request.PortalURL;
/**
- * @version $Id$
- *
+ * Portlet action response context.
*/
-public class PortletActionResponseContextImpl extends PortletStateAwareResponseContextImpl implements
- PortletActionResponseContext
-{
+public class PortletActionResponseContextImpl
+ extends PortletStateAwareResponseContextImpl
+ implements PortletActionResponseContext {
+
private boolean redirect;
private String redirectLocation;
private String renderURLParamName;
- public PortletActionResponseContextImpl(SlingPortletContainer container, HttpServletRequest containerRequest,
- HttpServletResponse containerResponse, PortletWindow window)
- {
+ public PortletActionResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
super(container, containerRequest, containerResponse, window);
}
- public String getResponseURL()
- {
- if (!isReleased())
- {
- close();
- if (!redirect || renderURLParamName != null)
- {
- PortalURL url = PortalRequestContext.getContext().createPortalURL();
+ /**
+ * @see org.apache.pluto.container.PortletActionResponseContext#getResponseURL()
+ */
+ public String getResponseURL() {
+ if (!isReleased()) {
+ this.close();
+ if (!redirect || renderURLParamName != null) {
+ final PortalURL url = PortalRequestContext.getContext().createPortalURL();
url.setActionWindow(null);
- if (redirect)
- {
- try
- {
+ if (redirect) {
+ try {
return redirectLocation + "?" + URLEncoder.encode(renderURLParamName, "UTF-8") + "=" + URLEncoder.encode(url.toURL(true), "UTF-8");
- }
- catch (UnsupportedEncodingException e)
- {
- // Cannot happen: UTF-8 is a buildin/required encoder
+ } catch (final UnsupportedEncodingException e) {
+ // Cannot happen: UTF-8 is a builtin/required encoder
return null;
}
}
@@ -73,20 +70,25 @@ public class PortletActionResponseContex
return null;
}
- public boolean isRedirect()
- {
+ /**
+ * @see org.apache.pluto.container.PortletActionResponseContext#isRedirect()
+ */
+ public boolean isRedirect() {
return redirect;
}
- public void setRedirect(String location)
- {
+ /**
+ * @see org.apache.pluto.container.PortletActionResponseContext#setRedirect(java.lang.String)
+ */
+ public void setRedirect(final String location) {
setRedirect(location, null);
}
- public void setRedirect(String location, String renderURLParamName)
- {
- if (!isClosed())
- {
+ /**
+ * @see org.apache.pluto.container.PortletActionResponseContext#setRedirect(java.lang.String, java.lang.String)
+ */
+ public void setRedirect(final String location, final String renderURLParamName) {
+ if (!isClosed()) {
this.redirectLocation = location;
this.renderURLParamName = renderURLParamName;
this.redirect = true;
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletContainerImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletContainerImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletContainerImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletContainerImpl.java Tue Jul 17 08:27:09 2012
@@ -22,6 +22,7 @@ import org.apache.sling.portal.container
import org.apache.sling.portal.container.PortletWindowManager;
import org.apache.sling.portal.container.SlingPortletContainer;
import org.apache.sling.portal.container.api.PortletApplicationRegistry;
+import org.apache.sling.portal.container.spi.PortalEventCoordinatorService;
/**
* This is the portlet container implementation based on the Pluto default
@@ -77,4 +78,11 @@ public class PortletContainerImpl
public PortletRegistryService getPortletRegistryService() {
return this.registry;
}
+
+ /**
+ * @see org.apache.sling.portal.container.SlingPortletContainer#getPortalEventCoordinatorService()
+ */
+ public PortalEventCoordinatorService getPortalEventCoordinatorService() {
+ return ((ContainerServicesImpl)this.getContainerServices()).getPortalEventCoordinatorService();
+ }
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletEventResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletEventResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletEventResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletEventResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -20,20 +20,21 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import org.apache.pluto.container.PortletEventResponseContext;
-import org.apache.pluto.container.PortletWindow;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
/**
- * @version $Id$
+ * Event response context
*
*/
-public class PortletEventResponseContextImpl extends PortletStateAwareResponseContextImpl implements
- PortletEventResponseContext
-{
+public class PortletEventResponseContextImpl
+ extends PortletStateAwareResponseContextImpl
+ implements PortletEventResponseContext {
- public PortletEventResponseContextImpl(SlingPortletContainer container, HttpServletRequest containerRequest,
- HttpServletResponse containerResponse, PortletWindow window)
- {
+ public PortletEventResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
super(container, containerRequest, containerResponse, window);
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletMimeResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletMimeResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletMimeResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletMimeResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -27,10 +27,10 @@ import javax.servlet.http.HttpServletRes
import org.apache.pluto.container.PortletMimeResponseContext;
import org.apache.pluto.container.PortletURLProvider;
-import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.PortletURLProvider.TYPE;
import org.apache.pluto.container.util.PrintWriterServletOutputStream;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -88,27 +88,41 @@ public abstract class PortletMimeRespons
private CacheControl cacheControl;
private OutputStream outputStream;
- public PortletMimeResponseContextImpl(SlingPortletContainer container, HttpServletRequest containerRequest,
- HttpServletResponse containerResponse, PortletWindow window) {
+ public PortletMimeResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
super(container, containerRequest, containerResponse, window);
}
+ /**
+ * @see org.apache.sling.portal.container.internal.PortletResponseContextImpl#close()
+ */
public void close() {
- cacheControl = null;
- outputStream = null;
+ this.cacheControl = null;
+ this.outputStream = null;
super.close();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#flushBuffer()
+ */
public void flushBuffer() throws IOException {
if (!isClosed()) {
getServletResponse().flushBuffer();
}
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getBufferSize()
+ */
public int getBufferSize() {
return getServletResponse().getBufferSize();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getCacheControl()
+ */
public CacheControl getCacheControl() {
if (isClosed()) {
return null;
@@ -119,18 +133,30 @@ public abstract class PortletMimeRespons
return cacheControl;
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getCharacterEncoding()
+ */
public String getCharacterEncoding() {
return isClosed() ? null : getServletResponse().getCharacterEncoding();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getContentType()
+ */
public String getContentType() {
return isClosed() ? null : getServletResponse().getContentType();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getLocale()
+ */
public Locale getLocale() {
return isClosed() ? null : getServletResponse().getLocale();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getOutputStream()
+ */
public OutputStream getOutputStream() throws IOException, IllegalStateException {
if (isClosed()) {
return null;
@@ -148,36 +174,57 @@ public abstract class PortletMimeRespons
return new SecureOutputStream(outputStream);
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getWriter()
+ */
public PrintWriter getWriter() throws IOException, IllegalStateException {
return isClosed() ? null : new SecurePrinterWriter(getServletResponse().getWriter());
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#isCommitted()
+ */
public boolean isCommitted() {
return getServletResponse().isCommitted();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#reset()
+ */
public void reset() {
getServletResponse().reset();
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#resetBuffer()
+ */
public void resetBuffer() {
if (!isClosed()) {
getServletResponse().resetBuffer();
}
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#setBufferSize(int)
+ */
public void setBufferSize(int size) {
if (!isClosed()) {
getServletResponse().setBufferSize(size);
}
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#setContentType(java.lang.String)
+ */
public void setContentType(String contentType) {
if (!isClosed()) {
getServletResponse().setContentType(contentType);
}
}
+ /**
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getPortletURLProvider(org.apache.pluto.container.PortletURLProvider.TYPE)
+ */
public PortletURLProvider getPortletURLProvider(TYPE type) {
return isClosed() ? null : new PortletURLProviderImpl(getPortalURL(), type, getPortletWindow());
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRenderResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRenderResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRenderResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRenderResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -30,7 +30,6 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import org.apache.pluto.container.PortletRenderResponseContext;
-import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.om.portlet.DisplayName;
import org.apache.pluto.container.om.portlet.PortletDefinition;
import org.apache.pluto.container.om.portlet.Supports;
@@ -56,10 +55,10 @@ public class PortletRenderResponseContex
private final boolean writeTitle;
- public PortletRenderResponseContextImpl(SlingPortletContainer container,
- HttpServletRequest containerRequest,
- HttpServletResponse containerResponse,
- PortletWindow window) {
+ public PortletRenderResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
super(container, containerRequest, containerResponse, window);
final PortletDefinition def = window.getPortletDefinition();
DisplayName dn = def.getDisplayName(containerRequest.getLocale());
@@ -71,10 +70,10 @@ public class PortletRenderResponseContex
} else if ( def.getPortletInfo().getShortTitle() != null ) {
this.title = def.getPortletInfo().getShortTitle();
} else {
- this.title = ((SlingPortletWindow)window).getPortletEntity().getPortletEntityId().getKey();
+ this.title = window.getPortletEntity().getPortletEntityId().getKey();
}
}
- this.writeTitle = !((SlingPortletWindow)window).getConfiguration().get("hideTitleBar", false);
+ this.writeTitle = !window.getConfiguration().get("hideTitleBar", false);
}
private boolean written() {
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextServiceImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextServiceImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextServiceImpl.java Tue Jul 17 08:27:09 2012
@@ -29,6 +29,7 @@ import org.apache.pluto.container.Portle
import org.apache.pluto.container.PortletResourceResponseContext;
import org.apache.pluto.container.PortletWindow;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
/**
* Default implementation of the portlet request context service.
@@ -45,7 +46,7 @@ public class PortletRequestContextServic
HttpServletResponse containerResponse,
PortletWindow window)
{
- return new PortletActionResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, window);
+ return new PortletActionResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, (SlingPortletWindow)window);
}
public PortletRequestContext getPortletEventRequestContext(PortletContainer container, HttpServletRequest containerRequest,
@@ -58,7 +59,7 @@ public class PortletRequestContextServic
HttpServletRequest containerRequest,
HttpServletResponse containerResponse, PortletWindow window)
{
- return new PortletEventResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, window);
+ return new PortletEventResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, (SlingPortletWindow)window);
}
public PortletRequestContext getPortletRenderRequestContext(PortletContainer container, HttpServletRequest containerRequest,
@@ -72,7 +73,7 @@ public class PortletRequestContextServic
HttpServletResponse containerResponse,
PortletWindow window)
{
- return new PortletRenderResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, window);
+ return new PortletRenderResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, (SlingPortletWindow)window);
}
public PortletResourceRequestContext getPortletResourceRequestContext(PortletContainer container,
@@ -88,6 +89,6 @@ public class PortletRequestContextServic
HttpServletResponse containerResponse,
PortletWindow window)
{
- return new PortletResourceResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, window);
+ return new PortletResourceResponseContextImpl((SlingPortletContainer)container, containerRequest, containerResponse, (SlingPortletWindow)window);
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -22,8 +22,8 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import org.apache.pluto.container.PortletResourceResponseContext;
-import org.apache.pluto.container.PortletWindow;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
/**
* @version $Id$
@@ -33,8 +33,10 @@ public class PortletResourceResponseCont
PortletResourceResponseContext
{
- public PortletResourceResponseContextImpl(SlingPortletContainer container, HttpServletRequest containerRequest,
- HttpServletResponse containerResponse, PortletWindow window)
+ public PortletResourceResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window)
{
super(container, containerRequest, containerResponse, window);
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -28,6 +28,7 @@ import org.apache.pluto.container.Portle
import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.ResourceURLProvider;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.internal.request.PortalRequestContext;
import org.apache.sling.portal.container.internal.request.PortalURL;
import org.w3c.dom.DOMException;
@@ -35,8 +36,7 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
- * @version $Id$
- *
+ * Base class for all response contexts.
*/
public abstract class PortletResponseContextImpl
implements PortletResponseContext {
@@ -57,7 +57,7 @@ public abstract class PortletResponseCon
private HttpServletResponse servletResponse;
/** The portlet window */
- private PortletWindow window;
+ private SlingPortletWindow window;
/** The portal url */
private PortalURL portalURL;
@@ -70,15 +70,11 @@ public abstract class PortletResponseCon
/**
* Constrcutor
- * @param container
- * @param containerRequest
- * @param containerResponse
- * @param window
- */
- public PortletResponseContextImpl(SlingPortletContainer container,
- HttpServletRequest containerRequest,
- HttpServletResponse containerResponse,
- PortletWindow window) {
+ */
+ public PortletResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
this.container = container;
this.containerRequest = containerRequest;
this.containerResponse = containerResponse;
@@ -88,7 +84,6 @@ public abstract class PortletResponseCon
/**
* Get the portal url
- * @return
*/
protected PortalURL getPortalURL() {
return portalURL;
@@ -111,7 +106,7 @@ public abstract class PortletResponseCon
/**
* @see org.apache.pluto.container.PortletResponseContext#init(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
- public void init(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
+ public void init(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) {
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
}
@@ -119,7 +114,7 @@ public abstract class PortletResponseCon
/**
* @see org.apache.pluto.container.PortletResponseContext#createElement(java.lang.String)
*/
- public Element createElement(String tagName) throws DOMException {
+ public Element createElement(final String tagName) throws DOMException {
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
@@ -135,7 +130,7 @@ public abstract class PortletResponseCon
/**
* @see org.apache.pluto.container.PortletResponseContext#addProperty(javax.servlet.http.Cookie)
*/
- public void addProperty(Cookie cookie) {
+ public void addProperty(final Cookie cookie) {
if (!isClosed()) {
servletResponse.addCookie(cookie);
}
@@ -144,14 +139,14 @@ public abstract class PortletResponseCon
/**
* @see org.apache.pluto.container.PortletResponseContext#addProperty(java.lang.String, org.w3c.dom.Element)
*/
- public void addProperty(String key, Element element) {
+ public void addProperty(final String key, final Element element) {
// not supported
}
/**
* @see org.apache.pluto.container.PortletResponseContext#addProperty(java.lang.String, java.lang.String)
*/
- public void addProperty(String key, String value) {
+ public void addProperty(final String key, final String value) {
// not supported
}
@@ -229,7 +224,7 @@ public abstract class PortletResponseCon
/**
* @see org.apache.pluto.container.PortletResponseContext#setProperty(java.lang.String, java.lang.String)
*/
- public void setProperty(String key, String value) {
+ public void setProperty(final String key, final String value) {
// not supported
}
@@ -237,6 +232,6 @@ public abstract class PortletResponseCon
* @see org.apache.pluto.container.PortletResponseContext#getResourceURLProvider()
*/
public ResourceURLProvider getResourceURLProvider() {
- return isReleased() ? null : new ResourceURLProviderImpl(servletRequest,window);
+ return isReleased() ? null : new ResourceURLProviderImpl(servletRequest, window);
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletStateAwareResponseContextImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletStateAwareResponseContextImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletStateAwareResponseContextImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletStateAwareResponseContextImpl.java Tue Jul 17 08:27:09 2012
@@ -29,105 +29,115 @@ import javax.servlet.http.HttpServletRes
import org.apache.pluto.container.EventProvider;
import org.apache.pluto.container.PortletStateAwareResponseContext;
import org.apache.pluto.container.PortletURLProvider;
-import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.container.impl.PortletURLImpl;
import org.apache.sling.portal.container.SlingPortletContainer;
+import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.internal.request.PortalRequestContext;
import org.apache.sling.portal.container.internal.request.PortalURL;
/**
- * @version $Id$
- *
+ * The context for state aware responses.
*/
-public abstract class PortletStateAwareResponseContextImpl extends PortletResponseContextImpl implements
- PortletStateAwareResponseContext
-{
+public abstract class PortletStateAwareResponseContextImpl
+ extends PortletResponseContextImpl
+ implements PortletStateAwareResponseContext {
+
private List<Event> events;
+
private PortletURLProviderImpl portletURLProvider;
- public PortletStateAwareResponseContextImpl(SlingPortletContainer container, HttpServletRequest containerRequest,
- HttpServletResponse containerResponse, PortletWindow window)
- {
+ public PortletStateAwareResponseContextImpl(final SlingPortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final SlingPortletWindow window) {
super(container, containerRequest, containerResponse, window);
this.portletURLProvider = new PortletURLProviderImpl(getPortalURL(), PortletURLProvider.TYPE.RENDER, window);
}
- protected PortletURLProvider getPorletURLProvider()
- {
- return portletURLProvider;
- }
-
- @Override
- public void close()
- {
- if (!isClosed())
- {
+ /**
+ * @see org.apache.sling.portal.container.internal.PortletResponseContextImpl#close()
+ */
+ public void close() {
+ if (!isClosed()) {
super.close();
new PortletURLImpl(this, portletURLProvider).filterURL();
- PortalURL url = portletURLProvider.apply();
+ final PortalURL url = portletURLProvider.apply();
PortalRequestContext.getContext().mergePortalURL(url, getPortletWindow().getId().getStringId());
}
}
- @Override
- public void release()
- {
- events = null;
- portletURLProvider = null;
+ /**
+ * @see org.apache.sling.portal.container.internal.PortletResponseContextImpl#release()
+ */
+ public void release() {
+ this.events = null;
+ this.portletURLProvider = null;
super.release();
}
- public List<Event> getEvents()
- {
- if (isReleased())
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getEvents()
+ */
+ public List<Event> getEvents() {
+ if (isReleased()) {
return null;
}
- if (events == null)
- {
+ if (events == null) {
events = new ArrayList<Event>();
}
return events;
}
- public PortletMode getPortletMode()
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getPortletMode()
+ */
+ public PortletMode getPortletMode() {
return isClosed() ? null : portletURLProvider.getPortletMode();
}
- public Map<String, String[]> getPublicRenderParameters()
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getPublicRenderParameters()
+ */
+ public Map<String, String[]> getPublicRenderParameters() {
return isClosed() ? null : portletURLProvider.getPublicRenderParameters();
}
- public Map<String, String[]> getRenderParameters()
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getRenderParameters()
+ */
+ public Map<String, String[]> getRenderParameters() {
return isClosed() ? null : portletURLProvider.getRenderParameters();
}
- public WindowState getWindowState()
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getWindowState()
+ */
+ public WindowState getWindowState() {
return isClosed() ? null : portletURLProvider.getWindowState();
}
- public void setPortletMode(PortletMode portletMode)
- {
- if (!isClosed())
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#setPortletMode(javax.portlet.PortletMode)
+ */
+ public void setPortletMode(final PortletMode portletMode) {
+ if (!isClosed()) {
portletURLProvider.setPortletMode(portletMode);
}
}
- public void setWindowState(WindowState windowState)
- {
- if (!isClosed())
- {
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#setWindowState(javax.portlet.WindowState)
+ */
+ public void setWindowState(final WindowState windowState) {
+ if (!isClosed()) {
portletURLProvider.setWindowState(windowState);
}
}
- public EventProvider getEventProvider()
- {
- return isClosed() ? null : new EventProviderImpl(getPortletWindow());
+ /**
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getEventProvider()
+ */
+ public EventProvider getEventProvider() {
+ return isClosed() ? null : new EventProviderImpl((SlingPortletWindow)getPortletWindow());
}
}
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/DefaultPortalURLFactory.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/DefaultPortalURLFactory.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/DefaultPortalURLFactory.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/DefaultPortalURLFactory.java Tue Jul 17 08:27:09 2012
@@ -26,16 +26,16 @@ import javax.portlet.PortletMode;
import javax.portlet.WindowState;
import javax.servlet.http.HttpServletRequest;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
import org.apache.sling.portal.container.internal.request.PortalURL;
import org.apache.sling.portal.container.internal.request.PortalURLFactory;
import org.apache.sling.portal.container.internal.request.PortalURLParameter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/**
- * @scr.component metatype="no"
- * @scr.service interface="PortalURLFactory"
- */
+@Component
+@Service(value=PortalURLFactory.class)
public class DefaultPortalURLFactory implements PortalURLFactory {
/** Logger. */
@@ -56,7 +56,7 @@ public class DefaultPortalURLFactory imp
/**
* @see org.apache.sling.portal.container.internal.request.PortalURLFactory#parse(javax.servlet.http.HttpServletRequest)
*/
- public PortalURL parse(HttpServletRequest request) {
+ public PortalURL parse(final HttpServletRequest request) {
LOGGER.debug("Parsing URL: {}", request.getRequestURI());
// Construct portal URL using info retrieved from servlet request.
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/PortletWindowIDImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/PortletWindowIDImpl.java?rev=1362405&r1=1362404&r2=1362405&view=diff
==============================================================================
--- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/PortletWindowIDImpl.java (original)
+++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/impl/PortletWindowIDImpl.java Tue Jul 17 08:27:09 2012
@@ -68,6 +68,11 @@ public class PortletWindowIDImpl impleme
return stringId.hashCode();
}
+ @Override
+ public String toString() {
+ return "PortletWindowIDImpl [stringId=" + stringId + "]";
+ }
+
/**
* @see org.apache.sling.portal.container.SlingPortletWindowId#getPortletEntityId()
*/