View Javadoc

1   /**
2    * Copyright (C) 2005-2009 Alfresco Software Limited.
3    *
4    * This file is part of the Spring Surf Extension project.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *  http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.springframework.extensions.surf.persister;
20  
21  import org.apache.commons.logging.Log;
22  import org.apache.commons.logging.LogFactory;
23  import org.dom4j.Document;
24  import org.springframework.beans.factory.BeanNameAware;
25  import org.springframework.extensions.config.WebFrameworkConfigElement;
26  import org.springframework.extensions.surf.ModelObject;
27  import org.springframework.extensions.surf.ModelObjectPersister;
28  import org.springframework.extensions.surf.ModelPersistenceContext;
29  import org.springframework.extensions.surf.ModelPersisterInfo;
30  import org.springframework.extensions.surf.WebFrameworkManager;
31  import org.springframework.extensions.surf.WebFrameworkServiceRegistry;
32  import org.springframework.extensions.surf.exception.ModelObjectPersisterException;
33  
34  /**
35   * Abstract implementation of a model object persister.
36   * 
37   * Provided to enable ease-of-extension by developers for customer
38   * object persisters.  This class serves as a foundation and really
39   * only provides essential helper functions.
40   * 
41   * Surf provides persister implementations that are largely file-based.
42   * Customizations may seek to incorporate persisters that interact with
43   * databases or Alfresco content models directly.
44   * 
45   * @see StoreObjectPersister
46   * @see CachedStoreObjectPersister
47   * 
48   * @author muzquiano
49   * @author kevinr
50   */
51  public abstract class AbstractObjectPersister implements ModelObjectPersister, BeanNameAware
52  {
53      private static Log logger = LogFactory.getLog(AbstractObjectPersister.class);
54      
55      protected static final Class[] MODELOBJECT_CLASSES = new Class[] {
56          String.class, ModelPersisterInfo.class, Document.class };    
57      
58      private WebFrameworkServiceRegistry serviceRegistry;
59      
60      private String id = null;
61      private boolean isEnabled = true;
62  
63      public AbstractObjectPersister()
64      {
65      }
66      
67      /* (non-Javadoc)
68       * @see org.springframework.beans.factory.BeanNameAware#setBeanName(java.lang.String)
69       */
70      public void setBeanName(String name)
71      {
72          this.id = name;        
73      }
74      
75      /**
76       * Sets the web framework service registry.
77       * 
78       * @param serviceRegistry the service registry
79       */
80      public void setServiceRegistry(WebFrameworkServiceRegistry serviceRegistry)
81      {
82          this.serviceRegistry = serviceRegistry;
83      }
84      
85      /**
86       * Gets the service registry.
87       * 
88       * @return the service registry
89       */
90      public WebFrameworkServiceRegistry getServiceRegistry()
91      {
92          return this.serviceRegistry;
93      }
94      
95      /**
96       * Gets the configuration.
97       * 
98       * @return the configuration
99       */
100     protected WebFrameworkConfigElement getWebFrameworkConfiguration()
101     {
102         return getServiceRegistry().getWebFrameworkConfiguration();
103     }
104     
105     /**
106      * Gets the web framework manager.
107      * 
108      * @return the web framework manager
109      */
110     protected WebFrameworkManager getWebFrameworkManager()
111     {
112         return getServiceRegistry().getWebFrameworkManager();
113     }
114     
115     /* (non-Javadoc)
116      * @see org.alfresco.web.framework.ModelObjectPersister#init(org.alfresco.web.framework.ModelPersistenceContext)
117      */
118     public void init(ModelPersistenceContext context) 
119     {
120         // no default initialization
121     }
122     
123     /* (non-Javadoc)
124      * @see org.alfresco.web.framework.ModelObjectPersister#reset()
125      */
126     public void reset()
127     {
128         // no default reset behaviour
129     }
130     
131     /* (non-Javadoc)
132      * @see org.alfresco.web.framework.ModelObjectPersister#removeObject(org.alfresco.web.framework.ModelPersistenceContext, org.alfresco.web.framework.ModelObject)
133      */
134     public boolean removeObject(ModelPersistenceContext context, ModelObject object)
135         throws ModelObjectPersisterException    
136     {
137         return removeObject(context, object.getTypeId(), object.getId());
138     }
139     
140     /* (non-Javadoc)
141      * @see org.alfresco.web.framework.ModelObjectPersister#hasObject(org.alfresco.web.framework.ModelPersistenceContext, org.alfresco.web.framework.ModelObject)
142      */
143     public boolean hasObject(ModelPersistenceContext context, ModelObject object)
144          throws ModelObjectPersisterException
145     {
146         return hasObject(context, object.getTypeId(), object.getId());
147     }
148     
149     /* (non-Javadoc)
150      * @see org.alfresco.web.framework.ModelObjectPersister#getId()
151      */
152     public String getId()
153     {
154         return this.id;
155     }
156     
157     /* (non-Javadoc)
158      * @see org.alfresco.web.framework.ModelObjectPersister#isEnabled()
159      */
160     public boolean isEnabled()
161     {
162         return this.isEnabled;
163     }
164     
165     /**
166      * Disables the persister
167      */
168     protected void disable()
169     {
170         this.isEnabled = false;
171     }
172 }