Author: ldywicki Date: Thu Aug 30 19:59:27 2012 New Revision: 1379103 URL: http://svn.apache.org/viewvc?rev=1379103&view=rev Log: KARAF-1784 Provide additional actions for blueprint-enabled bundles
Signed-off-by: Lukasz Dywicki <l...@code-house.org> Added: karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.java karaf/webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.html karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionPanel.java - copied, changed from r1379102, karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java Modified: karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/LinkUtils.java karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/details/DetailsPage.java Added: karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.java URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.java?rev=1379103&view=auto ============================================================================== --- karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.java (added) +++ karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.java Thu Aug 30 19:59:27 2012 @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.karaf.webconsole.core.panel; + +import org.apache.wicket.markup.html.panel.Panel; + +/** + * Simple panel with one link inside. + */ +public class SingleLinkPanel extends Panel { + + private static final long serialVersionUID = 1L; + + public SingleLinkPanel(String id) { + super(id); + } + +} Modified: karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/LinkUtils.java URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/LinkUtils.java?rev=1379103&r1=1379102&r2=1379103&view=diff ============================================================================== --- karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/LinkUtils.java (original) +++ karaf/webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/LinkUtils.java Thu Aug 30 19:59:27 2012 @@ -22,6 +22,7 @@ import org.apache.wicket.markup.html.lin import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.protocol.http.RequestUtils; import org.apache.wicket.request.cycle.RequestCycle; +import org.apache.wicket.request.mapper.parameter.PageParameters; /** * Utility class to create links. @@ -39,9 +40,25 @@ public abstract class LinkUtils { * @param page Page class to link. * @return Bookmarkable link. */ - @SuppressWarnings({"rawtypes", "unchecked"}) public static <T extends Page> Link<Page> createPageLink(String linkId, String labelId, String label, Class<T> page) { - Link link = new BookmarkablePageLink<T>(linkId, page); + return createPageLink(linkId, labelId, label, page, new PageParameters()); + } + + /** + * Creates bookmarkable page link with given page class and parameters. + * + * @param <T> Type of page. + * + * @param linkId Link element id. + * @param labelId Inner link element label. + * @param label Text label. + * @param page Page class to link. + * @param params Page parameters. + * @return Bookmarkable link. + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + public static <T extends Page> Link<Page> createPageLink(String linkId, String labelId, String label, Class<T> page, PageParameters params) { + Link link = new BookmarkablePageLink<T>(linkId, page, params); link.add(new Label(labelId, label)); return link; } Added: karaf/webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.html URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.html?rev=1379103&view=auto ============================================================================== --- karaf/webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.html (added) +++ karaf/webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/panel/SingleLinkPanel.html Thu Aug 30 19:59:27 2012 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<wicket:panel xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> + <a wicket:id="link"> + <span wicket:id="label" /> + </a> + <wicket:child /> +</wicket:panel> \ No newline at end of file Copied: karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionPanel.java (from r1379102, karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java) URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionPanel.java?p2=karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionPanel.java&p1=karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java&r1=1379102&r2=1379103&rev=1379103&view=diff ============================================================================== --- karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java (original) +++ karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionPanel.java Thu Aug 30 19:59:27 2012 @@ -16,32 +16,35 @@ */ package org.apache.karaf.webconsole.osgi.blueprint.bundle; +import org.apache.karaf.webconsole.core.panel.SingleLinkPanel; +import org.apache.karaf.webconsole.core.util.LinkUtils; import org.apache.karaf.webconsole.osgi.blueprint.IBlueprintBundleStateTracker; import org.apache.karaf.webconsole.osgi.blueprint.details.DetailsPage; -import org.apache.karaf.webconsole.osgi.core.spi.IActionProvider; -import org.apache.wicket.Component; -import org.apache.wicket.markup.html.link.BookmarkablePageLink; -import org.apache.wicket.model.Model; +import org.apache.wicket.model.IModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.ops4j.pax.wicket.api.PaxWicketBean; import org.osgi.framework.Bundle; -/** - * Action provider for blueprint. - */ -public class BlueprintActionProvider implements IActionProvider { +public class BlueprintActionPanel extends SingleLinkPanel { + + private static final long serialVersionUID = 1L; + @PaxWicketBean(name = "tracker") private IBlueprintBundleStateTracker tracker; - public BlueprintActionProvider(IBlueprintBundleStateTracker tracker) { - this.tracker = tracker; - } + public BlueprintActionPanel(String componentId, IModel<Bundle> model) { + super(componentId); + setDefaultModel(model); + + Bundle bundle = model.getObject(); + if (tracker.getState(model.getObject()) == null) { + setVisible(false); + return; + } - public Component create(String componentId, Bundle model) { PageParameters params = new PageParameters(); - params.add("bundleId", model.getBundleId()); - BookmarkablePageLink link = new BookmarkablePageLink(componentId, DetailsPage.class, params); - link.setModel(Model.of("Blueprint")); - return link; + params.add("bundleId", bundle.getBundleId()); + add(LinkUtils.createPageLink("link", "label", "Manage blueprint", DetailsPage.class, params)); } } Modified: karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java?rev=1379103&r1=1379102&r2=1379103&view=diff ============================================================================== --- karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java (original) +++ karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/bundle/BlueprintActionProvider.java Thu Aug 30 19:59:27 2012 @@ -16,13 +16,9 @@ */ package org.apache.karaf.webconsole.osgi.blueprint.bundle; -import org.apache.karaf.webconsole.osgi.blueprint.IBlueprintBundleStateTracker; -import org.apache.karaf.webconsole.osgi.blueprint.details.DetailsPage; +import org.apache.karaf.webconsole.osgi.core.shared.BundleModel; import org.apache.karaf.webconsole.osgi.core.spi.IActionProvider; import org.apache.wicket.Component; -import org.apache.wicket.markup.html.link.BookmarkablePageLink; -import org.apache.wicket.model.Model; -import org.apache.wicket.request.mapper.parameter.PageParameters; import org.osgi.framework.Bundle; /** @@ -30,18 +26,8 @@ import org.osgi.framework.Bundle; */ public class BlueprintActionProvider implements IActionProvider { - private IBlueprintBundleStateTracker tracker; - - public BlueprintActionProvider(IBlueprintBundleStateTracker tracker) { - this.tracker = tracker; - } - - public Component create(String componentId, Bundle model) { - PageParameters params = new PageParameters(); - params.add("bundleId", model.getBundleId()); - BookmarkablePageLink link = new BookmarkablePageLink(componentId, DetailsPage.class, params); - link.setModel(Model.of("Blueprint")); - return link; + public Component create(String componentId, Bundle bundle) { + return new BlueprintActionPanel(componentId, new BundleModel(bundle)); } } Modified: karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/details/DetailsPage.java URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/details/DetailsPage.java?rev=1379103&r1=1379102&r2=1379103&view=diff ============================================================================== --- karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/details/DetailsPage.java (original) +++ karaf/webconsole/trunk/osgi/blueprint/src/main/java/org/apache/karaf/webconsole/osgi/blueprint/details/DetailsPage.java Thu Aug 30 19:59:27 2012 @@ -46,8 +46,8 @@ public class DetailsPage extends OsgiPag IModel<List<ComponentMetadata>> model = new MetadataModel(context, params.get("bundleId").toInt()); add(new ListView<ComponentMetadata>("components", model) { + @Override - @SuppressWarnings("unchecked") protected void populateItem(ListItem<ComponentMetadata> item) { ComponentMetadata metadata = item.getModelObject(); item.add(new Label("componentId", metadata.getId()));