this sounds like a good optimisation, does it also take into account additions via upload (which triggers the consumers, just not the full scan)? Is it persisted to disk so it is still correct after a restart?

I wonder if instead of generating the full RSS, just the information about what is to be included could be stored/cached and then the RSS is generated on a request for it only so we can populate the host/port from the servlet context?

- Brett

On 09/04/2008, at 12:00 PM, Maria Odea Ching wrote:

Unfortunately, not all the time.. The generation and update of the feeds are triggered after a repository scan, which can be scheduled or explicitly
executed.
I could get the servlet context when the scan is explicitly executed, but I
don't think i can get it when it's executed by the task executor.

-Deng

On Tue, Apr 8, 2008 at 8:06 PM, Brett Porter <[EMAIL PROTECTED]> wrote:

Hi Deng,

Is there any access to the servlet context to obtain this instead?

- Brett


On 08/04/2008, at 8:37 PM, [EMAIL PROTECTED] wrote:

Author: oching
Date: Tue Apr  8 03:36:50 2008
New Revision: 645833

URL: http://svn.apache.org/viewvc?rev=645833&view=rev
Log:
[MRM-123]
-configure host and port of the links in the rss feeds

Modified:
 archiva/trunk/archiva-jetty/src/main/conf/jetty.xml

archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/ java/org/apache/archiva/rss/processor/ NewArtifactsRssFeedProcessor.java

Modified: archiva/trunk/archiva-jetty/src/main/conf/jetty.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-jetty/src/main/conf/jetty.xml?rev=645833&r1=645832&r2=645833&view=diff

= = = = = = = = = = ====================================================================
--- archiva/trunk/archiva-jetty/src/main/conf/jetty.xml (original)
+++ archiva/trunk/archiva-jetty/src/main/conf/jetty.xml Tue Apr  8
03:36:50 2008
@@ -51,6 +51,15 @@
  </Set>


+    <Call class="java.lang.System" name="setProperty">
+      <Arg>jetty.port</Arg>
+      <Arg>8080</Arg>
+    </Call>
+
+    <Call class="java.lang.System" name="setProperty">
+      <Arg>jetty.host</Arg>
+      <Arg>localhost</Arg>
+    </Call>

<!-- =========================================================== --> <!-- Set connectors -->
@@ -64,7 +73,7 @@
  <Call name="addConnector">
    <Arg>
        <New class="org.mortbay.jetty.nio.SelectChannelConnector">
- <Set name="host"><SystemProperty name="jetty.host" / ></Set> + <Set name="host"><SystemProperty name="jetty.host"/></ Set>
          <Set name="port"><SystemProperty name="jetty.port"
default="8080"/></Set>
          <Set name="maxIdleTime">30000</Set>
          <Set name="Acceptors">2</Set>
@@ -268,8 +277,7 @@
  <Arg type="boolean">True</Arg>
  <Arg type="boolean">False</Arg>
</Call>
-
-
+
<!-- ARCHIVA CONFIG -->

<New id="validation_mail"
class="org.mortbay.jetty.plus.naming.Resource">

Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/ java/org/apache/archiva/rss/processor/ NewArtifactsRssFeedProcessor.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/java/org/apache/archiva/rss/processor/NewArtifactsRssFeedProcessor.java?rev=645833&r1=645832&r2=645833&view=diff

= = = = = = = = = = ====================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/ java/org/apache/archiva/rss/processor/ NewArtifactsRssFeedProcessor.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/ java/org/apache/archiva/rss/processor/ NewArtifactsRssFeedProcessor.java
Tue Apr  8 03:36:50 2008
@@ -22,9 +22,11 @@
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;

import org.apache.archiva.rss.RssFeedEntry;
import org.apache.archiva.rss.RssFeedGenerator;
@@ -53,7 +55,17 @@
  private RssFeedGenerator generator;

  private Logger log = LoggerFactory.getLogger(
NewArtifactsRssFeedProcessor.class );
-
+
+    /**
+ * The hostname that will be used in the urls for the feed links.
+     */
+    private String host = "localhost";
+
+    /**
+     * The port that will be used in the urls for the feed links.
+     */
+    private String port = "8080";
+
  /**
* Process the newly discovered artifacts in the repository. Generate
feeds for new artifacts in the repository and
   * new versions of artifact.
@@ -62,6 +74,16 @@
  {
      log.debug( "Process new artifacts into rss feeds." );

+        if ( System.getProperty( "jetty.host" ) != null )
+        {
+            host = System.getProperty( "jetty.host" );
+        }
+
+        if ( System.getProperty( "jetty.port" ) != null )
+        {
+            port = System.getProperty( "jetty.port" );
+        }
+
      processNewArtifactsInRepo( data );
      processNewVersionsOfArtifact( data );
  }
@@ -73,7 +95,7 @@

      RssFeedEntry entry =
          new RssFeedEntry( NEW_ARTIFACTS_IN_REPO + "\'" + repoId +
"\'" + " as of " +
-                Calendar.getInstance().getTime(), "
http://localhost:8080/archiva/rss/new_artifacts_"; + repoId + ".xml" );
+                Calendar.getInstance().getTime(), getBaseUrl() +
"/archiva/rss/new_artifacts_" + repoId + ".xml" );
      String description = "These are the new artifacts found in
repository " + "\'" + repoId + "\'" + ": \n";

      for ( ArchivaArtifact artifact : data )
@@ -84,7 +106,7 @@
      entries.add( entry );

      generateFeed( "new_artifacts_" + repoId + ".xml",
NEW_ARTIFACTS_IN_REPO + "\'" + repoId + "\'",
-                      "
http://localhost:8080/archiva/repository/rss/new_artifacts_"; + repoId +
".xml",
+                      getBaseUrl() +
"/archiva/repository/rss/new_artifacts_" + repoId + ".xml",
                    "New artifacts found in repository " + "\'" +
repoId + "\'" + " during repository scan.", entries );
  }

@@ -108,7 +130,7 @@
List<RssFeedEntry> entries = new ArrayList<RssFeedEntry>();
          RssFeedEntry entry =
new RssFeedEntry( NEW_VERSIONS_OF_ARTIFACT + "\'" + key +
"\'" + " as of " +
-                    Calendar.getInstance().getTime(), "
http://localhost:8080/archiva/rss/new_versions_"; + key + ".xml" );
+ Calendar.getInstance().getTime(), getBaseUrl() +
"/archiva/rss/new_versions_" + key + ".xml" );

          String description =
"These are the new versions of artifact " + "\'" + key +
"\'" + " in the repository: \n" +
@@ -116,9 +138,9 @@

          entry.setDescription( description );
          entries.add( entry );
-
+
          generateFeed( "new_versions_" + key + ".xml",
NEW_VERSIONS_OF_ARTIFACT + "\'" + key + "\'",
-                          "
http://localhost:8080/archiva/rss/new_versions_"; + key + ".xml",
+ getBaseUrl() + "/archiva/rss/ new_versions_" +
key + ".xml",
"New versions of artifact " + "\'" + key + "\'
found in repository " + "\'" + repoId + "\'" +
                            " during repository scan.", entries );
      }
@@ -173,5 +195,17 @@
  {
      this.generator = generator;
  }
-
+
+    private String getBaseUrl()
+    {
+        String baseUrl = "http://"; + host;
+
+        if( port != null && !"".equals( port ) )
+        {
+            baseUrl = baseUrl + ":" + port;
+        }
+
+        return baseUrl;
+    }
+
}



--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/



--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/

Reply via email to