You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by og...@apache.org on 2011/04/01 12:53:35 UTC
svn commit: r1087645 - in
/incubator/stanbol/branches/http-endpoint-refactoring:
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/
commons/web/home/src/main/...
Author: ogrisel
Date: Fri Apr 1 10:53:35 2011
New Revision: 1087645
URL: http://svn.apache.org/viewvc?rev=1087645&view=rev
Log:
STANBOL-120: work in progress on dynamic menu
Added:
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/NavigationLink.java
Modified:
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/JerseyEndpoint.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/LinkResource.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/ScriptResource.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/WebFragment.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/BaseStanbolResource.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/HomeWebFragment.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/resource/StanbolRootResource.java
incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/fragment/EnhancerWebFragment.java
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/JerseyEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/JerseyEndpoint.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/JerseyEndpoint.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/JerseyEndpoint.java Fri Apr 1 10:53:35 2011
@@ -2,6 +2,7 @@ package org.apache.stanbol.commons.web.b
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
@@ -77,10 +78,12 @@ public class JerseyEndpoint {
// incrementally contribute fragment resources
List<LinkResource> linkResources = new ArrayList<LinkResource>();
List<ScriptResource> scriptResources = new ArrayList<ScriptResource>();
+ List<NavigationLink> navigationLinks = new ArrayList<NavigationLink>();
for (WebFragment fragment : webFragments) {
log.info("Registering web fragment '{}' into jaxrs application", fragment.getName());
linkResources.addAll(fragment.getLinkResources());
scriptResources.addAll(fragment.getScriptResources());
+ navigationLinks.addAll(fragment.getNavigationLinks());
app.contributeClasses(fragment.getJaxrsResourceClasses());
app.contributeSingletons(fragment.getJaxrsResourceSingletons());
app.contributeTemplateLoader(fragment.getTemplateLoader());
@@ -89,6 +92,9 @@ public class JerseyEndpoint {
new BundleHttpContext(fragment));
registeredAliases.add(resourceAlias);
}
+ Collections.sort(linkResources);
+ Collections.sort(scriptResources);
+ Collections.sort(navigationLinks);
// bind the aggregate JAX-RS application to a dedicated servlet
ServletContainer container = new ServletContainer(app);
@@ -106,6 +112,7 @@ public class JerseyEndpoint {
servletContext.setAttribute(BaseStanbolResource.STATIC_RESOURCES_ROOT_URL, staticUrlRoot);
servletContext.setAttribute(BaseStanbolResource.LINK_RESOURCES, linkResources);
servletContext.setAttribute(BaseStanbolResource.SCRIPT_RESOURCES, scriptResources);
+ servletContext.setAttribute(BaseStanbolResource.NAVIGATION_LINKS, navigationLinks);
log.info("JerseyEndpoint servlet registered at {}", applicationAlias);
}
@@ -146,4 +153,8 @@ public class JerseyEndpoint {
}
}
+ public List<WebFragment> getWebFragments() {
+ return webFragments;
+ }
+
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/LinkResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/LinkResource.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/LinkResource.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/LinkResource.java Fri Apr 1 10:53:35 2011
@@ -4,16 +4,21 @@ package org.apache.stanbol.commons.web.b
* Simple data transfer object for stylesheet (CSS) and fiveicon list to be contributed by WebFragment for
* inclusion to the HTML head of the pages by the NavigationMixin abstract JAX-RS resource.
*/
-public class LinkResource {
+public class LinkResource implements Comparable<LinkResource> {
private final String rel;
+
private final String relativePath;
+
private final WebFragment fragment;
- public LinkResource(String rel, String relativePath, WebFragment fragment) {
+ protected final int order;
+
+ public LinkResource(String rel, String relativePath, WebFragment fragment, int order) {
this.rel = rel;
this.relativePath = relativePath;
this.fragment = fragment;
+ this.order = order;
}
public String getRel() {
@@ -27,4 +32,9 @@ public class LinkResource {
public String getFragmentName() {
return fragment.getName();
}
+
+ @Override
+ public int compareTo(LinkResource o) {
+ return order - o.order;
+ }
}
Added: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/NavigationLink.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/NavigationLink.java?rev=1087645&view=auto
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/NavigationLink.java (added)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/NavigationLink.java Fri Apr 1 10:53:35 2011
@@ -0,0 +1,28 @@
+package org.apache.stanbol.commons.web.base;
+
+/**
+ * Data transfer object to define an entry in the main navigation menu.
+ */
+public class NavigationLink implements Comparable<NavigationLink> {
+
+ public final String label;
+
+ public final String path;
+
+ public final String descriptionTemplate;
+
+ public final int order;
+
+ public NavigationLink(String path, String label, String descriptionTemplate, int order) {
+ this.path = path;
+ this.label = label;
+ this.descriptionTemplate = descriptionTemplate;
+ this.order = order;
+ }
+
+ @Override
+ public int compareTo(NavigationLink other) {
+ return order - other.order;
+ }
+
+}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/ScriptResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/ScriptResource.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/ScriptResource.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/ScriptResource.java Fri Apr 1 10:53:35 2011
@@ -4,16 +4,21 @@ package org.apache.stanbol.commons.web.b
* Simple data transfer object for scripts (typically javascript) to be contributed by WebFragment for
* inclusion to the HTML head of the pages by the NavigationMixin abstract JAX-RS resource.
*/
-public class ScriptResource {
+public class ScriptResource implements Comparable<ScriptResource> {
private final String type;
+
private final String relativePath;
+
private final WebFragment fragment;
+
+ protected final int order;
- public ScriptResource(String type, String relativePath, WebFragment fragment) {
+ public ScriptResource(String type, String relativePath, WebFragment fragment, int order) {
this.type = type;
this.relativePath = relativePath;
this.fragment = fragment;
+ this.order = order;
}
public String getType() {
@@ -28,4 +33,9 @@ public class ScriptResource {
return fragment.getName();
}
+ @Override
+ public int compareTo(ScriptResource o) {
+ return order - o.order;
+ }
+
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/WebFragment.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/WebFragment.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/WebFragment.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/WebFragment.java Fri Apr 1 10:53:35 2011
@@ -67,7 +67,16 @@ public interface WebFragment {
* ${it.staticRootUrl}/${script.fragmentName}/${script.relativePath}
*/
public List<ScriptResource> getScriptResources();
-
+
+ /**
+ * List of link descriptions to contribute to the main navigation menu.
+ */
+ public List<NavigationLink> getNavigationLinks();
+
+ /**
+ * @return the bundle context who contributed this fragment (useful for loading the resources from the
+ * right classloading context)
+ */
public BundleContext getBundleContext();
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/BaseStanbolResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/BaseStanbolResource.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/BaseStanbolResource.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/resource/BaseStanbolResource.java Fri Apr 1 10:53:35 2011
@@ -2,7 +2,6 @@ package org.apache.stanbol.commons.web.b
import java.net.URI;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -11,6 +10,7 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import org.apache.stanbol.commons.web.base.LinkResource;
+import org.apache.stanbol.commons.web.base.NavigationLink;
import org.apache.stanbol.commons.web.base.ScriptResource;
/**
@@ -26,6 +26,8 @@ public class BaseStanbolResource {
public static final String STATIC_RESOURCES_ROOT_URL = "org.apache.stanbol.commons.web.base.resource.static.root";
+ public static final String NAVIGATION_LINKS = "org.apache.stanbol.commons.web.base.navigation.link";
+
public static final String ROOT_URL = "org.apache.stanbol.commons.web.base.root";
@Context
@@ -38,10 +40,21 @@ public class BaseStanbolResource {
return uriInfo.getBaseUri();
}
+ /**
+ * @return the sorted list of navigation links data transfer objects
+ */
+ @SuppressWarnings("unchecked")
+ public List<NavigationLink> getNavigationLinks() {
+ return (List<NavigationLink>) servletContext.getAttribute(NAVIGATION_LINKS);
+ }
+
+ /**
+ * @return menu items with "selected" CSS class for the active link precomputed where applicable
+ */
public List<MenuItem> getMainMenuItems() {
List<MenuItem> items = new ArrayList<MenuItem>();
- for (String path: Arrays.asList("/engines", "/store", "/sparql")) {
- items.add(new MenuItem(path, path, uriInfo));
+ for (NavigationLink link : getNavigationLinks()) {
+ items.add(new MenuItem(link.label, link.path, uriInfo));
}
return items;
}
@@ -80,7 +93,7 @@ public class BaseStanbolResource {
public String getRootUrl() {
return (String) servletContext.getAttribute(ROOT_URL);
}
-
+
public String getStaticRootUrl() {
return (String) servletContext.getAttribute(STATIC_RESOURCES_ROOT_URL);
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/HomeWebFragment.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/HomeWebFragment.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/HomeWebFragment.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/HomeWebFragment.java Fri Apr 1 10:53:35 2011
@@ -10,6 +10,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.stanbol.commons.web.base.LinkResource;
+import org.apache.stanbol.commons.web.base.NavigationLink;
import org.apache.stanbol.commons.web.base.ScriptResource;
import org.apache.stanbol.commons.web.base.WebFragment;
import org.apache.stanbol.commons.web.home.resource.StanbolRootResource;
@@ -70,14 +71,14 @@ public class HomeWebFragment implements
@Override
public List<LinkResource> getLinkResources() {
List<LinkResource> resources = new ArrayList<LinkResource>();
- resources.add(new LinkResource("stylesheet", "style/stanbol.css", this));
+ resources.add(new LinkResource("stylesheet", "style/stanbol.css", this, 0));
return resources;
}
@Override
public List<ScriptResource> getScriptResources() {
List<ScriptResource> resources = new ArrayList<ScriptResource>();
- // resources.add(new ScriptResource("text/javascript", "scripts/jquery-1.4.2.js", this));
+ // resources.add(new ScriptResource("text/javascript", "scripts/jquery-1.4.2.js", this, 0));
return resources;
}
@@ -86,4 +87,9 @@ public class HomeWebFragment implements
return bundleContext;
}
+ @Override
+ public List<NavigationLink> getNavigationLinks() {
+ return Collections.emptyList();
+ }
+
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/resource/StanbolRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/resource/StanbolRootResource.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/resource/StanbolRootResource.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/home/src/main/java/org/apache/stanbol/commons/web/home/resource/StanbolRootResource.java Fri Apr 1 10:53:35 2011
@@ -23,5 +23,5 @@ public class StanbolRootResource extends
public Response get() {
return Response.ok(new Viewable("index", this), TEXT_HTML).build();
}
-
+
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/fragment/EnhancerWebFragment.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/fragment/EnhancerWebFragment.java?rev=1087645&r1=1087644&r2=1087645&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/fragment/EnhancerWebFragment.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/fragment/EnhancerWebFragment.java Fri Apr 1 10:53:35 2011
@@ -10,6 +10,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.stanbol.commons.web.base.LinkResource;
+import org.apache.stanbol.commons.web.base.NavigationLink;
import org.apache.stanbol.commons.web.base.ScriptResource;
import org.apache.stanbol.commons.web.base.WebFragment;
import org.apache.stanbol.enhancer.jersey.resource.EnginesRootResource;
@@ -41,7 +42,7 @@ public class EnhancerWebFragment impleme
public String getName() {
return NAME;
}
-
+
@Activate
protected void activate(ComponentContext ctx) {
this.bundleContext = ctx.getBundleContext();
@@ -75,21 +76,29 @@ public class EnhancerWebFragment impleme
@Override
public List<LinkResource> getLinkResources() {
List<LinkResource> resources = new ArrayList<LinkResource>();
- resources.add(new LinkResource("stylesheet", "openlayers-2.9/theme/default/style.css", this));
- resources.add(new LinkResource("stylesheet", "scripts/prettify/prettify.css", this));
+ resources.add(new LinkResource("stylesheet", "openlayers-2.9/theme/default/style.css", this, 10));
+ resources.add(new LinkResource("stylesheet", "scripts/prettify/prettify.css", this, 20));
return resources;
}
@Override
public List<ScriptResource> getScriptResources() {
List<ScriptResource> resources = new ArrayList<ScriptResource>();
- resources.add(new ScriptResource("text/javascript", "openlayers-2.9/OpenLayers.js", this));
- resources.add(new ScriptResource("text/javascript", "scripts/prettify/prettify.js", this));
- resources.add(new ScriptResource("text/javascript", "scripts/jquery-1.4.2.js", this));
+ resources.add(new ScriptResource("text/javascript", "openlayers-2.9/OpenLayers.js", this, 10));
+ resources.add(new ScriptResource("text/javascript", "scripts/prettify/prettify.js", this, 20));
+ resources.add(new ScriptResource("text/javascript", "scripts/jquery-1.4.2.js", this, 30));
return resources;
}
@Override
+ public List<NavigationLink> getNavigationLinks() {
+ List<NavigationLink> links = new ArrayList<NavigationLink>();
+ links.add(new NavigationLink("engines", "/engines", "todo", 10));
+ links.add(new NavigationLink("store", "/store", "todo", 20));
+ return links;
+ }
+
+ @Override
public BundleContext getBundleContext() {
return bundleContext;
}