From portal-commits at lists.jboss.org Thu Mar 29 11:28:12 2007 Content-Type: multipart/mixed; boundary="===============0246446395619306505==" MIME-Version: 1.0 From: portal-commits at lists.jboss.org To: portal-commits at lists.jboss.org Subject: [portal-commits] JBoss Portal SVN: r6868 - trunk/core/src/main/org/jboss/portlet/content. Date: Thu, 29 Mar 2007 11:28:11 -0400 Message-ID: --===============0246446395619306505== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: thomas.heute(a)jboss.com Date: 2007-03-29 11:28:11 -0400 (Thu, 29 Mar 2007) New Revision: 6868 Modified: trunk/core/src/main/org/jboss/portlet/content/ContentTypeRegistration.ja= va Log: Fixed registration of mbean with dependencies. Modified: trunk/core/src/main/org/jboss/portlet/content/ContentTypeRegistra= tion.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/core/src/main/org/jboss/portlet/content/ContentTypeRegistration.j= ava 2007-03-28 16:37:50 UTC (rev 6867) +++ trunk/core/src/main/org/jboss/portlet/content/ContentTypeRegistration.j= ava 2007-03-29 15:28:11 UTC (rev 6868) @@ -22,32 +22,38 @@ *************************************************************************= *****/ package org.jboss.portlet.content; = +import java.util.ArrayList; +import java.util.List; + +import javax.management.Attribute; +import javax.management.InstanceNotFoundException; +import javax.management.MBeanException; +import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.management.ReflectionException; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.apache.log4j.Logger; +import org.jboss.mx.util.MBeanProxy; +import org.jboss.mx.util.MBeanServerLocator; +import org.jboss.portal.Mode; +import org.jboss.portal.core.impl.model.content.InternalContentProviderReg= istry; import org.jboss.portal.core.impl.model.content.generic.GenericContentProv= iderRegistry; import org.jboss.portal.core.impl.model.content.generic.InternalGenericCon= tentProvider; -import org.jboss.portal.core.impl.model.content.InternalContentProviderReg= istry; -import org.jboss.portal.core.impl.model.instance.PersistentInstanceContain= er; import org.jboss.portal.core.model.content.ContentType; import org.jboss.portal.core.model.content.spi.portlet.ContentPortlet; -import org.jboss.portal.core.model.content.spi.ContentProviderRegistry; import org.jboss.portal.core.model.instance.InstanceContainer; -import org.jboss.portal.Mode; import org.jboss.portal.jems.as.system.JBossServiceModelMBean; -import org.jboss.mx.util.MBeanProxy; -import org.jboss.mx.util.MBeanServerLocator; -import org.apache.log4j.Logger; = -import javax.servlet.ServletContextListener; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContext; -import javax.management.MBeanServer; -import javax.management.ObjectName; -import javax.management.Attribute; - /** * Provide registration of a content type with a portlet instance. This li= stener can be used * in war files to register content driven portlet. * * @author Julien Viet + * @author Thomas Heute * @version $Revision: 1.1 $ */ public class ContentTypeRegistration implements ServletContextListener @@ -90,51 +96,80 @@ = // log.debug("About to register content type "+ contentType + " with po= rtlet instance " + portletInstanceName); - GenericContentProviderRegistry providerRegistry =3D GenericContentPr= oviderRegistry.getInstance(); = - if (providerRegistry !=3D null) + InternalGenericContentProvider provider =3D new InternalGenericConte= ntProvider(); + provider.setContentType(contentType.toString()); + + provider.setDecorateContent(true); + provider.setContentPortletInfo(contentPortlet); + + try { + String name =3D "portal:service=3DContentRenderer,type=3D" + port= letInstanceName; + ObjectName objectName =3D new ObjectName(name); + MBeanServer mbeanServer =3D MBeanServerLocator.locateJBoss(); + JBossServiceModelMBean mbean =3D new JBossServiceModelMBean(provi= der); = - providerRegistry.register(contentType, contentPortlet); - log.debug("Registered content type "+ contentType + " with portle= t instance " + portletInstanceName); + // Register the mbean + mbeanServer.registerMBean(mbean, objectName); + + // + ObjectName scObjectName =3D new ObjectName("jboss.system:service= =3DServiceController"); + mbeanServer.invoke(scObjectName, "create", new ObjectName[] {obje= ctName} , new String[] {"javax.management.ObjectName"}); + + // Get proxy on Content Provide Registry + ObjectName contentProviderRegistryON =3D new ObjectName("portal:s= ervice=3DContentProviderRegistry"); + Object registry =3D MBeanProxy.get(InternalContentProviderRegistr= y.class, contentProviderRegistryON, mbeanServer); + mbean.setAttribute(new Attribute("Registry", registry)); + + // Get proxy on Instance Container + ObjectName instanceContainerON =3D new ObjectName("portal:contain= er=3DInstance"); + Object container =3D MBeanProxy.get(InstanceContainer.class, inst= anceContainerON, mbeanServer); + mbean.setAttribute(new Attribute("InstanceContainer", container)); + + // Set dependencies + List dependencies =3D new ArrayList(); + dependencies.add(contentProviderRegistryON); + dependencies.add(instanceContainerON); + mbeanServer.invoke(scObjectName, "register", new Object[] {object= Name, dependencies} , new String[] {"javax.management.ObjectName", "java.ut= il.Collection"}); + + // Start the mbean + mbeanServer.invoke(scObjectName, "start", new ObjectName[] {objec= tName} , new String[] {"javax.management.ObjectName"}); + + log.debug("Registered InternalGenericContentProvider with name:" = + name); } - else + catch(Exception e) { - InternalGenericContentProvider provider =3D new InternalGenericCo= ntentProvider(); - provider.setContentType(contentType.toString()); + log.warn("Couldn't perform ContentProvider registration", e); + return; + } + log.debug("Registered content type "+ contentType + " with portlet i= nstance " + portletInstanceName); + } = - provider.setDecorateContent(true); - provider.setContentPortletInfo(contentPortlet); - + public void contextDestroyed(ServletContextEvent event) + { + if (contentType !=3D null) + { + log.debug("About to unregister content type "+ contentType); + = + // + final String portletInstanceName =3D event.getServletContext().ge= tInitParameter("org.jboss.portal.portlet_instance"); + String name =3D "portal:service=3DContentRenderer,type=3D" + port= letInstanceName; try { - String name =3D "portal:service=3DInternalGenericContentProvid= er,type=3D" + portletInstanceName; + ObjectName objectName =3D new ObjectName(name); + ObjectName scObjectName =3D new ObjectName("jboss.system:servi= ce=3DServiceController"); + = + // Stop the mbean MBeanServer mbeanServer =3D MBeanServerLocator.locateJBoss(); - JBossServiceModelMBean mbean =3D new JBossServiceModelMBean(pr= ovider); - Object registry =3D MBeanProxy.get(InternalContentProviderRegi= stry.class, new ObjectName("portal:service=3DContentProviderRegistry"), mbe= anServer); - Object container =3D MBeanProxy.get(InstanceContainer.class, n= ew ObjectName("portal:container=3DInstance"), mbeanServer); - mbeanServer.registerMBean(mbean, new ObjectName(name)); - log.debug("Registered InternalGenericContentProvider with name= :" + name); - mbean.setAttribute(new Attribute("Registry", registry)); - mbean.setAttribute(new Attribute("InstanceContainer", containe= r)); - + mbeanServer.invoke(scObjectName, "stop", new ObjectName[] {obj= ectName} , new String[] {"javax.management.ObjectName"}); } catch(Exception e) { log.warn("Couldn't perform ContentProvider registration", e); return; } - log.debug("Registered content type "+ contentType + " with portle= t instance " + portletInstanceName); - } - } = - public void contextDestroyed(ServletContextEvent event) - { - if (contentType !=3D null) - { - log.debug("About to unregister content type "+ contentType); - GenericContentProviderRegistry providerRegistry =3D GenericConten= tProviderRegistry.getInstance(); - providerRegistry.unregister(contentType); log.debug("Content type "+ contentType + " has been unregistered"= ); } } --===============0246446395619306505==--