Return-Path: X-Original-To: apmail-felix-commits-archive@www.apache.org Delivered-To: apmail-felix-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9223718DA4 for ; Tue, 1 Dec 2015 13:05:03 +0000 (UTC) Received: (qmail 12729 invoked by uid 500); 1 Dec 2015 13:04:47 -0000 Delivered-To: apmail-felix-commits-archive@felix.apache.org Received: (qmail 12693 invoked by uid 500); 1 Dec 2015 13:04:47 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 12684 invoked by uid 99); 1 Dec 2015 13:04:47 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Dec 2015 13:04:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 075601A0B50 for ; Tue, 1 Dec 2015 13:04:47 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.246 X-Spam-Level: * X-Spam-Status: No, score=1.246 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-0.554] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id 0BBHirzVNlog for ; Tue, 1 Dec 2015 13:04:34 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTP id 0E1482164D for ; Tue, 1 Dec 2015 13:04:28 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 0FA2AE0280 for ; Tue, 1 Dec 2015 13:04:27 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 042F73A05A2 for ; Tue, 1 Dec 2015 13:04:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r974146 [22/28] - in /websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST: ./ css/ images/ images/logos/ images/profiles/ img/ js/ xref-test/ xref-test/org/ xref-test/org/apache/ xref-test/org/apache/fel... Date: Tue, 01 Dec 2015 13:04:25 -0000 To: commits@felix.apache.org From: bimargulies@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20151201130427.042F73A05A2@svn01-us-west.apache.org> Added: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeploy.html ============================================================================== --- websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeploy.html (added) +++ websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeploy.html Tue Dec 1 13:04:23 2015 @@ -0,0 +1,343 @@ + + + +ObrDeploy xref + + + +
+1   /*
+2    * Licensed to the Apache Software Foundation (ASF) under one
+3    * or more contributor license agreements.  See the NOTICE file
+4    * distributed with this work for additional information
+5    * regarding copyright ownership.  The ASF licenses this file
+6    * to you under the Apache License, Version 2.0 (the
+7    * "License"); you may not use this file except in compliance
+8    * with the License.  You may obtain a copy of the License at
+9    *
+10   *   http://www.apache.org/licenses/LICENSE-2.0
+11   *
+12   * Unless required by applicable law or agreed to in writing,
+13   * software distributed under the License is distributed on an
+14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+15   * KIND, either express or implied.  See the License for the
+16   * specific language governing permissions and limitations
+17   * under the License.
+18   */
+19  package org.apache.felix.obrplugin;
+20  
+21  
+22  import java.io.File;
+23  import java.net.URI;
+24  import java.net.URL;
+25  import java.util.Arrays;
+26  import java.util.Iterator;
+27  import java.util.List;
+28  import java.util.regex.Matcher;
+29  import java.util.regex.Pattern;
+30  
+31  import org.apache.maven.artifact.Artifact;
+32  import org.apache.maven.artifact.manager.WagonManager;
+33  import org.apache.maven.artifact.repository.ArtifactRepository;
+34  import org.apache.maven.plugin.AbstractMojo;
+35  import org.apache.maven.plugin.MojoExecutionException;
+36  import org.apache.maven.plugin.logging.Log;
+37  import org.apache.maven.plugins.annotations.Component;
+38  import org.apache.maven.plugins.annotations.LifecyclePhase;
+39  import org.apache.maven.plugins.annotations.Mojo;
+40  import org.apache.maven.plugins.annotations.Parameter;
+41  import org.apache.maven.project.MavenProject;
+42  import org.apache.maven.settings.Settings;
+43  
+44  
+45  /**
+46   * Deploys bundle details to a remote OBR repository (life-cycle goal)
+47   *
+48   * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+49   */
+50  @Mojo( name = "deploy", threadSafe = true, defaultPhase = LifecyclePhase.DEPLOY )
+51  public final class ObrDeploy extends AbstractMojo
+52  {
+53      /**
+54       * When true, ignore remote locking.
+55       */
+56      @Parameter( property = "ignoreLock" )
+57      private boolean ignoreLock;
+58  
+59      /**
+60       * Optional public URL prefix for the remote repository.
+61       */
+62      @Parameter( property = "prefixUrl" )
+63      private String prefixUrl;
+64  
+65      /**
+66       * Optional public URL where the bundle has been deployed.
+67       */
+68      @Parameter( property = "bundleUrl" )
+69      private String bundleUrl;
+70  
+71      /**
+72       * Remote OBR Repository.
+73       */
+74      @Parameter( property = "remoteOBR", defaultValue = "NONE" )
+75      private String remoteOBR;
+76  
+77      /**
+78       * Local OBR Repository.
+79       */
+80      @Parameter( property = "obrRepository" )
+81      private String obrRepository;
+82  
+83      /**
+84       * Project types which this plugin supports.
+85       */
+86      @Parameter
+87      private List supportedProjectTypes = Arrays.asList( new String[]
+88          { "jar", "bundle" } );
+89  
+90      @Parameter( defaultValue = "${project.distributionManagementArtifactRepository}", readonly = true )
+91      private ArtifactRepository deploymentRepository;
+92  
+93      /**
+94       * Alternative deployment repository. Format: id::layout::url
+95       */
+96      @Parameter( property = "altDeploymentRepository" )
+97      private String altDeploymentRepository;
+98  
+99      /**
+100      * OBR specific deployment repository. Format: id::layout::url
+101      */
+102     @Parameter( property = "obrDeploymentRepository" )
+103    private String obrDeploymentRepository;
+104 
+105     /**
+106      * Local Repository.
+107      */
+108     @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
+109     private ArtifactRepository localRepository;
+110 
+111     /**
+112      * The Maven project.
+113      */
+114     @Parameter( defaultValue = "${project}", readonly = true, required = true )
+115     private MavenProject project;
+116 
+117     @Parameter( defaultValue = "${project.attachedArtifacts}", readonly = true, required = true )
+118     private List attachedArtifacts;
+119 
+120     /**
+121      * Local Maven settings.
+122      */
+123     @Parameter( defaultValue = "${settings}", readonly = true, required = true )
+124     private Settings settings;
+125 
+126     /**
+127      * The Wagon manager.
+128      */
+129     @Component
+130     private WagonManager m_wagonManager;
+131 
+132     /**
+133      * Attached source artifact
+134      */
+135     private Artifact m_sourceArtifact;
+136 
+137     /**
+138      * Attached doc artifact
+139      */
+140     private Artifact m_docArtifact;
+141 
+142 
+143     public void execute() throws MojoExecutionException
+144     {
+145         String projectType = project.getPackaging();
+146 
+147         // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+148         if ( !supportedProjectTypes.contains( projectType ) )
+149         {
+150             getLog().warn(
+151                 "Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes );
+152             return;
+153         }
+154         else if ( "NONE".equalsIgnoreCase( remoteOBR ) || "false".equalsIgnoreCase( remoteOBR ) )
+155         {
+156             getLog().info( "Remote OBR update disabled (enable with -DremoteOBR)" );
+157             return;
+158         }
+159 
+160         // check for any attached sources or docs
+161         for ( Iterator i = attachedArtifacts.iterator(); i.hasNext(); )
+162         {
+163             Artifact artifact = ( Artifact ) i.next();
+164             if ( "sources".equals( artifact.getClassifier() ) )
+165             {
+166                 m_sourceArtifact = artifact;
+167             }
+168             else if ( "javadoc".equals( artifact.getClassifier() ) )
+169             {
+170                 m_docArtifact = artifact;
+171             }
+172         }
+173 
+174         // if the user doesn't supply an explicit name for the remote OBR file, use the local name instead
+175         if ( null == remoteOBR || remoteOBR.trim().length() == 0 || "true".equalsIgnoreCase( remoteOBR ) )
+176         {
+177             remoteOBR = obrRepository;
+178         }
+179 
+180         URI tempURI = ObrUtils.findRepositoryXml( "", remoteOBR );
+181         String repositoryName = new File( tempURI.getSchemeSpecificPart() ).getName();
+182 
+183         Log log = getLog();
+184         ObrUpdate update;
+185 
+186         RemoteFileManager remoteFile = new RemoteFileManager( m_wagonManager, settings, log );
+187         openRepositoryConnection( remoteFile );
+188 
+189         // ======== LOCK REMOTE OBR ========
+190         log.info( "LOCK " + remoteFile + '/' + repositoryName );
+191         remoteFile.lockFile( repositoryName, ignoreLock );
+192         File downloadedRepositoryXml = null;
+193 
+194         try
+195         {
+196             // ======== DOWNLOAD REMOTE OBR ========
+197             log.info( "Downloading " + repositoryName );
+198             downloadedRepositoryXml = remoteFile.get( repositoryName, ".xml" );
+199 
+200             String mavenRepository = localRepository.getBasedir();
+201 
+202             URI repositoryXml = downloadedRepositoryXml.toURI();
+203             URI obrXmlFile = ObrUtils.findObrXml( project );
+204 
+205             Config userConfig = new Config();
+206             userConfig.setRemoteFile( true );
+207 
+208             if ( bundleUrl != null )
+209             {
+210                 // public URL differs from the bundle file location
+211                 URI uri = URI.create( bundleUrl );
+212                 log.info( "Computed bundle uri: " + uri );
+213                 userConfig.setRemoteBundle( uri );
+214             }
+215             else if ( prefixUrl != null )
+216             {
+217                 // support absolute bundle URLs based on given prefix
+218                 URI bundleJar = ObrUtils.getArtifactURI( localRepository, project.getArtifact() );
+219                 String relative = ObrUtils.getRelativeURI( ObrUtils.toFileURI( mavenRepository ), bundleJar )
+220                     .toASCIIString();
+221                 URL resourceURL = new URL( new URL( prefixUrl + '/' ), relative );
+222                 URI uri = URI.create( resourceURL.toString() );
+223                 log.info( "Computed bundle uri: " + uri );
+224                 userConfig.setRemoteBundle( uri );
+225             }
+226 
+227             update = new ObrUpdate( repositoryXml, obrXmlFile, project, mavenRepository, userConfig, log );
+228             update.parseRepositoryXml();
+229 
+230             updateRemoteBundleMetadata( project.getArtifact(), update );
+231             for ( Iterator i = attachedArtifacts.iterator(); i.hasNext(); )
+232             {
+233                 updateRemoteBundleMetadata( ( Artifact ) i.next(), update );
+234             }
+235 
+236             update.writeRepositoryXml();
+237 
+238             if ( downloadedRepositoryXml.exists() )
+239             {
+240                 // ======== UPLOAD MODIFIED OBR ========
+241                 log.info( "Uploading " + repositoryName );
+242                 remoteFile.put( downloadedRepositoryXml, repositoryName );
+243             }
+244         }
+245         catch ( Exception e )
+246         {
+247             log.warn( "Exception while updating remote OBR: " + e.getLocalizedMessage(), e );
+248         }
+249         finally
+250         {
+251             // ======== UNLOCK REMOTE OBR ========
+252             log.info( "UNLOCK " + remoteFile + '/' + repositoryName );
+253             remoteFile.unlockFile( repositoryName );
+254             remoteFile.disconnect();
+255 
+256             if ( null != downloadedRepositoryXml )
+257             {
+258                 downloadedRepositoryXml.delete();
+259             }
+260         }
+261     }
+262 
+263     private static final Pattern ALT_REPO_SYNTAX_PATTERN = Pattern.compile( "(.+)::(.+)::(.+)" );
+264 
+265 
+266     private void openRepositoryConnection( RemoteFileManager remoteFile ) throws MojoExecutionException
+267     {
+268         // use OBR specific deployment location?
+269         if ( obrDeploymentRepository != null )
+270         {
+271             altDeploymentRepository = obrDeploymentRepository;
+272         }
+273 
+274         if ( deploymentRepository == null && altDeploymentRepository == null )
+275         {
+276             String msg = "Deployment failed: repository element was not specified in the pom inside"
+277                 + " distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter";
+278 
+279             throw new MojoExecutionException( msg );
+280         }
+281 
+282         if ( altDeploymentRepository != null )
+283         {
+284             getLog().info( "Using alternate deployment repository " + altDeploymentRepository );
+285 
+286             Matcher matcher = ALT_REPO_SYNTAX_PATTERN.matcher( altDeploymentRepository );
+287             if ( !matcher.matches() )
+288             {
+289                 throw new MojoExecutionException( "Invalid syntax for alternative repository \""
+290                     + altDeploymentRepository + "\". Use \"id::layout::url\"." );
+291             }
+292 
+293             remoteFile.connect( matcher.group( 1 ).trim(), matcher.group( 3 ).trim() );
+294         }
+295         else
+296         {
+297             remoteFile.connect( deploymentRepository.getId(), deploymentRepository.getUrl() );
+298         }
+299     }
+300 
+301 
+302     private void updateRemoteBundleMetadata( Artifact artifact, ObrUpdate update ) throws MojoExecutionException
+303     {
+304         if ( !supportedProjectTypes.contains( artifact.getType() ) )
+305         {
+306             return;
+307         }
+308         else if ( null == artifact.getFile() || artifact.getFile().isDirectory() )
+309         {
+310             getLog().error( "No artifact found, try \"mvn install bundle:deploy\"" );
+311             return;
+312         }
+313 
+314         URI bundleJar = ObrUtils.getArtifactURI( localRepository, artifact );
+315 
+316         URI sourceJar = null;
+317         if ( null != m_sourceArtifact )
+318         {
+319             sourceJar = ObrUtils.getArtifactURI( localRepository, m_sourceArtifact );
+320         }
+321 
+322         URI docJar = null;
+323         if ( null != m_docArtifact )
+324         {
+325             docJar = ObrUtils.getArtifactURI( localRepository, m_docArtifact );
+326         }
+327 
+328         update.updateRepository( bundleJar, sourceJar, docJar );
+329     }
+330 }
+
+
+ + + \ No newline at end of file Propchange: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeploy.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeploy.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeployFile.html ============================================================================== --- websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeployFile.html (added) +++ websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeployFile.html Tue Dec 1 13:04:23 2015 @@ -0,0 +1,230 @@ + + + +ObrDeployFile xref + + + +
+1   /*
+2    * Licensed to the Apache Software Foundation (ASF) under one
+3    * or more contributor license agreements.  See the NOTICE file
+4    * distributed with this work for additional information
+5    * regarding copyright ownership.  The ASF licenses this file
+6    * to you under the Apache License, Version 2.0 (the
+7    * "License"); you may not use this file except in compliance
+8    * with the License.  You may obtain a copy of the License at
+9    *
+10   *   http://www.apache.org/licenses/LICENSE-2.0
+11   *
+12   * Unless required by applicable law or agreed to in writing,
+13   * software distributed under the License is distributed on an
+14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+15   * KIND, either express or implied.  See the License for the
+16   * specific language governing permissions and limitations
+17   * under the License.
+18   */
+19  package org.apache.felix.obrplugin;
+20  
+21  
+22  import java.io.File;
+23  import java.net.URI;
+24  import java.util.Arrays;
+25  import java.util.List;
+26  
+27  import org.apache.maven.artifact.manager.WagonManager;
+28  import org.apache.maven.artifact.repository.ArtifactRepository;
+29  import org.apache.maven.plugin.MojoExecutionException;
+30  import org.apache.maven.plugin.logging.Log;
+31  import org.apache.maven.plugins.annotations.Component;
+32  import org.apache.maven.plugins.annotations.LifecyclePhase;
+33  import org.apache.maven.plugins.annotations.Mojo;
+34  import org.apache.maven.plugins.annotations.Parameter;
+35  import org.apache.maven.project.MavenProject;
+36  import org.apache.maven.settings.Settings;
+37  
+38  
+39  /**
+40   * Deploys bundle details to a remote OBR repository (command-line goal)
+41   *
+42   * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+43   */
+44  @Mojo( name = "deploy-file", requiresProject = false, defaultPhase = LifecyclePhase.DEPLOY )
+45  public final class ObrDeployFile extends AbstractFileMojo
+46  {
+47      /**
+48       * When true, ignore remote locking.
+49       */
+50      @Parameter( property = "ignoreLock" )
+51      private boolean ignoreLock;
+52  
+53      /**
+54       * Remote OBR Repository.
+55       */
+56      @Parameter( property = "remoteOBR" )
+57      private String remoteOBR;
+58  
+59      /**
+60       * Local OBR Repository.
+61       */
+62      @Parameter( property = "obrRepository" )
+63      private String obrRepository;
+64  
+65      /**
+66       * Project types which this plugin supports.
+67       */
+68      @Parameter
+69      private List supportedProjectTypes = Arrays.asList( new String[]
+70          { "jar", "bundle" } );
+71  
+72      /**
+73       * Remote repository id, used to lookup authentication settings.
+74       */
+75      @Parameter( property = "repositoryId", defaultValue = "remote-repository", required = true )
+76      private String repositoryId;
+77  
+78      /**
+79       * Remote OBR repository URL, where the bundle details are to be uploaded.
+80       */
+81      @Parameter( property = "url", required = true )
+82      private String url;
+83  
+84      /**
+85       * Optional public URL where the bundle has been deployed.
+86       */
+87      @Parameter( property = "bundleUrl" )
+88      private String bundleUrl;
+89  
+90      /**
+91       * Local Repository.
+92       */
+93      @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
+94      private ArtifactRepository localRepository;
+95  
+96      /**
+97       * Local Maven settings.
+98       */
+99      @Parameter( defaultValue = "${settings}", readonly = true, required = true )
+100     private Settings settings;
+101 
+102     /**
+103      * The Wagon manager.
+104      */
+105     @Component
+106     private WagonManager m_wagonManager;
+107 
+108 
+109     public void execute() throws MojoExecutionException
+110     {
+111         MavenProject project = getProject();
+112         String projectType = project.getPackaging();
+113 
+114         // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+115         if ( !supportedProjectTypes.contains( projectType ) )
+116         {
+117             getLog().warn(
+118                 "Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes );
+119             return;
+120         }
+121         else if ( "NONE".equalsIgnoreCase( remoteOBR ) || "false".equalsIgnoreCase( remoteOBR ) )
+122         {
+123             getLog().info( "Remote OBR update disabled (enable with -DremoteOBR)" );
+124             return;
+125         }
+126 
+127         // if the user doesn't supply an explicit name for the remote OBR file, use the local name instead
+128         if ( null == remoteOBR || remoteOBR.trim().length() == 0 || "true".equalsIgnoreCase( remoteOBR ) )
+129         {
+130             remoteOBR = obrRepository;
+131         }
+132 
+133         URI tempURI = ObrUtils.findRepositoryXml( "", remoteOBR );
+134         String repositoryName = new File( tempURI.getSchemeSpecificPart() ).getName();
+135 
+136         Log log = getLog();
+137         ObrUpdate update;
+138 
+139         RemoteFileManager remoteFile = new RemoteFileManager( m_wagonManager, settings, log );
+140         remoteFile.connect( repositoryId, url );
+141 
+142         // ======== LOCK REMOTE OBR ========
+143         log.info( "LOCK " + remoteFile + '/' + repositoryName );
+144         remoteFile.lockFile( repositoryName, ignoreLock );
+145         File downloadedRepositoryXml = null;
+146 
+147         try
+148         {
+149             // ======== DOWNLOAD REMOTE OBR ========
+150             log.info( "Downloading " + repositoryName );
+151             downloadedRepositoryXml = remoteFile.get( repositoryName, ".xml" );
+152 
+153             String mavenRepository = localRepository.getBasedir();
+154 
+155             URI repositoryXml = downloadedRepositoryXml.toURI();
+156             URI obrXmlFile = ObrUtils.toFileURI( obrXml );
+157             URI bundleJar;
+158 
+159             if ( null == file )
+160             {
+161                 bundleJar = ObrUtils.getArtifactURI( localRepository, project.getArtifact() );
+162             }
+163             else
+164             {
+165                 bundleJar = file.toURI();
+166             }
+167 
+168             Config userConfig = new Config();
+169             userConfig.setRemoteFile( true );
+170 
+171             if ( null != bundleUrl )
+172             {
+173                 // public URL differs from the bundle file location
+174                 URI uri = URI.create( bundleUrl );
+175                 log.info( "Computed bundle uri: " + uri );
+176                 userConfig.setRemoteBundle( uri );
+177             }
+178             else if ( null != file )
+179             {
+180                 // assume file will be deployed in remote repository, so find the remote relative location
+181                 URI uri = URI.create( localRepository.pathOf( project.getArtifact() ) );
+182                 log.info( "Computed bundle uri: " + uri );
+183                 userConfig.setRemoteBundle( uri );
+184             }
+185 
+186             update = new ObrUpdate( repositoryXml, obrXmlFile, project, mavenRepository, userConfig, log );
+187             update.parseRepositoryXml();
+188 
+189             update.updateRepository( bundleJar, null, null );
+190 
+191             update.writeRepositoryXml();
+192 
+193             if ( downloadedRepositoryXml.exists() )
+194             {
+195                 // ======== UPLOAD MODIFIED OBR ========
+196                 log.info( "Uploading " + repositoryName );
+197                 remoteFile.put( downloadedRepositoryXml, repositoryName );
+198             }
+199         }
+200         catch ( Exception e )
+201         {
+202             log.warn( "Exception while updating remote OBR: " + e.getLocalizedMessage(), e );
+203         }
+204         finally
+205         {
+206             // ======== UNLOCK REMOTE OBR ========
+207             log.info( "UNLOCK " + remoteFile + '/' + repositoryName );
+208             remoteFile.unlockFile( repositoryName );
+209             remoteFile.disconnect();
+210 
+211             if ( null != downloadedRepositoryXml )
+212             {
+213                 downloadedRepositoryXml.delete();
+214             }
+215         }
+216     }
+217 }
+
+
+ + + \ No newline at end of file Propchange: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeployFile.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: websites/production/felix/content/components/bundle-plugin-archives/bundle-plugin-LATEST/xref/org/apache/felix/obrplugin/ObrDeployFile.html ------------------------------------------------------------------------------ svn:mime-type = text/html