Adapt to changes in Argeo Commons
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 7 Dec 2021 08:47:21 +0000 (09:47 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 7 Dec 2021 08:47:21 +0000 (09:47 +0100)
17 files changed:
legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/META-INF/spring/osgi.xml
legacy/argeo-commons/org.argeo.cms.ui.workbench/META-INF/spring/osgi.xml
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/spring/SimpleRoleRegistration.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/commands/OpenChangePasswordDialog.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UiAdminUtils.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/UserTransactionHandler.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java
legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserTransactionProvider.java
legacy/org.argeo.slc.spring/src/org/argeo/slc/spring/auth/SimpleRoleRegistration.java
legacy/pom.xml
org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/RpmFactoryImpl.java
org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/RpmIndexer.java [new file with mode: 0644]
org.argeo.slc.repo/bnd.bnd
org.argeo.slc.repo/src/org/argeo/slc/repo/RpmIndexer.java [deleted file]
pom.xml

index 248d874970279b7a89e07c8d992d6915b1eda71d..894017918b730e37f1276e284e70a3cbe6a7a612 100644 (file)
@@ -9,6 +9,6 @@
        osgi:default-timeout="30000">\r
 \r
        <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
-       <reference id="userTransaction" interface="javax.transaction.UserTransaction" />\r
+       <reference id="userTransaction" interface="org.argeo.osgi.transaction.WorkTransaction" />\r
        <reference id="keyring" interface="org.argeo.api.security.CryptoKeyring" />\r
 </beans:beans>\r
index da9785e5d563aabf9a0cbcfb5d4358ec6bf3a187..9f72ed2530f461aac4d60fa57655d2e0dccb737a 100644 (file)
@@ -27,7 +27,7 @@
 \r
        <!-- UserAdmin -->\r
        <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
-       <reference id="userTransaction" interface="javax.transaction.UserTransaction" />\r
+       <reference id="userTransaction" interface="org.argeo.osgi.transaction.WorkTransaction" />\r
 \r
 \r
        <reference id="secureLogger" interface="org.argeo.api.ArgeoLogger"\r
index 255ce111c6e063513baf85ce41a59b7401387caa..462621622b4ff6beb1f044ecf714e09c753a0999 100644 (file)
@@ -6,11 +6,11 @@ import java.util.Map;
 
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
-import javax.transaction.UserTransaction;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.UserAdmin;
 
@@ -19,13 +19,12 @@ import org.osgi.service.useradmin.UserAdmin;
  * is already registered.
  */
 public class SimpleRoleRegistration implements Runnable {
-       private final static Log log = LogFactory
-                       .getLog(SimpleRoleRegistration.class);
+       private final static Log log = LogFactory.getLog(SimpleRoleRegistration.class);
 
        private String role;
        private List<String> roles = new ArrayList<String>();
        private UserAdmin userAdmin;
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
 
        @Override
        public void run() {
@@ -82,7 +81,7 @@ public class SimpleRoleRegistration implements Runnable {
                this.userAdmin = userAdminService;
        }
 
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
 
index 31e7f469d889092dcf9b750270dadc02a8e518a1..92548a6c9f817b70599ed7e939ad4ccbe7f461dd 100644 (file)
@@ -14,13 +14,13 @@ import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 import javax.security.auth.Subject;
 import javax.security.auth.x500.X500Principal;
-import javax.transaction.UserTransaction;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.api.security.CryptoKeyring;
 import org.argeo.cms.CmsException;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
@@ -44,7 +44,7 @@ import org.osgi.service.useradmin.UserAdmin;
 public class OpenChangePasswordDialog extends AbstractHandler {
        private final static Log log = LogFactory.getLog(OpenChangePasswordDialog.class);
        private UserAdmin userAdmin;
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
        private CryptoKeyring keyring = null;
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
@@ -150,7 +150,7 @@ public class OpenChangePasswordDialog extends AbstractHandler {
                this.userAdmin = userAdmin;
        }
 
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
 
index 8f5588b76f48cde16fab9fa4213c704c01741347..3aaa4873299aa11af022b48dc5281f54de5eed01 100644 (file)
@@ -1,9 +1,8 @@
 package org.argeo.cms.ui.workbench.internal.useradmin;
 
-import javax.transaction.UserTransaction;
-
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTransactionProvider;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.services.ISourceProviderService;
@@ -16,7 +15,7 @@ public class UiAdminUtils {
         */
        /** Easily notify the ActiveWindow that the transaction had a state change */
        public final static void notifyTransactionStateChange(
-                       UserTransaction userTransaction) {
+                       WorkTransaction userTransaction) {
                try {
                        IWorkbenchWindow aww = PlatformUI.getWorkbench()
                                        .getActiveWorkbenchWindow();
index d5e995ae5f3cc6524276623872d2fa1430b2ca10..67c1c7a9b0506c9d62bc988b37a7911092ecab80 100644 (file)
@@ -6,11 +6,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
-
 import org.argeo.api.NodeConstants;
 import org.argeo.cms.CmsException;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.useradmin.UserAdmin;
@@ -22,7 +20,7 @@ public class UserAdminWrapper {
 
        private UserAdmin userAdmin;
        private ServiceReference<UserAdmin> userAdminServiceReference;
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
 
        // First effort to simplify UX while managing users and groups
        public final static boolean COMMIT_ON_SAVE = true;
@@ -35,10 +33,10 @@ public class UserAdminWrapper {
         * with {@link UserAdminWrapper#commitOrNotifyTransactionStateChange()} once
         * the security model changes have been performed.
         */
-       public UserTransaction beginTransactionIfNeeded() {
+       public WorkTransaction beginTransactionIfNeeded() {
                try {
                        // UserTransaction userTransaction = getUserTransaction();
-                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
+                       if (userTransaction.isNoTransactionStatus()) {
                                userTransaction.begin();
                                // UiAdminUtils.notifyTransactionStateChange(userTransaction);
                        }
@@ -57,7 +55,7 @@ public class UserAdminWrapper {
        public void commitOrNotifyTransactionStateChange() {
                try {
                        // UserTransaction userTransaction = getUserTransaction();
-                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                       if (userTransaction.isNoTransactionStatus())
                                return;
 
                        if (UserAdminWrapper.COMMIT_ON_SAVE)
@@ -107,7 +105,7 @@ public class UserAdminWrapper {
                return userAdmin;
        }
 
-       public UserTransaction getUserTransaction() {
+       public WorkTransaction getUserTransaction() {
                return userTransaction;
        }
 
@@ -116,7 +114,7 @@ public class UserAdminWrapper {
                this.userAdmin = userAdmin;
        }
 
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
 
index 6e72912b3697f188e0c18015bb40a8e9f93ca5b5..f9e2ded16c1aea9749123f75131877183a8b0729 100644 (file)
@@ -1,12 +1,10 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.commands;
 
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
-
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiAdminUtils;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
@@ -14,8 +12,7 @@ import org.osgi.service.useradmin.UserAdminEvent;
 
 /** Manage the transaction that is bound to the current perspective */
 public class UserTransactionHandler extends AbstractHandler {
-       public final static String ID = WorkbenchUiPlugin.PLUGIN_ID
-                       + ".userTransactionHandler";
+       public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + ".userTransactionHandler";
 
        public final static String PARAM_COMMAND_ID = "param.commandId";
 
@@ -28,26 +25,24 @@ public class UserTransactionHandler extends AbstractHandler {
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
                String commandId = event.getParameter(PARAM_COMMAND_ID);
-               final UserTransaction userTransaction = userAdminWrapper
-                               .getUserTransaction();
+               final WorkTransaction userTransaction = userAdminWrapper.getUserTransaction();
                try {
                        if (TRANSACTION_BEGIN.equals(commandId)) {
-                               if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION)
+                               if (!userTransaction.isNoTransactionStatus())
                                        throw new CmsException("A transaction already exists");
                                else
                                        userTransaction.begin();
                        } else if (TRANSACTION_COMMIT.equals(commandId)) {
-                               if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                               if (userTransaction.isNoTransactionStatus())
                                        throw new CmsException("No transaction.");
                                else
                                        userTransaction.commit();
                        } else if (TRANSACTION_ROLLBACK.equals(commandId)) {
-                               if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                               if (userTransaction.isNoTransactionStatus())
                                        throw new CmsException("No transaction to rollback.");
                                else {
                                        userTransaction.rollback();
-                                       userAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                                                       UserAdminEvent.ROLE_CHANGED, null));
+                                       userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, null));
                                }
                        }
 
@@ -65,8 +60,7 @@ public class UserTransactionHandler extends AbstractHandler {
                } catch (CmsException e) {
                        throw e;
                } catch (Exception e) {
-                       throw new CmsException("Unable to call " + commandId + " on "
-                                       + userTransaction, e);
+                       throw new CmsException("Unable to call " + commandId + " on " + userTransaction, e);
                }
                return null;
        }
index f9869753603eee81f90db3bfc3e06d5a5108e173..9318555a57cee7b66da124659d3e2b5016f5fc9e 100644 (file)
@@ -15,12 +15,13 @@ import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
-import javax.transaction.UserTransaction;
 
 import org.argeo.api.NodeInstance;
 import org.argeo.api.NodeUtils;
 import org.argeo.cms.ArgeoNames;
 import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.UserAdminUtils;
+import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.cms.ui.workbench.CmsWorkbenchStyles;
 import org.argeo.cms.ui.workbench.internal.useradmin.SecurityAdminImages;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
@@ -31,13 +32,12 @@ import org.argeo.cms.ui.workbench.internal.useradmin.providers.MailLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.RoleIconLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserFilter;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-import org.argeo.cms.ui.util.CmsUiUtils;
-import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.naming.LdapAttrs;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -450,7 +450,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, myGroup));
                        } else if (role.getType() == Role.USER) {
                                // TODO check if the group is already member of this group
-                               UserTransaction transaction = userAdminWrapper.beginTransactionIfNeeded();
+                               WorkTransaction transaction = userAdminWrapper.beginTransactionIfNeeded();
                                User user = (User) role;
                                myGroup.addMember(user);
                                if (UserAdminWrapper.COMMIT_ON_SAVE)
index 5b0b2a55826904097759a1c4f1960bac81a19eee..a6f9c4b3d57aa4eda23d2575e6f516357f8207c7 100644 (file)
@@ -5,26 +5,24 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.transaction.SystemException;
-import javax.transaction.UserTransaction;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.api.NodeConstants;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
+import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiAdminUtils;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.CommonNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.DomainNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.MailLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
-import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
 import org.argeo.naming.LdapAttrs;
 import org.argeo.naming.LdapObjs;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.jface.dialogs.IPageChangeProvider;
 import org.eclipse.jface.dialogs.IPageChangedListener;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -92,15 +90,10 @@ public class UserBatchUpdateWizard extends Wizard {
        public boolean performFinish() {
                if (!canFinish())
                        return false;
-               UserTransaction ut = userAdminWrapper.getUserTransaction();
-               try {
-                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION
-                                       && !MessageDialog.openConfirm(getShell(), "Existing Transaction",
-                                                       "A user transaction is already existing, " + "are you sure you want to proceed ?"))
-                               return false;
-               } catch (SystemException e) {
-                       throw new CmsException("Cannot get user transaction state " + "before user batch update", e);
-               }
+               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+               if (!ut.isNoTransactionStatus() && !MessageDialog.openConfirm(getShell(), "Existing Transaction",
+                               "A user transaction is already existing, " + "are you sure you want to proceed ?"))
+                       return false;
 
                // We cannot use jobs, user modifications are still meant to be done in
                // the UIThread
@@ -153,14 +146,9 @@ public class UserBatchUpdateWizard extends Wizard {
                        } catch (Exception e) {
                                throw new CmsException("Cannot perform batch update on users", e);
                        } finally {
-                               UserTransaction ut = userAdminWrapper.getUserTransaction();
-                               try {
-                                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
-                                               ut.rollback();
-                               } catch (IllegalStateException | SecurityException | SystemException e) {
-                                       log.error("Unable to rollback session in 'finally', " + "the system might be in a dirty state");
-                                       e.printStackTrace();
-                               }
+                               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+                               if (!ut.isNoTransactionStatus())
+                                       ut.rollback();
                        }
                }
        }
@@ -192,14 +180,9 @@ public class UserBatchUpdateWizard extends Wizard {
                        } catch (Exception e) {
                                throw new CmsException("Cannot perform batch update on users", e);
                        } finally {
-                               UserTransaction ut = userAdminWrapper.getUserTransaction();
-                               try {
-                                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
-                                               ut.rollback();
-                               } catch (IllegalStateException | SecurityException | SystemException e) {
-                                       log.error("Unable to rollback session in finally block, the system might be in a dirty state");
-                                       e.printStackTrace();
-                               }
+                               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+                               if (!ut.isNoTransactionStatus())
+                                       ut.rollback();
                        }
                }
        }
@@ -459,8 +442,7 @@ public class UserBatchUpdateWizard extends Wizard {
        }
 
        /**
-        * Displays a list of users with a check box to be able to choose some of
-        * them
+        * Displays a list of users with a check box to be able to choose some of them
         */
        private class ChooseUsersWizardPage extends WizardPage implements IPageChangedListener {
                private static final long serialVersionUID = 7651807402211214274L;
index a53cfb2dfff4cd71dfcec75f4ce67639366605be..71abe01208f311da745051da9b1a22b611dcfda7 100644 (file)
@@ -3,13 +3,11 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.eclipse.ui.AbstractSourceProvider;
 import org.eclipse.ui.ISources;
 
@@ -24,7 +22,7 @@ public class UserTransactionProvider extends AbstractSourceProvider {
        public final static String STATUS_NO_TRANSACTION = "status.noTransaction";
 
        /* DEPENDENCY INJECTION */
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
 
        @Override
        public String[] getProvidedSourceNames() {
@@ -45,7 +43,7 @@ public class UserTransactionProvider extends AbstractSourceProvider {
        private String getInternalCurrentState() {
                try {
                        String transactionState;
-                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                       if (userTransaction.isNoTransactionStatus())
                                transactionState = STATUS_NO_TRANSACTION;
                        else
                                // if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
@@ -68,7 +66,7 @@ public class UserTransactionProvider extends AbstractSourceProvider {
        }
 
        /* DEPENDENCY INJECTION */
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
 }
index 44b7b79af6cce471be0a445d5773edf944841b05..7c4d8708780e98756605495a84f18e9abf60c311 100644 (file)
@@ -6,10 +6,10 @@ import java.util.Map;
 
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
-import javax.transaction.UserTransaction;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.argeo.slc.SlcException;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.UserAdmin;
@@ -19,13 +19,12 @@ import org.osgi.service.useradmin.UserAdmin;
  * is already registered.
  */
 public class SimpleRoleRegistration implements Runnable {
-       private final static Log log = LogFactory
-                       .getLog(SimpleRoleRegistration.class);
+       private final static Log log = LogFactory.getLog(SimpleRoleRegistration.class);
 
        private String role;
        private List<String> roles = new ArrayList<String>();
        private UserAdmin userAdmin;
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
 
        @Override
        public void run() {
@@ -82,7 +81,7 @@ public class SimpleRoleRegistration implements Runnable {
                this.userAdmin = userAdminService;
        }
 
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
 
index 26441ec41ba0214f24b262dc14c7a84a64f1bb08..888b7e81b5b8cc30fb87e097ca1fd92ee447c20b 100644 (file)
 
                <module>dep</module>
        </modules>
-       <dependencies>
-               <dependency>
-                       <groupId>org.argeo.tp</groupId>
-                       <artifactId>argeo-tp</artifactId>
-                       <version>${version.argeo-tp}</version>
-                       <scope>provided</scope>
-                       <exclusions>
-                               <exclusion>
-                                       <groupId>org.argeo.tp.apache</groupId>
-                                       <artifactId>org.apache.xerces</artifactId>
-                               </exclusion>
-                               <!-- Avoid slf4j implementations lurking in the classpath. -->
-                               <exclusion>
-                                       <groupId>org.argeo.tp.sdk</groupId>
-                                       <artifactId>biz.aQute.bndlib</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.argeo.tp.misc</groupId>
-                                       <artifactId>slf4j.osgi</artifactId>
-                               </exclusion>
-                       </exclusions>
-               </dependency>
-       </dependencies>
 </project>
\ No newline at end of file
index 5e1a6278392571a5ef9de6906e50c6f59f57071e..cf111f81e5d8f9e48b23e15928c06b7cc29764af 100644 (file)
@@ -23,7 +23,6 @@ import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcConstants;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.repo.NodeIndexerVisitor;
-import org.argeo.slc.repo.RpmIndexer;
 import org.argeo.slc.rpmfactory.RpmFactory;
 import org.argeo.slc.rpmfactory.RpmRepository;
 import org.argeo.slc.runtime.tasks.SystemCall;
diff --git a/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/RpmIndexer.java b/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/RpmIndexer.java
new file mode 100644 (file)
index 0000000..ae9e70c
--- /dev/null
@@ -0,0 +1,117 @@
+package org.argeo.slc.rpmfactory.core;
+
+import static org.redline_rpm.header.Header.HeaderTag.HEADERIMMUTABLE;
+import static org.redline_rpm.header.Signature.SignatureTag.SIGNATURES;
+
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.nodetype.NodeType;
+
+import org.apache.commons.io.FilenameUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.SlcNames;
+import org.argeo.slc.SlcTypes;
+import org.argeo.slc.repo.NodeIndexer;
+import org.redline_rpm.ChannelWrapper.Key;
+import org.redline_rpm.ReadableChannelWrapper;
+import org.redline_rpm.header.AbstractHeader;
+import org.redline_rpm.header.Format;
+import org.redline_rpm.header.Header;
+
+/** Indexes an RPM file. */
+public class RpmIndexer implements NodeIndexer, SlcNames {
+       private Boolean force = false;
+
+       @Override
+       public Boolean support(String path) {
+               return FilenameUtils.getExtension(path).equals("rpm");
+       }
+
+       @Override
+       public void index(Node node) {
+               try {
+                       if (!support(node.getPath()))
+                               return;
+
+                       // Already indexed
+                       if (!force && node.isNodeType(SlcTypes.SLC_RPM))
+                               return;
+
+                       if (!node.isNodeType(NodeType.NT_FILE))
+                               return;
+
+                       InputStream in = node.getNode(Node.JCR_CONTENT)
+                                       .getProperty(Property.JCR_DATA).getBinary().getStream();
+                       ReadableChannelWrapper channel = new ReadableChannelWrapper(
+                                       Channels.newChannel(in));
+                       Format format = readRpmInfo(channel);
+
+                       node.addMixin(SlcTypes.SLC_RPM);
+                       node.setProperty(SLC_NAME, readTag(format, Header.HeaderTag.NAME));
+                       String rpmVersion = readTag(format, Header.HeaderTag.VERSION);
+                       String rpmRelease = readTag(format, Header.HeaderTag.RELEASE);
+                       node.setProperty(SLC_RPM_VERSION, rpmVersion);
+                       node.setProperty(SLC_RPM_RELEASE, rpmRelease);
+                       node.setProperty(SLC_VERSION, rpmVersion + "-" + rpmRelease);
+
+                       String arch = readTag(format, Header.HeaderTag.ARCH);
+                       if (arch != null)
+                               node.setProperty(SLC_RPM_ARCH, arch);
+
+                       String archiveSize = readTag(format, Header.HeaderTag.ARCHIVESIZE);
+                       if (archiveSize != null)
+                               node.setProperty(SLC_RPM_ARCHIVE_SIZE,
+                                               Long.parseLong(archiveSize));
+
+                       node.getSession().save();
+               } catch (Exception e) {
+                       throw new SlcException("Cannot index " + node, e);
+               }
+
+       }
+
+       @SuppressWarnings("unused")
+       public Format readRpmInfo(ReadableChannelWrapper channel) throws Exception {
+               Format format = new Format();
+
+               Key<Integer> lead = channel.start();
+               format.getLead().read(channel);
+               // System.out.println( "Lead ended at '" + in.finish( lead) + "'.");
+
+               Key<Integer> signature = channel.start();
+               int count = format.getSignature().read(channel);
+               int expected = ByteBuffer
+                               .wrap((byte[]) format.getSignature().getEntry(SIGNATURES)
+                                               .getValues(), 8, 4).getInt()
+                               / -16;
+               // System.out.println( "Signature ended at '" + in.finish( signature) +
+               // "' and contained '" + count + "' headers (expected '" + expected +
+               // "').");
+
+               Key<Integer> header = channel.start();
+               count = format.getHeader().read(channel);
+               expected = ByteBuffer.wrap(
+                               (byte[]) format.getHeader().getEntry(HEADERIMMUTABLE)
+                                               .getValues(), 8, 4).getInt()
+                               / -16;
+               // System.out.println( "Header ended at '" + in.finish( header) +
+               // " and contained '" + count + "' headers (expected '" + expected +
+               // "').");
+
+               return format;
+       }
+
+       private String readTag(Format format, Header.HeaderTag tag) {
+               AbstractHeader.Entry<?> entry = format.getHeader().getEntry(tag);
+               if (entry == null)
+                       return null;
+               if (entry.getValues() == null)
+                       return null;
+               Object[] values = (Object[]) entry.getValues();
+               return values[0].toString().trim();
+       }
+}
index 07af6b4f50e4cd14a13826f1104e8c739776896a..7e59f4e33c4d9bca0b41133eb065a6e7270f2d86 100644 (file)
@@ -3,11 +3,11 @@ org.xml.sax.*,\
 javax.xml.transform.*,\
 javax.xml.parsers.*,\
 javax.jcr.nodetype,\
-org.eclipse.aether.*;version=1.0.1,\
 org.osgi.*;version=0.0.0,\
 *
 
 Private-Package: org.eclipse.aether.*
+Export-Package: !org.eclipse.aether.*, !*.internal.*, *
 
 Require-Capability: cms.datamodel; filter:="(name=slc)"
 Provide-Capability: cms.datamodel; name=java,\
diff --git a/org.argeo.slc.repo/src/org/argeo/slc/repo/RpmIndexer.java b/org.argeo.slc.repo/src/org/argeo/slc/repo/RpmIndexer.java
deleted file mode 100644 (file)
index fadac82..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.argeo.slc.repo;
-
-import static org.redline_rpm.header.Header.HeaderTag.HEADERIMMUTABLE;
-import static org.redline_rpm.header.Signature.SignatureTag.SIGNATURES;
-
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.nodetype.NodeType;
-
-import org.apache.commons.io.FilenameUtils;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.SlcNames;
-import org.argeo.slc.SlcTypes;
-import org.redline_rpm.ChannelWrapper.Key;
-import org.redline_rpm.ReadableChannelWrapper;
-import org.redline_rpm.header.AbstractHeader;
-import org.redline_rpm.header.Format;
-import org.redline_rpm.header.Header;
-
-/** Indexes an RPM file. */
-public class RpmIndexer implements NodeIndexer, SlcNames {
-       private Boolean force = false;
-
-       @Override
-       public Boolean support(String path) {
-               return FilenameUtils.getExtension(path).equals("rpm");
-       }
-
-       @Override
-       public void index(Node node) {
-               try {
-                       if (!support(node.getPath()))
-                               return;
-
-                       // Already indexed
-                       if (!force && node.isNodeType(SlcTypes.SLC_RPM))
-                               return;
-
-                       if (!node.isNodeType(NodeType.NT_FILE))
-                               return;
-
-                       InputStream in = node.getNode(Node.JCR_CONTENT)
-                                       .getProperty(Property.JCR_DATA).getBinary().getStream();
-                       ReadableChannelWrapper channel = new ReadableChannelWrapper(
-                                       Channels.newChannel(in));
-                       Format format = readRpmInfo(channel);
-
-                       node.addMixin(SlcTypes.SLC_RPM);
-                       node.setProperty(SLC_NAME, readTag(format, Header.HeaderTag.NAME));
-                       String rpmVersion = readTag(format, Header.HeaderTag.VERSION);
-                       String rpmRelease = readTag(format, Header.HeaderTag.RELEASE);
-                       node.setProperty(SLC_RPM_VERSION, rpmVersion);
-                       node.setProperty(SLC_RPM_RELEASE, rpmRelease);
-                       node.setProperty(SLC_VERSION, rpmVersion + "-" + rpmRelease);
-
-                       String arch = readTag(format, Header.HeaderTag.ARCH);
-                       if (arch != null)
-                               node.setProperty(SLC_RPM_ARCH, arch);
-
-                       String archiveSize = readTag(format, Header.HeaderTag.ARCHIVESIZE);
-                       if (archiveSize != null)
-                               node.setProperty(SLC_RPM_ARCHIVE_SIZE,
-                                               Long.parseLong(archiveSize));
-
-                       node.getSession().save();
-               } catch (Exception e) {
-                       throw new SlcException("Cannot index " + node, e);
-               }
-
-       }
-
-       @SuppressWarnings("unused")
-       public Format readRpmInfo(ReadableChannelWrapper channel) throws Exception {
-               Format format = new Format();
-
-               Key<Integer> lead = channel.start();
-               format.getLead().read(channel);
-               // System.out.println( "Lead ended at '" + in.finish( lead) + "'.");
-
-               Key<Integer> signature = channel.start();
-               int count = format.getSignature().read(channel);
-               int expected = ByteBuffer
-                               .wrap((byte[]) format.getSignature().getEntry(SIGNATURES)
-                                               .getValues(), 8, 4).getInt()
-                               / -16;
-               // System.out.println( "Signature ended at '" + in.finish( signature) +
-               // "' and contained '" + count + "' headers (expected '" + expected +
-               // "').");
-
-               Key<Integer> header = channel.start();
-               count = format.getHeader().read(channel);
-               expected = ByteBuffer.wrap(
-                               (byte[]) format.getHeader().getEntry(HEADERIMMUTABLE)
-                                               .getValues(), 8, 4).getInt()
-                               / -16;
-               // System.out.println( "Header ended at '" + in.finish( header) +
-               // " and contained '" + count + "' headers (expected '" + expected +
-               // "').");
-
-               return format;
-       }
-
-       private String readTag(Format format, Header.HeaderTag tag) {
-               AbstractHeader.Entry<?> entry = format.getHeader().getEntry(tag);
-               if (entry == null)
-                       return null;
-               if (entry.getValues() == null)
-                       return null;
-               Object[] values = (Object[]) entry.getValues();
-               return values[0].toString().trim();
-       }
-}
diff --git a/pom.xml b/pom.xml
index 2c0201c9230d30bb9687565cdc2c296c915d8c9e..0127ee601ba7aa87239972604031cad7a8e43a41 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                                        <groupId>org.argeo.tp.misc</groupId>
                                        <artifactId>slf4j.osgi</artifactId>
                                </exclusion>
+                               <!-- Make sure JTA is not used anymore -->
+                               <exclusion>
+                                       <groupId>org.argeo.tp.javax</groupId>
+                                       <artifactId>javax.transaction-api</artifactId>
+                               </exclusion>
                        </exclusions>
                </dependency>
        </dependencies>