hydra-head 3.1.2 → 3.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.textile CHANGED
@@ -1,5 +1,9 @@
1
+ h3. 3.1.3
2
+ * Make FileAssetController easily overridden
3
+ * Update hydra-jetty, to support test and development fedora
4
+
1
5
  h3. 3.1.2
2
- * Make asset controller easily overridden
6
+ * Make AssetController easily overridden
3
7
 
4
8
 
5
9
  h3. 3.1.1
@@ -1,172 +1,3 @@
1
1
  class FileAssetsController < ApplicationController
2
-
3
- include Hydra::AccessControlsEnforcement
4
- include Hydra::AssetsControllerHelper
5
- include Hydra::FileAssetsHelper
6
- include Hydra::RepositoryController
7
- include MediaShelf::ActiveFedoraHelper
8
- include Blacklight::SolrHelper
9
-
10
- before_filter :require_solr, :only=>[:index, :create, :show, :destroy]
11
-
12
- # need to include this after the :require_solr/fedora before filters because of the before filter that the workflow provides.
13
- include Hydra::SubmissionWorkflow
14
-
15
- prepend_before_filter :sanitize_update_params
16
-
17
- helper :hydra_uploader
18
-
19
- def index
20
- =begin
21
- Removed from file_assets/index.html.haml
22
- -# javascript_includes << infusion_javascripts(:inline_edit, :extras=>[:inline_editor_integrations], :debug=>true, :render_html=>false)
23
- -# javascript_includes << ['../infusion/framework/core/js/ProgressiveEnhancement.js', '../infusion/InfusionAll.js', {:cache=>true, :plugin=>"fluid-infusion"}]
24
-
25
- - javascript_includes << "jquery.jeditable.mini"
26
- - javascript_includes << 'custom'
27
- - javascript_includes << "catalog/edit"
28
- - javascript_includes << "jquery.hydraMetadata.js"
29
- - javascript_includes << "/plugin_assets/fluid-infusion/infusion/components/undo/js/Undo.js"
30
- - javascript_includes << "jquery.form.js"
31
-
32
-
33
-
34
-
35
- =end
36
-
37
- if params[:layout] == "false"
38
- # action = "index_embedded"
39
- layout = false
40
- end
41
-
42
- if params[:asset_id].nil?
43
- # @solr_result = ActiveFedora::SolrService.instance.conn.query('has_model_field:info\:fedora/afmodel\:FileAsset', @search_params)
44
- @solr_result = FileAsset.find_by_solr(:all)
45
- else
46
- container_uri = "info:fedora/#{params[:asset_id]}"
47
- escaped_uri = container_uri.gsub(/(:)/, '\\:')
48
- extra_controller_params = {:q=>"is_part_of_s:#{escaped_uri}"}
49
- @response, @document_list = get_search_results( extra_controller_params )
50
-
51
- # Including this line so permissions tests can be run against the container
52
- @container_response, @document = get_solr_response_for_doc_id(params[:asset_id])
53
-
54
- # Including these lines for backwards compatibility (until we can use Rails3 callbacks)
55
- @container = ActiveFedora::Base.load_instance(params[:asset_id])
56
- @solr_result = @container.file_objects(:response_format=>:solr)
57
- end
58
-
59
- # Load permissions_solr_doc based on params[:asset_id]
60
- load_permissions_from_solr(params[:asset_id])
61
-
62
- render :action=>params[:action], :layout=>layout
63
- end
64
-
65
- def new
66
- =begin
67
- From file_assets/_new.html.haml
68
- =render :partial=>"fluid_infusion/uploader"
69
- =render :partial=>"fluid_infusion/uploader_js"
70
- =end
71
- render :partial=>"new", :layout=>false
72
- end
73
-
74
- # Creates and Saves a File Asset to contain the the Uploaded file
75
- # If container_id is provided:
76
- # * the File Asset will use RELS-EXT to assert that it's a part of the specified container
77
- # * the method will redirect to the container object's edit view after saving
78
- def create
79
- if params.has_key?(:number_of_files) and params[:number_of_files] != "0"
80
- return redirect_to({:controller => "catalog", :action => "edit", :id => params[:id], :wf_step => :files, :number_of_files => params[:number_of_files]})
81
- elsif params.has_key?(:number_of_files) and params[:number_of_files] == "0"
82
- return redirect_to( {:controller => "catalog", :action => "edit", :id => params[:id]}.merge(params_for_next_step_in_wokflow) )
83
- end
84
-
85
- if params.has_key?(:Filedata)
86
- @file_assets = create_and_save_file_assets_from_params
87
- notice = []
88
- @file_assets.each do |file_asset|
89
- apply_depositor_metadata(file_asset)
90
-
91
- notice << "The file #{file_asset.label} has been saved in <a href=\"#{asset_url(file_asset.pid)}\">#{file_asset.pid}</a>."
92
-
93
- if !params[:container_id].nil?
94
- associate_file_asset_with_container(file_asset,'info:fedora/' + params[:container_id])
95
- end
96
-
97
- ## Apply any posted file metadata
98
- unless params[:asset].nil?
99
- logger.debug("applying submitted file metadata: #{@sanitized_params.inspect}")
100
- apply_file_metadata
101
- end
102
- # If redirect_params has not been set, use {:action=>:index}
103
- logger.debug "Created #{file_asset.pid}."
104
- end
105
- flash[:notice] = notice.join("<br/>") unless notice.blank?
106
- else
107
- flash[:notice] = "You must specify a file to upload."
108
- end
109
-
110
- unless params[:container_id].nil?
111
- redirect_params = {:controller => "catalog", :action => "edit", :id => params[:container_id]}.merge(params_for_next_step_in_wokflow)
112
- end
113
- redirect_params ||= {:controller => "catalog", :action => "index"}
114
-
115
- redirect_to redirect_params
116
- end
117
-
118
- # Common destroy method for all AssetsControllers
119
- def destroy
120
- # The correct implementation, with garbage collection:
121
- # if params.has_key?(:container_id)
122
- # container = ActiveFedora::Base.load_instance(params[:container_id])
123
- # container.file_objects_remove(params[:id])
124
- # FileAsset.garbage_collect(params[:id])
125
- # else
126
-
127
- # The dirty implementation (leaves relationship in container object, deletes regardless of whether the file object has other containers)
128
- ActiveFedora::Base.load_instance(params[:id]).delete
129
-
130
- flash[:notice] = "Deleted #{params[:id]} from #{params[:container_id]}."
131
-
132
- if !params[:container_id].nil?
133
- redirect_params = {:controller => "catalog", :action => "edit", :id => params[:container_id], :anchor => "file_assets"}
134
- end
135
- redirect_params ||= {:action => 'index', :q => nil , :f => nil}
136
-
137
- redirect_to redirect_params
138
-
139
- end
140
-
141
-
142
- def show
143
- @file_asset = FileAsset.find(params[:id])
144
- if (@file_asset.nil?)
145
- logger.warn("No such file asset: " + params[:id])
146
- flash[:notice]= "No such file asset."
147
- redirect_to(:action => 'index', :q => nil , :f => nil)
148
- else
149
- # get array of parent (container) objects for this FileAsset
150
- @id_array = @file_asset.containers(:response_format => :id_array)
151
- @downloadable = false
152
- # A FileAsset is downloadable iff the user has read or higher access to a parent
153
- @id_array.each do |pid|
154
- @response, @permissions_solr_document = get_solr_response_for_doc_id(pid)
155
- if reader?
156
- @downloadable = true
157
- break
158
- end
159
- end
160
-
161
- if @downloadable
162
- if @file_asset.datastreams_in_memory.include?("DS1")
163
- send_datastream @file_asset.datastreams_in_memory["DS1"]
164
- end
165
- else
166
- flash[:notice]= "You do not have sufficient access privileges to download this document, which has been marked private."
167
- redirect_to(:action => 'index', :q => nil , :f => nil)
168
- end
169
- end
170
- end
171
-
2
+ include Hydra::FileAssets
172
3
  end
@@ -0,0 +1,1021 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <server xmlns="http://www.fedora.info/definitions/1/0/config/" class="org.fcrepo.server.BasicServer">
3
+ <param name="repositoryName" value="Fedora Repository">
4
+ <comment>Defines a human readable name for the Fedora server; default is
5
+ Fedora Repository.</comment>
6
+ </param>
7
+ <param name="adminEmailList" value="bob@example.org sally@example.org">
8
+ <comment>Defines one or more email addresses for server administrators;
9
+ list is space delimited.</comment>
10
+ </param>
11
+ <param name="fedoraServerPort" value="8080">
12
+ <comment>Defines the port number on which the Fedora server runs;
13
+ default is 8080.</comment>
14
+ </param>
15
+ <param name="fedoraShutdownPort" value="8005">
16
+ <comment>Defines the port number used to shutdown the Fedora sever;
17
+ default is 8005.</comment>
18
+ </param>
19
+ <param name="fedoraRedirectPort" value="8443">
20
+ <comment>Defines the redirect port of the Fedora sever; default is 8443.</comment>
21
+ </param>
22
+ <param name="fedoraServerHost" value="localhost">
23
+ <comment>Defines the host name for the Fedora server, as seen from the
24
+ outside world.</comment>
25
+ </param>
26
+ <param name="fedoraAppServerContext" value="fedora-test">
27
+ <comment>Defines the context name for the Fedora server within the
28
+ application server. If set to eg &quot;myfedora&quot; the URL for Fedora will result
29
+ in http[s]://fedoraServerHost[:fedoraServerPort]/myfedora.</comment>
30
+ </param>
31
+ <param name="datastreamExpirationLimit" value="300">
32
+ <comment>Controls the size of the datastream mediation hash by removing
33
+ entries outside the specified threshold. The value is specified in
34
+ seconds. Note this value must be greater than the limit specified for
35
+ the datastreamMediationLimit.</comment>
36
+ </param>
37
+ <param name="datastreamMediationLimit" value="5000">
38
+ <comment>Determines the time interval in which external mechanisms must
39
+ respond to requests by the Fedora server. The value is specified in
40
+ milliseconds. The value specified should be set high enough to allow
41
+ for an average response time from any single external mechanisms. Note
42
+ this value must be less than the limit specified for the
43
+ datastreamExpirationLimit.</comment>
44
+ </param>
45
+ <param name="datastreamContentDispositionInlineEnabled" value="true">
46
+ <comment>determines if a content-disposition header specifying &quot;inline&quot; and
47
+ a filename is added to the response for the REST API getDatastreamDissemination
48
+ when no query parameter of download=true is specified. Browser support for
49
+ recognising a filename in case of &quot;inline&quot; content disposition is patchy,
50
+ so you may wish to disable the content disposition header in this case and only
51
+ have it provided when download=true is specified, in which case the content disposition
52
+ of &quot;attachment&quot; will be used; which is generally supported.</comment>
53
+ </param>
54
+ <param name="datastreamFilenameSource" value="rels label id">
55
+ <comment>determines the source of the filename generated when download=true
56
+ on a datastream dissemination. Value is space separated list of label: use the datastream label;
57
+ id: use the datastream ID; rels: use the value defined in RELS-INT. Each
58
+ source is checked in order, and the first containing a value is used. Omit
59
+ any of the sources if that source is never to be used. If no sources are to be used,
60
+ and just the default filename and extension below are to be used, specify &quot; &quot;.</comment>
61
+ </param>
62
+ <param name="datastreamExtensionMappingLabel" value="always">
63
+ <comment>Controls filename extension mapping when the datastream label is used
64
+ as the source of the filename. Values are always: always generate an extension
65
+ based on the MIMETYPE, using the default extension if none can be determined;
66
+ ifmissing: generate an extension if the filename obtained from the source does not
67
+ already contain one (again returning the default if there is no MIMETYPE-to-extension
68
+ mapping is found); never: never generate an extension, use the filename from the source
69
+ as-is</comment>
70
+ </param>
71
+ <param name="datastreamExtensionMappingId" value="ifmissing">
72
+ <comment>Controls filename extension mapping when the datastream ID is used
73
+ as the source of the filename. Values are as above.</comment>
74
+ </param>
75
+ <param name="datastreamExtensionMappingRels" value="never">
76
+ <comment>Controls filename extension mapping when RELS-INT is used
77
+ as the source of the filename. Values are as above.</comment>
78
+ </param>
79
+ <param name="datastreamExtensionMappingDefault" value="never">
80
+ <comment>Controls filename extension mapping when no filename can be determined from
81
+ the sources listed in datastreamFilenameSource. Values are always: always generate an extension
82
+ based on the MIMETYPE (using the default if no appropriate mapping is specified);
83
+ never: never generate an extension.</comment>
84
+ </param>
85
+ <param name="datastreamDefaultFilename" value="download">
86
+ <comment>Filename to use for datastream downloads when none can be determined from the
87
+ sources listed in datastreamFilenameSource.</comment>
88
+ </param>
89
+ <param name="datastreamDefaultExtension" value="bin">
90
+ <comment>Extension to use when none can be determined from mappings</comment>
91
+ </param>
92
+ <param name="datastreamExtensionMappingSource" value="mime-to-extensions.xml">
93
+ <comment>Source of mappings from MIMETYPE to file extension</comment>
94
+ </param>
95
+ <param name="httpClientTimeoutSecs" value="20">
96
+ <comment>Number of seconds Fedora http client will wait for a connection before timing
97
+ out.</comment>
98
+ </param>
99
+ <param name="httpClientSocketTimeoutSecs" value="120">
100
+ <comment>Number of seconds Fedora http client will wait for data coming across an
101
+ established http connection.</comment>
102
+ </param>
103
+ <param name="httpClientMaxConnectionsPerHost" value="5">
104
+ <comment>Maximum number of Fedora http client connections allowed to a given host.</comment>
105
+ </param>
106
+ <param name="httpClientMaxTotalConnections" value="5">
107
+ <comment>Maximum number of total Fedora http client connections allowed at once.</comment>
108
+ </param>
109
+ <param name="httpClientFollowRedirects" value="true">
110
+ <comment>Should the Fedora http client follow redirects?</comment>
111
+ </param>
112
+ <param name="httpClientMaxFollowRedirects" value="3">
113
+ <comment>Maximun number of redirects the Fedora http client will follow (only if
114
+ httpClientFollowRedirects is set to true.)</comment>
115
+ </param>
116
+ <param name="httpClientUserAgent" value="Fedora">
117
+ <comment>The value to be set for the User-Agent HTTP request header.</comment>
118
+ </param>
119
+ <module role="org.fcrepo.server.storage.lowlevel.ILowlevelStorage" class="org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule">
120
+ </module>
121
+ <module role="org.fcrepo.server.security.Authorization" class="org.fcrepo.server.security.DefaultAuthorization">
122
+ <comment>Builds and manages Fedora's authorization structure.</comment>
123
+ <param name="REPOSITORY-POLICIES-DIRECTORY" value="data/fedora-xacml-policies/repository-policies" isFilePath="true"/>
124
+ <param name="REPOSITORY-POLICY-GUITOOL-POLICIES-DIRECTORY" value="data/fedora-xacml-policies/repository-policies-generated-by-policyguitool" isFilePath="true">
125
+ <comment>This parameter is for future use.</comment>
126
+ </param>
127
+ <param name="XACML-COMBINING-ALGORITHM" value="com.sun.xacml.combine.OrderedDenyOverridesPolicyAlg"/>
128
+ <param name="ENFORCE-MODE" value="permit-all-requests"/>
129
+ <param name="POLICY-SCHEMA-PATH" value="xsd/cs-xacml-schema-policy-01.xsd"/>
130
+ <param name="VALIDATE-REPOSITORY-POLICIES" value="true"/>
131
+ <param name="VALIDATE-OBJECT-POLICIES-FROM-FILE" value="false"/>
132
+ <param name="VALIDATE-OBJECT-POLICIES-FROM-DATASTREAM" value="false"/>
133
+ </module>
134
+ <module role="org.fcrepo.server.security.BackendSecurity" class="org.fcrepo.server.security.DefaultBackendSecurity">
135
+ <comment>Description: Interface to the backend service security
136
+ configuration. This module initializes backend service security
137
+ information in the server by parsing the beSecurity configuration file.
138
+ This file is located in the distribution in
139
+ $FEDORA_HOME/dist/server/config/beSecurity.xml. The configuration file
140
+ is read once at server startup.</comment>
141
+ <param name="beSecurity_validation" value="false">
142
+ <comment>Controls whether beSecurity config file is validated
143
+ against the beSecurityDescription schema. The default is
144
+ &quot;false&quot;. Valid values are &quot;true&quot; or
145
+ &quot;false&quot;.</comment>
146
+ </param>
147
+ <param name="beSecurity_char_encoding" value="utf-8">
148
+ <comment>The character encoding used for the beSecurity
149
+ configuration file. The default is &quot;utf-8&quot;. The value
150
+ specified must correspond to the character encoding used in the
151
+ beSecurity configuration file.</comment>
152
+ </param>
153
+ </module>
154
+ <module role="org.fcrepo.server.storage.DOManager" class="org.fcrepo.server.storage.DefaultDOManager">
155
+ <comment>The interface to the storage subsystem. This provides
156
+ context-appropriate DOReaders and DOWriters for reflecting on and
157
+ writing to the objects stored in the repository. It also provides
158
+ methods for reflecting on the contents of the repository as a whole..</comment>
159
+ <param name="pidNamespace" value="hydrangea">
160
+ <comment>This is the namespace id for pids of newly-created objects.
161
+ This should be unique for a repository. It can be from 1 to 17
162
+ characters, and may only contain A-Z, a-z, 0-9, &apos;.&apos;, or &apos;-&apos; (dash).</comment>
163
+ </param>
164
+ <param name="storagePool" value="localDerbyPool">
165
+ <comment>The named connection pool from which read/write database
166
+ connections are to be provided for the storage subsystem (see the
167
+ ConnectionPoolManager module). Default is the default provided by the
168
+ ConnectionPoolManager.</comment>
169
+ </param>
170
+ <param name="storageCharacterEncoding" value="UTF-8">
171
+ <comment>If the serialization format is text-based, this is the
172
+ character encoding that should be used. Default is UTF-8.</comment>
173
+ </param>
174
+ <param name="defaultExportFormat" value="info:fedora/fedora-system:FOXML-1.1"/>
175
+ <param name="defaultDCControlGroup" value="X">
176
+ <comment>The control group to use for the system-generated DC datastream
177
+ if no DC datastream is present on ingest. Must be &quot;X&quot; or &quot;M&quot;.</comment>
178
+ </param>
179
+ <param name="defaultRELSControlGroup" value="X">
180
+ <comment>The control group to use for system-generated RELS-EXT and
181
+ RELS-INT datastreams where these are not already present when
182
+ adding relationships via addRelationship. Must be &quot;X&quot; or &quot;M&quot;.</comment>
183
+ </param>
184
+ <param name="gSearchRESTURL" value="http://localhost:8080/fedoragsearch/rest">
185
+ <comment>The REST endpoint of the Fedora Generic Search service.
186
+ This parameter is only required if GSearchDOManager is
187
+ used.</comment>
188
+ </param>
189
+ <param name="gSearchUsername" value="exampleUsername">
190
+ <comment>The username for accessing the REST endpoint of the
191
+ Fedora Generic Search service. This parameter is only required if
192
+ GSearchDOManager is used, and the service requires
193
+ authentication.</comment>
194
+ </param>
195
+ <param name="gSearchPassword" value="examplePassword">
196
+ <comment>The associated password for accessing the REST endpoint
197
+ of the Fedora Generic Search service. This parameter is only
198
+ required if GSearchDOManager is used, and the service requires
199
+ authentication.</comment>
200
+ </param>
201
+ </module>
202
+ <module role="org.fcrepo.server.management.Management" class="org.fcrepo.server.management.ManagementModule">
203
+ <comment>The management subsystem. This implements the methods necessary
204
+ to fulfill API-M requests without regard to:
205
+ - how the service is exposed
206
+ - how bytestreams and java types might be marshalled/demarshalled over the wire
207
+ - how the storage subsystem is implemented.</comment>
208
+ <param name="decorator1" value="org.fcrepo.server.messaging.NotificationInvocationHandler"/>
209
+ <param name="autoChecksum" value="false">
210
+ <comment>Controls whether a checksum is automatically computed for
211
+ every datastream as the datastream is added to the repository. This
212
+ will allow the integrity of datastream contents to be periodically
213
+ checked to insure the object is not corrupted.</comment>
214
+ </param>
215
+ <param name="checksumAlgorithm" value="MD5">
216
+ <comment>Specifies which checksumming algorithm is to be used when
217
+ automatically computing checksums as specified by the above
218
+ parameter. Valid values are: MD5 SHA-1 SHA-256 SHA-384 SHA-512.</comment>
219
+ </param>
220
+ <param name="purgeDelayInMillis" value="60000">
221
+ <comment>Optional, default is 60000 (1 minute).
222
+ This specifies the amount of time between checks to remove
223
+ temporary files uploaded via the API-M upload interface. During
224
+ each check, old files whose age exceeds uploadStorageMinutes
225
+ will be removed.</comment>
226
+ </param>
227
+ <param name="uploadStorageMinutes" value="5">
228
+ <comment>Optional, default is 5.
229
+ This specifies the minimum amount of time that each uploaded
230
+ file should be kept in temporary storage.</comment>
231
+ </param>
232
+ </module>
233
+ <module role="org.fcrepo.server.access.Access" class="org.fcrepo.server.access.DefaultAccess">
234
+ <comment>Description: The access subsystem. This implements the methods
235
+ necessary to fulfill API-A requests without regard to:
236
+ - how the service is exposed
237
+ - how bytestreams and java types might be marshalled/demarshalled
238
+ over the wire.</comment>
239
+ <param name="doMediateDatastreams" value="false">
240
+ <comment>A boolean switch indicating whether Datastream Mediation is
241
+ activated or not. Datastream Mediation is required if using basic
242
+ authentication for API-A. When basic authentication is enabled for
243
+ API-A, backend services used by custom disseminations may or may not be
244
+ capable of authenticating with the Fedora server. Datastream mediation
245
+ coupled with the backend service configuration information in the
246
+ beSecurity.xml file enables the Fedora server to determine which backend
247
+ services are required to authenticate and which ones are allowed to
248
+ connect without authentication. Datastream mediation provides additional
249
+ repository security by not exposing the physical location of Referenced
250
+ Content datastreams to external mechanisms(services). Instead of
251
+ exposing the actual physical location of Referenced Content datastreams,
252
+ Datastream Mediation functions as a proxy requiring all external
253
+ services to communicate through the Fedora server to resolve the
254
+ location of Referenced Content datastreams.
255
+
256
+ IMPORTANT: For Datastream Mediation to function, the Fedora server must
257
+ be internet accessible using the configured name for fedoraServerHost
258
+ and fedoraServerPort. For example, using the default fedoraServerHost
259
+ value of &quot;localhost&quot; will not work if you have remote backend services
260
+ since the hostname of &quot;localhost&quot; will not be resolvable as the Fedora
261
+ server by the remote backend services. This requirement can be difficult
262
+ to satisfy if the Fedora server is located behind a firewall and you do
263
+ not have ready access to the firewall&apos;s configuration to enable the
264
+ required access. If the Fedora server is behind a firewall and you have
265
+ no access to the firewall&apos;s configuration, you are limited to keeping
266
+ Datastream Mediation turned off. Note that this will also prevent you
267
+ from using basic authentication with API-A. The default value of
268
+ doMediateDatastreams is false.</comment>
269
+ </param>
270
+ </module>
271
+ <module role="org.fcrepo.server.access.DynamicAccess" class="org.fcrepo.server.access.DynamicAccessModule">
272
+ <comment>The dynamic behavior module for the access subsystem. This
273
+ implements the methods necessary to fulfill API-A requests without
274
+ regard to:
275
+ - dynamically associating a default behavior definition and mechanism with objects
276
+ - (Future) dynamically associating other behavior definitions and mechanisms
277
+ with objects
278
+ - running disseminations of dynamic behaviors</comment>
279
+ <param name="fedora-system:1" value="org.fcrepo.server.access.internalservices.Bootstrap">
280
+ <comment>The interface that defines the methods of the bootstrap
281
+ disseminator. These methods are &quot;built-in&quot; to the Fedora system, and
282
+ are dynamically associated with every behavior definition and
283
+ behavior mechanism object.</comment>
284
+ </param>
285
+ <param name="fedora-system:2" value="org.fcrepo.server.access.internalservices.BootstrapImpl">
286
+ <comment>The class that implements the methods of the bootstrap
287
+ disseminator. These method implementations are &quot;built-in&quot; to the
288
+ Fedora system, and are dynamically associated with every behavior
289
+ definition and behavior mechanism object. This class can be thought
290
+ of as implementing an &quot;internal service&quot; whereas other disseminators
291
+ use external services (described by WSDL) to do their work.</comment>
292
+ </param>
293
+ <param name="fedora-system:3" value="org.fcrepo.server.access.defaultdisseminator.DefaultDisseminator">
294
+ <comment>The interface that defines the methods of the default
295
+ disseminator. These methods are &quot;built-in&quot; to the Fedora system, and
296
+ are dynamically associated with every object.</comment>
297
+ </param>
298
+ <param name="fedora-system:4" value="org.fcrepo.server.access.defaultdisseminator.DefaultDisseminatorImpl">
299
+ <comment>The class that implements the methods of the default
300
+ disseminator. These method implementations are &quot;built-in&quot; to the
301
+ Fedora system, and are dynamically associated with every object.
302
+ This class can be though of as implementing an &quot;internal service&quot;
303
+ whereas other disseminators use external services (described by
304
+ WSDL) to do their work.</comment>
305
+ </param>
306
+ </module>
307
+ <module role="org.fcrepo.server.search.FieldSearch" class="org.fcrepo.server.search.FieldSearchSQLModule">
308
+ <comment>Supports the API-A simpleSearch and advancedSearch methods.</comment>
309
+ <param name="maxResults" value="100">
310
+ <comment>(required, must be &gt; 0)
311
+ The maximum number of records to
312
+ return as the result of a search. Even if a client requests more
313
+ results at a time, this is the cutoff value.</comment>
314
+ </param>
315
+ <param name="maxSecondsPerSession" value="500">
316
+ <comment>(required, must be &gt; 0)
317
+ The maximum number of seconds that the server guarantees subsequent
318
+ search results may be obtained. This is only used in cases where the
319
+ number of results is greater than maxResults (as specified by the
320
+ server [above] or the client [in the search request]).</comment>
321
+ </param>
322
+ <param name="connectionPool" value="localDerbyPool">
323
+ <comment>(optional) To make unspecified, comment out or delete the
324
+ whole param line as opposed to using an empty string,
325
+ default=ConnectionPoolManager&apos;s default) The connectionPool
326
+ providing the connection to the database to be used. Warning: When
327
+ setting these values, keep in mind that while a session is not timed
328
+ out (maxSecondsPerSession seconds haven&apos;t elapsed, and not all
329
+ results have been requested), a connection from the pool is tied up.
330
+ Therefore, the connectionPool should be at least of size n, large
331
+ enough to accomodate n simultaneous search sessions. The longer
332
+ maxSecondsPerSession is, the more chance you have of tying up all
333
+ available connections from the pool. Therefore, keep
334
+ maxSecondsPerSession fairly low, but still reasonable for an
335
+ automated program or user to serially get a long list of results,
336
+ and make sure you have a connectionPool large enough to accomodate
337
+ your users.</comment>
338
+ </param>
339
+ <param name="indexDCFields" value="true">
340
+ <comment>(optional, default is true) Whether the content of the DC
341
+ datastream should be examined and the contents indexed, for each object.
342
+ You may wish to save time and space by disabling DC field indexing,
343
+ particularly if you have an external search service (such as Fedora
344
+ Generic Search) that already fulfills this need.
345
+ Note: If you change this value on a Fedora repository that has been
346
+ running for some time, you will need to perform a SQL rebuild using the
347
+ Fedora Rebuilder tool if you want to change objects that have already
348
+ been ingested.</comment>
349
+ </param>
350
+ </module>
351
+ <module role="org.fcrepo.server.resourceIndex.ResourceIndex" class="org.fcrepo.server.resourceIndex.ResourceIndexModule">
352
+ <comment>Supports the ResourceIndex.</comment>
353
+ <param name="level" value="0">
354
+ <comment>(required)
355
+ Index level. Currently, only 0, and 1 are supported levels.
356
+ 0 = off and 1 = on.
357
+ WARNING: changing the level (except to 0) requires
358
+ running the Resource Index Rebuilder.</comment>
359
+ </param>
360
+ <param name="datastore" value="localMulgaraTriplestore">
361
+ <comment>(required)
362
+ Name of the triplestore to use. WARNING: changing the
363
+ triplestore running the Resource Index Rebuilder.</comment>
364
+ </param>
365
+ <param name="syncUpdates" value="false">
366
+ <comment>(optional, default is false)
367
+ Whether to flush the triple buffer before
368
+ returning from object modification operations.
369
+ Specifying this as true will ensure that RI queries
370
+ immediately reflect the latest triples.
371
+ Specifying false will not provide this guarantee,
372
+ but can significantly reduce roundtrip time for
373
+ API-M operations (depending on the triplestore
374
+ implementation).</comment>
375
+ </param>
376
+ <param name="alias:test" value="http://example.org/terms#">
377
+ <comment>(optional) Aliases that can be used for queries. The param
378
+ name of an alias starts with the string &quot;alias:&quot; and is followed by
379
+ the name of the alias (shortcut) for the value, which is a URI
380
+ prefix. For example: name=&quot;alias:test&quot;
381
+ value=&quot;http://example.org/terms#&quot; will allow a query to use
382
+ test:apple instead of http://example.org/terms#apple</comment>
383
+ </param>
384
+ </module>
385
+ <module role="org.fcrepo.oai.OAIProvider" class="org.fcrepo.server.oai.FedoraOAIProviderModule">
386
+ <comment>Description: Exposes the repository for OAI harvesters.</comment>
387
+ <param name="repositoryName" value="Your Fedora Repository Name Here"/>
388
+ <param name="repositoryDomainName" value="example.org"/>
389
+ <param name="adminEmails" value="oai-admin@example.org bob@example.org"/>
390
+ <param name="friends" value="http://arXiv.org/oai2 http://memory.loc.gov/cgi-bin/oai2_0"/>
391
+ <param name="maxRecords" value="100"/>
392
+ <param name="maxHeaders" value="100"/>
393
+ </module>
394
+ <module role="org.fcrepo.server.storage.translation.DOTranslator" class="org.fcrepo.server.storage.translation.DOTranslatorModule">
395
+ <comment>Supports translation from DigitalObject to a stream of some
396
+ format, and vice-versa. The parameters below specify
397
+ serializer/deserializer classes to be used for a given format. Those
398
+ classes must implement the DOSerializer/DODeserializer interfaces.</comment>
399
+ <param name="serializer_info:fedora/fedora-system:METSFedoraExt-1.1" value="org.fcrepo.server.storage.translation.METSFedoraExt1_1DOSerializer"/>
400
+ <param name="deserializer_info:fedora/fedora-system:METSFedoraExt-1.1" value="org.fcrepo.server.storage.translation.METSFedoraExt1_1DODeserializer"/>
401
+ <param name="serializer_info:fedora/fedora-system:METSFedoraExt-1.0" value="org.fcrepo.server.storage.translation.METSFedoraExt1_0DOSerializer"/>
402
+ <param name="deserializer_info:fedora/fedora-system:METSFedoraExt-1.0" value="org.fcrepo.server.storage.translation.METSFedoraExt1_0DODeserializer"/>
403
+ <param name="serializer_info:fedora/fedora-system:FOXML-1.1" value="org.fcrepo.server.storage.translation.FOXML1_1DOSerializer"/>
404
+ <param name="deserializer_info:fedora/fedora-system:FOXML-1.1" value="org.fcrepo.server.storage.translation.FOXML1_1DODeserializer"/>
405
+ <param name="serializer_info:fedora/fedora-system:FOXML-1.0" value="org.fcrepo.server.storage.translation.FOXML1_0DOSerializer"/>
406
+ <param name="deserializer_info:fedora/fedora-system:FOXML-1.0" value="org.fcrepo.server.storage.translation.FOXML1_0DODeserializer"/>
407
+ <param name="serializer_info:fedora/fedora-system:ATOM-1.1" value="org.fcrepo.server.storage.translation.Atom1_1DOSerializer"/>
408
+ <param name="deserializer_info:fedora/fedora-system:ATOM-1.1" value="org.fcrepo.server.storage.translation.Atom1_1DODeserializer"/>
409
+ <param name="serializer_info:fedora/fedora-system:ATOMZip-1.1" value="org.fcrepo.server.storage.translation.AtomZip1_1DOSerializer"/>
410
+ <param name="deserializer_info:fedora/fedora-system:ATOMZip-1.1" value="org.fcrepo.server.storage.translation.AtomZip1_1DODeserializer"/>
411
+ </module>
412
+ <module role="org.fcrepo.server.management.PIDGenerator" class="org.fcrepo.server.management.BasicPIDGenerator">
413
+ <comment>The pid generator.</comment>
414
+ <param name="pidgen_log_dir" value="pidgen"/>
415
+ </module>
416
+ <module role="org.fcrepo.server.messaging.Messaging" class="org.fcrepo.server.messaging.MessagingModule">
417
+ <comment>Fedora's Java Messaging Service (JMS) Module</comment>
418
+ <param name="enabled" value="false"/>
419
+ <param name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
420
+ <param name="java.naming.provider.url" value="vm:(broker:(tcp://localhost:61616))"/>
421
+ <param name="datastore1" value="apimUpdateMessages">
422
+ <comment>A datastore representing a JMS Destination for APIM events which update the repository</comment>
423
+ </param>
424
+ <param name="datastore2" value="apimAccessMessages">
425
+ <comment>A datastore representing a JMS Destination for APIM events which do not update the repository</comment>
426
+ </param>
427
+ </module>
428
+ <module role="org.fcrepo.server.storage.ConnectionPoolManager" class="org.fcrepo.server.storage.ConnectionPoolManagerImpl">
429
+ <comment>This module facilitates obtaining ConnectionPools</comment>
430
+ <param name="defaultPoolName" value="localDerbyPool"/>
431
+ <param name="poolNames" value="localDerbyPool"/>
432
+ </module>
433
+ <module role="org.fcrepo.server.validation.DOValidator" class="org.fcrepo.server.validation.DOValidatorModule">
434
+ <comment>Description: Supports validation of digital objects, including
435
+ XML Schema validation, Schematron validation (to Fedora Rules schema
436
+ written in Schematron language), and other programatic validation
437
+ including referential integrity checking of existence and
438
+ availability of distributed data and/or services.</comment>
439
+ <param name="xsd_info:fedora/fedora-system:METSFedoraExt-1.1" value="xsd/mets-fedora-ext1-1.xsd">
440
+ <comment>The local path for the Fedora-METS XML
441
+ schema used to do XML schema validation of digital objects.</comment>
442
+ </param>
443
+ <param name="xsd_info:fedora/fedora-system:METSFedoraExt-1.0" value="xsd/mets-fedora-ext.xsd">
444
+ <comment>The local path for the Fedora-METS 1.0 XML
445
+ schema used to do XML schema validation of digital objects.</comment>
446
+ </param>
447
+ <param name="xsd_info:fedora/fedora-system:FOXML-1.1" value="xsd/foxml1-1.xsd">
448
+ <comment>The local path for the Fedora FOXML 1.1 XML schema
449
+ used to do XML schema validation of digital objects</comment>
450
+ </param>
451
+ <param name="xsd_info:fedora/fedora-system:FOXML-1.0" value="xsd/foxml1-0.xsd">
452
+ <comment>The local path for the Fedora FOXML 1.0 XML schema
453
+ used to do XML schema validation of digital objects</comment>
454
+ </param>
455
+ <param name="xsd_info:fedora/fedora-system:ATOM-1.1" value="xsd/atom.xsd">
456
+ <comment>The local path for the Atom XML schema used to do XML
457
+ schema validation of digital objects</comment>
458
+ </param>
459
+ <param name="xsd_info:fedora/fedora-system:ATOMZip-1.1" value="xsd/atom.xsd">
460
+ <comment>The local path for the Atom XML schema used to do XML
461
+ schema validation of digital objects</comment>
462
+ </param>
463
+ <param name="xsd_xacml_policy1.0" value="xsd/cs-xacml-schema-policy-1.0.xsd">
464
+ <comment>The local path for the OASIS XACML XML policy schema
465
+ used to do XML schema validation of XACML policies.</comment>
466
+ </param>
467
+ <param name="rules_info:fedora/fedora-system:METSFedoraExt-1.1" value="schematron/metsExtRules1-1.xml">
468
+ <comment>The local path to the Schematron Rules used for
469
+ Fedora-specific validation on Fedora-METS XML files.</comment>
470
+ </param>
471
+ <param name="rules_info:fedora/fedora-system:METSFedoraExt-1.0" value="schematron/metsExtRules1-0.xml">
472
+ <comment>The local path to the Schematron Rules used for
473
+ Fedora-specific validation on Fedora-METS 1.0 XML files.</comment>
474
+ </param>
475
+ <param name="rules_info:fedora/fedora-system:FOXML-1.1" value="schematron/foxmlRules1-1.xml">
476
+ <comment>The local path to the Schematron Rules used for
477
+ Fedora-specific validation on FOXML 1.1 XML files.</comment>
478
+ </param>
479
+ <param name="rules_info:fedora/fedora-system:FOXML-1.0" value="schematron/foxmlRules1-0.xml">
480
+ <comment>The local path to the Schematron Rules used for
481
+ Fedora-specific validation on FOXML 1.0 XML files.</comment>
482
+ </param>
483
+ <param name="rules_info:fedora/fedora-system:ATOM-1.1" value="schematron/atom-bogus.xml">
484
+ <comment>The local path to the Schematron Rules used for
485
+ Fedora-specific on Atom XML files.</comment>
486
+ </param>
487
+ <param name="rules_info:fedora/fedora-system:ATOMZip-1.1" value="schematron/atom-bogus.xml">
488
+ <comment>The local path to the Schematron Rules used for
489
+ Fedora-specific on Atom Zip files.</comment>
490
+ </param>
491
+ <param name="schtron_preprocessor" value="schematron/preprocessor.xslt"/>
492
+ <param name="tempDir" value="work">
493
+ <comment>(required)
494
+ This is a directory that the validation module can use as a work space, as
495
+ when it must write a temporary file.</comment>
496
+ </param>
497
+ </module>
498
+ <module role="org.fcrepo.server.storage.ExternalContentManager" class="org.fcrepo.server.storage.DefaultExternalContentManager">
499
+ <comment>This module facilitates obtaining external content via HTTP</comment>
500
+ </module>
501
+ <datastore id="localMySQLPool">
502
+ <comment>MySQL database on localhost with db name of fedora3. Each
503
+ connection pool instance has several configuration parameter that
504
+ can be used to tune the options for the connection pool. It is
505
+ recommended that you not change the default values unless you are
506
+ trying to address a specific performance issue. For additional
507
+ information regarding connection pool options, refer to the Apache
508
+ Commons Pool API documentation at
509
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
510
+ <param name="dbUsername" value="fedoraAdmin">
511
+ <comment>The database user name.</comment>
512
+ </param>
513
+ <param name="dbPassword" value="fedoraAdmin">
514
+ <comment>The database password.</comment>
515
+ </param>
516
+ <param name="jdbcURL" value="jdbc:mysql://localhost/fedora3?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true">
517
+ <comment>The JDBC connection URL.</comment>
518
+ </param>
519
+ <param name="jdbcDriverClass" value="com.mysql.jdbc.Driver">
520
+ <comment>The JDBC driver class name.</comment>
521
+ </param>
522
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.MySQLDDLConverter"/>
523
+ <param name="maxActive" value="100">
524
+ <comment>The maximum number of active instances in pool.</comment>
525
+ </param>
526
+ <param name="maxIdle" value="10">
527
+ <comment>The maximum number of idle instances in pool.</comment>
528
+ </param>
529
+ <param name="maxWait" value="-1">
530
+ <comment>The maximum amount of time in milliseconds the
531
+ borrowObject() method should wait before throwing an Exception when
532
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
533
+ than zero indicates block indefinitely.</comment>
534
+ </param>
535
+ <param name="minIdle" value="0">
536
+ <comment>The minimum of idle instances in pool.</comment>
537
+ </param>
538
+ <param name="minEvictableIdleTimeMillis" value="1800000">
539
+ <comment>The minimum amount of time in milliseconds an object can be
540
+ idle in pool before eligible for eviction (if applicable). A value
541
+ less than zero indicates no object will be evicted due to idle time
542
+ alone.</comment>
543
+ </param>
544
+ <param name="numTestsPerEvictionRun" value="3">
545
+ <comment>The number of objects to be examined on each run of idle
546
+ evictor thread (if applicable). A value less than zero indicates
547
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
548
+ </param>
549
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
550
+ <comment>The time in milliseconds to sleep between runs of the idle
551
+ object evictor thread. A value less than zero indicates no idle
552
+ evictor thread is run.</comment>
553
+ </param>
554
+ <param name="validationQuery" value="select 1">
555
+ <comment>The query to run when validating connections.
556
+ Connections are validated according to the testOnBorrow,
557
+ testOnReturn, and testWhileIdle configuration values.
558
+ If this is specified, it must be a SQL SELECT statement
559
+ that returns at least one row. If this is NOT specified,
560
+ validation tests will not be run.</comment>
561
+ </param>
562
+ <param name="testOnBorrow" value="true">
563
+ <comment>When true objects are validated before borrowed from the
564
+ pool.</comment>
565
+ </param>
566
+ <param name="testOnReturn" value="true">
567
+ <comment>When true, objects are validated before returned to the
568
+ pool.</comment>
569
+ </param>
570
+ <param name="testWhileIdle" value="true">
571
+ <comment>When true, objects are validated by the idle object evictor
572
+ thread.</comment>
573
+ </param>
574
+ <param name="whenExhaustedAction" value="1">
575
+ <comment>Action to take when a new object is requested and the the pool has
576
+ reached maximum number of active objects. Valid values are:
577
+ 0 (fail i.e., throw Exception)
578
+ 1 (block i.e., wait until pool resources are freed)
579
+ 2 (grow i.e., increase the size of the pool).</comment>
580
+ </param>
581
+ </datastore>
582
+ <datastore id="localMcKoiPool">
583
+ <comment>McKoi database on localhost running on port 9157 Each
584
+ connection pool instance has several configuration parameter that
585
+ can be used to tune the options for the connection pool. It is
586
+ recommended that you not change the default values unless you are
587
+ trying to address a specific performance issue. For additional
588
+ information regarding connection pool options, refer to the Apache
589
+ Commons Pool API documentation at
590
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
591
+ <param name="dbUsername" value="fedoraAdmin">
592
+ <comment>The database user name.</comment>
593
+ </param>
594
+ <param name="dbPassword" value="fedoraAdmin">
595
+ <comment>The database password.</comment>
596
+ </param>
597
+ <param name="jdbcURL" value="jdbc:mckoi://localhost:9157/">
598
+ <comment>The JDBC connection URL.</comment>
599
+ </param>
600
+ <param name="jdbcDriverClass" value="com.mckoi.JDBCDriver">
601
+ <comment>The JDBC driver class name.</comment>
602
+ </param>
603
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.McKoiDDLConverter"/>
604
+ <param name="maxActive" value="100">
605
+ <comment>The maximum number of active instances in pool.</comment>
606
+ </param>
607
+ <param name="maxIdle" value="10">
608
+ <comment>The maximum number of idle instances in pool.</comment>
609
+ </param>
610
+ <param name="maxWait" value="-1">
611
+ <comment>The maximum amount of time in milliseconds the
612
+ borrowObject() method should wait before throwing an Exception when
613
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
614
+ than zero indicates block indefinitely.</comment>
615
+ </param>
616
+ <param name="minIdle" value="0">
617
+ <comment>The minimum of idle instances in pool.</comment>
618
+ </param>
619
+ <param name="minEvictableIdleTimeMillis" value="1800000">
620
+ <comment>The minimum amount of time in milliseconds an object can be
621
+ idle in pool before eligible for eviction (if applicable). A value
622
+ less than zero indicates no object will be evicted due to idle time
623
+ alone.</comment>
624
+ </param>
625
+ <param name="numTestsPerEvictionRun" value="3">
626
+ <comment>The number of objects to be examined on each run of idle
627
+ evictor thread (if applicable). A value less than zero indicates
628
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
629
+ </param>
630
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
631
+ <comment>The time in milliseconds to sleep between runs of the idle
632
+ object evictor thread. A value less than zero indicates no idle
633
+ evictor thread is run.</comment>
634
+ </param>
635
+ <param name="testOnBorrow" value="true">
636
+ <comment>When true objects are validated before borrowed from the
637
+ pool.</comment>
638
+ </param>
639
+ <param name="testOnReturn" value="true">
640
+ <comment>When true, objects are validated before returned to the
641
+ pool.</comment>
642
+ </param>
643
+ <param name="testWhileIdle" value="true">
644
+ <comment>When true, objects are validated by the idle object evictor
645
+ thread.</comment>
646
+ </param>
647
+ <param name="whenExhaustedAction" value="1">
648
+ <comment>Action to take when a new object is requested and the the pool has
649
+ reached maximum number of active objects. Valid values are:
650
+ 0 (fail i.e., throw Exception)
651
+ 1 (block i.e., wait until pool resources are freed)
652
+ 2 (grow i.e., increase the size of the pool).</comment>
653
+ </param>
654
+ </datastore>
655
+ <datastore id="localDerbyPool">
656
+ <comment>Derby database on localhost running on port 1527 Each
657
+ connection pool instance has several configuration parameter that
658
+ can be used to tune the options for the connection pool. It is
659
+ recommended that you not change the default values unless you are
660
+ trying to address a specific performance issue. For additional
661
+ information regarding connection pool options, refer to the Apache
662
+ Commons Pool API documentation at
663
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
664
+ <param name="dbUsername" value="fedoraAdmin">
665
+ <comment>The database user name.</comment>
666
+ </param>
667
+ <param name="dbPassword" value="fedoraAdmin">
668
+ <comment>The database password.</comment>
669
+ </param>
670
+ <param name="jdbcURL" value="jdbc:derby:fedora/default/derby/fedora3;create=true">
671
+ <comment>The JDBC connection URL.</comment>
672
+ </param>
673
+ <param name="jdbcDriverClass" value="org.apache.derby.jdbc.EmbeddedDriver">
674
+ <comment>The JDBC driver class name.</comment>
675
+ </param>
676
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.DerbyDDLConverter"/>
677
+ <param name="maxActive" value="100">
678
+ <comment>The maximum number of active instances in pool.</comment>
679
+ </param>
680
+ <param name="maxIdle" value="10">
681
+ <comment>The maximum number of idle instances in pool.</comment>
682
+ </param>
683
+ <param name="maxWait" value="-1">
684
+ <comment>The maximum amount of time in milliseconds the
685
+ borrowObject() method should wait before throwing an Exception when
686
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
687
+ than zero indicates block indefinitely.</comment>
688
+ </param>
689
+ <param name="minIdle" value="0">
690
+ <comment>The minimum of idle instances in pool.</comment>
691
+ </param>
692
+ <param name="minEvictableIdleTimeMillis" value="1800000">
693
+ <comment>The minimum amount of time in milliseconds an object can be
694
+ idle in pool before eligible for eviction (if applicable). A value
695
+ less than zero indicates no object will be evicted due to idle time
696
+ alone.</comment>
697
+ </param>
698
+ <param name="numTestsPerEvictionRun" value="3">
699
+ <comment>The number of objects to be examined on each run of idle
700
+ evictor thread (if applicable). A value less than zero indicates
701
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
702
+ </param>
703
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
704
+ <comment>The time in milliseconds to sleep between runs of the idle
705
+ object evictor thread. A value less than zero indicates no idle
706
+ evictor thread is run.</comment>
707
+ </param>
708
+ <param name="testOnBorrow" value="true">
709
+ <comment>When true objects are validated before borrowed from the
710
+ pool.</comment>
711
+ </param>
712
+ <param name="testOnReturn" value="true">
713
+ <comment>When true, objects are validated before returned to the
714
+ pool.</comment>
715
+ </param>
716
+ <param name="testWhileIdle" value="true">
717
+ <comment>When true, objects are validated by the idle object evictor
718
+ thread.</comment>
719
+ </param>
720
+ <param name="whenExhaustedAction" value="1">
721
+ <comment>Action to take when a new object is requested and the the pool has
722
+ reached maximum number of active objects. Valid values are:
723
+ 0 (fail i.e., throw Exception)
724
+ 1 (block i.e., wait until pool resources are freed)
725
+ 2 (grow i.e., increase the size of the pool).</comment>
726
+ </param>
727
+ </datastore>
728
+ <datastore id="localOraclePool">
729
+ <comment>Oracle database on localhost with SID=fedora3 Each
730
+ connection pool instance has several configuration parameter that
731
+ can be used to tune the options for the connection pool. It is
732
+ recommended that you not change the default values unless you are
733
+ trying to address a specific performance issue. For additional
734
+ information regarding connection pool options, refer to the Apache
735
+ Commons Pool API documentation at
736
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
737
+ <param name="dbUsername" value="fedoraAdmin">
738
+ <comment>The database user name.</comment>
739
+ </param>
740
+ <param name="dbPassword" value="fedoraAdmin">
741
+ <comment>The database password.</comment>
742
+ </param>
743
+ <param name="jdbcURL" value="jdbc:oracle:thin:@localhost:1521:fedora3">
744
+ <comment>The JDBC connection URL.</comment>
745
+ </param>
746
+ <param name="jdbcDriverClass" value="oracle.jdbc.OracleDriver">
747
+ <comment>The JDBC driver class name.</comment>
748
+ </param>
749
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.OracleDDLConverter"/>
750
+ <param name="maxActive" value="100">
751
+ <comment>The maximum number of active instances in pool.</comment>
752
+ </param>
753
+ <param name="maxIdle" value="10">
754
+ <comment>The maximum number of idle instances in pool.</comment>
755
+ </param>
756
+ <param name="maxWait" value="-1">
757
+ <comment>The maximum amount of time in milliseconds the
758
+ borrowObject() method should wait before throwing an Exception when
759
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
760
+ than zero indicates block indefinitely.</comment>
761
+ </param>
762
+ <param name="minIdle" value="0">
763
+ <comment>The minimum of idle instances in pool.</comment>
764
+ </param>
765
+ <param name="minEvictableIdleTimeMillis" value="1800000">
766
+ <comment>The minimum amount of time in milliseconds an object can be
767
+ idle in pool before eligible for eviction (if applicable). A value
768
+ less than zero indicates no object will be evicted due to idle time
769
+ alone.</comment>
770
+ </param>
771
+ <param name="numTestsPerEvictionRun" value="3">
772
+ <comment>The number of objects to be examined on each run of idle
773
+ evictor thread (if applicable). A value less than zero indicates
774
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
775
+ </param>
776
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
777
+ <comment>The time in milliseconds to sleep between runs of the idle
778
+ object evictor thread. A value less than zero indicates no idle
779
+ evictor thread is run.</comment>
780
+ </param>
781
+ <param name="validationQuery" value="select &apos;validationQuery&apos; from dual">
782
+ <comment>The query to run when validating connections.
783
+ Connections are validated according to the testOnBorrow,
784
+ testOnReturn, and testWhileIdle configuration values.
785
+ If this is specified, it must be a SQL SELECT statement
786
+ that returns at least one row. If this is NOT specified,
787
+ validation tests will not be run.</comment>
788
+ </param>
789
+ <param name="testOnBorrow" value="true">
790
+ <comment>When true objects are validated before borrowed from the
791
+ pool.</comment>
792
+ </param>
793
+ <param name="testOnReturn" value="true">
794
+ <comment>When true, objects are validated before returned to the
795
+ pool.</comment>
796
+ </param>
797
+ <param name="testWhileIdle" value="true">
798
+ <comment>When true, objects are validated by the idle object evictor
799
+ thread.</comment>
800
+ </param>
801
+ <param name="whenExhaustedAction" value="1">
802
+ <comment>Action to take when a new object is requested and the the pool has
803
+ reached maximum number of active objects. Valid values are:
804
+ 0 (fail i.e., throw Exception)
805
+ 1 (block i.e., wait until pool resources are freed)
806
+ 2 (grow i.e., increase the size of the pool).</comment>
807
+ </param>
808
+ <param name="connection.SetBigStringTryClob" value="true"/>
809
+ </datastore>
810
+ <datastore id="localPostgreSQLPool">
811
+ <comment>PostgreSQL database on localhost with db name of fedora3. Each
812
+ connection pool instance has several configuration parameter that
813
+ can be used to tune the options for the connection pool. It is
814
+ recommended that you not change the default values unless you are
815
+ trying to address a specific performance issue. For additional
816
+ information regarding connection pool options, refer to the Apache
817
+ Commons Pool API documentation at
818
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
819
+ <param name="dbUsername" value="fedoraAdmin">
820
+ <comment>The database user name.</comment>
821
+ </param>
822
+ <param name="dbPassword" value="fedoraAdmin">
823
+ <comment>The database password.</comment>
824
+ </param>
825
+ <param name="jdbcURL" value="jdbc:postgresql:fedora3">
826
+ <comment>The JDBC connection URL.</comment>
827
+ </param>
828
+ <param name="jdbcDriverClass" value="org.postgresql.Driver">
829
+ <comment>The JDBC driver class name.</comment>
830
+ </param>
831
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.PostgresDDLConverter"/>
832
+ <param name="maxActive" value="100">
833
+ <comment>The maximum number of active instances in pool.</comment>
834
+ </param>
835
+ <param name="maxIdle" value="10">
836
+ <comment>The maximum number of idle instances in pool.</comment>
837
+ </param>
838
+ <param name="maxWait" value="-1">
839
+ <comment>The maximum amount of time in milliseconds the
840
+ borrowObject() method should wait before throwing an Exception when
841
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
842
+ than zero indicates block indefinitely.</comment>
843
+ </param>
844
+ <param name="minIdle" value="0">
845
+ <comment>The minimum of idle instances in pool.</comment>
846
+ </param>
847
+ <param name="minEvictableIdleTimeMillis" value="1800000">
848
+ <comment>The minimum amount of time in milliseconds an object can be
849
+ idle in pool before eligible for eviction (if applicable). A value
850
+ less than zero indicates no object will be evicted due to idle time
851
+ alone.</comment>
852
+ </param>
853
+ <param name="numTestsPerEvictionRun" value="3">
854
+ <comment>The number of objects to be examined on each run of idle
855
+ evictor thread (if applicable). A value less than zero indicates
856
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
857
+ </param>
858
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
859
+ <comment>The time in milliseconds to sleep between runs of the idle
860
+ object evictor thread. A value less than zero indicates no idle
861
+ evictor thread is run.</comment>
862
+ </param>
863
+ <param name="validationQuery" value="select 1">
864
+ <comment>The query to run when validating connections.
865
+ Connections are validated according to the testOnBorrow,
866
+ testOnReturn, and testWhileIdle configuration values.
867
+ If this is specified, it must be a SQL SELECT statement
868
+ that returns at least one row. If this is NOT specified,
869
+ validation tests will not be run.</comment>
870
+ </param>
871
+ <param name="testOnBorrow" value="true">
872
+ <comment>When true objects are validated before borrowed from the
873
+ pool.</comment>
874
+ </param>
875
+ <param name="testOnReturn" value="true">
876
+ <comment>When true, objects are validated before returned to the
877
+ pool.</comment>
878
+ </param>
879
+ <param name="testWhileIdle" value="true">
880
+ <comment>When true, objects are validated by the idle object evictor
881
+ thread.</comment>
882
+ </param>
883
+ <param name="whenExhaustedAction" value="1">
884
+ <comment>Action to take when a new object is requested and the the pool has
885
+ reached maximum number of active objects. Valid values are:
886
+ 0 (fail i.e., throw Exception)
887
+ 1 (block i.e., wait until pool resources are freed)
888
+ 2 (grow i.e., increase the size of the pool).</comment>
889
+ </param>
890
+ </datastore>
891
+ <datastore id="localMulgaraTriplestore">
892
+ <comment>local Mulgara Triplestore used by the Resource Index</comment>
893
+ <param name="connectorClassName" value="org.trippi.impl.mulgara.MulgaraConnector">
894
+ <comment>The name of the Trippi Connector class used to communicate
895
+ with the triplestore.</comment>
896
+ </param>
897
+ <param name="remote" value="false">
898
+ <comment>Tells the connector to communicate with Mulgara in remote or
899
+ local mode. If true, the host parameter must be defined. If false,
900
+ the path parameter must be defined.</comment>
901
+ </param>
902
+ <param name="path" value="data/resourceIndex" isFilePath="true">
903
+ <comment>The local path to the main triplestore directory.</comment>
904
+ </param>
905
+ <param name="serverName" value="fedora">
906
+ <comment>The server name for rmi binding.</comment>
907
+ </param>
908
+ <param name="modelName" value="ri">
909
+ <comment>The name of the model to use.</comment>
910
+ </param>
911
+ <param name="poolInitialSize" value="3">
912
+ <comment>The initial size of the session pool used for queries.
913
+ Note: A value of 0 will cause the Resource Index to operate in
914
+ synchronized mode: concurrent read/write requests are put in a queue
915
+ and handled in FIFO order; this will severely impair performance and
916
+ is only intended for debugging.</comment>
917
+ </param>
918
+ <param name="poolMaxGrowth" value="-1">
919
+ <comment>Maximum number of additional sessions the pool may add. If
920
+ specified as -1, no limit will be placed on pool growth.</comment>
921
+ </param>
922
+ <param name="readOnly" value="false">
923
+ <comment>Whether the triplestore should be read-only. Most Fedora
924
+ repositories will set this to false.</comment>
925
+ </param>
926
+ <param name="autoCreate" value="true">
927
+ <comment>Create the model if it doesn&apos;t already exist.
928
+ At startup, the model will be automatically created. In addition, an
929
+ XML schema datatyped model named &quot;xsd&quot; will also be automatically
930
+ created.</comment>
931
+ </param>
932
+ <param name="autoTextIndex" value="false">
933
+ <comment>Whether to propagate adds/deletes to a full-text
934
+ [Full-Text] model automatically. While a very useful feature,
935
+ enabling full-text indexing adds significantly to object ingest
936
+ times. If true, the text model will be named modelName-fullText.
937
+ Note that if this is true and autoCreate is true, the text model
938
+ will also be created if it doesn&apos;t already exist.</comment>
939
+ </param>
940
+ <param name="autoFlushDormantSeconds" value="5">
941
+ <comment>Seconds of buffer inactivity that will trigger an
942
+ auto-flush. If this threshold is reached, flushing will occur in the
943
+ background, during which time the buffer is still available for
944
+ writing.</comment>
945
+ </param>
946
+ <param name="autoFlushBufferSize" value="20000">
947
+ <comment>The size at which the buffer should be auto-flushed. If
948
+ this threshold is reached, flushing will occur in the background,
949
+ during which time the buffer is still available for
950
+ writing.</comment>
951
+ </param>
952
+ <param name="bufferFlushBatchSize" value="20000">
953
+ <comment>The number of updates to send to the triplestore at a time.
954
+ This should be the same size as, or smaller than
955
+ autoFlushBufferSize.</comment>
956
+ </param>
957
+ <param name="bufferSafeCapacity" value="40000">
958
+ <comment>The maximum size the buffer can reach before being forcibly
959
+ flushed. If this threshold is reached, flushing will occur in the
960
+ foreground and the buffer will be locked for writing until it is
961
+ finished. This should be larger than autoFlushBufferSize.</comment>
962
+ </param>
963
+ </datastore>
964
+ <datastore id="localPostgresMPTTriplestore">
965
+ <comment>Example local MPTStore backed by Postgres.
966
+ To use this triplestore for the Resource Index:
967
+ 1) In fedora.fcfg, change the "datastore" parameter of the
968
+ ResourceIndex module to localPostgresMPTTriplestore.
969
+ 2) Login to your Postgres server as an administrative user and
970
+ run the following commands:
971
+ CREATE ROLE "fedoraAdmin" LOGIN PASSWORD 'fedoraAdmin'
972
+ NOINHERIT CREATEDB
973
+ VALID UNTIL 'infinity';
974
+ CREATE DATABASE "riTriples"
975
+ WITH ENCODING='SQL_ASCII'
976
+ OWNER="fedoraAdmin";
977
+ 3) Make sure you can login to your Postgres server as fedoraAdmin.
978
+ 4) Download the appropriate Postgres JDBC 3 driver from
979
+ http://jdbc.postgresql.org/download.html
980
+ and make sure it's accessible to your servlet container.
981
+ If you're running Tomcat, putting it in common/lib/ will work.</comment>
982
+ <param name="connectorClassName" value="org.trippi.impl.mpt.MPTConnector"/>
983
+ <param name="ddlGenerator" value="org.nsdl.mptstore.impl.postgres.PostgresDDLGenerator"/>
984
+ <param name="jdbcDriver" value="org.postgresql.Driver"/>
985
+ <param name="jdbcURL" value="jdbc:postgresql://localhost/riTriples"/>
986
+ <param name="username" value="fedoraAdmin"/>
987
+ <param name="password" value="fedoraAdmin"/>
988
+ <param name="poolInitialSize" value="3"/>
989
+ <param name="poolMaxSize" value="10"/>
990
+ <param name="backslashIsEscape" value="true"/>
991
+ <param name="fetchSize" value="1000"/>
992
+ <param name="autoFlushDormantSeconds" value="5"/>
993
+ <param name="autoFlushBufferSize" value="1000"/>
994
+ <param name="bufferFlushBatchSize" value="1000"/>
995
+ <param name="bufferSafeCapacity" value="2000"/>
996
+ </datastore>
997
+ <datastore id="apimUpdateMessages">
998
+ <comment>Messaging Destination for API-M events which update the repository</comment>
999
+ <param name="messageTypes" value="apimUpdate">
1000
+ <comment>A space-separated list of message types that will be
1001
+ delivered to this Destination. Currently, &quot;apimUpdate&quot; and
1002
+ &quot;apimAccess&quot; are the only supported message types.</comment>
1003
+ </param>
1004
+ <param name="name" value="fedora.apim.update"/>
1005
+ <param name="type" value="topic">
1006
+ <comment>Optional, defaults to topic.</comment>
1007
+ </param>
1008
+ </datastore>
1009
+ <datastore id="apimAccessMessages">
1010
+ <comment>Messaging Destination for API-M events which did not make changes to the repository</comment>
1011
+ <param name="messageTypes" value="apimAccess">
1012
+ <comment>A space-separated list of message types that will be
1013
+ delivered to this Destination. Currently, &quot;apimUpdate&quot; and
1014
+ &quot;apimAccess&quot; are the only supported message types.</comment>
1015
+ </param>
1016
+ <param name="name" value="fedora.apim.access"/>
1017
+ <param name="type" value="topic">
1018
+ <comment>Optional, defaults to topic.</comment>
1019
+ </param>
1020
+ </datastore>
1021
+ </server>