Author: cziegeler
Date: Mon Feb  1 20:18:24 2010
New Revision: 905402

URL: http://svn.apache.org/viewvc?rev=905402&view=rev
Log:
CCPPProfileService might be a plain osgi service

Modified:
    
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/DummyCCPPProfileServiceImpl.java
    
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/EventProviderImpl.java

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=905402&r1=905401&r2=905402&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
 Mon Feb  1 20:18:24 2010
@@ -41,6 +41,8 @@
 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.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
 
 public class ContainerServicesImpl implements SlingContainerServices {
 
@@ -50,7 +52,7 @@
     private final PortalContext context;
     private final EventCoordinationService eventCoordinationService;
     private final PortletRequestContextService portletRequestContextService;
-    private final CCPPProfileService ccppProfileService;
+    private final CCPPProfileService defaultCcppProfileService;
     private final FilterManagerServiceImpl filterManagerService;
     private final PortletURLListenerService portletURLListenerService;
     private final DefaultPortletPreferencesService portletPreferencesService;
@@ -66,10 +68,15 @@
     private final PortletRegistryService registry;
     private final PortletWindowManager windowManager;
 
+    private final ServiceTracker ccppProfileServiceTracker;
+
     /**
      * Default Constructor.
      */
-    public ContainerServicesImpl(PortalContext context, final ContainerInfo 
info, final SlingRepository repository)
+    public ContainerServicesImpl(final PortalContext context,
+                                 final ContainerInfo info,
+                                 final BundleContext bundleContext,
+                                 final SlingRepository repository)
     throws Exception {
         boolean noErrors = false;
         try {
@@ -79,7 +86,9 @@
             this.portletRequestContextService = new 
PortletRequestContextServiceImpl();
             this.filterManagerService = new 
FilterManagerServiceImpl(this.registry);
             this.portletURLListenerService = new PortletURLListenerImpl();
-            this.ccppProfileService = new DummyCCPPProfileServiceImpl();
+            this.ccppProfileServiceTracker = new ServiceTracker(bundleContext, 
CCPPProfileService.class.getName(), null);
+            this.ccppProfileServiceTracker.open();
+            this.defaultCcppProfileService = new DummyCCPPProfileServiceImpl();
             this.portletPreferencesService = new 
DefaultPortletPreferencesService(repository, registry);
             this.portletInvokerService = new 
DefaultPortletInvokerService(registry);
             this.portletEnvironmentService = new 
PortletEnvironmentServiceImpl();
@@ -101,6 +110,9 @@
         if ( this.filterManagerService != null ) {
             this.filterManagerService.destroy();
         }
+        if ( this.ccppProfileServiceTracker != null ) {
+            this.ccppProfileServiceTracker.close();
+        }
     }
 
     /**
@@ -142,7 +154,11 @@
      * @see 
org.apache.pluto.container.ContainerServices#getCCPPProfileService()
      */
     public CCPPProfileService getCCPPProfileService() {
-        return ccppProfileService;
+        CCPPProfileService service = 
(CCPPProfileService)this.ccppProfileServiceTracker.getService();
+        if  ( service == null ) {
+            service = defaultCcppProfileService;
+        }
+        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=905402&r1=905401&r2=905402&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
 Mon Feb  1 20:18:24 2010
@@ -26,6 +26,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
 import org.apache.pluto.container.ContainerInfo;
 import org.apache.pluto.container.ContainerServices;
 import org.apache.pluto.container.PortletContainerException;
@@ -36,6 +39,7 @@
 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.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,9 +49,9 @@
  * This is an OSGi service which forwards all requests to the real portlet
  * container implementation.
  *
- * @scr.component metatype="false"
- * @scr.service interface="SlingPortletContainer"
  */
+...@component
+...@service(value=SlingPortletContainer.class)
 public class DefaultPortletContainer implements SlingPortletContainer {
 
     /** Our logger. */
@@ -56,7 +60,7 @@
     /** The real portlet container */
     protected SlingPortletContainer portletContainer;
 
-    /** @scr.reference */
+    @Reference
     private SlingRepository repository;
 
     protected String containerName = "sling-portal";
@@ -65,10 +69,14 @@
     protected WindowState[] supportedWindowStates = new WindowState[] 
{WindowState.MAXIMIZED, WindowState.MINIMIZED, WindowState.NORMAL};
     protected PortletMode[] supportedPortletModes = new PortletMode[] 
{PortletMode.VIEW, PortletMode.EDIT, PortletMode.HELP};
 
+    /** The bundle context. */
+    private BundleContext bundleContext;
+
     /**
      * Deactivate and shutdown the container.
      */
     protected void deactivate(final ComponentContext context) {
+        this.bundleContext = null;
         if (this.portletContainer != null ) {
             try {
                 this.portletContainer.destroy();
@@ -84,6 +92,7 @@
      */
     protected void activate(final ComponentContext context)
     throws PortletContainerException {
+        this.bundleContext = context.getBundleContext();
         try {
             this.initContainer();
         } catch (PortletContainerException pce) {
@@ -107,7 +116,9 @@
                 this.supportedWindowStates,
                 null);
         try {
-            final ContainerServicesImpl containerServices = new 
ContainerServicesImpl(ctx, info, this.repository);
+            final ContainerServicesImpl containerServices = new 
ContainerServicesImpl(ctx, info,
+                    this.bundleContext,
+                    this.repository);
             this.portletContainer = new PortletContainerImpl(info, 
containerServices);
 
             if (!portletContainer.isInitialized()) {

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=905402&r1=905401&r2=905402&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
 Mon Feb  1 20:18:24 2010
@@ -22,11 +22,11 @@
 import org.apache.pluto.container.CCPPProfileService;
 
 /**
- *
+ * This is a dummy implementation - TODO!
  */
 public class DummyCCPPProfileServiceImpl implements CCPPProfileService {
 
-       /* (non-Javadoc)
+       /**
         * @see org.apache.pluto.spi.CCPPProfileService#getCCPPProfile()
         */
        public Profile getCCPPProfile(HttpServletRequest httpServletRequest) {

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=905402&r1=905401&r2=905402&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
 Mon Feb  1 20:18:24 2010
@@ -51,19 +51,15 @@
 
     private boolean isDeclaredAsPublishingEvent(QName qname) {
         final List<? extends EventDefinitionReference> events = 
portletWindow.getPortletDefinition().getSupportedPublishingEvents();
-        if (events != null)
-        {
-            String defaultNamespace = 
portletWindow.getPortletDefinition().getApplication()
-                                                   .getDefaultNamespace();
+        if (events != null) {
+            final String defaultNamespace = 
portletWindow.getPortletDefinition().getApplication().getDefaultNamespace();
             for (EventDefinitionReference ref : events)
             {
-                QName name = ref.getQualifiedName(defaultNamespace);
-                if (name == null)
-                {
+                final QName name = ref.getQualifiedName(defaultNamespace);
+                if (name == null) {
                     continue;
                 }
-                if (qname.equals(name))
-                {
+                if (qname.equals(name)) {
                     return true;
                 }
             }
@@ -72,24 +68,17 @@
     }
 
     private boolean isValueInstanceOfDefinedClass(QName qname, Serializable 
value) {
-        PortletApplicationDefinition app = 
portletWindow.getPortletDefinition().getApplication();
+        final PortletApplicationDefinition app = 
portletWindow.getPortletDefinition().getApplication();
         List<? extends EventDefinition> events = app.getEventDefinitions();
-        if (events != null)
-        {
-            for (EventDefinition def : events)
-            {
-                if (def.getQName() != null)
-                {
-                    if (def.getQName().equals(qname))
-                    {
+        if (events != null) {
+            for (EventDefinition def : events) {
+                if (def.getQName() != null) {
+                    if (def.getQName().equals(qname)) {
                         return 
value.getClass().getName().equals(def.getValueType());
                     }
-                }
-                else
-                {
-                    QName tmp = new QName(app.getDefaultNamespace(), 
def.getName());
-                    if (tmp.equals(qname))
-                    {
+                } else {
+                    final QName tmp = new QName(app.getDefaultNamespace(), 
def.getName());
+                    if (tmp.equals(qname)) {
                         return 
value.getClass().getName().equals(def.getValueType());
                     }
                 }


Reply via email to