Author: cziegeler Date: Thu Nov 18 07:18:58 2004 New Revision: 76243 Added: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/helpers/FullScreenMapping.java Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/BookmarkAction.java cocoon/trunk/src/core/java/org/apache/cocoon/components/ServiceInfo.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/RoleManager.java cocoon/trunk/src/core/test/org/apache/cocoon/core/container/RoleManagerTestCase.java Log: Start using service info Add fullscreen support to bookmark
Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/BookmarkAction.java ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/BookmarkAction.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/BookmarkAction.java Thu Nov 18 07:18:58 2004 @@ -42,6 +42,7 @@ import org.apache.cocoon.portal.PortalManager; import org.apache.cocoon.portal.PortalService; import org.apache.cocoon.portal.acting.helpers.CopletMapping; +import org.apache.cocoon.portal.acting.helpers.FullScreenMapping; import org.apache.cocoon.portal.acting.helpers.LayoutMapping; import org.apache.cocoon.portal.acting.helpers.Mapping; import org.apache.excalibur.source.Source; @@ -58,6 +59,10 @@ * <targettype>layout|coplet</targettype> * <path/> * </event> + * <event type="fullscreen" id="ID"> + * <targetid>copletId</targetid> + * <layoutid>layoutId</layoutid> + * </event> * </events> * </bookmarks> * @@ -110,27 +115,38 @@ try { final String type = events[i].getAttribute("type"); final String id = events[i].getAttribute("id"); - if ( !"jxpath".equals(type) ) { - throw new ParameterException("Unknown event type for event " + id + ": " + type); - } - if ( this.eventMap.containsKey(id)) { - throw new ParameterException("The id for the event " + id + " is not unique."); - } - final String targetType = events[i].getChild("targettype").getValue(); - final String targetId = events[i].getChild("targetid").getValue(); - final String path = events[i].getChild("path").getValue(); - if ( "layout".equals(targetType) ) { - LayoutMapping mapping = new LayoutMapping(); - mapping.layoutId = targetId; - mapping.path = path; - this.eventMap.put(id, mapping); - } else if ( "coplet".equals(targetType) ) { - CopletMapping mapping = new CopletMapping(); + if ( "jxpath".equals(type) ) { + if ( this.eventMap.containsKey(id)) { + throw new ParameterException("The id for the event " + id + " is not unique."); + } + final String targetType = events[i].getChild("targettype").getValue(); + final String targetId = events[i].getChild("targetid").getValue(); + final String path = events[i].getChild("path").getValue(); + if ( "layout".equals(targetType) ) { + LayoutMapping mapping = new LayoutMapping(); + mapping.layoutId = targetId; + mapping.path = path; + this.eventMap.put(id, mapping); + } else if ( "coplet".equals(targetType) ) { + CopletMapping mapping = new CopletMapping(); + mapping.copletId = targetId; + mapping.path = path; + this.eventMap.put(id, mapping); + } else { + throw new ParameterException("Unknown target type " + targetType); + } + } else if ( "fullscreen".equals(type) ) { + if ( this.eventMap.containsKey(id)) { + throw new ParameterException("The id for the event " + id + " is not unique."); + } + final String targetId = events[i].getChild("targetid").getValue(); + final String layoutId = events[i].getChild("layoutid").getValue(); + FullScreenMapping mapping = new FullScreenMapping(); mapping.copletId = targetId; - mapping.path = path; - this.eventMap.put(id, mapping); + mapping.layoutId = layoutId; + this.eventMap.put(id, mapping); } else { - throw new ParameterException("Unknown target type " + targetType); + throw new ParameterException("Unknown event type for event " + id + ": " + type); } } catch (ConfigurationException ce) { throw new ParameterException("Configuration exception" ,ce); Added: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/helpers/FullScreenMapping.java ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/acting/helpers/FullScreenMapping.java Thu Nov 18 07:18:58 2004 @@ -0,0 +1,44 @@ +/* + * Copyright 1999-2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.portal.acting.helpers; + +import org.apache.cocoon.portal.PortalService; +import org.apache.cocoon.portal.coplet.CopletInstanceData; +import org.apache.cocoon.portal.event.Event; +import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent; +import org.apache.cocoon.portal.layout.Layout; +import org.apache.cocoon.portal.profile.ProfileManager; + +/** + * Helper class for a full screen event + * + * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> + * @version CVS $Id: CopletMapping.java 30941 2004-07-29 19:56:58Z vgritsenko $ +*/ +public class FullScreenMapping extends Mapping { + public String copletId; + public String layoutId; + + public Event getEvent(PortalService service, Object data) { + final ProfileManager manager = service.getComponentManager().getProfileManager(); + final CopletInstanceData cid = manager.getCopletInstanceData(this.copletId); + final Layout layout = manager.getPortalLayout(null, layoutId) ; + + Event e = new FullScreenCopletEvent(cid, layout); + return e; + } + +} Modified: cocoon/trunk/src/core/java/org/apache/cocoon/components/ServiceInfo.java ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/components/ServiceInfo.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/components/ServiceInfo.java Thu Nov 18 07:18:58 2004 @@ -36,6 +36,7 @@ private String poolInMethodName; private String poolOutMethodName; private Class serviceClass; + private String serviceClassName; private Method initMethod; private Method destroyMethod; private Method poolInMethod; @@ -164,6 +165,20 @@ } /** + * @return Returns the serviceClassName. + */ + public String getServiceClassName() { + return serviceClassName; + } + + /** + * @param serviceClassName The serviceClassName to set. + */ + public void setServiceClassName(String serviceClassName) { + this.serviceClassName = serviceClassName; + } + + /** * @param serviceClass The serviceClass to set. */ public void setServiceClass(Class serviceClass) { @@ -181,5 +196,27 @@ */ public void setConfiguration(Configuration configuration) { this.configuration = configuration; + } + + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + public String toString() { + return "ServiceInfo: {class=" + this.getServiceClassName()+"}"; + } + + public void fill(Configuration attr) { + // test model + final String model = attr.getAttribute("model", null); + if ( "pooled".equals(model) ) { + this.setModel(ServiceInfo.MODEL_POOLED); + this.setPoolInMethodName(attr.getAttribute("pool-in", null)); + this.setPoolOutMethodName(attr.getAttribute("pool-out", null)); + } else if ( "singleton".equals(model) ) { + this.setModel(ServiceInfo.MODEL_SINGLETON); + } + this.setInitMethodName(attr.getAttribute("init", null)); + this.setDestroyMethodName(attr.getAttribute("destroy", null)); } } Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java Thu Nov 18 07:18:58 2004 @@ -75,6 +75,7 @@ final ServiceInfo info = new ServiceInfo(); info.setServiceClass(componentClass); + info.setServiceClassName(componentClass.getName()); info.setConfiguration(configuration); // Early check for Composable @@ -105,13 +106,8 @@ } if ( numInterfaces == 0 ) { - // test configuration - final String model = configuration.getAttribute("model", null); - if ( "pooled".equals(model) ) { - info.setModel(ServiceInfo.MODEL_POOLED); - } else if ( "singleton".equals(model) ) { - info.setModel(ServiceInfo.MODEL_SINGLETON); - } + // this component does not use avalon interfaces, so get the info from the configuration + info.fill(configuration); } // Create the factory to use to create the instances of the Component. Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java Thu Nov 18 07:18:58 2004 @@ -27,6 +27,7 @@ import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; +import org.apache.cocoon.components.ServiceInfo; /** * Default service manager for Cocoon's components. @@ -103,16 +104,16 @@ } if( this.roleManager != null ) { - final String className = this.roleManager.getDefaultClassNameForRole( role ); + final ServiceInfo info = this.roleManager.getDefaultServiceInfoForRole( role ); - if( className != null ) { + if( info != null ) { if( this.getLogger().isDebugEnabled() ) { this.getLogger().debug( "Could not find ComponentHandler, attempting to create " + "one for role [" + role + "]" ); } try { - final Class componentClass = this.loader.loadClass( className ); + final Class componentClass = this.loader.loadClass( info.getServiceClassName() ); final Configuration configuration = new DefaultConfiguration( "", "-" ); @@ -288,7 +289,8 @@ if( null != role && !role.equals( "" ) ) { if( className.equals( "" ) ) { - className = roleManager.getDefaultClassNameForRole( role ); + final ServiceInfo info = roleManager.getDefaultServiceInfoForRole( role ); + className = info.getServiceClassName(); } this.addComponent(className, role, configurations[i]); Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java Thu Nov 18 07:18:58 2004 @@ -27,6 +27,7 @@ import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceSelector; import org.apache.avalon.framework.service.Serviceable; +import org.apache.cocoon.components.ServiceInfo; /** * Default component selector for Cocoon's components. @@ -243,7 +244,8 @@ if (compInstanceName == null) { // component-instance implicitly defined by the presence of the 'class' attribute if (classAttr == null) { - className = this.roleManager.getDefaultClassNameForKey(roleName, instance.getName()); + final ServiceInfo info = this.roleManager.getDefaultServiceInfoForKey(roleName, instance.getName()); + className = info.getServiceClassName(); } else { className = classAttr.trim(); } @@ -253,7 +255,8 @@ if (compInstanceName.equals(instance.getName())) { className = (classAttr == null) ? null : classAttr.trim(); } else { - className = this.roleManager.getDefaultClassNameForKey(roleName, instance.getName()); + final ServiceInfo info = this.roleManager.getDefaultServiceInfoForKey(roleName, instance.getName()); + className = info.getServiceClassName(); } } Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/RoleManager.java ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/RoleManager.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/RoleManager.java Thu Nov 18 07:18:58 2004 @@ -24,6 +24,7 @@ import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.cocoon.components.ServiceInfo; /** * Default RoleManager implementation. It populates the RoleManager @@ -98,14 +99,14 @@ * @param role The role that has a default implementation. * @return the Fully Qualified Class Name (FQCN) for the role. */ - public final String getDefaultClassNameForRole( final String role ) { - final String className = (String)this.classNames.get( role ); + public final ServiceInfo getDefaultServiceInfoForRole( final String role ) { + final ServiceInfo info = (ServiceInfo)this.classNames.get( role ); - if( null == className && null != this.parent ) { - return this.parent.getDefaultClassNameForRole( role ); + if( info == null && this.parent != null ) { + return this.parent.getDefaultServiceInfoForRole( role ); } - return className; + return info; } /** @@ -120,8 +121,8 @@ * @param shorthand The shorthand name for the type of component * @return the FQCN for the role/key combination. */ - public final String getDefaultClassNameForKey( final String role, - final String shorthand ) { + public final ServiceInfo getDefaultServiceInfoForKey( final String role, + final String shorthand ) { if( this.getLogger().isDebugEnabled() ) { this.getLogger().debug( "looking up keymap for role " + role ); } @@ -130,19 +131,19 @@ if( null == keyMap ) { if( null != this.parent ) { - return this.parent.getDefaultClassNameForKey( role, shorthand ); + return this.parent.getDefaultServiceInfoForKey( role, shorthand ); } - return ""; + return null; } if( this.getLogger().isDebugEnabled() ) { this.getLogger().debug( "looking up classname for key " + shorthand ); } - final String s = ( String ) keyMap.get( shorthand ); + final ServiceInfo s = ( ServiceInfo ) keyMap.get( shorthand ); - if( s == null && null != this.parent ) { - return this.parent.getDefaultClassNameForKey( role, shorthand ); + if( s == null && this.parent != null ) { + return this.parent.getDefaultServiceInfoForKey( role, shorthand ); } return s; } @@ -169,8 +170,11 @@ shorts.put( shorthand, name ); - if( null != defaultClassName ) { - classes.put( name, defaultClassName ); + if( defaultClassName != null ) { + final ServiceInfo info = new ServiceInfo(); + info.setServiceClassName(defaultClassName); + info.fill(roles[ i ]); + classes.put( name, info ); } final Configuration[] keys = roles[ i ].getChildren( "hint" ); @@ -179,9 +183,13 @@ for( int j = 0; j < keys.length; j++ ) { final String shortHand = keys[ j ].getAttribute( "shorthand" ).trim(); - String className = keys[ j ].getAttribute( "class" ).trim(); + final String className = keys[ j ].getAttribute( "class" ).trim(); - keyMap.put( shortHand, className ); + final ServiceInfo info = new ServiceInfo(); + info.setServiceClassName(className); + info.fill(keys[ j ]); + + keyMap.put( shortHand, info ); if( this.getLogger().isDebugEnabled() ) { this.getLogger().debug( "Adding key type " + shortHand + " associated with role " + name + Modified: cocoon/trunk/src/core/test/org/apache/cocoon/core/container/RoleManagerTestCase.java ============================================================================== --- cocoon/trunk/src/core/test/org/apache/cocoon/core/container/RoleManagerTestCase.java (original) +++ cocoon/trunk/src/core/test/org/apache/cocoon/core/container/RoleManagerTestCase.java Thu Nov 18 07:18:58 2004 @@ -38,12 +38,6 @@ super(name); } - /* - * @see TestCase#setUp() - */ - protected void setUp() throws Exception { - } - public void testConfigureWithoutHints() throws ConfigurationException { Mock conf = new Mock(Configuration.class); Mock child0 = new Mock(Configuration.class); @@ -68,8 +62,8 @@ conf.verify(); child0.verify(); assertEquals("Role name for shorthand incorrect", "testName", rm.getRoleForName("testShorthand")); - assertEquals("Default class for role incorrect", "testClass", rm.getDefaultClassNameForRole("testName")); - assertEquals("Default class for key must be empty", "", rm.getDefaultClassNameForKey("testName", "testShorthand")); + assertEquals("Default service info for role incorrect", "testClass", rm.getDefaultServiceInfoForRole("testName")); + assertNull("Default service info for key must be null", rm.getDefaultServiceInfoForKey("testName", "testShorthand")); } }