001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.kernel.modeshape.utils.impl; 019 020import org.fcrepo.kernel.api.utils.CacheEntry; 021import org.fcrepo.kernel.modeshape.utils.BinaryCacheEntry; 022import org.fcrepo.kernel.modeshape.utils.ProjectedCacheEntry; 023import org.modeshape.jcr.value.binary.ExternalBinaryValue; 024 025import javax.jcr.Binary; 026import javax.jcr.Property; 027import javax.jcr.RepositoryException; 028 029/** 030 * @author cabeer 031 */ 032public final class CacheEntryFactory { 033 034 /** 035 * No public constructor on utility class 036 */ 037 private CacheEntryFactory() { 038 } 039 040 /** 041 * Load a store-specific CacheEntry model 042 * @param property the property 043 * @return CacheEntry model for the property in the given repository 044 * @throws RepositoryException if repository exception occurred 045 */ 046 public static CacheEntry forProperty(final Property property) throws RepositoryException { 047 final Binary binary = property.getBinary(); 048 049 if (binary instanceof ExternalBinaryValue) { 050 return new ProjectedCacheEntry(property); 051 } 052 return new BinaryCacheEntry(property); 053 } 054}