One further thing. For testing, use dummies.
When the Component is started within the Sling OSGi container as a real bundle the real ResourceResolver will be injected for you. Does that clear up my misunderstanding of what you were asking ? Ian On 16 July 2013 09:26, Ian Boston <[email protected]> wrote: > Hi, > > There are 2 options. > > You can > use org.apache.sling.testing.resourceresolver.MockResourceResolverFactory > > which should allow you to do > this.factory = new MockResourceResolverFactory(); > > ... > > > ResourceResolver resolver = > this.factory.getAdministrativeResourceResolver(null); > > > or > > > you can use Mockito and do > > public class ResourceProviderTest { > > @Mock > ResourceResolver mockResourceResolver; > > > public ResourceProviderTest() { > MockitoAnnotation.initMocks(this); > } > > > @Test > public void testSomething() { > Resource mockResource = Mockito.mock(Resource.class); > > Mockito.when(mockResourceResolver.getResource("/test/path")).thenReturn(mockResource); > > } > > } > > > I prefer using Mockito as it gives greater control and isolation. > > Grep the code base for @Mock to see examples of Mockito usage or read the > Mockito docs. > > > Does that help ? > > Best Regards > Ian > > > > On 16 July 2013 08:58, Dishara Wijewardana <[email protected]>wrote: > >> On Tue, Jul 16, 2013 at 1:19 PM, Bertrand Delacretaz < >> [email protected] >> > wrote: >> >> > Hi, >> > >> > On Tue, Jul 16, 2013 at 9:34 AM, Dishara Wijewardana >> > <[email protected]> wrote: >> > > ....I was got stuck where to find the resolver (according to my >> > > understanding). To set the resolver through reflection, I need to get >> a >> > > real resolver reference instance.... >> > >> > Where exactly do you have that problem? >> > >> > If you can give us the URL of that problematic code, it would be much >> > easier for us to suggest solutions. >> > >> >> This is a simple Junit test class[1]. And I cannot figure out what needs >> to >> be done to obtain a existing resource resolver reference due to above >> mentioned complicatoins. >> And there currently I am using a dummy resolver implementation to pass to >> the provider to obtain a resource. As Ian mentioned we should pass an >> existing reference of a resolver. Here is the code that does this. >> >> private void readData(CassandraResourceProvider >> cassandraResourceProvider, String cf) { >> Resource resource = cassandraResourceProvider.getResource(new >> CassandraResourceResolver(), "/content/cassandra/" + cf + "/foo/bar"); >> >> } >> >> >> [1] - >> >> https://cassandra-backend-for-sling.googlecode.com/svn/trunk/main/cassandra/src/test/java/org/apache/sling/cassandra/test/data/populator/CassandraDataPopulatorTest.java >> >> >> > -Bertrand >> > >> >> >> >> -- >> Thanks >> /Dishara >> > >
