I downloaded the JBoss Portal source and had a thorough look at the admin 
portlets (core-admin project), in which the portal structure is modified. Then, 
I imitated it in my own portlet.

Here is how it works:

Entries in jboss-portlet.xml to get access to some JBoss-Services:

  | <service>
  |       <service-name>PortalObjectContainer</service-name>
  |       
<service-class>org.jboss.portal.core.model.portal.PortalObjectContainer</service-class>
  |       <service-ref>:container=PortalObject</service-ref>
  | </service>
  | <service>
  |       <service-name>InstanceContainer</service-name>
  |       
<service-class>org.jboss.portal.core.model.instance.InstanceContainer</service-class>
  |       <service-ref>:container=Instance</service-ref>
  | </service>
  | <service>
  |       <service-name>AuthorizationDomainRegistry</service-name>
  |       
<service-class>org.jboss.portal.security.AuthorizationDomainRegistry</service-class>
  |       <service-ref>:service=AuthorizationDomainRegistry</service-ref>
  | </service>
  | <service>
  |       <service-name>FederatingPortletInvoker</service-name>
  |       
<service-class>org.jboss.portal.portlet.federation.FederatingPortletInvoker</service-class>
  |       <service-ref>:service=PortletInvoker,type=Federating</service-ref>
  | </service>
  | 

Java-Code example in the portlet, including iteration through all deployed 
portlets, creating a portal page, creating a portlet instance and putting in in 
a window on that page:

PortalObjectContainer container = (PortalObjectContainer) 
getPortletContext().getAttribute("PortalObjectContainer");
  |             InstanceContainer instanceContainer = (InstanceContainer) 
getPortletContext().getAttribute("InstanceContainer");
  |             FederatingPortletInvoker portletInvoker = 
(FederatingPortletInvoker) 
getPortletContext().getAttribute("FederatingPortletInvoker");
  |             AuthorizationDomainRegistry registry = 
(AuthorizationDomainRegistry) 
getPortletContext().getAttribute("AuthorizationDomainRegistry");
  |             
  |             try {
  |                     // create a portal page
  |                     Page page = 
container.getContext().getDefaultPortal().createPage("MyPage" + counter);
  |                     
  |                     // iterate through existing portlets and select one
  |                     List<Portlet> tmpPortlets = new 
ArrayList(portletInvoker.getFederatedInvoker("local").getPortlets());
  |             for (Portlet portlet : tmpPortlets) {
  |                             
if(portlet.getInfo().getName().equals("WeatherPortlet")){
  |                                     // create an instance of the selected 
portlet
  |                                     InstanceDefinition def = 
instanceContainer.createDefinition("MyPortlet" + counter, 
portlet.getContext().getId());
  |                                     // configuring security
  |                                     DomainConfigurator configurator = 
registry.getDomain("instance").getConfigurator();
  |                         Set constraints = Collections.singleton(new 
RoleSecurityBinding("view", SecurityConstants.UNCHECKED_ROLE_NAME));
  |                         configurator.setSecurityBindings(def.getId(), 
constraints);
  |                                     // create a window containing the 
portlet
  |                                     Window window = 
page.createWindow("MyWindow" + counter, ContentType.PORTLET, def.getId());
  |                                     
window.setDeclaredProperty(ThemeConstants.PORTAL_PROP_REGION, "right");
  |                         
window.setDeclaredProperty(ThemeConstants.PORTAL_PROP_ORDER, "" + 
Integer.MAX_VALUE);
  |                             }
  |                     }
  |                     
  |             } catch (IllegalArgumentException e) {
  |                     // TODO Auto-generated catch block
  |                     e.printStackTrace();
  |             } catch (DuplicatePortalObjectException e) {
  |                     // TODO Auto-generated catch block
  |                     e.printStackTrace();
  |             } catch (DuplicateInstanceException e1) {
  |                     // TODO Auto-generated catch block
  |                     e1.printStackTrace();
  |             } catch (PortletInvokerException e1) {
  |                     // TODO Auto-generated catch block
  |                     e1.printStackTrace();
  |             }

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4240212#4240212

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4240212
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to