Re: svn commit: r1806602 - in /jackrabbit/oak/trunk/oak-jcr/src: main/java/org/apache/jackrabbit/oak/jcr/repository/ main/java/org/apache/jackrabbit/oak/jcr/session/ test/java/org/apache/jackrabbit/oa

2017-08-30 Thread Robert Munteanu
On Tue, 2017-08-29 at 21:03 -0700, Chetan Mehrotra wrote:
> +
> +Tracker tracker =
> whiteboard.track(MountInfoProvider.class);
> +List services = tracker.getServices();
> +tracker.stop();
> +
> +if ( services.isEmpty() )
> +this.mountInfoProvider = null;
> +else if ( services.size() == 1 )
> +this.mountInfoProvider = services.get(0);
> +else
> +throw new IllegalArgumentException("Found " +
> services.size() + " MountInfoProvider references, expected at most
> 1.");
> 
> You can also use WhiteboardUtils#getService here which hides this
> stuff
> Chetan Mehrotra

Good catch, thanks Chetan. Applied in r1806682.

Robert


Re: svn commit: r1806602 - in /jackrabbit/oak/trunk/oak-jcr/src: main/java/org/apache/jackrabbit/oak/jcr/repository/ main/java/org/apache/jackrabbit/oak/jcr/session/ test/java/org/apache/jackrabbit/oa

2017-08-29 Thread Chetan Mehrotra
+
+Tracker tracker =
whiteboard.track(MountInfoProvider.class);
+List services = tracker.getServices();
+tracker.stop();
+
+if ( services.isEmpty() )
+this.mountInfoProvider = null;
+else if ( services.size() == 1 )
+this.mountInfoProvider = services.get(0);
+else
+throw new IllegalArgumentException("Found " +
services.size() + " MountInfoProvider references, expected at most
1.");

You can also use WhiteboardUtils#getService here which hides this stuff
Chetan Mehrotra


On Tue, Aug 29, 2017 at 7:48 AM,   wrote:
> Author: rombert
> Date: Tue Aug 29 14:48:56 2017
> New Revision: 1806602
>
> URL: http://svn.apache.org/viewvc?rev=1806602&view=rev
> Log:
> OAK-6563 - Session.hasCapability(...) should reflect read-only status of 
> mounts
>
> Add optional support for checking the Mount status in 
> SessionImpl.hasCapability.
>
> Added:
> 
> jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/session/SessionImplCapabilityWithMountInfoProviderTest.java
> Modified:
> 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
> 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
> 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
>
> Modified: 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
> URL: 
> http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java?rev=1806602&r1=1806601&r2=1806602&view=diff
> ==
> --- 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
>  (original)
> +++ 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
>  Tue Aug 29 14:48:56 2017
> @@ -22,6 +22,7 @@ import static java.util.Collections.sing
>  import static 
> org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
>
>  import java.io.Closeable;
> +import java.util.List;
>  import java.util.Map;
>  import java.util.concurrent.Callable;
>  import java.util.concurrent.ScheduledExecutorService;
> @@ -61,8 +62,10 @@ import org.apache.jackrabbit.oak.jcr.ses
>  import org.apache.jackrabbit.oak.plugins.observation.CommitRateLimiter;
>  import org.apache.jackrabbit.oak.spi.gc.DelegatingGCMonitor;
>  import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
> +import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
>  import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
>  import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
> +import org.apache.jackrabbit.oak.spi.whiteboard.Tracker;
>  import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
>  import org.apache.jackrabbit.oak.stats.Clock;
>  import org.apache.jackrabbit.oak.stats.StatisticManager;
> @@ -105,6 +108,7 @@ public class RepositoryImpl implements J
>  private final Clock.Fast clock;
>  private final DelegatingGCMonitor gcMonitor = new DelegatingGCMonitor();
>  private final Registration gcMonitorRegistration;
> +private final MountInfoProvider mountInfoProvider;
>
>  /**
>   * {@link ThreadLocal} counter that keeps track of the save operations
> @@ -152,6 +156,17 @@ public class RepositoryImpl implements J
>  this.clock = new Clock.Fast(scheduledExecutor);
>  this.gcMonitorRegistration = whiteboard.register(GCMonitor.class, 
> gcMonitor, emptyMap());
>  this.fastQueryResultSize = fastQueryResultSize;
> +
> +Tracker tracker = 
> whiteboard.track(MountInfoProvider.class);
> +List services = tracker.getServices();
> +tracker.stop();
> +
> +if ( services.isEmpty() )
> +this.mountInfoProvider = null;
> +else if ( services.size() == 1 )
> +this.mountInfoProvider = services.get(0);
> +else
> +throw new IllegalArgumentException("Found " + services.size() + 
> " MountInfoProvider references, expected at most 1.");
>  }
>
>  //-< Repository 
> >---
> @@ -343,7 +358,7 @@ public class RepositoryImpl implements J
>  Map attributes, SessionDelegate delegate, int 
> observationQueueLength,
>  CommitRateLimiter commitRateLimiter) {
>  return new SessionContext(this, statisticManager, securityProvider, 
> whiteboard, attributes,
> -delegate, observationQueueLength, commitRateLimiter, 
> fastQueryResultSize);
> +delegate, observationQueueLength, commitRateLimiter, 
> mountInfoProvider, fastQueryResultSize);
>  }
>
>  /**
>
> Modified: 
> jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/S