gatein SVN: r6996 - epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/page.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-08-05 02:40:35 -0400 (Fri, 05 Aug 2011)
New Revision: 6996
Modified:
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIWizardPageSetInfo.java
Log:
JBEPP-924 Visible checkbox for dashboard page doesn't make sense
Modified: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIWizardPageSetInfo.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIWizardPageSetInfo.java 2011-08-04 21:31:41 UTC (rev 6995)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIWizardPageSetInfo.java 2011-08-05 06:40:35 UTC (rev 6996)
@@ -42,6 +42,7 @@
import org.exoplatform.webui.event.Event.Phase;
import org.exoplatform.webui.form.UIForm;
import org.exoplatform.webui.form.UIFormDateTimeInput;
+import org.exoplatform.webui.form.UIFormInput;
import org.exoplatform.webui.form.UIFormInputBase;
import org.exoplatform.webui.form.UIFormSelectBox;
import org.exoplatform.webui.form.UIFormStringInput;
13 years, 4 months
gatein SVN: r6995 - in portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl: portal and 1 other directory.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-08-04 17:31:41 -0400 (Thu, 04 Aug 2011)
New Revision: 6995
Modified:
portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/GateInImpl.java
portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/portal/NavigationImpl.java
Log:
- Added separators (where needed) and names to Context for easier problem tracking.
Modified: portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/GateInImpl.java
===================================================================
--- portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/GateInImpl.java 2011-08-04 21:30:17 UTC (rev 6994)
+++ portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/GateInImpl.java 2011-08-04 21:31:41 UTC (rev 6995)
@@ -91,24 +91,25 @@
private static final String GROUP_CHARS = "\\w|-|_";
public static final String SITE_OWNER_COMPONENT = "owner";
public static final String SITE_NAME_COMPONENT = "name";
- public static final Context SITE_CONTEXT = GenericContext.builder()
+ public static final Context SITE_CONTEXT = GenericContext.builder().named("Site")
.requiredComponent(SITE_OWNER_COMPONENT, Identifiable.class, Pattern.compile(Site.PORTAL_TYPE_NAME + "|" + Site.GROUP_TYPE_NAME + "|" + Site.DASHBOARD_TYPE_NAME))
.requiredComponent(SITE_NAME_COMPONENT, Site.class, Pattern.compile("(" + GROUP_CHARS + "|\\/)+"))
.optionalComponent("page", Page.class, Pattern.compile("\\w+"))
.withDefaultSeparator("::").build();
- public static final Context GROUP_CONTEXT = GenericContext.builder().requiredUnboundedHierarchicalComponent("group", Identifiable.class, Pattern.compile("(" + GROUP_CHARS + ")+"))
+ public static final Context GROUP_CONTEXT = GenericContext.builder().named("Group").requiredUnboundedHierarchicalComponent("group", Identifiable.class, Pattern.compile("(" + GROUP_CHARS + ")+"))
.withDefaultSeparator("/").requireSeparatorInFirstPosition().build();
- public static final Context APPLICATION_CONTEXT = GenericContext.builder().requiredComponent("application", Identifiable.class, Pattern.compile("\\w+"))
+ public static final Context APPLICATION_CONTEXT = GenericContext.builder().named("Application").requiredComponent("application", Identifiable.class, Pattern.compile("\\w+"))
.requiredComponent("portlet", Portlet.class, Pattern.compile("\\w+")).withDefaultSeparator("/").build();
- private static final Context GADGET_CONTEXT = GenericContext.builder().requiredComponent("name", Gadget.class, Pattern.compile("\\w+")).build();
- private static final Context USER_CONTEXT = GenericContext.builder().requiredComponent("name", Identifiable.class, Pattern.compile("[a-zA-Z0-9]+")).build();
- private static final Context CATEGORY_CONTEXT = GenericContext.builder().requiredComponent("name", Category.class, Pattern.compile("\\w+")).build();
- private static final Context WSRP_CONTEXT = GenericContext.builder().requiredComponent("invoker", Identifiable.class, Pattern.compile("\\w+"))
- .requiredComponent("portletcontext", WSRP.class, Pattern.compile(GROUP_CHARS + "+")).build();
+ private static final Context GADGET_CONTEXT = GenericContext.builder().named("Gadget").requiredComponent("name", Gadget.class, Pattern.compile("\\w+")).build();
+ private static final Context USER_CONTEXT = GenericContext.builder().named("User").requiredComponent("name", Identifiable.class, Pattern.compile("[a-zA-Z0-9]+")).build();
+ private static final Context CATEGORY_CONTEXT = GenericContext.builder().named("Category").requiredComponent("name", Category.class, Pattern.compile("\\w+")).build();
+ private static final Context WSRP_CONTEXT = GenericContext.builder().named("WSRP").requiredComponent("invoker", Identifiable.class, Pattern.compile("\\w+"))
+ .requiredComponent("portletcontext", WSRP.class, Pattern.compile(GROUP_CHARS + "+")).withDefaultSeparator(".").build();
private static final String MANAGED = "managed";
- private static final Context MANAGED_CONTENT_CONTEXT = GenericContext.builder()
+ private static final Context MANAGED_CONTENT_CONTEXT = GenericContext.builder().named("ManagedContent")
.requiredComponent(MANAGED, ManagedContent.class, Pattern.compile(MANAGED))
.requiredComponent("content", Content.class, Pattern.compile(".+"))
+ .withDefaultSeparator(":")
.build();
private ExoContainer container;
@@ -434,6 +435,7 @@
}
else
{
+ // todo: finish support of other types
throw new UnsupportedOperationException("Id<" + type.getSimpleName() + "> not yet supported");
}
@@ -442,6 +444,7 @@
public <T extends Site> T getSite(Id<T> siteId, Type<T> type)
{
+ // todo
return null; //To change body of implemented methods use File | Settings | File Templates.
}
Modified: portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/portal/NavigationImpl.java
===================================================================
--- portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/portal/NavigationImpl.java 2011-08-04 21:30:17 UTC (rev 6994)
+++ portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/portal/NavigationImpl.java 2011-08-04 21:31:41 UTC (rev 6995)
@@ -70,7 +70,7 @@
private String displayName;
private ResourceBundle bundle;
- private final static Context CONTEXT = GenericContext.builder().requiredComponent("navigation", Navigation.class, Pattern.compile("[a-z0-9]+")).build();
+ private final static Context NAVIGATION_CONTEXT = GenericContext.builder().named("Navigation").requiredComponent("navigation", Navigation.class, Pattern.compile("[a-z0-9]+")).build();
public NavigationImpl(Id<Site> siteId, NodeContext<NavigationImpl> context, GateInImpl gateIn)
{
@@ -272,7 +272,7 @@
{
if (id == null)
{
- id = CONTEXT.create(Navigation.class, context.getId());
+ id = NAVIGATION_CONTEXT.create(Navigation.class, context.getId());
}
return id;
13 years, 4 months
gatein SVN: r6994 - in portal/branches/api/packaging: tomcat/pkg and 1 other directory.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-08-04 17:30:17 -0400 (Thu, 04 Aug 2011)
New Revision: 6994
Modified:
portal/branches/api/packaging/jetty/pkg/pom.xml
portal/branches/api/packaging/tomcat/pkg/pom.xml
Log:
- Added GateIn API dependencies to jetty and tomcat packaging.
Modified: portal/branches/api/packaging/jetty/pkg/pom.xml
===================================================================
--- portal/branches/api/packaging/jetty/pkg/pom.xml 2011-08-04 14:00:58 UTC (rev 6993)
+++ portal/branches/api/packaging/jetty/pkg/pom.xml 2011-08-04 21:30:17 UTC (rev 6994)
@@ -342,6 +342,20 @@
<artifactId>pc-bridge</artifactId>
</dependency>
+ <!-- GateIn API -->
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>java-api-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>gatein-java-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>generic-id-impl</artifactId>
+ </dependency>
+
<!-- GateIn MOP -->
<dependency>
<groupId>org.gatein.mop</groupId>
Modified: portal/branches/api/packaging/tomcat/pkg/pom.xml
===================================================================
--- portal/branches/api/packaging/tomcat/pkg/pom.xml 2011-08-04 14:00:58 UTC (rev 6993)
+++ portal/branches/api/packaging/tomcat/pkg/pom.xml 2011-08-04 21:30:17 UTC (rev 6994)
@@ -334,6 +334,20 @@
<artifactId>pc-bridge</artifactId>
</dependency>
+ <!-- GateIn API -->
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>java-api-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>gatein-java-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.gatein.api</groupId>
+ <artifactId>generic-id-impl</artifactId>
+ </dependency>
+
<!-- GateIn MOP -->
<dependency>
<groupId>org.gatein.mop</groupId>
13 years, 4 months
gatein SVN: r6993 - epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-component/src/main/java/org/gatein/integration/wsrp/structure.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-08-04 10:00:58 -0400 (Thu, 04 Aug 2011)
New Revision: 6993
Modified:
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-component/src/main/java/org/gatein/integration/wsrp/structure/MOPConsumerStructureProvider.java
Log:
JBEPP-1036 Unknown error when edit dashboard with more than 2 gadgets
Modified: epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-component/src/main/java/org/gatein/integration/wsrp/structure/MOPConsumerStructureProvider.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-component/src/main/java/org/gatein/integration/wsrp/structure/MOPConsumerStructureProvider.java 2011-08-04 13:50:24 UTC (rev 6992)
+++ epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-component/src/main/java/org/gatein/integration/wsrp/structure/MOPConsumerStructureProvider.java 2011-08-04 14:00:58 UTC (rev 6993)
@@ -272,6 +272,9 @@
public void addWindow(String windowName, String uuid)
{
+
+ if(windowName==null) windowName=uuid;
+
// add suffix in case we have several windows with the same name in the page
if (childrenWindows.containsKey(windowName))
{
13 years, 4 months
gatein SVN: r6992 - epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/templates/groovy/webui/component.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-08-04 09:50:24 -0400 (Thu, 04 Aug 2011)
New Revision: 6992
Modified:
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl
Log:
JBEPP-992 Links on the first page to login don't work
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl 2011-08-03 19:36:59 UTC (rev 6991)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl 2011-08-04 13:50:24 UTC (rev 6992)
@@ -17,7 +17,7 @@
<div class="MiddleAccountsContainer">
<div class="InstructionTitle"><%=_ctx.appRes("UIHomePagePortlet.Label.Title")%></div>
<div class="AccountsContainerDeco">
- <div class="AccountBlock AdministratorUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=root&password=gtn'">
+ <div class="AccountBlock AdministratorUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=root&password=gtn&initialURI=<%=initialURI%>'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=root&password=gtn&initialURI=<%=initialURI%>"><%=_ctx.appRes("UIHomePagePortlet.Label.Administrator")%></a></div>
<div class="Username">
@@ -31,7 +31,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock ManagerUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=john&password=gtn'">
+ <div class="AccountBlock ManagerUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=john&password=gtn&initialURI=<%=initialURI%>'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=john&password=gtn&initialURI=<%=initialURI%>"><%=_ctx.appRes("UIHomePagePortlet.Label.Manager")%></a></div>
<div class="Username">
@@ -45,7 +45,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock NormalUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=mary&password=gtn'">
+ <div class="AccountBlock NormalUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=mary&password=gtn&initialURI=<%=initialURI%>'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=mary&password=gtn&initialURI=<%=initialURI%>"><%=_ctx.appRes("UIHomePagePortlet.Label.User")%></a></div>
<div class="Username">
@@ -59,7 +59,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock DemoUser" style="margin-right: 0px;" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=demo&password=gtn'">
+ <div class="AccountBlock DemoUser" style="margin-right: 0px;" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=demo&password=gtn&initialURI=<%=initialURI%>'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=demo&password=gtn&initialURI=<%=initialURI%>"><%=_ctx.appRes("UIHomePagePortlet.Label.Demo")%></a></div>
<div class="Username">
13 years, 4 months
gatein SVN: r6991 - in portal/branches/api: component/application-registry/src/main/java/org/exoplatform/application/registry/impl and 1 other directories.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-08-03 15:36:59 -0400 (Wed, 03 Aug 2011)
New Revision: 6991
Modified:
portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/ApplicationRegistryService.java
portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/impl/ApplicationRegistryServiceImpl.java
portal/branches/api/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIAddApplicationForm.java
Log:
- Added ApplicationRegistryService.createApplicationFrom method so that we can avoid some code duplication.
Modified: portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/ApplicationRegistryService.java
===================================================================
--- portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/ApplicationRegistryService.java 2011-08-03 17:58:06 UTC (rev 6990)
+++ portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/ApplicationRegistryService.java 2011-08-03 19:36:59 UTC (rev 6991)
@@ -160,4 +160,6 @@
public void importExoGadgets() throws Exception;
void createOrReplaceContentIn(String categoryName, String definitionName, ContentType<?> contentType, String contentId, String displayName, String description, List<String> permissions);
+
+ Application createApplicationFrom(org.gatein.pc.api.Portlet portlet);
}
\ No newline at end of file
Modified: portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/impl/ApplicationRegistryServiceImpl.java
===================================================================
--- portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/impl/ApplicationRegistryServiceImpl.java 2011-08-03 17:58:06 UTC (rev 6990)
+++ portal/branches/api/component/application-registry/src/main/java/org/exoplatform/application/registry/impl/ApplicationRegistryServiceImpl.java 2011-08-03 19:36:59 UTC (rev 6991)
@@ -408,13 +408,24 @@
ContentDefinition content = definition.getContentMap().get(definitionName);
if (content == null)
{
- content = definition.createContent(definitionName, contentType, contentId);
- content.setDisplayName(displayName);
- content.setDescription(description);
- content.setAccessPermissions(permissions);
+ content = createContent(definitionName, contentType, contentId, displayName, description, permissions, definition);
}
}
+ private ContentDefinition createContent(String definitionName, ContentType<?> contentType, String contentId, String displayName, String description, List<String> permissions, CategoryDefinition category)
+ {
+ ContentDefinition content = category.createContent(definitionName, contentType, contentId);
+ content.setDisplayName(displayName);
+ content.setDescription(description);
+ content.setAccessPermissions(permissions);
+ return content;
+ }
+
+ private ContentDefinition createContentFrom(Application application, CategoryDefinition category)
+ {
+ return createContent(application.getApplicationName(), application.getType().getContentType(), application.getContentId(), application.getDisplayName(), application.getDescription(), application.getAccessPermissions(), category);
+ }
+
private CategoryDefinition getOrCreateCategoryDefinition(String categoryName, List<String> permissions)
{
ContentRegistry registry = getContentRegistry();
@@ -431,8 +442,6 @@
public void importAllPortlets() throws Exception
{
- ContentRegistry registry = getContentRegistry();
-
//
log.info("About to import portlets in application registry");
@@ -446,21 +455,17 @@
for (org.gatein.pc.api.Portlet portlet : portlets)
{
PortletInfo info = portlet.getInfo();
+
+ final Application application = createApplicationFrom(portlet);
+
String portletApplicationName = info.getApplicationName();
- String portletName = portlet.getContext().getId();
+ final String portletName = application.getApplicationName();
- // Need to sanitize portlet and application names in case they contain characters that would
- // cause an improper Application name
- portletApplicationName = portletApplicationName.replace('/', '_');
- portletName = portletName.replace('/', '_');
-
MetaInfo metaInfo = portlet.getInfo().getMeta();
LocalizedString keywordsLS = metaInfo.getMetaValue(MetaInfo.KEYWORDS);
- //
+ // Process keywords
Set<String> categoryNames = new HashSet<String>();
-
- // Process keywords
if (keywordsLS != null)
{
String keywords = keywordsLS.getDefaultString();
@@ -517,30 +522,12 @@
ContentDefinition app = category.getContentMap().get(portletName);
if (app == null)
{
- LocalizedString descriptionLS = metaInfo.getMetaValue(MetaInfo.DESCRIPTION);
- LocalizedString displayNameLS = metaInfo.getMetaValue(MetaInfo.DISPLAY_NAME);
- String displayName = getLocalizedStringValue(displayNameLS, portletName);
-
- ContentType<?> contentType;
- String contentId;
- if (remote)
- {
- contentType = WSRP.CONTENT_TYPE;
- contentId = portlet.getContext().getId();
- displayName += REMOTE_DISPLAY_NAME_SUFFIX; // add remote to display name to make it more obvious that the portlet is remote
- }
- else
- {
- contentType = Portlet.CONTENT_TYPE;
- contentId = info.getApplicationName() + "/" + info.getName();
- }
-
// Check if the portlet has already existed in this category
List<Application> applications = load(category).getApplications();
boolean isExist = false;
- for (Application application : applications)
+ for (Application categoryApp : applications)
{
- if (application.getContentId().equals(contentId))
+ if (categoryApp.getContentId().equals(application.getContentId()))
{
isExist = true;
break;
@@ -549,16 +536,69 @@
if (!isExist)
{
- app = category.createContent(portletName, contentType, contentId);
- app.setDisplayName(displayName);
- app.setDescription(getLocalizedStringValue(descriptionLS, portletName));
- app.setAccessPermissions(permissions);
+ app = createContentFrom(application, category);
}
}
}
}
}
+ public Application createApplicationFrom(org.gatein.pc.api.Portlet portlet)
+ {
+ PortletInfo info = portlet.getInfo();
+
+ String portletName = portlet.getContext().getId();
+
+ portletName = sanitize(portletName);
+
+ MetaInfo metaInfo = portlet.getInfo().getMeta();
+
+ ArrayList<String> permissions = new ArrayList<String>();
+ permissions.add(UserACL.EVERYONE);
+
+ // Additionally categorise the portlet as remote
+ boolean remote = portlet.isRemote();
+
+ LocalizedString descriptionLS = metaInfo.getMetaValue(MetaInfo.DESCRIPTION);
+ LocalizedString displayNameLS = metaInfo.getMetaValue(MetaInfo.DISPLAY_NAME);
+ String displayName = getLocalizedStringValue(displayNameLS, portletName);
+
+ ApplicationType appType;
+ String contentId;
+ if (remote)
+ {
+ appType = ApplicationType.WSRP_PORTLET;
+ contentId = portlet.getContext().getId();
+ displayName += REMOTE_DISPLAY_NAME_SUFFIX; // add remote to display name to make it more obvious that the portlet is remote
+ }
+ else
+ {
+ appType = ApplicationType.PORTLET;
+ contentId = info.getApplicationName() + "/" + info.getName();
+ }
+
+ Application app = new Application();
+ app.setApplicationName(portletName);
+ app.setType(appType);
+ app.setDisplayName(displayName);
+ app.setDescription(getLocalizedStringValue(descriptionLS, portletName));
+ app.setAccessPermissions(permissions);
+ app.setContentId(contentId);
+
+ return app;
+ }
+
+ /**
+ * Sanitizes the specified name in case it contains characters that would cause improper Application name.
+ *
+ * @param name
+ * @return
+ */
+ private String sanitize(String name)
+ {
+ return name.replace('/', '_');
+ }
+
private boolean isApplicationType(Application app, ApplicationType<?>... appTypes)
{
if (appTypes == null || appTypes.length == 0)
Modified: portal/branches/api/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIAddApplicationForm.java
===================================================================
--- portal/branches/api/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIAddApplicationForm.java 2011-08-03 17:58:06 UTC (rev 6990)
+++ portal/branches/api/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIAddApplicationForm.java 2011-08-03 19:36:59 UTC (rev 6991)
@@ -185,41 +185,17 @@
{
ExoContainer manager = ExoContainerContext.getCurrentContainer();
+ ApplicationRegistryService appRegistry =
+ (ApplicationRegistryService)manager.getComponentInstance(ApplicationRegistryService.class);
+
FederatingPortletInvoker portletInvoker =
(FederatingPortletInvoker)manager.getComponentInstance(FederatingPortletInvoker.class);
Set<Portlet> portlets = remote ? portletInvoker.getRemotePortlets() : portletInvoker.getLocalPortlets();
+
List<Application> applications = new ArrayList<Application>(portlets.size());
for (Portlet portlet : portlets)
{
- PortletInfo info = portlet.getInfo();
-
- LocalizedString descriptionLS = info.getMeta().getMetaValue(MetaInfo.DESCRIPTION);
- LocalizedString displayNameLS = info.getMeta().getMetaValue(MetaInfo.DISPLAY_NAME);
-
- String portletName = info.getName();
- Application app = new Application();
- app.setApplicationName(portletName);
- // app.setApplicationGroup(info.getApplicationName());
- ApplicationType appType;
- String contentId;
- String displayName = Util.getLocalizedStringValue(displayNameLS, portletName);
- if (remote)
- {
- appType = ApplicationType.WSRP_PORTLET;
- contentId = portlet.getContext().getId();
- displayName += ApplicationRegistryService.REMOTE_DISPLAY_NAME_SUFFIX; // add remote to display name to make it more obvious that the portlet is remote
- }
- else
- {
- appType = ApplicationType.PORTLET;
- contentId = info.getApplicationName() + "/" + info.getName();
- }
- app.setType(appType);
- app.setDisplayName(displayName);
- app.setDescription(Util.getLocalizedStringValue(descriptionLS, portletName));
- app.setAccessPermissions(new ArrayList<String>());
- app.setContentId(contentId);
- applications.add(app);
+ applications.add(appRegistry.createApplicationFrom(portlet));
}
return applications;
13 years, 4 months
gatein SVN: r6990 - epp/portal/tags/EPP_5_1_1_GA/component/common/src/main/java/conf/jcr/jbosscache/local.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-08-03 13:58:06 -0400 (Wed, 03 Aug 2011)
New Revision: 6990
Added:
epp/portal/tags/EPP_5_1_1_GA/component/common/src/main/java/conf/jcr/jbosscache/local/config.xml
Log:
add config.xml file
Added: epp/portal/tags/EPP_5_1_1_GA/component/common/src/main/java/conf/jcr/jbosscache/local/config.xml
===================================================================
--- epp/portal/tags/EPP_5_1_1_GA/component/common/src/main/java/conf/jcr/jbosscache/local/config.xml (rev 0)
+++ epp/portal/tags/EPP_5_1_1_GA/component/common/src/main/java/conf/jcr/jbosscache/local/config.xml 2011-08-03 17:58:06 UTC (rev 6990)
@@ -0,0 +1,37 @@
+<!--
+ ~ Copyright (C) 2009 eXo Platform SAS.
+ ~
+ ~ This is free software; you can redistribute it and/or modify it
+ ~ under the terms of the GNU Lesser General Public License as
+ ~ published by the Free Software Foundation; either version 2.1 of
+ ~ the License, or (at your option) any later version.
+ ~
+ ~ This software is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public
+ ~ License along with this software; if not, write to the Free
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+
+ <locking useLockStriping="false" concurrencyLevel="64" lockParentForChildInsertRemove="false" lockAcquisitionTimeout="20000"/>
+
+ <!-- Configure the TransactionManager -->
+ <transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup" />
+
+ <!-- Enable batching -->
+ <invocationBatching enabled="true" />
+
+ <!-- Eviction configuration -->
+ <eviction wakeUpInterval="5000">
+ <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy" eventQueueSize="1000000">
+ <property name="maxNodes" value="5000" />
+ <property name="minTimeToLive" value="20000" />
+ </default>
+ </eviction>
+
+</jbosscache>
13 years, 4 months
gatein SVN: r6989 - portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/content.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-08-03 11:16:41 -0400 (Wed, 03 Aug 2011)
New Revision: 6989
Modified:
portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/content/CategoryImpl.java
Log:
- Save category when description is updated.
Modified: portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/content/CategoryImpl.java
===================================================================
--- portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/content/CategoryImpl.java 2011-08-03 04:33:23 UTC (rev 6988)
+++ portal/branches/api/component/api-impl/src/main/java/org/gatein/portal/api/impl/content/CategoryImpl.java 2011-08-03 15:16:41 UTC (rev 6989)
@@ -82,7 +82,7 @@
Class<Content> contentClass = getContentClassFor(type);
if (Gadget.class.isAssignableFrom(contentClass))
{
- //TODO: for a gadget, it should probably be using application.getID instead of getContentId
+ //TODO: for a gadget, it should probably be using application.getID instead of getContentId
return gateIn.gadgetId(application.getContentId());
}
else if (org.gatein.api.content.WSRP.class.isAssignableFrom(contentClass))
@@ -205,6 +205,19 @@
public void setDescription(String description)
{
category.setDescription(description);
+ try
+ {
+ gateIn.begin();
+ gateIn.getRegistryService().save(category);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ finally
+ {
+ gateIn.end();
+ }
}
public void removeContent(String managedContentName)
13 years, 4 months
gatein SVN: r6988 - portal/trunk/component/common/src/main/java/conf.
by do-not-reply@jboss.org
Author: kien_nguyen
Date: 2011-08-03 00:33:23 -0400 (Wed, 03 Aug 2011)
New Revision: 6988
Modified:
portal/trunk/component/common/src/main/java/conf/configuration-jetty.properties
Log:
GTNPORTAL-1972 Gadgets dont work under loadbalancing (add path configuration for gadget keys in jetty)
Modified: portal/trunk/component/common/src/main/java/conf/configuration-jetty.properties
===================================================================
--- portal/trunk/component/common/src/main/java/conf/configuration-jetty.properties 2011-08-03 03:51:37 UTC (rev 6987)
+++ portal/trunk/component/common/src/main/java/conf/configuration-jetty.properties 2011-08-03 04:33:23 UTC (rev 6988)
@@ -67,3 +67,7 @@
# Web
gatein.web.compressor.js.level=simple
+
+# Key files for gadget
+gatein.gadgets.securityTokenKeyFile=${gatein.conf.dir}/gadgets/key.txt
+gatein.gadgets.signingKeyFile=${gatein.conf.dir}/gadgets/oauthkey.pem
13 years, 4 months
gatein SVN: r6987 - in portal/trunk: component/common/src/main/java/conf and 16 other directories.
by do-not-reply@jboss.org
Author: kien_nguyen
Date: 2011-08-02 23:51:37 -0400 (Tue, 02 Aug 2011)
New Revision: 6987
Added:
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem
Removed:
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/exokey.pem
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/oauthkey.pem
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/exokey.pem
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/oauthkey.pem
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/exokey.pem
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/oauthkey.pem
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/exokey.pem
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/oauthkey.pem
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem
Modified:
portal/trunk/
portal/trunk/component/common/src/main/java/conf/configuration-jboss.properties
portal/trunk/component/common/src/main/java/conf/configuration-tomcat.properties
portal/trunk/docs/reference-guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java
portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoDefaultSecurityTokenGenerator.java
portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoOAuthModule.java
portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/webui/UIDashboard.js
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIApplicationList.java
Log:
merge branch branch-GTNPORTAL-1963 of portal sprint 57 into trunk
Property changes on: portal/trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_Branch:6841
/portal/branches/branch-GTNPORTAL-1790:5864-5919
/portal/branches/branch-GTNPORTAL-1822:5938-5991
/portal/branches/branch-GTNPORTAL-1832:5993-6105
/portal/branches/branch-GTNPORTAL-1872:6327-6594
/portal/branches/branch-GTNPORTAL-1921:6597-6803
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/branches/wsrp-extraction:5828-6031
+ /epp/portal/branches/EPP_5_1_Branch:6841
/portal/branches/branch-GTNPORTAL-1790:5864-5919
/portal/branches/branch-GTNPORTAL-1822:5938-5991
/portal/branches/branch-GTNPORTAL-1832:5993-6105
/portal/branches/branch-GTNPORTAL-1872:6327-6594
/portal/branches/branch-GTNPORTAL-1921:6597-6803
/portal/branches/branch-GTNPORTAL-1963:6902-6986
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/branches/wsrp-extraction:5828-6031
Modified: portal/trunk/component/common/src/main/java/conf/configuration-jboss.properties
===================================================================
--- portal/trunk/component/common/src/main/java/conf/configuration-jboss.properties 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/component/common/src/main/java/conf/configuration-jboss.properties 2011-08-03 03:51:37 UTC (rev 6987)
@@ -62,5 +62,6 @@
# Global portlet.xml
gatein.portlet.config=${gatein.conf.dir}/portlet.xml
-# Web
-gatein.web.compressor.js.level=simple
\ No newline at end of file
+# key files for gadget
+gatein.gadgets.securityTokenKeyFile=${gatein.conf.dir}/gadgets/key.txt
+gatein.gadgets.signingKeyFile=${gatein.conf.dir}/gadgets/oauthkey.pem
\ No newline at end of file
Modified: portal/trunk/component/common/src/main/java/conf/configuration-tomcat.properties
===================================================================
--- portal/trunk/component/common/src/main/java/conf/configuration-tomcat.properties 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/component/common/src/main/java/conf/configuration-tomcat.properties 2011-08-03 03:51:37 UTC (rev 6987)
@@ -65,5 +65,6 @@
# Global portlet.xml
gatein.portlet.config=${gatein.conf.dir}/portlet.xml
-# Web
-gatein.web.compressor.js.level=simple
\ No newline at end of file
+# Key files for gadget
+gatein.gadgets.securityTokenKeyFile=${gatein.conf.dir}/gadgets/key.txt
+gatein.gadgets.signingKeyFile=${gatein.conf.dir}/gadgets/oauthkey.pem
\ No newline at end of file
Modified: portal/trunk/docs/reference-guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/docs/reference-guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2011-08-03 03:51:37 UTC (rev 6987)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Portal_Navigation_Configuration-Overview">
<title>Overview</title>
<para>
- There are three types of navigation available to portal users:
+ There are three navigation types available to portal users:
</para>
<itemizedlist>
<listitem>
@@ -28,134 +28,303 @@
</listitem>
</itemizedlist>
<para>
- These navigations are configured using standard XML syntax in the file; "<filename>02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename>".
+ These navigations are configured using the standard XML syntax in the file; "<filename>02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename>".
</para>
-<programlisting role="XML"><component>
- <key>org.exoplatform.portal.config.UserPortalConfigService</key>
- <type>org.exoplatform.portal.config.UserPortalConfigService</type>
- <component-plugins>
- <component-plugin>
- <name>new.portal.config.user.listener</name>
- <set-method>initListener</set-method>
- <type>org.exoplatform.portal.config.NewPortalConfigListener</type>
- <description>this listener init the portal configuration</description>
- <init-params>
- <value-param>
- <name>default.portal</name>
- <description>The default portal for checking db is empty or not</description>
- <value>classic</value>
- </value-param>
- <object-param>
- <name>portal.configuration</name>
- <description>description</description>
- <object type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
- <value><string>classic</string></value>
- <value><string>webos</string></value>
- </collection>
- </field>
- <field name="ownerType"><string>portal</string></field>
- <field name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- <object-param>
- <name>group.configuration</name>
- <description>description</description>
- <object type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
- <value><string>platform/administrators</string></value>
- <value><string>platform/users</string></value>
- <value><string>platform/guests</string></value>
- <value><string>organization/management/executive-board</string></value>
- </collection>
- </field>
- <field name="ownerType"><string>group</string></field>
- <field name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- <object-param>
- <name>user.configuration</name>
- <description>description</description>
- <object type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
- <value><string>root</string></value>
- <value><string>john</string></value>
- <value><string>mary</string></value>
- <value><string>demo</string></value>
- </collection>
- </field>
- <field name="ownerType"><string>user</string></field>
- <field name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- </init-params>
- </component-plugin>
-</component-plugins>
+<programlisting role="XML"><![CDATA[<component>
+ <key>org.exoplatform.portal.config.UserPortalConfigService</key>
+ <type>org.exoplatform.portal.config.UserPortalConfigService</type>
+ <component-plugins>
+ <component-plugin>
+ <name>new.portal.config.user.listener</name>
+ <set-method>initListener</set-method>
+ <type>org.exoplatform.portal.config.NewPortalConfigListener
+ </type>
+ <description>this listener init the portal configuration
+ </description>
+ <init-params>
+ <value-param>
+ <name>default.portal</name>
+ <description>The default portal for checking db is empty or not</description>
+ <value>classic</value>
+ </value-param>
+ <value-param>
+ <name>page.templates.location</name>
+ <description>the path to the location that contains Page templates</description>
+ <value>war:/conf/portal/template/pages</value>
+ </value-param>
+ <value-param>
+ <name>override</name>
+ <description>The flag parameter to decide if portal metadata is overriden on restarting server
+ </description>
+ <value>false</value>
+ </value-param>
+ <object-param>
+ <name>site.templates.location</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.SiteConfigTemplates">
+ <field name="location">
+ <string>war:/conf/portal</string>
+ </field>
+ <field name="portalTemplates">
+ <collection type="java.util.HashSet">
+ <value><string>basic</string></value>
+ <value><string>classic</string></value>
+ </collection>
+ </field>
+ <field name="groupTemplates">
+ <collection type="java.util.HashSet">
+ <value><string>group</string></value>
+ </collection>
+ </field>
+ <field name="userTemplates">
+ <collection type="java.util.HashSet">
+ <value><string>user</string></value>
+ </collection>
+ </field>
+ </object>
+ </object-param>
+ <object-param>
+ <name>portal.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>classic</string></value>
+ </collection>
+ </field>
+ <field name="ownerType">
+ <string>portal</string>
+ </field>
+ <field name="templateLocation">
+ <string>war:/conf/portal/</string>
+ </field>
+ <field name="importMode">
+ <string>conserve</string>
+ </field>
+ </object>
+ </object-param>
+ <object-param>
+ <name>group.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>/platform/administrators</string></value>
+ <value><string>/platform/users</string></value>
+ <value><string>/platform/guests</string></value>
+ <value><string>/organization/management/executive-board</string></value>
+ </collection>
+ </field>
+ <field name="ownerType">
+ <string>group</string>
+ </field>
+ <field name="templateLocation">
+ <string>war:/conf/portal</string>
+ </field>
+ <field name="importMode">
+ <string>conserve</string>
+ </field>
+ </object>
+ </object-param>
+ <object-param>
+ <name>user.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>root</string></value>
+ <value><string>john</string></value>
+ <value><string>mary</string></value>
+ <value><string>demo</string></value>
+ <value><string>user</string></value>
+ </collection>
+ </field>
+ <field name="ownerType">
+ <string>user</string>
+ </field>
+ <field name="templateLocation">
+ <string>war:/conf/portal</string>
+ </field>
+ <field name="importMode">
+ <string>conserve</string>
+ </field>
+ </object>
+ </object-param>
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+</component>]]>
</programlisting>
- <para>
- This XML configuration defines where in the portal's war to look for configuration, and what portals, groups, and user specific views
- to include in portal/group/user navigation. Those files will be used to create an initial navigation, the first time the portal is launched.
- That information will then be stored in JCR content repository, and can then be modified, and managed from the portal UI.
- </para>
+<para>
+ This XML configuration defines where in the portal's war to look for configuration, and which portals, groups, and user specific views
+ to include in <literal>portal/group/user</literal> navigation. Those files will be used to create an initial navigation when the portal is launched in the first time.
+ That information will then be stored in the JCR content repository, and can then be modified and managed from the portal UI.
+ </para>
+
+<para>
+Each portal, groups and users navigation is indicated by a configuration paragraph, for example:
+
+<programlistingco>
+ <areaspec>
+ <area coords="5" id="area-Reference_Guide.Portalconf.predifinedOwner" />
+ <area coords="10" id="area-Reference_Guide.Portalconf.ownerType" />
+ <area coords="13" id="area-Reference_Guide.Portalconf.templateLocation" />
+ <area coords="16" id="area-Reference_Guide.Portalconf.importMode" />
+ </areaspec>
+<programlisting language="xml"><![CDATA[<object-param>
+ <name>portal.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>classic</string></value>
+ </collection>
+ </field>
+ <field name="ownerType">
+ <string>portal</string>
+ </field>
+ <field name="templateLocation">
+ <string>war:/conf/portal/</string>
+ </field>
+ <field name="importMode">
+ <string>conserve</string>
+ </field>
+ </object>
+</object-param>]]>
+</programlisting>
+</programlistingco>
+
+<calloutlist>
+ <callout arearefs="area-Reference_Guide.Portalconf.predifinedOwner">
+ <para>
+ <emphasis> predefinedOwner</emphasis> define the navigation owner, portal will look for the configuration files in folder with this name, if there is no suiable folder, a default portal will be created with name is this value.
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide.Portalconf.ownerType">
+ <para>
+ <emphasis> ownerType</emphasis> define the type of portal navigation. It may be a portal, group or user
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide.Portalconf.templateLocation">
+ <para>
+ <emphasis> templateLocation</emphasis> the classpath where contains all portal configuration files
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide.Portalconf.importMode">
+ <para>
+ <emphasis> importMode</emphasis> The mode for navigation import. There are 4 types of import mode:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <emphasis>conserve</emphasis>: Import data when it does not exist, otherwise do nothing.
+ </listitem>
+ <listitem>
+ <emphasis>insert</emphasis>: Import data when it does not exist, otherwise performs a strategy that adds new data only.
+ </listitem>
+ <listitem>
+ <emphasis>merge</emphasis>: Import data when it does not exist, update data when it exists.
+ </listitem>
+ <listitem>
+ <emphasis>rewrite</emphasis>: Overwrite data whatsoever.
+ </listitem>
+ </itemizedlist>
+ </callout>
+</calloutlist>
+ </para>
+
+ <para>
+Base on these parameters, portal will look for the configuration files and create a relevant portal navigation, pages and data import strategy. The portal configuration files will be stored in folders with path look like <literal>{templateLocation}/{ownerType}/{predefinedOwner}</literal>, all navigations are defined in the <literal>navigation.xml</literal> file, pages are defined in pages.xml and portal configuration is defined in <literal>{ownerType}.xml</literal>.
+For example, with the above configuration, prtal will look for all configuration files from <literal>war:/conf/portal/portal/classic path.</literal>
+ </para>
</section>
<section id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation">
<title>Portal Navigation</title>
<para>
- The portal navigation incorporates the pages that can be accessed even when a user is not logged in
- (assuming the applicable permissions allow public access). For example; several portal navigations are used
- when a company owns multiple trademarks, and sets up a web site for each of them.
+ The portal navigation incorporates the pages that can be accessed even when the user is not logged in assuming the applicable permissions allow the public access). For example, several portal navigations are used when a company owns multiple trademarks, and sets up a website for each of them.
</para>
<para>
- The <emphasis role="bold">classic</emphasis> portal is configured by four XML files in <filename>02portal.war:/WEB-INF/conf/portal/portal/classic</filename> directory:
+ The <emphasis role="bold">classic</emphasis> portal is configured by four XML files in the <filename>02portal.war:/WEB-INF/conf/portal/portal/classic</filename> directory:
</para>
<variablelist>
<varlistentry>
<term>portal.xml</term>
<listitem>
<para>
- This file describes the layout and portlets that will be shown on all pages. Usually the layout contains the banner, footer, menu and breadcrumbs portlets.
+ This file describes the layout and portlets that will be shown on all pages. The layout usually contains the banner, footer, menu and breadcrumbs portlets.
&PRODUCT; is extremely configurable as every view element (even the banner and footer) is a portlet.
</para>
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<portal-config>
- <portal-name>classic</portal-name>
- <locale>en</locale>
- <factory-id>office</factory-id>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <creator>root</creator>
-
- <portal-layout>
- <application>
- <instance-id>portal#classic:/web/BannerPortlet/banner</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- <application>
- <instance-id>portal#classic:/web/NavigationPortlet/toolbar</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
-
- <application>
- <instance-id>portal#classic:/web/BreadcumbsPortlet/breadcumbs</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
+<programlisting role="XML"><![CDATA[<portal-config
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_objects_1_0 http://www.gatein.org/xml/ns/gatein_objects_1_0"
+ xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_0">
+ <portal-name>classic</portal-name>
+ <locale>en</locale>
+ <access-permissions>Everyone</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <properties>
+ <entry key="sessionAlive">onDemand</entry>
+ <entry key="showPortletInfo">1</entry>
+ </properties>
+
+ <portal-layout>
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>BannerPortlet</portlet-ref>
+ <preferences>
+ <preference>
+ <name>template</name>
+ <value>par:/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </preferences>
+ </portlet>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </portlet-application>
+
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>NavigationPortlet</portlet-ref>
+ </portlet>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </portlet-application>
+
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>BreadcumbsPortlet</portlet-ref>
+ </portlet>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </portlet-application>
+
+ <page-body> </page-body>
+
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>FooterPortlet</portlet-ref>
+ <preferences>
+ <preference>
+ <name>template</name>
+ <value>par:/groovy/groovy/webui/component/UIFooterPortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </preferences>
+ </portlet>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </portlet-application>
+
+ </portal-layout>
-
- <page-body> </page-body>
-
- <application>
- <instance-id>portal#classic:/web/FooterPortlet/footer</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- </portal-layout>
-
-</portal-config>
+</portal-config>]]>
</programlisting>
<para>
It is also possible to apply a nested container that can also contain portlets. Row, column or tab containers are then responsible for the layout of their child portlets.
@@ -175,51 +344,43 @@
<term>navigation.xml</term>
<listitem>
<para>
- This file defines all the navigation nodes the portal will have. The syntax is simple, using nested node tags. Each node references a page defined in pages.xml file (explained next).
+ This file defines all the navigation nodes of the portal. The syntax is simple using the nested node tags. Each node refers to a page defined in the <literal>pages.xml</literal> file (explained next).
</para>
<para>
- When <literal>#{...}</literal> syntax is used, the enclosed property name serves as a key that is automatically passed to internationalization mechanism
- so the literal property name is replaced by a localized value taken from the associated properties file matching the current locale.
+ If the administrator want to create node labels for each language, they will have to use <literal>xml:lang</literal> attribute in the label tag with value of <literal>xml:lang</literal> is the relevant locale.
</para>
+ <para>
+ Otherwise, if they want the node label is localized by resource bundle files, the <literal>#{...}</literal> syntax will be used, the enclosed property name serves as a key that is automatically passed to the internationalization mechanism. Thus the literal property name is replaced by a localized value taken from the associated properties file matching the current locale.
+ <para>
+ For example:
+ </para>
+ </para>
-<programlisting role="XML">
- <![CDATA[
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<node-navigation
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_objects_1_0 http://www.gatein.org/xml/ns/gatein_objects_1_0"
- xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_0">
- <priority>1</priority>
- <page-nodes>
- <node>
- <uri>home</uri>
- <name>home</name>
- <label>#{portal.classic.home}</label>
- <page-reference>portal::classic::homepage</page-reference>
- </node>
- <node>
- <uri>sitemap</uri>
- <name>sitemap</name>
- <label>#{portal.classic.sitemap}</label>
- <visibility>DISPLAYED</visibility>
- <page-reference>portal::classic::sitemap</page-reference>
- </node>
- </page-nodes>
-</node-navigation>
-
- ]]>
+<programlisting role="XML"><![CDATA[<node-navigation
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_objects_1_2 http://www.gatein.org/xml/ns/gatein_objects_1_2"
+ xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_2">
+ <priority>1</priority>
+ <page-nodes>
+ <node>
+ <name>home</name>
+ <label xml:lang="en">Home</label>
+ <page-reference>portal::classic::homepage</page-reference>
+ </node>
+ <node>
+ <name>sitemap</name>
+ <label xml:lang="en">SiteMap</label>
+ <visibility>DISPLAYED</visibility>
+ <page-reference>portal::classic::sitemap</page-reference>
+ </node>
+ ..........
+ </page-nodes>
+</node-navigation>]]>
</programlisting>
-
<para>
This navigation tree can have multiple views inside portlets (such as the breadcrumbs portlet) that render the current view node, the site map or the menu portlets.
</para>
- <warning>
- <para>
- For top nodes, the <emphasis role="bold">uri</emphasis> and the <emphasis role="bold">name</emphasis> of your navigation nodes must have the <emphasis>same</emphasis> value.
- For other nodes the <emphasis role="bold">uri</emphasis> is a relative path. For example, <emphasis><uri>contentmanagement/fileexplorer</uri></emphasis> where '<literal>contentmanagement</literal> ' is the name of the parent node and '<literal>fileexplorer</literal>' is the name of the node ( <emphasis><name>fileexplorer</name> </emphasis> ).
- </para>
- </warning>
</listitem>
</varlistentry>
<varlistentry>
@@ -230,428 +391,82 @@
Each application can decide whether to render the portlet border, the window state, the icons or portlet's mode.
</para>
-<programlisting role="XML">
- <![CDATA[
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<page-set
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_objects_1_0 http://www.gatein.org/xml/ns/gatein_objects_1_0"
- xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_0">
+<programlisting role="XML"><![CDATA[<page-set
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_objects_1_0 http://www.gatein.org/xml/ns/gatein_objects_1_0"
+ xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_0">
- <page>
- <name>homepage</name>
- <title>Home Page</title>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <portlet-application>
- <portlet>
- <application-ref>web</application-ref>
- <portlet-ref>HomePagePortlet</portlet-ref>
- <preferences>
- <preference>
- <name>template</name>
- <value>system:/templates/groovy/webui/component/UIHomePagePortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </preferences>
- </portlet>
- <title>Home Page portlet</title>
+ <page>
+ <name>homepage</name>
+ <title>Home Page</title>
<access-permissions>Everyone</access-permissions>
- <show-info-bar>false</show-info-bar>
- <show-application-state>false</show-application-state>
- <show-application-mode>false</show-application-mode>
- </portlet-application>
- </page>
- <page>
- <name>sitemap</name>
- <title>Site Map</title>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <portlet-application>
- <portlet>
- <application-ref>web</application-ref>
- <portlet-ref>SiteMapPortlet</portlet-ref>
- </portlet>
- <title>SiteMap</title>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>HomePagePortlet</portlet-ref>
+ <preferences>
+ <preference>
+ <name>template</name>
+ <value>system:/templates/groovy/webui/component/UIHomePagePortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </preferences>
+ </portlet>
+ <title>Home Page portlet</title>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ <show-application-state>false</show-application-state>
+ <show-application-mode>false</show-application-mode>
+ </portlet-application>
+ </page>
+
+ <page>
+ <name>sitemap</name>
+ <title>Site Map</title>
<access-permissions>Everyone</access-permissions>
- <show-info-bar>false</show-info-bar>
- </portlet-application>
- </page>
-</page-set>
-]]>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <portlet-application>
+ <portlet>
+ <application-ref>web</application-ref>
+ <portlet-ref>SiteMapPortlet</portlet-ref>
+ </portlet>
+ <title>SiteMap</title>
+ <access-permissions>Everyone</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </portlet-application>
+ </page>
+ .......
+</page-set>]]>
</programlisting>
</listitem>
</varlistentry>
- <varlistentry>
- <term>portlet-preferences.xml</term>
- <listitem>
- <para>
- Porlet instances can be associated with <literal>portlet-preferences</literal> that override the ones defined in <filename>portlet.xml</filename> of the portlet application <literal>war</literal> (TODO: clarify which file in which war).
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<portlet-preferences-set>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/BannerPortlet/banner</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/NavigationPortlet/toolbar</window-id>
- <preference>
- <name>useAJAX</name>
- <value>true</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/FooterPortlet/footer</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIFooterPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
-
-
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/GroovyPortlet/groovyportlet</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIGroovyPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
-</portlet-preferences-set>
-</programlisting>
- </listitem>
- </varlistentry>
</variablelist>
</section>
- <!-- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal.xml">
- <title>Portal.xml</title>
- <para>
- That file describes the layout and portlets that will be shown for all pages. Usually the layout contains the banner, footer, menu, breadcrumbs portlets. Indeed, in GateIn, every area is a portlet even the banner and footer which makes the platform extremely configurable.
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<portal-config>
- <portal-name>classic</portal-name>
- <locale>en</locale>
- <factory-id>office</factory-id>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <creator>root</creator>
-
- <portal-layout>
- <application>
- <instance-id>portal#classic:/web/BannerPortlet/banner</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- <application>
- <instance-id>portal#classic:/web/NavigationPortlet/toolbar</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
-
- <application>
- <instance-id>portal#classic:/web/BreadcumbsPortlet/breadcumbs</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
-
-
- <page-body> </page-body>
-
- <application>
- <instance-id>portal#classic:/web/FooterPortlet/footer</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- </portal-layout>
-
-</portal-config>
-</programlisting>
- <para>
- Even if not shown in the previous XML file, it is also possible to apply a nested container that can also contain portlets. Containers are then responsible of the layout of their children (row, column or tabs containers exist).
- </para>
- <para>
- Each application references a portlet using the id portal#{portalName}:/{portletWarName}/{portletName}/{uniqueId}
- </para>
- <para>
- In order to define at which location GateIn Portal shall render the current page use the page-body tag.
- </para>
- <para>
- The defined classic portal is accessible to "Everyone" (that means it can be accessed through the URL /portal/public/classic) but only members of the group /platform/administrators can edit it.
- </para>
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Navigation.xml">
- <title>Navigation.xml</title>
- <para>
- This file defines all the navigation nodes the portal will have. The syntax is simple as we get nested node tags. Each node references a page that is defined in the next XML file.
- </para>
- <para>
- If the label #{} is used then it means the i18n mechanism is activated and that the real label to render is taken from an associated properties file for the current locale.
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="UTF-8"?>
-<node-navigation>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <priority>1</priority>
- <page-nodes>
- <node>
- <uri>home</uri>
- <name>home</name>
- <label>#{portal.classic.home}</label>
- <page-reference>portal::classic::homepage</page-reference>
- </node>
- <node>
- <uri>webexplorer</uri>
- <name>webexplorer</name>
- <label>#{portal.classic.webexplorer}</label>
- <page-reference>portal::classic::webexplorer</page-reference>
- </node>
- </page-nodes>
-</node-navigation>
-</programlisting>
- <para>
- This navigation tree can have multiple views inside portlets such as the breadcrumbs that render the current view node, the site map or the menu portlets.
- </para>
- <warning>
- <para>
- For top nodes, the <emphasis role="bold">uri</emphasis> and the <emphasis role="bold">name</emphasis> of your navigation nodes must have the <emphasis role="bold">same</emphasis> value. For the other nodes the uri is composed like <emphasis><uri>contentmanagement/fileexplorer</uri></emphasis> where 'contentmanagement' is the name of the parent node and 'fileexplorer' the name of the node ( <emphasis><name>fileexplorer</name> </emphasis> ).
- </para>
- </warning>
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Pages.xml">
- <title>Pages.xml</title>
- <para>
- This XML file structure is very similar to portal.xml and it can also contain container tags. Each application can decide if it wishes to render the portlet border, the window state icons or the mode.
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<page-set>
- <page>
- <page-id>portal::classic::homepage</page-id>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <name>homepage</name>
- <title>Home Page</title>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <application>
- <instance-id>portal#classic:/web/HomePagePortlet/homepageportlet</instance-id>
- <title>Home Page portlet</title>
- <show-info-bar>false</show-info-bar>
- <show-application-state>false</show-application-state>
- <show-application-mode>false</show-application-mode>
- </application>
- </page>
-
- <page>
- <page-id>portal::classic::webexplorer</page-id>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <name>webexplorer</name>
- <title>Web Explorer</title>
- <access-permissions>*:/platform/users</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
- <application>
- <instance-id>group#platform/users:/web/BrowserPortlet/WebExplorer</instance-id>
- <title>Web Explorer</title>
- <show-info-bar>false</show-info-bar>
- </application>
- </page>
-</page-set>
-</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Portlet_preferences.xml">
- <title>Portlet-preferences.xml</title>
- <para>
- Porlet instances can be associated with portlet-preferences that override the one defined in the usual portlet.xml file of the portlet application WAR.
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<portlet-preferences-set>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/BannerPortlet/banner</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/NavigationPortlet/toolbar</window-id>
- <preference>
- <name>useAJAX</name>
- <value>true</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/FooterPortlet/footer</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIFooterPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
-
-
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <window-id>portal#classic:/web/GroovyPortlet/groovyportlet</window-id>
- <preference>
- <name>template</name>
- <value>par:/groovy/groovy/webui/component/UIGroovyPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
-</portlet-preferences-set>
-</programlisting>
- </section> -->
<section id="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation">
<title>Group Navigation</title>
<para>
- Group navigations are dynamically added to the user navigation at login. This allows users to see in the menu all the pages assigned to any groups they belong to.
+ Group navigations are dynamically added to the user navigation at login. This allows users to see the menu of all pages assigned to any groups they belong to.
</para>
<para>
The group navigation menu is configured by three XML files (<filename>navigation.xml</filename>, <filename>pages.xml</filename> and <filename>portlet-preferences.xml</filename>). The syntax used in these files is the same as those covered in <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation" />.
</para>
<para>
- They are located in <filename>portal.war/WEB-INF/conf/portal/group<replaceable>/group-name-path/</replaceable></filename> directory (For example; <filename>portal.war/WEB-INF/conf/portal/group/platform/administrators/</filename>).
+ They are also located in the <filename>{templateLocation}/{ownerType}/{predefinedOwner}</filename> directory with <literal>ownerType</literal> is <literal>group</literal> and <literal>predefinedOwner</literal> is the path to the group. For example, <filename>portal.war/WEB-INF/conf/portal/group/platform/administrators/</filename>.
</para>
</section>
<section id="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation">
<title>User Navigation</title>
<para>
- User navigation is the set of nodes and pages that are owned by a user. They are part of the user's dashboard.
+ User navigation is the set of nodes and pages that are owned by the user. They are part of the user's dashboard.
</para>
<para>
- Three files configure the user navigation (<filename>navigation.xml</filename>, <filename>pages.xml</filename> and <filename>portlet-preferences.xml</filename>). They are located in the directory "<filename>portal.war/WEB-INF/conf/portal/users/{userName}</filename>".
+ Three files configure the user navigation (<filename>navigation.xml</filename>, <filename>pages.xml</filename> and <filename>portlet-preferences.xml</filename>). They are located in the <filename>{templateLocation}/{ownerType}/{predefinedOwner}</filename> directory with <literal>ownerType</literal> is <literal>user</literal> and <literal>predefinedOwner</literal> is username that want to create the navigation. For example, if administrator want to create navigation for user <literal>root</literal>, he has to locate the configuration files in <filename>portal.war/WEB-INF/conf/portal/user/root </filename>
</para>
- <para>
- This directory also contains a <filename>gadgets.xml</filename> file (formerly called <filename>widgets.xml</filename>). This file defines the gadgets located in the user's workspace.
- </para>
- <para>
- The user's workspace is located at the left hand side of the page and access is restricted to some privileged users, see <xref linkend="sect-Reference_Guide-Predefined_User_Configuration" />
- </para>
-
-<programlisting role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
-<widgets>
- <owner-type>user</owner-type>
- <owner-id>root</owner-id>
-
- <container id="Information">
- <name>Information</name>
- <description>Information's Description</description>
- <application>
- <instance-id>user#root:/GateInWidgetWeb/WelcomeWidget/WelcomeWidget1</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
-
- <application>
- <instance-id>user#root:/GateInWidgetWeb/StickerWidget/StickerWidget</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
-
- <application>
- <instance-id>user#root:/GateInWidgetWeb/InfoWidget/InfoWidget1</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
- </container>
-
- <container id="Calendar">
- <name>Calendar</name>
- <description>Calendar's Description</description>
- <application>
- <instance-id>user#root:/GateInWidgetWeb/CalendarWidget/CalendarWidget</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
- </container>
-
-</widgets>
-</programlisting>
- <!-- <para>
- Note that when you develop a portal, we advise you to use the XML instead of the User Interface as XML will allow you to provide a preconfigured package to your customer. But as each time you start the server the first time, the XML files are stored in the JCR, it will be necessary to remove the database (the jcr leverages a database). During the development phase using tomcat it simply means to delete the directory: exo-tomcat/temp
- </para> -->
</section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Tips">
- <title>Tips</title>
- <section id="sect-Reference_Guide-Tips-Direct_External_Links">
- <title>Direct External Links</title>
- <para>
- If you wish to add a link to a URL outside the portal you first have to define a "page" that will only serve as a navigation placeholder for external redirect - it will not be used for any portlets.
- Then add the URL to the navigation. (TODO: check for correctness)
- </para>
- <variablelist>
- <varlistentry>
- <term>pages.xml</term>
- <listitem>
- <para>
-
-<programlisting><page>
- <owner-type>portal</owner-type>
- <owner-id>website</owner-id>
- <name>documentation</name>
- <title>Documentation</title>
- <access-permissions>Everyone</access-permissions>
- <edit-permission>*:/platform/administrators</edit-permission>
-</page>
-</programlisting>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>navigation.xml</term>
- <listitem>
- <para>
-
-<programlisting><node>
- <uri>http://wiki.exoplatform.com/xwiki/bin/view/Main/WebHome</uri>
- <name>documentation</name>
- <label>#{portal.classic.documentation}</label>
- <page-reference>portal::website::documentation</page-reference>
-</node>
-</programlisting>
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <warning>
- <title>Direct external links were not a design goal</title>
- <para>
- Currently you cannot modify the URL using the portal interface, you must change it in the configuration files or modify the underlying database table.
- </para>
- </warning>
- </section>
-
- </section>
-
</section>
Modified: portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java
===================================================================
--- portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java 2011-08-03 03:51:37 UTC (rev 6987)
@@ -28,8 +28,9 @@
import org.apache.shindig.auth.BlobCrypterSecurityTokenDecoder;
import org.apache.shindig.config.ContainerConfigException;
import org.apache.shindig.expressions.Expressions;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.commons.utils.Safe;
-import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
+import org.exoplatform.container.RootContainer;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -41,19 +42,19 @@
import java.security.SecureRandom;
/**
- * <p>The goal of the container config subclass is to integrate security key file along
+ * <p>The goal of the container config subclass is to integrate security key files along
* with exo configuration.</p>
- *
- * <p>The implementation first determine the most relevant directory for performing the key lookup.
- * It will look for a <i>gadgets</i> directory under the configuration directory returned by the
- * {@link org.exoplatform.container.monitor.jvm.J2EEServerInfo#getExoConfigurationDirectory()}
- * method. If no such valid directory can be found then the implementation use the current execution directory
+ * <p>
+ * The implementation first determine the most relevant locations of key files for performing the lookup.
+ * Ideally it will take ones configured as properties <i>gatein.gadgets.securityTokenKeyFile</i>
+ * and <i>gatein.gadgets.signingKeyFile</i> in the <i>configuration.properties</i>.
+ * If these properties are not configured, then the implementation uses the current execution directory
* (which should be /bin in tomcat and jboss).</p>
*
- * <p>When the lookup directory is determined, the implementation looks for a file named key.txt.
- * If no such file is found, then it will attempt to create it with a base 64 value encoded from
+ * <p>When the lookup file locations are determined, the implementation looks for these key files.
+ * If no such files are found, then it will attempt to create them with a base 64 value encoded from
* a 32 bytes random sequence generated by {@link SecureRandom} seeded by the current time. If the
- * file exist already but is a directory then no acton is done.<p>
+ * file exist already but is a directory then no action is done.<p>
*
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -68,7 +69,8 @@
private Log log = ExoLogger.getLogger(ExoContainerConfig.class);
/** . */
- private static volatile String _keyPath;
+ private static volatile String tokenKey_;
+ private String signingKey_;
@Inject
public ExoContainerConfig(@Named("shindig.containers.default") String s, Expressions expressions)
@@ -76,109 +78,134 @@
{
super(s, expressions);
- //
- J2EEServerInfo info = new J2EEServerInfo();
+ // This ensures RootContainer initialized first
+ // to populate properties in configuration.properties into PropertyManager
+ RootContainer.getInstance();
+
+ initializeTokenKeyFile();
+ initializeSigningKeyFile();
+ }
+
+ private void initializeTokenKeyFile()
+ {
+ String keyPath = PropertyManager.getProperty("gatein.gadgets.securityTokenKeyFile");
+
+ File tokenKeyFile = null;
+ if (keyPath == null)
+ {
+ log.warn("The gadgets token key is not configured. The default key.txt file in /bin will be used");
+ tokenKeyFile = new File("key.txt");
+ }
+ else
+ {
+ tokenKeyFile = new File(keyPath);
+ }
+
+ boolean isCreated = initializeKeyFile(tokenKeyFile);
+ if (isCreated)
+ {
+ setTokenKeyPath(tokenKeyFile.getAbsolutePath());
+ }
+ }
- //
- String confPath = info.getExoConfigurationDirectory();
-
- File keyFile = null;
- if (confPath != null)
+ private void initializeSigningKeyFile()
+ {
+ String signingKey = PropertyManager.getProperty("gatein.gadgets.signingKeyFile");
+
+ File signingKeyFile;
+ if (signingKey == null)
{
- File confDir = new File(confPath);
- if (!confDir.exists())
+ log.warn("The gadgets signing key is not configured. The default oauthkey.pem file in /bin will be used");
+ signingKeyFile = new File("oauthkey.pem");
+ }
+ else
+ {
+ signingKeyFile = new File(signingKey);
+ }
+
+ boolean isCreated = initializeKeyFile(signingKeyFile);
+ if (isCreated)
+ {
+ signingKey_ = signingKeyFile.getAbsolutePath();
+ }
+ }
+
+ private boolean initializeKeyFile(File file)
+ {
+ String keyPath = file.getAbsolutePath();
+ if (file.exists())
+ {
+ if (file.isFile())
{
- log.debug("Exo conf directory (" + confPath + ") does not exist");
+ log.info("Found key file " + keyPath + " for gadgets security");
}
else
{
- if (!confDir.isDirectory())
- {
- log.debug("Exo conf directory (" + confPath + ") is not a directory");
- }
- else
- {
- keyFile = new File(confDir, "gadgets/key.txt");
- }
+ log.error("Found path file " + keyPath + " but it's not a key file");
}
}
-
- if (keyFile == null)
+ else
{
- keyFile = new File("key.txt");
- }
-
- String keyPath = keyFile.getAbsolutePath();
-
- if (!keyFile.exists())
- {
- log.debug("No key file found at path " + keyPath + " generating a new key and saving it");
- File fic = keyFile.getAbsoluteFile();
+ log.debug("No key file found at path " + keyPath + ". it's generating a new key and saving it");
+ File fic = file.getAbsoluteFile();
File parentFolder = fic.getParentFile();
- if (!parentFolder.exists())
- parentFolder.mkdirs();
+ if (!parentFolder.exists()) {
+ if (!parentFolder.mkdirs())
+ {
+ log.error("Coult not create parent folder/s for the key file " + keyPath);
+ return false;
+ }
+ }
String key = generateKey();
Writer out = null;
try
{
- out = new FileWriter(keyFile);
+ out = new FileWriter(file);
out.write(key);
out.write('\n');
- log.info("Generated key file " + keyPath + " for eXo Gadgets");
- setKeyPath(keyPath);
+ log.debug("Generated key file " + keyPath + " for eXo Gadgets");
}
catch (IOException e)
{
- log.error("Coult not create key file " + keyPath, e);
+ log.error("Could not create key file " + keyPath, e);
+ return false;
}
finally
{
Safe.close(out);
}
}
- else if (!keyFile.isFile())
- {
- log.debug("Found key file " + keyPath + " but it's not a file");
- }
- else
- {
- log.info("Found key file " + keyPath + " for gadgets security");
- setKeyPath(keyPath);
- }
+ return true;
}
-
- private void setKeyPath(String keyPath)
+
+ private void setTokenKeyPath(String keyPath)
{
// _keyPath is volatile so no concurrent writes and read are safe
synchronized (ExoContainerConfig.class)
{
- if (_keyPath != null && !_keyPath.equals(keyPath))
+ if (tokenKey_ != null && !tokenKey_.equals(keyPath))
{
- throw new IllegalStateException("There is already a configured key path old=" + _keyPath + " new="
+ throw new IllegalStateException("There is already a configured key path old=" + tokenKey_ + " new="
+ keyPath);
}
- _keyPath = keyPath;
+ tokenKey_ = keyPath;
}
}
@Override
public Object getProperty(String container, String property)
{
- if (property.equals(BlobCrypterSecurityTokenDecoder.SECURITY_TOKEN_KEY_FILE) && _keyPath != null)
+ if (property.equals(BlobCrypterSecurityTokenDecoder.SECURITY_TOKEN_KEY_FILE) && tokenKey_ != null)
{
- return _keyPath;
+ return tokenKey_;
}
+ if (property.equals(ExoOAuthModule.SIGNING_KEY_FILE) && signingKey_ != null)
+ {
+ return signingKey_;
+ }
return super.getProperty(container, property);
}
- // @Override
- // public Object getJson(String container, String parameter) {
- // if (parameter.equals(BlobCrypterSecurityTokenDecoder.SECURITY_TOKEN_KEY_FILE) && _keyPath != null) {
- // return _keyPath;
- // }
- // return super.getJson(container, parameter);
- // }
-
/**
* It's not public as we don't want to expose it to the outter world. The fact that this class
* is instantiated by Guice and the ExoDefaultSecurityTokenGenerator is managed by exo kernel
@@ -186,9 +213,9 @@
*
* @return the key path
*/
- static String getKeyPath()
+ static String getTokenKeyPath()
{
- return _keyPath;
+ return tokenKey_;
}
/**
Modified: portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoDefaultSecurityTokenGenerator.java
===================================================================
--- portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoDefaultSecurityTokenGenerator.java 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoDefaultSecurityTokenGenerator.java 2011-08-03 03:51:37 UTC (rev 6987)
@@ -27,70 +27,23 @@
import org.apache.shindig.common.crypto.BlobCrypter;
import org.apache.shindig.common.crypto.BlobCrypterException;
import org.apache.shindig.common.util.TimeSource;
-import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
import org.exoplatform.web.application.RequestContext;
public class ExoDefaultSecurityTokenGenerator implements SecurityTokenGenerator
{
- private String containerKey;
-
private final TimeSource timeSource;
public ExoDefaultSecurityTokenGenerator() throws Exception
{
- // TODO should be moved to config
- // generateKeys("RSA", 1024);
- this.containerKey = getKeyFilePath();
this.timeSource = new TimeSource();
}
- // private static void generateKeys(String keyAlgorithm, int numBits) {
- // FileOutputStream keyFile = null;
- // try {
- // keyFile = new FileOutputStream("exokey.pem");
- //
- // // RSA private key
- //
- // CertAndKeyGen cakg = new CertAndKeyGen(keyAlgorithm, "SHA1WithRSA");
- // cakg.generate(1024);
- //
- // PrivateKey privateKey = cakg.getPrivateKey();
- //
- // keyFile.write("-----BEGIN RSA PRIVATE KEY-----\n".getBytes());
- // // wrap at 64
- // int wrapIndex = 64;
- // StringBuffer sb = new StringBuffer(new String(Base64.encode(privateKey.getEncoded())));
- // for (int i = wrapIndex; i < sb.length(); i = i + wrapIndex + 1) {
- // sb.insert(i, "\n");
- // }
- // keyFile.write((sb.toString()).getBytes());
- // keyFile.write("\n-----END RSA PRIVATE KEY-----\n".getBytes());
- //
- // X500Name name = new X500Name("One", "Two", "Three", "Four", "Five", "Six");
- //
- // X509Certificate certificate = cakg.getSelfCertificate(name, 2000000);
- // System.out.println("\n CN: " + certificate.getSubjectDN());
- // keyFile.write("-----BEGIN CERTIFICATE-----\n".getBytes());
- // // wrap at 64
- // wrapIndex = 64;
- // sb = new StringBuffer(new String(Base64.encode(certificate.getEncoded())));
- // for (int i = wrapIndex; i < sb.length(); i = i + wrapIndex + 1) {
- // sb.insert(i, "\n");
- // }
- // keyFile.write(sb.toString().getBytes());
- // keyFile.write("\n-----END CERTIFICATE-----".getBytes());
- // } catch (Exception e) {
- // e.printStackTrace();
- // } finally {
- // Safe.close(keyFile);
- // }
- // }
-
protected String createToken(String gadgetURL, String owner, String viewer, Long moduleId, String container)
{
try
{
- BlobCrypterSecurityToken t = new BlobCrypterSecurityToken(getBlobCrypter(this.containerKey), container, null);
+ BlobCrypter blobCrypter = getBlobCrypter();
+ BlobCrypterSecurityToken t = new BlobCrypterSecurityToken(blobCrypter, container, null);
t.setAppUrl(gadgetURL);
t.setModuleId(moduleId);
@@ -102,13 +55,11 @@
}
catch (IOException e)
{
- e.printStackTrace(); // To change body of catch statement use File |
- // Settings | File Templates.
+ e.printStackTrace();
}
catch (BlobCrypterException e)
{
- e.printStackTrace(); // To change body of catch statement use File |
- // Settings | File Templates.
+ e.printStackTrace();
}
return null;
}
@@ -123,8 +74,9 @@
return createToken(gadgetURL, viewer, rUser, moduleId, "default");
}
- private BlobCrypter getBlobCrypter(String fileName) throws IOException
+ protected BlobCrypter getBlobCrypter() throws IOException
{
+ String fileName = getKeyFilePath();
BasicBlobCrypter c = new BasicBlobCrypter(new File(fileName));
c.timeSource = timeSource;
return c;
@@ -133,22 +85,19 @@
/**
* Method returns a path to the file containing the encryption key
*/
- private String getKeyFilePath(){
- J2EEServerInfo info = new J2EEServerInfo();
- String confPath = info.getExoConfigurationDirectory();
- File keyFile = null;
-
- if (confPath != null) {
- File confDir = new File(confPath);
- if (confDir != null && confDir.exists() && confDir.isDirectory()) {
- keyFile = new File(confDir, "gadgets/key.txt");
- }
- }
+ protected String getKeyFilePath()
+ {
+ String keyPath = ExoContainerConfig.getTokenKeyPath();
+ File keyFile = null;
+ if (keyPath != null)
+ {
+ keyFile = new File(keyPath);
+ }
+ else
+ {
+ keyFile = new File("key.txt");
+ }
- if (keyFile == null) {
- keyFile = new File("key.txt");
- }
-
- return keyFile.getAbsolutePath();
+ return keyFile.getAbsolutePath();
}
}
Modified: portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoOAuthModule.java
===================================================================
--- portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoOAuthModule.java 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoOAuthModule.java 2011-08-03 03:51:37 UTC (rev 6987)
@@ -19,6 +19,8 @@
package org.exoplatform.portal.gadget.core;
+import com.google.inject.Singleton;
+
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -28,7 +30,6 @@
import org.apache.shindig.common.crypto.BlobCrypter;
import org.apache.shindig.common.util.ResourceLoader;
import org.apache.shindig.config.ContainerConfig;
-import org.apache.shindig.gadgets.http.HttpFetcher;
import org.apache.shindig.gadgets.oauth.BasicOAuthStore;
import org.apache.shindig.gadgets.oauth.BasicOAuthStoreConsumerKeyAndSecret;
import org.apache.shindig.gadgets.oauth.OAuthFetcherConfig;
@@ -50,18 +51,14 @@
*/
public class ExoOAuthModule extends OAuthModule
{
- private static final String SIGNING_KEY_FILE = "gadgets.signingKeyFile";
+ public static final String SIGNING_KEY_FILE = "gadgets.signingKeyFile";
private static final String SIGNING_KEY_NAME = "gadgets.signingKeyName";
private static final String CALLBACK_URL = "gadgets.signing.global-callback-url";
private static final String OAUTH_CONFIG = "config/oauth.json";
- private static final String OAUTH_SIGNING_KEY_FILE = "shindig.signing.key-file";
- private static final String OAUTH_SIGNING_KEY_NAME = "shindig.signing.key-name";
- private static final String OAUTH_CALLBACK_URL = "shindig.signing.global-callback-url";
-
private static final Logger logger = Logger.getLogger(OAuthModule.class.getName());
@Override
@@ -80,6 +77,7 @@
Boolean.TRUE);
}
+ @Singleton
public static class ExoOAuthStoreProvider implements Provider<OAuthStore>
{
@@ -88,18 +86,13 @@
@Inject
public ExoOAuthStoreProvider(ContainerConfig config)
{
- //super(config.getString(ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_FILE), config.getString(ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_NAME));
-// super(config.getString(ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_FILE), config.getString(
-// ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_NAME), config.getString(ContainerConfig.DEFAULT_CONTAINER,
-// CALLBACK_URL));
-
store = new ExoOAuthStore();
String signingKeyFile = config.getString(ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_FILE);
String signingKeyName = config.getString(ContainerConfig.DEFAULT_CONTAINER, SIGNING_KEY_NAME);
- String defaultCallbackUrl = config.getString(ContainerConfig.DEFAULT_CONTAINER,CALLBACK_URL);
-
loadDefaultKey(signingKeyFile, signingKeyName);
+
+ String defaultCallbackUrl = config.getString(ContainerConfig.DEFAULT_CONTAINER,CALLBACK_URL);
store.setDefaultCallbackUrl(defaultCallbackUrl);
loadConsumers();
}
@@ -128,8 +121,7 @@
" openssl pkcs8 -in testkey.pem -out oauthkey.pem -topk8 -nocrypt -outform PEM\n" +
'\n' +
"Then edit gadgets.properties and add these lines:\n" +
- OAUTH_SIGNING_KEY_FILE + "=<path-to-oauthkey.pem>\n" +
- OAUTH_SIGNING_KEY_NAME + "=mykey\n");
+ SIGNING_KEY_FILE + "=<path-to-oauthkey.pem>\n");
}
}
@@ -146,24 +138,4 @@
return store;
}
}
-
- public static class ExoOAuthRequestProvider extends OAuthRequestProvider
- {
- private final HttpFetcher fetcher;
-
- private final OAuthFetcherConfig config;
-
- @Inject
- public ExoOAuthRequestProvider(HttpFetcher fetcher, OAuthFetcherConfig config)
- {
- super(fetcher, config);
- this.fetcher = fetcher;
- this.config = config;
- }
-
- public OAuthRequest get()
- {
- return new OAuthRequest(config, fetcher);
- }
- }
}
Deleted: portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/exokey.pem
===================================================================
--- portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/exokey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/exokey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,29 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMYzu2ZJb6Mt89RxjYcPb01clMna7PJTm+UneDYELKjG6EZ4Nu
-+v8Di7e2PxpNlW4cCwUiEkiWBrZH8S1caz4CYIAG+VmKXZXBgmNCINgRVzNtj0/E
-4xi5Yz+G1uGCkaB+1mheJWke1rO6SgL6tJ5LmEYCGGu0mj+vxD8W2i4nBwIDAQAB
-AoGAJS1zwiSf9djlFI9nLI+3zCdLG32fO5zI2R7FEIek/pT20WzG0pwjYPC8NRFb
-Zntk8QLsJxtuSqPj6kgreSEkwRR/YGVIo/xIr46vwl/WydMLKJljvu+E7Y4yjYHb
-X4+FDRSL+huOMNNrHgnMy8WnplvtuW5LNV4kD3izU37jxQECQQD15re+8J3C8O6m
-wt8+5Ed6a+1+BIdFggFFpV4oC2AKE11+dnwxD5ZyB77sg6sCbcWbLTXOyp/CCAY8
-bkp9ZbOBAkEA1MgP7ZKUUrtrIIg0VYaTTH24iMWTOsPbgNWg9DlLzmIagHHmmmLC
-O6gFT05bsNPcFv5a25m+jT1yfvjuKLN+hwJBAJHD544/UjWZ3s5p3C6K4bg3PDwk
-cQ+KBjkD0zHHtHGkkxqBIBNxGwyTfOD1GC1DZw0amrfvsw4w9YljE7ML04ECQHrX
-IPLrm3uDvZ3jZCs37RPMxNsZDR1w8ukW67vy1APK+TfMCfB5MV8VajNVrnOQa9BO
-eY+r26lYnyAUgBG5RkMCQHW5qFDYmgJjb38+uwxd53zGy6m+Jd7kdnGms9V4pPd1
-b21WA/5ncxrpFaz5OFPLtv2zrKYVBAj0tros5hs8Fwk=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICGzCCAYSgAwIBAgIJAJ/PJcjrAB25MA0GCSqGSIb3DQEBBAUAMBQxEjAQBgNV
-BAMTCW15dGVzdGtleTAeFw0wOTAxMDgwNzUwMjlaFw0xMDAxMDgwNzUwMjlaMBQx
-EjAQBgNVBAMTCW15dGVzdGtleTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zGM7tmSW+jLfPUcY2HD29NXJTJ2uzyU5vlJ3g2BCyoxuhGeDbvr/A4u3tj8aTZVu
-HAsFIhJIlga2R/EtXGs+AmCABvlZil2VwYJjQiDYEVczbY9PxOMYuWM/htbhgpGg
-ftZoXiVpHtazukoC+rSeS5hGAhhrtJo/r8Q/FtouJwcCAwEAAaN1MHMwHQYDVR0O
-BBYEFB6QdOIZawuedUjT4F+bK9RG8+sMMEQGA1UdIwQ9MDuAFB6QdOIZawuedUjT
-4F+bK9RG8+sMoRikFjAUMRIwEAYDVQQDEwlteXRlc3RrZXmCCQCfzyXI6wAduTAM
-BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAAE/6mmd8/mMyzzFozblp04e
-TonwNrUB7TldXj+0WnYP04u0hNJuFJ/KD29gHdMnYDdOiVdmK/WS6a7Mn+7HVDT7
-wytizzu/Jfvlrr3yMQYCZssvNIbXPTmr+MjLErjkRxYi4quAnkankTNCDxa4mxN3
-WNlNt2SavfSi3d60wd5o
------END CERTIFICATE-----
Deleted: portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/oauthkey.pem
===================================================================
--- portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/bin/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Deleted: portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
===================================================================
--- portal/branches/branch-GTNPORTAL-1963/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Copied: portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem (from rev 6986, portal/branches/branch-GTNPORTAL-1963/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem)
===================================================================
--- portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem (rev 0)
+++ portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
+GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
+LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
+Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
+fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
+ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
+bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
+XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
+hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
+s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
+4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
+6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
+AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
+CPS2uizmGzwXCQ==
+-----END PRIVATE KEY-----
Deleted: portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/exokey.pem
===================================================================
--- portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/exokey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/exokey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,29 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMYzu2ZJb6Mt89RxjYcPb01clMna7PJTm+UneDYELKjG6EZ4Nu
-+v8Di7e2PxpNlW4cCwUiEkiWBrZH8S1caz4CYIAG+VmKXZXBgmNCINgRVzNtj0/E
-4xi5Yz+G1uGCkaB+1mheJWke1rO6SgL6tJ5LmEYCGGu0mj+vxD8W2i4nBwIDAQAB
-AoGAJS1zwiSf9djlFI9nLI+3zCdLG32fO5zI2R7FEIek/pT20WzG0pwjYPC8NRFb
-Zntk8QLsJxtuSqPj6kgreSEkwRR/YGVIo/xIr46vwl/WydMLKJljvu+E7Y4yjYHb
-X4+FDRSL+huOMNNrHgnMy8WnplvtuW5LNV4kD3izU37jxQECQQD15re+8J3C8O6m
-wt8+5Ed6a+1+BIdFggFFpV4oC2AKE11+dnwxD5ZyB77sg6sCbcWbLTXOyp/CCAY8
-bkp9ZbOBAkEA1MgP7ZKUUrtrIIg0VYaTTH24iMWTOsPbgNWg9DlLzmIagHHmmmLC
-O6gFT05bsNPcFv5a25m+jT1yfvjuKLN+hwJBAJHD544/UjWZ3s5p3C6K4bg3PDwk
-cQ+KBjkD0zHHtHGkkxqBIBNxGwyTfOD1GC1DZw0amrfvsw4w9YljE7ML04ECQHrX
-IPLrm3uDvZ3jZCs37RPMxNsZDR1w8ukW67vy1APK+TfMCfB5MV8VajNVrnOQa9BO
-eY+r26lYnyAUgBG5RkMCQHW5qFDYmgJjb38+uwxd53zGy6m+Jd7kdnGms9V4pPd1
-b21WA/5ncxrpFaz5OFPLtv2zrKYVBAj0tros5hs8Fwk=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICGzCCAYSgAwIBAgIJAJ/PJcjrAB25MA0GCSqGSIb3DQEBBAUAMBQxEjAQBgNV
-BAMTCW15dGVzdGtleTAeFw0wOTAxMDgwNzUwMjlaFw0xMDAxMDgwNzUwMjlaMBQx
-EjAQBgNVBAMTCW15dGVzdGtleTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zGM7tmSW+jLfPUcY2HD29NXJTJ2uzyU5vlJ3g2BCyoxuhGeDbvr/A4u3tj8aTZVu
-HAsFIhJIlga2R/EtXGs+AmCABvlZil2VwYJjQiDYEVczbY9PxOMYuWM/htbhgpGg
-ftZoXiVpHtazukoC+rSeS5hGAhhrtJo/r8Q/FtouJwcCAwEAAaN1MHMwHQYDVR0O
-BBYEFB6QdOIZawuedUjT4F+bK9RG8+sMMEQGA1UdIwQ9MDuAFB6QdOIZawuedUjT
-4F+bK9RG8+sMoRikFjAUMRIwEAYDVQQDEwlteXRlc3RrZXmCCQCfzyXI6wAduTAM
-BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAAE/6mmd8/mMyzzFozblp04e
-TonwNrUB7TldXj+0WnYP04u0hNJuFJ/KD29gHdMnYDdOiVdmK/WS6a7Mn+7HVDT7
-wytizzu/Jfvlrr3yMQYCZssvNIbXPTmr+MjLErjkRxYi4quAnkankTNCDxa4mxN3
-WNlNt2SavfSi3d60wd5o
------END CERTIFICATE-----
Deleted: portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/oauthkey.pem
===================================================================
--- portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/bin/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Deleted: portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem
===================================================================
--- portal/branches/branch-GTNPORTAL-1963/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Copied: portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem (from rev 6986, portal/branches/branch-GTNPORTAL-1963/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem)
===================================================================
--- portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem (rev 0)
+++ portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
+GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
+LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
+Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
+fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
+ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
+bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
+XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
+hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
+s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
+4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
+6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
+AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
+CPS2uizmGzwXCQ==
+-----END PRIVATE KEY-----
Deleted: portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/exokey.pem
===================================================================
--- portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/exokey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/exokey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,29 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMYzu2ZJb6Mt89RxjYcPb01clMna7PJTm+UneDYELKjG6EZ4Nu
-+v8Di7e2PxpNlW4cCwUiEkiWBrZH8S1caz4CYIAG+VmKXZXBgmNCINgRVzNtj0/E
-4xi5Yz+G1uGCkaB+1mheJWke1rO6SgL6tJ5LmEYCGGu0mj+vxD8W2i4nBwIDAQAB
-AoGAJS1zwiSf9djlFI9nLI+3zCdLG32fO5zI2R7FEIek/pT20WzG0pwjYPC8NRFb
-Zntk8QLsJxtuSqPj6kgreSEkwRR/YGVIo/xIr46vwl/WydMLKJljvu+E7Y4yjYHb
-X4+FDRSL+huOMNNrHgnMy8WnplvtuW5LNV4kD3izU37jxQECQQD15re+8J3C8O6m
-wt8+5Ed6a+1+BIdFggFFpV4oC2AKE11+dnwxD5ZyB77sg6sCbcWbLTXOyp/CCAY8
-bkp9ZbOBAkEA1MgP7ZKUUrtrIIg0VYaTTH24iMWTOsPbgNWg9DlLzmIagHHmmmLC
-O6gFT05bsNPcFv5a25m+jT1yfvjuKLN+hwJBAJHD544/UjWZ3s5p3C6K4bg3PDwk
-cQ+KBjkD0zHHtHGkkxqBIBNxGwyTfOD1GC1DZw0amrfvsw4w9YljE7ML04ECQHrX
-IPLrm3uDvZ3jZCs37RPMxNsZDR1w8ukW67vy1APK+TfMCfB5MV8VajNVrnOQa9BO
-eY+r26lYnyAUgBG5RkMCQHW5qFDYmgJjb38+uwxd53zGy6m+Jd7kdnGms9V4pPd1
-b21WA/5ncxrpFaz5OFPLtv2zrKYVBAj0tros5hs8Fwk=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICGzCCAYSgAwIBAgIJAJ/PJcjrAB25MA0GCSqGSIb3DQEBBAUAMBQxEjAQBgNV
-BAMTCW15dGVzdGtleTAeFw0wOTAxMDgwNzUwMjlaFw0xMDAxMDgwNzUwMjlaMBQx
-EjAQBgNVBAMTCW15dGVzdGtleTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zGM7tmSW+jLfPUcY2HD29NXJTJ2uzyU5vlJ3g2BCyoxuhGeDbvr/A4u3tj8aTZVu
-HAsFIhJIlga2R/EtXGs+AmCABvlZil2VwYJjQiDYEVczbY9PxOMYuWM/htbhgpGg
-ftZoXiVpHtazukoC+rSeS5hGAhhrtJo/r8Q/FtouJwcCAwEAAaN1MHMwHQYDVR0O
-BBYEFB6QdOIZawuedUjT4F+bK9RG8+sMMEQGA1UdIwQ9MDuAFB6QdOIZawuedUjT
-4F+bK9RG8+sMoRikFjAUMRIwEAYDVQQDEwlteXRlc3RrZXmCCQCfzyXI6wAduTAM
-BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAAE/6mmd8/mMyzzFozblp04e
-TonwNrUB7TldXj+0WnYP04u0hNJuFJ/KD29gHdMnYDdOiVdmK/WS6a7Mn+7HVDT7
-wytizzu/Jfvlrr3yMQYCZssvNIbXPTmr+MjLErjkRxYi4quAnkankTNCDxa4mxN3
-WNlNt2SavfSi3d60wd5o
------END CERTIFICATE-----
Deleted: portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/oauthkey.pem
===================================================================
--- portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/bin/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Deleted: portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem
===================================================================
--- portal/branches/branch-GTNPORTAL-1963/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Copied: portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem (from rev 6986, portal/branches/branch-GTNPORTAL-1963/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem)
===================================================================
--- portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem (rev 0)
+++ portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
+GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
+LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
+Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
+fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
+ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
+bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
+XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
+hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
+s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
+4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
+6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
+AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
+CPS2uizmGzwXCQ==
+-----END PRIVATE KEY-----
Deleted: portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/exokey.pem
===================================================================
--- portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/exokey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/exokey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,29 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMYzu2ZJb6Mt89RxjYcPb01clMna7PJTm+UneDYELKjG6EZ4Nu
-+v8Di7e2PxpNlW4cCwUiEkiWBrZH8S1caz4CYIAG+VmKXZXBgmNCINgRVzNtj0/E
-4xi5Yz+G1uGCkaB+1mheJWke1rO6SgL6tJ5LmEYCGGu0mj+vxD8W2i4nBwIDAQAB
-AoGAJS1zwiSf9djlFI9nLI+3zCdLG32fO5zI2R7FEIek/pT20WzG0pwjYPC8NRFb
-Zntk8QLsJxtuSqPj6kgreSEkwRR/YGVIo/xIr46vwl/WydMLKJljvu+E7Y4yjYHb
-X4+FDRSL+huOMNNrHgnMy8WnplvtuW5LNV4kD3izU37jxQECQQD15re+8J3C8O6m
-wt8+5Ed6a+1+BIdFggFFpV4oC2AKE11+dnwxD5ZyB77sg6sCbcWbLTXOyp/CCAY8
-bkp9ZbOBAkEA1MgP7ZKUUrtrIIg0VYaTTH24iMWTOsPbgNWg9DlLzmIagHHmmmLC
-O6gFT05bsNPcFv5a25m+jT1yfvjuKLN+hwJBAJHD544/UjWZ3s5p3C6K4bg3PDwk
-cQ+KBjkD0zHHtHGkkxqBIBNxGwyTfOD1GC1DZw0amrfvsw4w9YljE7ML04ECQHrX
-IPLrm3uDvZ3jZCs37RPMxNsZDR1w8ukW67vy1APK+TfMCfB5MV8VajNVrnOQa9BO
-eY+r26lYnyAUgBG5RkMCQHW5qFDYmgJjb38+uwxd53zGy6m+Jd7kdnGms9V4pPd1
-b21WA/5ncxrpFaz5OFPLtv2zrKYVBAj0tros5hs8Fwk=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICGzCCAYSgAwIBAgIJAJ/PJcjrAB25MA0GCSqGSIb3DQEBBAUAMBQxEjAQBgNV
-BAMTCW15dGVzdGtleTAeFw0wOTAxMDgwNzUwMjlaFw0xMDAxMDgwNzUwMjlaMBQx
-EjAQBgNVBAMTCW15dGVzdGtleTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zGM7tmSW+jLfPUcY2HD29NXJTJ2uzyU5vlJ3g2BCyoxuhGeDbvr/A4u3tj8aTZVu
-HAsFIhJIlga2R/EtXGs+AmCABvlZil2VwYJjQiDYEVczbY9PxOMYuWM/htbhgpGg
-ftZoXiVpHtazukoC+rSeS5hGAhhrtJo/r8Q/FtouJwcCAwEAAaN1MHMwHQYDVR0O
-BBYEFB6QdOIZawuedUjT4F+bK9RG8+sMMEQGA1UdIwQ9MDuAFB6QdOIZawuedUjT
-4F+bK9RG8+sMoRikFjAUMRIwEAYDVQQDEwlteXRlc3RrZXmCCQCfzyXI6wAduTAM
-BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAAE/6mmd8/mMyzzFozblp04e
-TonwNrUB7TldXj+0WnYP04u0hNJuFJ/KD29gHdMnYDdOiVdmK/WS6a7Mn+7HVDT7
-wytizzu/Jfvlrr3yMQYCZssvNIbXPTmr+MjLErjkRxYi4quAnkankTNCDxa4mxN3
-WNlNt2SavfSi3d60wd5o
------END CERTIFICATE-----
Deleted: portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/oauthkey.pem
===================================================================
--- portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/bin/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Deleted: portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem
===================================================================
--- portal/branches/branch-GTNPORTAL-1963/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
-GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
-LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
-Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
-fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
-ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
-bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
-XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
-hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
-s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
-4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
-6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
-AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
-CPS2uizmGzwXCQ==
------END PRIVATE KEY-----
Copied: portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem (from rev 6986, portal/branches/branch-GTNPORTAL-1963/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem)
===================================================================
--- portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem (rev 0)
+++ portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/gadgets/oauthkey.pem 2011-08-03 03:51:37 UTC (rev 6987)
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMxjO7Zklvoy3z1H
+GNhw9vTVyUydrs8lOb5Sd4NgQsqMboRng276/wOLt7Y/Gk2VbhwLBSISSJYGtkfx
+LVxrPgJggAb5WYpdlcGCY0Ig2BFXM22PT8TjGLljP4bW4YKRoH7WaF4laR7Ws7pK
+Avq0nkuYRgIYa7SaP6/EPxbaLicHAgMBAAECgYAlLXPCJJ/12OUUj2csj7fMJ0sb
+fZ87nMjZHsUQh6T+lPbRbMbSnCNg8Lw1EVtme2TxAuwnG25Ko+PqSCt5ISTBFH9g
+ZUij/Eivjq/CX9bJ0wsomWO+74TtjjKNgdtfj4UNFIv6G44w02seCczLxaemW+25
+bks1XiQPeLNTfuPFAQJBAPXmt77wncLw7qbC3z7kR3pr7X4Eh0WCAUWlXigLYAoT
+XX52fDEPlnIHvuyDqwJtxZstNc7Kn8IIBjxuSn1ls4ECQQDUyA/tkpRSu2sgiDRV
+hpNMfbiIxZM6w9uA1aD0OUvOYhqAceaaYsI7qAVPTluw09wW/lrbmb6NPXJ++O4o
+s36HAkEAkcPnjj9SNZnezmncLorhuDc8PCRxD4oGOQPTMce0caSTGoEgE3EbDJN8
+4PUYLUNnDRqat++zDjD1iWMTswvTgQJAetcg8uube4O9neNkKzftE8zE2xkNHXDy
+6Rbru/LUA8r5N8wJ8HkxXxVqM1Wuc5Br0E55j6vbqVifIBSAEblGQwJAdbmoUNia
+AmNvfz67DF3nfMbLqb4l3uR2caaz1Xik93VvbVYD/mdzGukVrPk4U8u2/bOsphUE
+CPS2uizmGzwXCQ==
+-----END PRIVATE KEY-----
Modified: portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/webui/UIDashboard.js
===================================================================
--- portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/webui/UIDashboard.js 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/webui/UIDashboard.js 2011-08-03 03:51:37 UTC (rev 6987)
@@ -254,9 +254,12 @@
}
};
- UIDashboard.prototype.onLoad = function(windowId, canEdit) {
- var portletWindow = document.getElementById(windowId) ? document.getElementById(windowId) : document.getElementById("UIPortlet-" + windowId);
- if(!portletWindow) return;
+ UIDashboard.prototype.onLoad = function(windowId, canEdit) {
+ var portletWindow = document.getElementById(windowId);
+ if(!portletWindow) {
+ windowId = "UIPortlet-" + windowId;
+ portletWindow = document.getElementById(windowId);
+ }
var DOMUtil = eXo.core.DOMUtil;
var uiDashboard = DOMUtil.findFirstDescendantByClass(portletWindow, "div", "UIDashboard");
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIApplicationList.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIApplicationList.java 2011-08-02 21:52:08 UTC (rev 6986)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIApplicationList.java 2011-08-03 03:51:37 UTC (rev 6987)
@@ -54,51 +54,11 @@
public UIApplicationList() throws Exception
{
- ApplicationRegistryService service = getApplicationComponent(ApplicationRegistryService.class);
- String remoteUser = Util.getPortalRequestContext().getRemoteUser();
- if (remoteUser == null || remoteUser.equals(""))
- return;
- UserACL userACL = Util.getUIPortalApplication().getApplicationComponent(UserACL.class);
-
- PortletComparator portletComparator = new PortletComparator();
- categories = service.getApplicationCategories(remoteUser);
-
- Iterator<ApplicationCategory> cateItr = categories.iterator();
- while (cateItr.hasNext())
- {
- ApplicationCategory cate = cateItr.next();
- List<Application> applications = cate.getApplications();
- boolean hasPermission = false;
- List<String> accessPermission = cate.getAccessPermissions();
- if (accessPermission == null)
- {
- accessPermission = new ArrayList<String>();
- }
- if (accessPermission.size() == 0)
- {
- accessPermission.add(null);
- }
- for (String permssion : accessPermission)
- {
- hasPermission = userACL.hasPermission(permssion);
- if (hasPermission)
- break;
- }
-
- if (!hasPermission || applications.size() < 1)
- cateItr.remove();
- else
- Collections.sort(applications, portletComparator);
- }
- if (categories.size() > 0)
- setSelectedCategory(categories.get(0).getName());
-
- Collections.sort(categories, new PortletCategoryComparator());
}
public Application getApplication(String id) throws Exception
{
- for (ApplicationCategory category : categories)
+ for (ApplicationCategory category : getCategories())
{
List<Application> items = category.getApplications();
for (Application item : items)
@@ -117,7 +77,7 @@
public void setSelectedCategory(String categoryName)
{
- for (ApplicationCategory category : categories)
+ for (ApplicationCategory category : getCategories())
{
if (category.getName().equals(categoryName))
{
@@ -155,22 +115,76 @@
public List<ApplicationCategory> getCategories()
{
- return categories;
+ try
+ {
+ //TODO: Handle concurrent requests associated with current session
+ if (categories == null)
+ {
+ initAllCategories();
+ }
+ return categories;
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
}
- static class PortletCategoryComparator implements Comparator<ApplicationCategory>
+ private void initAllCategories() throws Exception
{
- public int compare(ApplicationCategory cat1, ApplicationCategory cat2)
+ String remoteUser = Util.getPortalRequestContext().getRemoteUser();
+ if (remoteUser == null || remoteUser.equals(""))
+ { return; }
+
+ ApplicationRegistryService service = getApplicationComponent(ApplicationRegistryService.class);
+ UserACL userACL = Util.getUIPortalApplication().getApplicationComponent(UserACL.class);
+
+ final Comparator<Application> appComparator = new Comparator<Application>()
{
- return cat1.getDisplayName().compareToIgnoreCase(cat2.getDisplayName());
+ public int compare(Application p_1, Application p_2)
+ {
+ return p_1.getDisplayName().compareToIgnoreCase(p_2.getDisplayName());
+ }
+ };
+ final Comparator<ApplicationCategory> cateComparator = new Comparator<ApplicationCategory>()
+ {
+ public int compare(ApplicationCategory p_1, ApplicationCategory p_2)
+ {
+ return p_1.getDisplayName().compareToIgnoreCase(p_2.getDisplayName());
+ }
+ };
+
+ List<ApplicationCategory> allCategories = service.getApplicationCategories(remoteUser);
+ categories = new ArrayList<ApplicationCategory>();
+
+ for (ApplicationCategory category : allCategories)
+ {
+ List<Application> apps = category.getApplications();
+ List<String> accessPermission = category.getAccessPermissions();
+ if(accessPermission == null)
+ {
+ continue;
+ }
+
+ accessCheck:
+ for (String p : accessPermission)
+ {
+ if (userACL.hasPermission(p))
+ {
+ if (apps.size() > 0)
+ {
+ Collections.sort(apps, appComparator);
+ }
+ categories.add(category);
+ }
+ break accessCheck;
+ }
}
- }
- static class PortletComparator implements Comparator<Application>
- {
- public int compare(Application p1, Application p2)
+ if (categories.size() > 0)
{
- return p1.getDisplayName().compareToIgnoreCase(p2.getDisplayName());
+ Collections.sort(categories, cateComparator);
+ selectedCategory = categories.get(0);
}
}
13 years, 4 months