View Javadoc
1   /*
2    * Copyright (C) 2007-2012 Argeo GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.argeo.jackrabbit.unit;
17  
18  import java.net.URL;
19  
20  import javax.jcr.Repository;
21  
22  import org.apache.commons.io.FileUtils;
23  import org.apache.jackrabbit.core.RepositoryImpl;
24  import org.apache.jackrabbit.core.config.RepositoryConfig;
25  import org.argeo.jcr.unit.AbstractJcrTestCase;
26  
27  /** Factorizes configuration of an in memory transient repository */
28  public abstract class AbstractJackrabbitTestCase extends AbstractJcrTestCase {
29  	protected RepositoryImpl repositoryImpl;
30  
31  	// protected File getRepositoryFile() throws Exception {
32  	// Resource res = new ClassPathResource(
33  	// "org/argeo/jackrabbit/unit/repository-memory.xml");
34  	// return res.getFile();
35  	// }
36  
37  	public AbstractJackrabbitTestCase() {
38  		URL url = AbstractJackrabbitTestCase.class.getResource("jaas.config");
39  		assert url != null;
40  		System.setProperty("java.security.auth.login.config", url.toString());
41  	}
42  
43  	protected Repository createRepository() throws Exception {
44  		// Repository repository = new TransientRepository(getRepositoryFile(),
45  		// getHomeDir());
46  		RepositoryConfig repositoryConfig = RepositoryConfig.create(
47  				AbstractJackrabbitTestCase.class
48  						.getResourceAsStream(getRepositoryConfigResource()),
49  				getHomeDir().getAbsolutePath());
50  		RepositoryImpl repositoryImpl = RepositoryImpl.create(repositoryConfig);
51  		return repositoryImpl;
52  	}
53  
54  	protected String getRepositoryConfigResource() {
55  		return "repository-memory.xml";
56  	}
57  
58  	@Override
59  	protected void clearRepository(Repository repository) throws Exception {
60  		RepositoryImpl repositoryImpl = (RepositoryImpl) repository;
61  		if (repositoryImpl != null)
62  			repositoryImpl.shutdown();
63  		FileUtils.deleteDirectory(getHomeDir());
64  	}
65  
66  }