Move RpmIndexer to repo
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 5 Mar 2014 13:39:11 +0000 (13:39 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 5 Mar 2014 13:39:11 +0000 (13:39 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6873 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

modules/org.argeo.slc.server.repo/META-INF/spring/services.xml
runtime/org.argeo.slc.repo/pom.xml
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/RpmIndexer.java [new file with mode: 0644]
runtime/org.argeo.slc.rpmfactory/pom.xml
runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactoryImpl.java
runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmIndexer.java [deleted file]

index 308000254964c1f24efd5a9fc69fa2f6f3f130b1..490bf9059fb4333b0d1670770094398d5aa23628 100644 (file)
@@ -49,7 +49,7 @@
                <property name="workspace" value="${slc.repo.jcr.proxyWorkspace}" />
                <property name="nodeIndexers">
                        <list>
-                               <bean class="org.argeo.slc.rpmfactory.core.RpmIndexer" />
+                               <bean class="org.argeo.slc.repo.RpmIndexer" />
                        </list>
                </property>
        </bean>
index 4613768d9fe014459ef960c26a8c3013805c9224..6dd5a7ccb370fe0b7f0cddb1c4c329dc801c7541 100644 (file)
                        <scope>provided</scope>
                </dependency>
 
+               <!-- RPM -->
+               <dependency>
+                       <groupId>org.argeo.tp</groupId>
+                       <artifactId>org.redline_rpm</artifactId>
+               </dependency>
        </dependencies>
 </project>
\ No newline at end of file
diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/RpmIndexer.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/RpmIndexer.java
new file mode 100644 (file)
index 0000000..a91081d
--- /dev/null
@@ -0,0 +1,104 @@
+package org.argeo.slc.repo;
+
+import static org.freecompany.redline.header.Header.HeaderTag.HEADERIMMUTABLE;
+import static org.freecompany.redline.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 org.apache.commons.io.FilenameUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.jcr.SlcNames;
+import org.argeo.slc.jcr.SlcTypes;
+import org.freecompany.redline.ChannelWrapper.Key;
+import org.freecompany.redline.ReadableChannelWrapper;
+import org.freecompany.redline.header.AbstractHeader;
+import org.freecompany.redline.header.Format;
+import org.freecompany.redline.header.Header;
+
+/** Indexes an RPM file. */
+public class RpmIndexer implements NodeIndexer, SlcNames {
+
+       @Override
+       public Boolean support(String path) {
+               return FilenameUtils.getExtension(path).equals("rpm");
+       }
+
+       @Override
+       public void index(Node node) {
+               try {
+                       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 dce9866d5b1445c503675b18ebb109207afe1a0b..c6013609d2272e79580e7644f8d53a9a6e0b9b25 100644 (file)
                        <groupId>org.argeo.tp</groupId>
                        <artifactId>slf4j.org.apache.commons.logging</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>org.argeo.tp</groupId>
-                       <artifactId>org.redline_rpm</artifactId>
-               </dependency>
-
        </dependencies>
 </project>
\ No newline at end of file
index a5012fa4ad96de2416b0737bcf1d0d6f98a0f81e..3ab7e7df255c8754bbc11b4aa7972be341dfcd68 100644 (file)
@@ -39,6 +39,7 @@ import org.argeo.slc.SlcConstants;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.core.execution.tasks.SystemCall;
 import org.argeo.slc.repo.NodeIndexerVisitor;
+import org.argeo.slc.repo.RpmIndexer;
 import org.argeo.slc.rpmfactory.RpmFactory;
 import org.argeo.slc.rpmfactory.RpmRepository;
 
diff --git a/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmIndexer.java b/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmIndexer.java
deleted file mode 100644 (file)
index ef8b991..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.argeo.slc.rpmfactory.core;
-
-import static org.freecompany.redline.header.Header.HeaderTag.HEADERIMMUTABLE;
-import static org.freecompany.redline.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 org.apache.commons.io.FilenameUtils;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.jcr.SlcNames;
-import org.argeo.slc.jcr.SlcTypes;
-import org.argeo.slc.repo.NodeIndexer;
-import org.freecompany.redline.ChannelWrapper.Key;
-import org.freecompany.redline.ReadableChannelWrapper;
-import org.freecompany.redline.header.AbstractHeader;
-import org.freecompany.redline.header.Format;
-import org.freecompany.redline.header.Header;
-
-/** Indexes an RPM file. */
-public class RpmIndexer implements NodeIndexer, SlcNames {
-
-       @Override
-       public Boolean support(String path) {
-               return FilenameUtils.getExtension(path).equals("rpm");
-       }
-
-       @Override
-       public void index(Node node) {
-               try {
-                       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();
-       }
-}