cziegeler    2003/05/27 02:15:07

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
                        DefaultLayoutFactory.java
               src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl
                        DefaultCopletFactory.java
               src/blocks/portal/java/org/apache/cocoon/portal/profile
                        ProfileManager.java
               src/blocks/portal/java/org/apache/cocoon/portal/profile/impl
                        SimpleProfileManager.java
  Log:
  Registering/inregistering
  
  Revision  Changes    Path
  1.9       +20 -3     
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DefaultLayoutFactory.java 26 May 2003 14:03:48 -0000      1.8
  +++ DefaultLayoutFactory.java 27 May 2003 09:15:07 -0000      1.9
  @@ -85,6 +85,7 @@
   import org.apache.cocoon.portal.layout.Item;
   import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.layout.LayoutFactory;
  +import org.apache.cocoon.portal.profile.ProfileManager;
   import org.apache.cocoon.util.ClassUtils;
   
   /**
  @@ -205,7 +206,15 @@
           layout.setDescription( layoutDescription );
           layout.setAspectDataHandler((AspectDataHandler)o[1]);
   
  -        // TODO - register this at the profile manager
  +        ProfileManager profileManager = null;
  +        try {
  +            profileManager = 
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +            profileManager.register(layout);
  +        } catch (ComponentException ce) {
  +            throw new ProcessingException("Unable to lookup profile 
manager.", ce);
  +        } finally {
  +            this.manager.release( profileManager );
  +        }
           return layout;
       }
       
  @@ -288,7 +297,6 @@
       public void remove(Layout layout) 
       throws ProcessingException {
           if ( layout != null ) {
  -            // TODO - unregister
               if ( layout instanceof CompositeLayout ) {
                   Iterator itemIterator = 
((CompositeLayout)layout).getItems().iterator();
                   while ( itemIterator.hasNext() ) {
  @@ -310,6 +318,15 @@
                   } finally {
                       this.manager.release( (Component)factory );
                   }
  +            }
  +            ProfileManager profileManager = null;
  +            try {
  +                profileManager = 
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +                profileManager.unregister(layout);
  +            } catch (ComponentException ce) {
  +                throw new ProcessingException("Unable to lookup profile 
manager.", ce);
  +            } finally {
  +                this.manager.release( profileManager );
               }
           }
       }
  
  
  
  1.4       +21 -3     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
  
  Index: DefaultCopletFactory.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultCopletFactory.java 26 May 2003 14:03:49 -0000      1.3
  +++ DefaultCopletFactory.java 27 May 2003 09:15:07 -0000      1.4
  @@ -75,6 +75,7 @@
   import org.apache.cocoon.portal.coplet.CopletFactory;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
  +import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    * This factory is for creating and managing coplet objects
  @@ -175,7 +176,15 @@
               this.manager.release( adapterSelector );
           }
           
  -        // TODO - register
  +        ProfileManager profileManager = null;
  +        try {
  +            profileManager = 
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +            profileManager.register(instance);
  +        } catch (ComponentException ce) {
  +            throw new ProcessingException("Unable to lookup profile 
manager.", ce);
  +        } finally {
  +            this.manager.release( profileManager );
  +        }
           return instance;
       }
       
  @@ -260,7 +269,6 @@
        */
       public void remove(CopletInstanceData copletInstanceData) 
       throws ProcessingException {
  -        // TODO - unregister
           if ( copletInstanceData != null ) {
               // now lookup the adapter
               final String adapterName = 
copletInstanceData.getCopletData().getCopletBaseData().getCopletAdapterName();
  @@ -278,6 +286,16 @@
                       adapterSelector.release( adapter );
                   }
                   this.manager.release( adapterSelector );
  +            }
  +            
  +            ProfileManager profileManager = null;
  +            try {
  +                profileManager = 
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +                profileManager.unregister(copletInstanceData);
  +            } catch (ComponentException ce) {
  +                throw new ProcessingException("Unable to lookup profile 
manager.", ce);
  +            } finally {
  +                this.manager.release( profileManager );
               }
           }
       }
  
  
  
  1.4       +21 -2     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
  
  Index: ProfileManager.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProfileManager.java       23 May 2003 09:42:50 -0000      1.3
  +++ ProfileManager.java       27 May 2003 09:15:07 -0000      1.4
  @@ -50,12 +50,18 @@
   */
   package org.apache.cocoon.portal.profile;
   
  +import java.util.List;
  +
   import org.apache.avalon.framework.component.Component;
  +import org.apache.cocoon.portal.coplet.CopletData;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.layout.Layout;
   
   /**
  - *
  + * The profile manager.
  + * Via this component you can get the profile (or parts of it) of the
  + * current 'user'.
  + * 
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
    * 
  @@ -71,6 +77,19 @@
       
       CopletInstanceData getCopletInstanceData(String copletID);
       
  +    List getCopletInstanceData(CopletData data);
  +    
  +    void register(CopletInstanceData coplet);
  +    
  +    void unregister(CopletInstanceData coplet);
  +
  +    void register(Layout layout);
  +    
  +    void unregister(Layout layout);
  +
  +    /**
  +     * Save the profile
  +     */
       void saveUserProfiles();
       
   }
  
  
  
  1.13      +115 -4    
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/SimpleProfileManager.java
  
  Index: SimpleProfileManager.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/SimpleProfileManager.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SimpleProfileManager.java 27 May 2003 07:38:33 -0000      1.12
  +++ SimpleProfileManager.java 27 May 2003 09:15:07 -0000      1.13
  @@ -50,9 +50,11 @@
   */
   package org.apache.cocoon.portal.profile.impl;
   
  +import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.Map;
   
   import org.apache.avalon.framework.CascadingRuntimeException;
  @@ -81,7 +83,10 @@
   import org.exolab.castor.mapping.Mapping;
   
   /**
  - *
  + * The profile manager using the authentication framework
  + * 
  + * FIXME - create abstract base class
  + * 
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Bj�rn L�tkemeier</a>
  @@ -506,8 +511,114 @@
   
               return copletInstanceDataManager.getCopletInstanceData(copletID);
           } catch (ComponentException e) {
  -            // TODO
  -            throw new CascadingRuntimeException("Arg", e);
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +
  +    public List getCopletInstanceData(CopletData data) {
  +        List coplets = new ArrayList();
  +        PortalService service = null;
  +        String attribute = null;
  +        try {
  +            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  +
  +            attribute = 
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
  +            CopletInstanceDataManager copletInstanceDataManager = 
(CopletInstanceDataManager)service.getAttribute(attribute);
  +
  +            Iterator iter = 
copletInstanceDataManager.getCopletInstanceData().values().iterator();
  +            while ( iter.hasNext() ) {
  +                CopletInstanceData current = (CopletInstanceData)iter.next();
  +                if ( current.getCopletData().equals(data) ) {
  +                    coplets.add( current );
  +                }
  +            }
  +            return coplets;
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +
  +    public void register(CopletInstanceData coplet) {
  +        PortalService service = null;
  +        String attribute = null;
  +        try {
  +            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  +
  +            attribute = 
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
  +            CopletInstanceDataManager copletInstanceDataManager = 
(CopletInstanceDataManager)service.getAttribute(attribute);
  +            
  +            copletInstanceDataManager.putCopletInstanceData( coplet );
  +            
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +    
  +    public void unregister(CopletInstanceData coplet) {
  +        PortalService service = null;
  +        String attribute = null;
  +        try {
  +            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  +
  +            attribute = 
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
  +            CopletInstanceDataManager copletInstanceDataManager = 
(CopletInstanceDataManager)service.getAttribute(attribute);
  +            
  +            
copletInstanceDataManager.getCopletInstanceData().remove(coplet.getId());
  +            
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +
  +    public void register(Layout layout) {
  +        PortalService service = null;
  +        try {
  +            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  +            String portalPrefix = 
SimpleProfileManager.class.getName()+"/"+service.getPortalName();
  +
  +            Map layoutMap = (Map)service.getAttribute("layout-map");
  +            if ( layoutMap == null ) {
  +                layout = 
(Layout)service.getAttribute(portalPrefix+"/Layout");
  +                if (layout != null) {
  +                    layoutMap = new HashMap();
  +                    this.cacheLayouts(layoutMap, layout);
  +                    service.setAttribute("layout-map", layoutMap);
  +                }
  +            }
  +            
  +            if ( layoutMap != null) {
  +                layoutMap.put(layout.getId(), layout);
  +            }
  +            
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +    
  +    public void unregister(Layout layout) {
  +        PortalService service = null;
  +        try {
  +            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  +            String portalPrefix = 
SimpleProfileManager.class.getName()+"/"+service.getPortalName();
  +
  +            Map layoutMap = (Map)service.getAttribute("layout-map");
  +            
  +            if ( layoutMap != null) {
  +                layoutMap.remove(layout.getId());
  +            }
  +            
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup portal 
service.", e);
           } finally {
               this.manager.release(service);
           }
  
  
  

Reply via email to