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
\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
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;
* 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() {
this.userAdmin = userAdminService;
}
- public void setUserTransaction(UserTransaction userTransaction) {
+ public void setUserTransaction(WorkTransaction userTransaction) {
this.userTransaction = userTransaction;
}
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;
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 {
this.userAdmin = userAdmin;
}
- public void setUserTransaction(UserTransaction userTransaction) {
+ public void setUserTransaction(WorkTransaction userTransaction) {
this.userTransaction = userTransaction;
}
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;
*/
/** 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();
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;
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;
* 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);
}
public void commitOrNotifyTransactionStateChange() {
try {
// UserTransaction userTransaction = getUserTransaction();
- if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+ if (userTransaction.isNoTransactionStatus())
return;
if (UserAdminWrapper.COMMIT_ON_SAVE)
return userAdmin;
}
- public UserTransaction getUserTransaction() {
+ public WorkTransaction getUserTransaction() {
return userTransaction;
}
this.userAdmin = userAdmin;
}
- public void setUserTransaction(UserTransaction userTransaction) {
+ public void setUserTransaction(WorkTransaction userTransaction) {
this.userTransaction = userTransaction;
}
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;
/** 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";
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));
}
}
} 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;
}
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;
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;
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)
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;
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
} 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();
}
}
}
} 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();
}
}
}
}
/**
- * 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;
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;
public final static String STATUS_NO_TRANSACTION = "status.noTransaction";
/* DEPENDENCY INJECTION */
- private UserTransaction userTransaction;
+ private WorkTransaction userTransaction;
@Override
public String[] getProvidedSourceNames() {
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)
}
/* DEPENDENCY INJECTION */
- public void setUserTransaction(UserTransaction userTransaction) {
+ public void setUserTransaction(WorkTransaction userTransaction) {
this.userTransaction = userTransaction;
}
}
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;
* 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() {
this.userAdmin = userAdminService;
}
- public void setUserTransaction(UserTransaction userTransaction) {
+ public void setUserTransaction(WorkTransaction userTransaction) {
this.userTransaction = userTransaction;
}
<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
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;
--- /dev/null
+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();
+ }
+}
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,\
+++ /dev/null
-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();
- }
-}
<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>