]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/WorkspaceElem.java
Adapt run as OSGi to felix Gogo console
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / model / WorkspaceElem.java
index 0567b31939fd53410ec3481532497d7275e2fc81..3be73b5e568fc6ee9f78d87c75e8e7c1dee630a5 100644 (file)
@@ -4,7 +4,11 @@ import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-import javax.jcr.query.Query;
+import javax.jcr.query.InvalidQueryException;
+import javax.jcr.query.QueryManager;
+import javax.jcr.query.qom.QueryObjectModel;
+import javax.jcr.query.qom.QueryObjectModelFactory;
+import javax.jcr.query.qom.Selector;
 
 import org.argeo.ArgeoException;
 import org.argeo.jcr.JcrUtils;
@@ -75,15 +79,42 @@ public class WorkspaceElem extends DistParentElem {
                                        login();
 
                                // Retrieve already existing distribution
-                               Query groupQuery = currSession
-                                               .getWorkspace()
-                                               .getQueryManager()
-                                               .createQuery(
-                                                               "select * from ["
-                                                                               + SlcTypes.SLC_MODULAR_DISTRIBUTION
-                                                                               + "]", Query.JCR_SQL2);
-                               NodeIterator distributions = groupQuery.execute().getNodes();
-                               distribs: while (distributions.hasNext()) {
+
+                               // Use QOM rather than SQL2 - it seems more robust for remoting
+                               // with JCR 2.2 (might also be some model refresh issue with the
+                               // remoting)
+                               QueryManager queryManager = currSession.getWorkspace()
+                                               .getQueryManager();
+                               QueryObjectModelFactory factory = queryManager.getQOMFactory();
+                               Selector selector = factory.selector(
+                                               SlcTypes.SLC_MODULAR_DISTRIBUTION,
+                                               SlcTypes.SLC_MODULAR_DISTRIBUTION);
+                               // Curiously this works...
+                               // Selector selector = factory.selector(
+                               // SlcTypes.SLC_JAR_FILE,
+                               // SlcTypes.SLC_JAR_FILE);
+
+                               QueryObjectModel query = factory.createQuery(selector, null,
+                                               null, null);
+
+                               // Query groupQuery = currSession
+                               // .getWorkspace()
+                               // .getQueryManager()
+                               // .createQuery(
+                               // "select * from ["
+                               // + SlcTypes.SLC_MODULAR_DISTRIBUTION
+                               // + "]", Query.JCR_SQL2);
+                               NodeIterator distributions = null;
+                               try {
+                                       distributions = query.execute().getNodes();
+                               } catch (InvalidQueryException iqe) {
+                                       // For legacy only does not throw an exception while
+                                       // browsing
+                                       // legacy repositories that does not know
+                                       // SLC_MODULAR_DISTRIBUTION type
+                               }
+                               distribs: while (distributions != null
+                                               && distributions.hasNext()) {
                                        Node currDist = distributions.nextNode();
                                        Node distBase = currDist.getParent().getParent();
                                        if (!distBase.isNodeType(SlcTypes.SLC_ARTIFACT_BASE))
@@ -95,35 +126,17 @@ public class WorkspaceElem extends DistParentElem {
 
                                        String name;
                                        String type;
-                                       if (ModularDistBaseElem.AETHER_BINARIES_TYPE
+                                       if (ModularDistVersionBaseElem.AETHER_BINARIES_TYPE
                                                        .equals(artifactId)) {
                                                name = groupId;
-                                               type = ModularDistBaseElem.AETHER_BINARIES_TYPE;
+                                               type = ModularDistVersionBaseElem.AETHER_BINARIES_TYPE;
                                        } else {
                                                name = artifactId;
-                                               type = ModularDistBaseElem.AETHER_DEP_TYPE;
+                                               type = ModularDistVersionBaseElem.AETHER_DEP_TYPE;
                                        }
                                        if (getChildByName(name) == null)
-                                               addChild(new ModularDistBaseElem(WorkspaceElem.this,
-                                                               name, distBase, type));
-                               }
-                               // Add empty group base that have been marked as relevant
-                               groupQuery = currSession
-                                               .getWorkspace()
-                                               .getQueryManager()
-                                               .createQuery(
-                                                               "select * from ["
-                                                                               + SlcTypes.SLC_RELEVANT_CATEGORY + "]",
-                                                               Query.JCR_SQL2);
-                               distributions = groupQuery.execute().getNodes();
-                               while (distributions.hasNext()) {
-                                       Node distBase = distributions.nextNode();
-                                       String groupBaseId = distBase.getProperty(
-                                                       SlcNames.SLC_GROUP_BASE_ID).getString();
-                                       if (getChildByName(groupBaseId) == null)
-                                               addChild(new ModularDistBaseElem(WorkspaceElem.this,
-                                                               groupBaseId, distBase,
-                                                               ModularDistBaseElem.AETHER_CATEGORY_BASE));
+                                               addChild(new ModularDistVersionBaseElem(
+                                                               WorkspaceElem.this, name, distBase, type));
                                }
                                return super.getChildren();
                        } catch (RepositoryException e) {
@@ -139,4 +152,4 @@ public class WorkspaceElem extends DistParentElem {
                JcrUtils.logoutQuietly(currSession);
                super.dispose();
        }
-}
+}
\ No newline at end of file