From 3ca3b8ffdf07d1821bc6cb09c6d39292edf8575d Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 18 Apr 2011 16:52:25 +0000 Subject: [PATCH] JCR based execution modules view NEW - bug 17: Generalize agent management and registration beyond JMS https://bugzilla.argeo.org/show_bug.cgi?id=17 git-svn-id: https://svn.argeo.org/slc/trunk@4450 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/MANIFEST.MF | 7 +- .../META-INF/spring/jcr.xml | 18 ++ .../META-INF/spring/osgi.xml | 4 + .../icons/slc_execution_perspective.gif | Bin .../org.argeo.slc.client.ui/plugin.xml | 8 + .../client/ui/SlcExecutionPerspective.java | 2 +- .../ui/views/JcrExecutionModulesView.java | 184 ++++++++++++++---- .../META-INF/MANIFEST.MF | 1 + .../META-INF/spring/jackrabbit.xml | 3 +- .../META-INF/spring/jcr-osgi.xml | 2 +- .../META-INF/spring/jcr.xml | 2 +- .../resources/org/argeo/slc/repo/repo.cnd | 2 +- .../main/java/org/argeo/slc/jcr/SlcTypes.java | 3 +- .../org/argeo/slc/jcr/execution/JcrAgent.java | 2 + .../JcrExecutionModulesListener.java | 15 +- .../main/resources/org/argeo/slc/jcr/slc.cnd | 19 ++ .../slc/osgi/OsgiExecutionModulesManager.java | 2 +- 17 files changed, 221 insertions(+), 53 deletions(-) create mode 100644 eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml rename eclipse/plugins/{org.argeo.slc.client.rcp => org.argeo.slc.client.ui}/icons/slc_execution_perspective.gif (100%) create mode 100644 runtime/org.argeo.slc.support.jcr/src/main/resources/org/argeo/slc/jcr/slc.cnd diff --git a/eclipse/plugins/org.argeo.slc.client.ui/META-INF/MANIFEST.MF b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/MANIFEST.MF index 611233eb0..212722d7b 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui/META-INF/MANIFEST.MF +++ b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/MANIFEST.MF @@ -13,11 +13,15 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5 Export-Package: org.argeo.slc.client.ui, org.argeo.slc.client.ui.listeners, org.argeo.slc.client.ui.views -Import-Package: org.apache.commons.io;version="1.4.0", +Import-Package: javax.jcr;version="2.0.0", + javax.jcr.observation;version="2.0.0", + org.apache.commons.io;version="1.4.0", org.apache.commons.logging;version="1.1.1", org.argeo, org.argeo.eclipse.spring, org.argeo.eclipse.ui, + org.argeo.eclipse.ui.jcr, + org.argeo.jcr.spring, org.argeo.slc, org.argeo.slc.build, org.argeo.slc.client.oxm, @@ -32,6 +36,7 @@ Import-Package: org.apache.commons.io;version="1.4.0", org.argeo.slc.dao.test.tree, org.argeo.slc.deploy, org.argeo.slc.execution, + org.argeo.slc.jcr, org.argeo.slc.msg.test.tree, org.argeo.slc.process, org.argeo.slc.runtime, diff --git a/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml new file mode 100644 index 000000000..072ed6313 --- /dev/null +++ b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/osgi.xml b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/osgi.xml index 917cf66ac..8b613485e 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/osgi.xml +++ b/eclipse/plugins/org.argeo.slc.client.ui/META-INF/spring/osgi.xml @@ -19,6 +19,10 @@ + + + diff --git a/eclipse/plugins/org.argeo.slc.client.rcp/icons/slc_execution_perspective.gif b/eclipse/plugins/org.argeo.slc.client.ui/icons/slc_execution_perspective.gif similarity index 100% rename from eclipse/plugins/org.argeo.slc.client.rcp/icons/slc_execution_perspective.gif rename to eclipse/plugins/org.argeo.slc.client.ui/icons/slc_execution_perspective.gif diff --git a/eclipse/plugins/org.argeo.slc.client.ui/plugin.xml b/eclipse/plugins/org.argeo.slc.client.ui/plugin.xml index 36aa61d6d..a32b21999 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui/plugin.xml +++ b/eclipse/plugins/org.argeo.slc.client.ui/plugin.xml @@ -12,6 +12,13 @@ name="Execution Modules" restorable="true"> + + diff --git a/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcExecutionPerspective.java b/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcExecutionPerspective.java index abc013020..81547347b 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcExecutionPerspective.java +++ b/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcExecutionPerspective.java @@ -29,7 +29,7 @@ public class SlcExecutionPerspective implements IPerspectiveFactory { IPageLayout.RIGHT, 0.6f, "main"); // add the views to the corresponding place holder - left.addView("org.argeo.slc.client.ui.executionModulesView"); + left.addView("org.argeo.slc.client.ui.jcrExecutionModulesView"); left.addView("org.argeo.slc.client.ui.resultListView"); main.addView("org.argeo.slc.client.ui.processBuilderView"); diff --git a/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java b/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java index a06509c21..210ac3428 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java +++ b/eclipse/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java @@ -3,28 +3,42 @@ package org.argeo.slc.client.ui.views; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; import java.util.Properties; import java.util.UUID; +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.observation.Event; +import javax.jcr.observation.EventIterator; +import javax.jcr.observation.EventListener; + import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.ArgeoException; +import org.argeo.eclipse.ui.jcr.DefaultNodeLabelProvider; +import org.argeo.eclipse.ui.jcr.NodesWrapper; +import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider; +import org.argeo.eclipse.ui.jcr.WrappedNode; import org.argeo.slc.SlcException; -import org.argeo.slc.client.oxm.OxmInterface; import org.argeo.slc.client.ui.ClientUiPlugin; import org.argeo.slc.client.ui.controllers.ProcessController; import org.argeo.slc.client.ui.providers.ExecutionModulesContentProvider; import org.argeo.slc.client.ui.providers.ExecutionModulesContentProvider.FlowNode; -import org.argeo.slc.execution.ExecutionModuleDescriptor; +import org.argeo.slc.jcr.SlcJcrConstants; +import org.argeo.slc.jcr.SlcNames; +import org.argeo.slc.jcr.SlcTypes; import org.argeo.slc.process.RealizedFlow; import org.argeo.slc.process.SlcExecution; import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; @@ -34,25 +48,26 @@ import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; -public class JcrExecutionModulesView extends ViewPart { +public class JcrExecutionModulesView extends ViewPart implements SlcTypes, + SlcNames { private final static Log log = LogFactory .getLog(JcrExecutionModulesView.class); - public static final String ID = "org.argeo.slc.client.ui.executionModulesView"; + public static final String ID = "org.argeo.slc.client.ui.jcrExecutionModulesView"; private TreeViewer viewer; - // Ioc - private IContentProvider contentProvider; - private OxmInterface oxmBean; + private Session session; + private ProcessController processController; public void createPartControl(Composite parent) { viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); + + ViewContentProvider contentProvider = new ViewContentProvider(session); + viewer.setContentProvider(contentProvider); viewer.setLabelProvider(new ViewLabelProvider()); viewer.setInput(getViewSite()); @@ -60,6 +75,19 @@ public class JcrExecutionModulesView extends ViewPart { int operations = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] tt = new Transfer[] { TextTransfer.getInstance() }; viewer.addDragSupport(operations, tt, new ViewDragListener()); + + try { + session.getWorkspace() + .getObservationManager() + .addEventListener( + new VmAgentObserver(), + Event.NODE_ADDED | Event.NODE_REMOVED + | Event.NODE_MOVED, + SlcJcrConstants.VM_AGENT_FACTORY_PATH, true, null, + null, false); + } catch (RepositoryException e) { + throw new SlcException("Cannot add observer", e); + } } public void setFocus() { @@ -74,41 +102,118 @@ public class JcrExecutionModulesView extends ViewPart { viewer.setInput(getViewSite()); } - class ViewLabelProvider extends LabelProvider implements + class ViewContentProvider extends SimpleNodeContentProvider { + + public ViewContentProvider(Session session) { + super(session, + new String[] { SlcJcrConstants.VM_AGENT_FACTORY_PATH }); + } + + @Override + protected Object[] getChildren(Node node) throws RepositoryException { + if (node.isNodeType(SlcTypes.SLC_AGENT_PROXY)) { + List wrappers = new ArrayList(); + for (NodeIterator nit = node.getNodes(); nit.hasNext();) { + wrappers.add(new AgentNodesWrapper(nit.nextNode())); + } + return wrappers.toArray(); + } + return super.getChildren(node); + } + + @Override + protected Object[] sort(Object parent, Object[] children) { + Object[] sorted = new Object[children.length]; + System.arraycopy(children, 0, sorted, 0, children.length); + Arrays.sort(sorted, new ViewComparator()); + return sorted; + } + } + + static class ViewComparator implements Comparator { + + public int compare(Object o1, Object o2) { + try { + if (o1 instanceof Node && o2 instanceof Node) { + Node node1 = (Node) o1; + Node node2 = (Node) o2; + if (node1.isNodeType(SLC_EXECUTION_FLOW) + && node2.isNodeType(SLC_EXECUTION_FLOW)) { + return node1.getName().compareTo(node2.getName()); + } else if (node1.isNodeType(SLC_EXECUTION_FLOW) + && !node2.isNodeType(SLC_EXECUTION_FLOW)) { + return 1; + } else if (!node1.isNodeType(SLC_EXECUTION_FLOW) + && node2.isNodeType(SLC_EXECUTION_FLOW)) { + return -1; + } else { + // TODO: check title + return node1.getName().compareTo(node2.getName()); + } + } + } catch (RepositoryException e) { + throw new ArgeoException("Cannot compare " + o1 + " and " + o2, + e); + } + return 0; + } + + } + + /** Wraps the execution modules of an agent. */ + static class AgentNodesWrapper extends NodesWrapper { + + public AgentNodesWrapper(Node node) { + super(node); + } + + protected List getWrappedNodes() + throws RepositoryException { + List children = new ArrayList(); + Node executionModules = getNode().getNode( + SlcNames.SLC_EXECUTION_MODULES); + for (NodeIterator nit = executionModules.getNodes(); nit.hasNext();) { + for (NodeIterator nitVersions = nit.nextNode().getNodes(); nitVersions + .hasNext();) { + children.add(new WrappedNode(this, nitVersions.nextNode())); + } + } + return children; + } + + } + + class VmAgentObserver implements EventListener { + + public void onEvent(EventIterator events) { + viewer.refresh(); + } + + } + + class ViewLabelProvider extends DefaultNodeLabelProvider implements ITableLabelProvider { public String getColumnText(Object obj, int index) { - if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode) { - ExecutionModuleDescriptor emd = ((ExecutionModulesContentProvider.ExecutionModuleNode) obj) - .getDescriptor(); - if (emd.getLabel() != null) { - return emd.getLabel(); - } else { - return getText(emd); - } - } else - return getText(obj); + return getText(obj); } public Image getColumnImage(Object obj, int index) { return getImage(obj); } - public Image getImage(Object obj) { - if (obj instanceof ExecutionModulesContentProvider.AgentNode) + public Image getImage(Node node) throws RepositoryException { + if (node.getParent().isNodeType(SlcTypes.SLC_AGENT_PROXY)) return ClientUiPlugin.getDefault().getImageRegistry() .get("agent"); - else if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode) + else if (node.isNodeType(SlcTypes.SLC_MODULE)) return ClientUiPlugin.getDefault().getImageRegistry() .get("executionModule"); - else if (obj instanceof ExecutionModulesContentProvider.FolderNode) - return ClientUiPlugin.getDefault().getImageRegistry() - .get("folder"); - else if (obj instanceof ExecutionModulesContentProvider.FlowNode) + else if (node.isNodeType(SlcTypes.SLC_EXECUTION_FLOW)) return ClientUiPlugin.getDefault().getImageRegistry() .get("flow"); else - return PlatformUI.getWorkbench().getSharedImages() - .getImage(ISharedImages.IMG_OBJ_ELEMENT); + return ClientUiPlugin.getDefault().getImageRegistry() + .get("folder"); } } @@ -200,26 +305,21 @@ public class JcrExecutionModulesView extends ViewPart { realizedFlow.setExecutionSpec(fn.getExecutionFlowDescriptor() .getExecutionSpec()); - props.setProperty("RealizedFlowAsXml", - oxmBean.marshal(realizedFlow)); - System.out - .println(oxmBean.marshal(fn.getExecutionFlowDescriptor())); + // props.setProperty("RealizedFlowAsXml", + // oxmBean.marshal(realizedFlow)); + // System.out + // .println(oxmBean.marshal(fn.getExecutionFlowDescriptor())); } } - // IoC - public void setContentProvider(IContentProvider contentProvider) { - this.contentProvider = contentProvider; - } - public void setProcessController(ProcessController processController) { this.processController = processController; } - public void setOxmBean(OxmInterface oxmBean) { - this.oxmBean = oxmBean; + public void setSession(Session session) { + this.session = session; } } \ No newline at end of file diff --git a/modules/server/org.argeo.slc.node.jackrabbit/META-INF/MANIFEST.MF b/modules/server/org.argeo.slc.node.jackrabbit/META-INF/MANIFEST.MF index d1c6a7cc0..c49eabdcc 100644 --- a/modules/server/org.argeo.slc.node.jackrabbit/META-INF/MANIFEST.MF +++ b/modules/server/org.argeo.slc.node.jackrabbit/META-INF/MANIFEST.MF @@ -9,6 +9,7 @@ Import-Package: javax.jcr;version="[2.0.0,3.0.0)", org.argeo.jcr, org.argeo.security, org.argeo.security.jackrabbit, + org.argeo.slc.jcr, org.argeo.slc.repo, org.postgresql;version="[8.3.0,9.0.0)", org.springframework.beans.factory.config;version="2.5.6.SEC01" diff --git a/modules/server/org.argeo.slc.node.jackrabbit/META-INF/spring/jackrabbit.xml b/modules/server/org.argeo.slc.node.jackrabbit/META-INF/spring/jackrabbit.xml index 12f8265f0..dd9d6fd2a 100644 --- a/modules/server/org.argeo.slc.node.jackrabbit/META-INF/spring/jackrabbit.xml +++ b/modules/server/org.argeo.slc.node.jackrabbit/META-INF/spring/jackrabbit.xml @@ -15,11 +15,12 @@ - + + classpath:/org/argeo/slc/jcr/slc.cnd classpath:/org/argeo/slc/repo/repo.cnd diff --git a/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr-osgi.xml b/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr-osgi.xml index f682f931e..a629e465e 100644 --- a/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr-osgi.xml +++ b/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr-osgi.xml @@ -7,7 +7,7 @@ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> - - + diff --git a/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/repo.cnd b/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/repo.cnd index 2cb35462a..ca2cf1cbe 100644 --- a/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/repo.cnd +++ b/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/repo.cnd @@ -1,4 +1,4 @@ - + // AETHER [slc:artifact] > nt:base, mix:shareable diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcTypes.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcTypes.java index 6f8202052..d0a45662c 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcTypes.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcTypes.java @@ -3,7 +3,8 @@ package org.argeo.slc.jcr; /** JCR node types used by SLC */ public interface SlcTypes { - public final static String SLC_AGENT = "slc:agent"; + public final static String SLC_AGENT_PROXY = "slc:agentProxy"; + //public final static String SLC_AGENT = "slc:agent"; public final static String SLC_MODULE = "slc:module"; public final static String SLC_EXECUTION_FLOW = "slc:executionFlow"; diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrAgent.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrAgent.java index 9327f8b6a..d5b1be19b 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrAgent.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrAgent.java @@ -11,6 +11,7 @@ import org.argeo.jcr.JcrUtils; import org.argeo.slc.SlcException; import org.argeo.slc.core.runtime.DefaultAgent; import org.argeo.slc.jcr.SlcJcrConstants; +import org.argeo.slc.jcr.SlcTypes; import org.argeo.slc.runtime.SlcAgent; import org.argeo.slc.runtime.SlcAgentFactory; @@ -25,6 +26,7 @@ public class JcrAgent extends DefaultAgent implements SlcAgentFactory { try { Node vmAgentFactoryNode = JcrUtils.mkdirs(session, SlcJcrConstants.VM_AGENT_FACTORY_PATH); + vmAgentFactoryNode.addMixin(SlcTypes.SLC_AGENT_PROXY); if (!vmAgentFactoryNode.hasNodes()) { String uuid = UUID.randomUUID().toString(); vmAgentFactoryNode.addNode(uuid); diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java index 1dc79046c..7a01e6746 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java @@ -7,7 +7,6 @@ import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -18,6 +17,7 @@ import org.argeo.slc.execution.ExecutionFlowDescriptor; import org.argeo.slc.execution.ExecutionModulesListener; import org.argeo.slc.jcr.SlcJcrConstants; import org.argeo.slc.jcr.SlcNames; +import org.argeo.slc.jcr.SlcTypes; import org.argeo.slc.runtime.SlcAgent; /** @@ -72,7 +72,11 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener { .getVersion()) ? moduleName.getNode(moduleDescriptor .getVersion()) : moduleName.addNode(moduleDescriptor .getVersion()); - moduleVersion.addMixin(NodeType.MIX_TITLE); + moduleVersion.addMixin(SlcTypes.SLC_MODULE); + moduleVersion.setProperty(SlcNames.SLC_NAME, + moduleDescriptor.getName()); + moduleVersion.setProperty(SlcNames.SLC_VERSION, + moduleDescriptor.getVersion()); moduleVersion.setProperty(Property.JCR_TITLE, moduleDescriptor.getTitle()); moduleVersion.setProperty(Property.JCR_DESCRIPTION, @@ -105,7 +109,7 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener { ExecutionFlowDescriptor executionFlow) { String path = getExecutionFlowPath(module, executionFlow); try { - Node flowNode; + Node flowNode = null; if (!session.nodeExists(path)) { Node base = session.getNode(getExecutionModulesPath()); Node moduleNode = base.getNode(module.getName() + '/' @@ -125,10 +129,15 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener { flowNode = currNode.addNode(name); } } + flowNode.addMixin(SlcTypes.SLC_EXECUTION_FLOW); + flowNode.setProperty(SlcNames.SLC_NAME, executionFlow.getName()); session.save(); } else { flowNode = session.getNode(path); } + + if (log.isTraceEnabled()) + log.trace("Flow " + executionFlow + " added to JCR"); } catch (RepositoryException e) { throw new SlcException("Cannot add flow " + executionFlow + " from module " + module, e); diff --git a/runtime/org.argeo.slc.support.jcr/src/main/resources/org/argeo/slc/jcr/slc.cnd b/runtime/org.argeo.slc.support.jcr/src/main/resources/org/argeo/slc/jcr/slc.cnd new file mode 100644 index 000000000..e82799fe1 --- /dev/null +++ b/runtime/org.argeo.slc.support.jcr/src/main/resources/org/argeo/slc/jcr/slc.cnd @@ -0,0 +1,19 @@ + + +[slc:nameVersion] > nt:base +mixin +- slc:name (STRING) m +- slc:version (STRING) m + +[slc:agentProxy] > mix:title +mixin + +[slc:module] > slc:nameVersion,mix:title +mixin + +[slc:executionFlow] > mix:title +mixin +- slc:name (STRING) m + + + diff --git a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java index ed4b7faea..9a5ee35ae 100644 --- a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java +++ b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java @@ -322,7 +322,7 @@ public class OsgiExecutionModulesManager extends Set flows = executionFlows.get(osgiBundle); flows.remove(executionFlow); if (log.isTraceEnabled()) - log.debug("Removed " + executionFlow + " from " + osgiBundle); + log.trace("Removed " + executionFlow + " from " + osgiBundle); if (flows.size() == 0) { executionFlows.remove(osgiBundle); if (log.isTraceEnabled()) -- 2.39.2