Skip to content

Commit

Permalink
Update policy-driven-storage for runtime configuration
Browse files Browse the repository at this point in the history
Move configuration from Spring to the repository
Add REST endpoint for runtime configuration
Resolves:
  https://www.pivotaltracker.com/story/show/49059799
  https://www.pivotaltracker.com/story/show/54197412
  • Loading branch information
osmandin authored and Andrew Woods committed Aug 15, 2013
1 parent b2ebc22 commit 2972371
Show file tree
Hide file tree
Showing 48 changed files with 1,712 additions and 196 deletions.
1 change: 0 additions & 1 deletion fcrepo-auth-oauth/src/test/resources/spring-test/repo.xml
Expand Up @@ -17,6 +17,5 @@

<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>

<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />

</beans>
Expand Up @@ -19,6 +19,5 @@


<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>
<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />

</beans>
1 change: 0 additions & 1 deletion fcrepo-http-api/src/test/resources/spring-test/repo.xml
Expand Up @@ -16,6 +16,5 @@
</bean>

<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>
<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />

</beans>
1 change: 0 additions & 1 deletion fcrepo-jms/src/test/resources/spring-test/repo.xml
Expand Up @@ -17,7 +17,6 @@
</bean>

<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>
<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />


</beans>
10 changes: 1 addition & 9 deletions fcrepo-kernel/pom.xml
Expand Up @@ -42,20 +42,12 @@
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-metrics</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-storage-policy</artifactId>
<version>${project.version}</version>
</dependency>

</dependency>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<type>pom</type>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
Expand Down
4 changes: 2 additions & 2 deletions fcrepo-kernel/src/main/java/org/fcrepo/kernel/Datastream.java
Expand Up @@ -35,7 +35,7 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.fcrepo.storage.policy.PolicyDecisionPoint;
import org.fcrepo.kernel.services.policy.StoragePolicyDecisionPoint;
import org.fcrepo.kernel.exception.InvalidChecksumException;
import org.fcrepo.kernel.utils.ContentDigest;
import org.fcrepo.jcr.FedoraJcrTypes;
Expand Down Expand Up @@ -125,7 +125,7 @@ public InputStream getContent() throws RepositoryException {
*/
public void setContent(final InputStream content, final String contentType,
final URI checksum,
PolicyDecisionPoint storagePolicyDecisionPoint)
StoragePolicyDecisionPoint storagePolicyDecisionPoint)
throws RepositoryException, InvalidChecksumException {

final Node contentNode =
Expand Down
Expand Up @@ -36,10 +36,10 @@
import javax.jcr.Session;

import org.fcrepo.kernel.Datastream;
import org.fcrepo.storage.policy.PolicyDecisionPoint;
import org.fcrepo.kernel.exception.InvalidChecksumException;
import org.fcrepo.kernel.rdf.GraphProperties;
import org.fcrepo.kernel.rdf.GraphSubjects;
import org.fcrepo.kernel.services.policy.StoragePolicyDecisionPoint;
import org.fcrepo.kernel.utils.FixityResult;
import org.fcrepo.kernel.utils.JcrRdfTools;
import org.fcrepo.kernel.utils.LowLevelCacheEntry;
Expand All @@ -66,7 +66,7 @@
public class DatastreamService extends RepositoryService {

@Autowired(required = false)
PolicyDecisionPoint storagePolicyDecisionPoint;
StoragePolicyDecisionPoint storagePolicyDecisionPoint;

@Autowired
private LowLevelStorageService llStoreService;
Expand Down Expand Up @@ -311,7 +311,7 @@ public void setLlStoreService(final LowLevelStorageService llStoreService) {
*
* @param pdp
*/
public void setStoragePolicyDecisionPoint(final PolicyDecisionPoint pdp) {
public void setStoragePolicyDecisionPoint(final StoragePolicyDecisionPoint pdp) {
this.storagePolicyDecisionPoint = pdp;
}

Expand All @@ -321,9 +321,9 @@ public void setStoragePolicyDecisionPoint(final PolicyDecisionPoint pdp) {
*
* @return a PolicyDecisionPoint
*/
private PolicyDecisionPoint getStoragePolicyDecisionPoint() {
private StoragePolicyDecisionPoint getStoragePolicyDecisionPoint() {
if (storagePolicyDecisionPoint == null) {
storagePolicyDecisionPoint = new PolicyDecisionPoint();
// storagePolicyDecisionPoint = new PolicyDecisionPoint();
}

return storagePolicyDecisionPoint;
Expand Down
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fcrepo.storage.policy;
package org.fcrepo.kernel.services.policy;

import javax.jcr.Node;

Expand Down
@@ -0,0 +1,75 @@
/**
* Copyright 2013 DuraSpace, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.fcrepo.kernel.services.policy;

import javax.jcr.Node;

import java.util.List;

/**
* Service Interface implementation for managing and using org.fcrepo.kernel.services.policy.Policy
* @author osmandin
* @date Aug 14, 2013
*
*/
public interface StoragePolicyDecisionPoint {

/**
* Add a new storage policy
*
* @param p org.fcrepo.kernel.services.policy object
*/
public abstract void addPolicy(Policy p);

/**
* Given a JCR node (likely a jcr:content node), determine which storage
* policy should apply
*
* @param n
* @return
*/
public abstract String evaluatePolicies(Node n);

/**
* Remove a storage policy
*
* @param p org.fcrepo.kernel.services.policy object
*/
public abstract void removePolicy(Policy p);

/**
* Explicitly set the policies this PDP should use
*
* @param policies
*/
public abstract void setPolicies(List<Policy> policies);

/**
* @param policy
*/
public abstract boolean contains(Policy policy);

/**
* clear all policies
*/
public void removeAll();

/**
* @return policies size
*/
public abstract int size();
}

This file was deleted.

Expand Up @@ -37,10 +37,10 @@
import org.apache.commons.codec.binary.Hex;
import org.apache.poi.util.IOUtils;
import org.fcrepo.kernel.Datastream;
import org.fcrepo.storage.policy.PolicyDecisionPoint;
import org.fcrepo.kernel.services.DatastreamService;
import org.fcrepo.kernel.services.LowLevelStorageService;
import org.fcrepo.kernel.services.ObjectService;
import org.fcrepo.kernel.services.policy.StoragePolicyDecisionPoint;
import org.fcrepo.kernel.utils.ContentDigest;
import org.fcrepo.kernel.utils.FixityResult;
import org.fcrepo.kernel.utils.LowLevelCacheEntry;
Expand All @@ -54,6 +54,7 @@
import org.modeshape.jcr.api.JcrConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


public class SelfHealingIT {
Expand All @@ -67,6 +68,9 @@ public class SelfHealingIT {
private ObjectService objectService;

private LowLevelStorageService lowLevelService;

@Autowired(required = false)
StoragePolicyDecisionPoint storagePolicyDecisionPoint;

@Before
public void setLogger() {
Expand All @@ -86,7 +90,7 @@ public void setRepository() throws RepositoryException {
datastreamService = new DatastreamService();
datastreamService.setRepository(repo);
datastreamService
.setStoragePolicyDecisionPoint(new PolicyDecisionPoint());
.setStoragePolicyDecisionPoint(storagePolicyDecisionPoint);
objectService = new ObjectService();
objectService.setRepository(repo);
lowLevelService = new LowLevelStorageService();
Expand Down
Expand Up @@ -48,9 +48,9 @@
import org.fcrepo.kernel.services.DatastreamService;
import org.fcrepo.kernel.services.LowLevelStorageService;
import org.fcrepo.kernel.services.ServiceHelpers;
import org.fcrepo.storage.policy.PolicyDecisionPoint;
import org.fcrepo.kernel.rdf.GraphSubjects;
import org.fcrepo.kernel.services.functions.CheckCacheEntryFixity;
import org.fcrepo.kernel.services.policy.StoragePolicyDecisionPoint;
import org.fcrepo.jcr.FedoraJcrTypes;
import org.fcrepo.kernel.utils.FedoraTypesUtils;
import org.fcrepo.kernel.utils.FixityResult;
Expand Down Expand Up @@ -123,7 +123,7 @@ public void testCreateDatastreamNode() throws Exception {
when(mockContent.setProperty(JCR_DATA, mockBinary))
.thenReturn(mockData);
when(mockContent.getProperty(JCR_DATA)).thenReturn(mockData);
final PolicyDecisionPoint pdp = mock(PolicyDecisionPoint.class);
final StoragePolicyDecisionPoint pdp = mock(StoragePolicyDecisionPoint.class);
when(pdp.evaluatePolicies(mockNode)).thenReturn(null);
testObj.setStoragePolicyDecisionPoint(pdp);
mockStatic(FedoraTypesUtils.class);
Expand Down
3 changes: 1 addition & 2 deletions fcrepo-kernel/src/test/resources/spring-test/repo.xml
Expand Up @@ -19,10 +19,9 @@
</bean>

<context:component-scan
base-package="org.fcrepo.kernel.services"/>
base-package="org.fcrepo.kernel.services, org.fcrepo.storage.policy"/>


<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>
<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />

</beans>
1 change: 0 additions & 1 deletion fcrepo-rss/src/test/resources/spring-test/repo.xml
Expand Up @@ -22,6 +22,5 @@
<bean class="org.fcrepo.kernel.identifiers.UUIDPidMinter"/>

<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>
<bean class="org.fcrepo.storage.policy.PolicyDecisionPoint" />

</beans>

0 comments on commit 2972371

Please sign in to comment.