active-fedora 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. data/History.txt +14 -1
  2. data/README.textile +6 -0
  3. data/active-fedora.gemspec +1 -1
  4. data/lib/active_fedora.rb +2 -0
  5. data/lib/active_fedora/associations.rb +22 -2
  6. data/lib/active_fedora/associations/association_collection.rb +37 -0
  7. data/lib/active_fedora/associations/belongs_to_association.rb +8 -0
  8. data/lib/active_fedora/associations/has_many_association.rb +2 -0
  9. data/lib/active_fedora/base.rb +43 -6
  10. data/lib/active_fedora/datastream.rb +13 -37
  11. data/lib/active_fedora/datastreams.rb +2 -6
  12. data/lib/active_fedora/digital_object.rb +8 -1
  13. data/lib/active_fedora/metadata_datastream_helper.rb +2 -2
  14. data/lib/active_fedora/nokogiri_datastream.rb +55 -16
  15. data/lib/active_fedora/persistence.rb +14 -9
  16. data/lib/active_fedora/railtie.rb +15 -0
  17. data/lib/active_fedora/rdf_datastream.rb +4 -0
  18. data/lib/active_fedora/rdfxml_rdf_datastream.rb +2 -6
  19. data/lib/active_fedora/reflection.rb +11 -0
  20. data/lib/active_fedora/relationships.rb +4 -4
  21. data/lib/active_fedora/rels_ext_datastream.rb +21 -6
  22. data/lib/active_fedora/semantic_node.rb +3 -3
  23. data/lib/active_fedora/test_support.rb +38 -0
  24. data/lib/active_fedora/version.rb +1 -1
  25. data/lib/generators/active_fedora/config/USAGE +9 -0
  26. data/lib/generators/active_fedora/config/config_generator.rb +10 -0
  27. data/lib/generators/active_fedora/config/fedora/fedora_generator.rb +12 -0
  28. data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +14 -0
  29. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/development/fedora.fcfg +953 -0
  30. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/test/fedora.fcfg +953 -0
  31. data/lib/generators/active_fedora/config/solr/solr_generator.rb +12 -0
  32. data/lib/generators/active_fedora/config/solr/templates/solr.yml +10 -0
  33. data/lib/generators/active_fedora/config/solr/templates/solr_conf/conf/schema.xml +692 -0
  34. data/lib/generators/active_fedora/config/solr/templates/solr_conf/conf/solrconfig.xml +299 -0
  35. data/lib/generators/active_fedora/config/solr/templates/solr_conf/solr.xml +35 -0
  36. data/lib/generators/active_fedora/model/USAGE +9 -0
  37. data/lib/generators/active_fedora/model/model_generator.rb +21 -0
  38. data/lib/generators/active_fedora/model/templates/model.rb.erb +6 -0
  39. data/lib/generators/active_fedora/model/templates/model_spec.rb.erb +21 -0
  40. data/lib/tasks/active_fedora_dev.rake +8 -0
  41. data/spec/fixtures/hydrangea_fixture_mods_article2.foxml.xml +234 -0
  42. data/spec/integration/associations_spec.rb +76 -15
  43. data/spec/integration/base_spec.rb +38 -10
  44. data/spec/integration/datastreams_spec.rb +24 -2
  45. data/spec/integration/nokogiri_datastream_spec.rb +23 -5
  46. data/spec/unit/base_extra_spec.rb +0 -1
  47. data/spec/unit/base_spec.rb +7 -47
  48. data/spec/unit/datastream_collections_spec.rb +0 -7
  49. data/spec/unit/datastream_spec.rb +7 -16
  50. data/spec/unit/datastreams_spec.rb +2 -2
  51. data/spec/unit/nokogiri_datastream_spec.rb +31 -20
  52. data/spec/unit/ntriples_datastream_spec.rb +7 -10
  53. data/spec/unit/persistence_spec.rb +0 -11
  54. data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -2
  55. data/spec/unit/relationships_spec.rb +5 -5
  56. data/spec/unit/rels_ext_datastream_spec.rb +14 -9
  57. data/spec/unit/semantic_node_spec.rb +4 -4
  58. metadata +25 -6
@@ -6,14 +6,13 @@ module ActiveFedora
6
6
  #the Solr index for this object.
7
7
  def save(*)
8
8
  # If it's a new object, set the conformsTo relationship for Fedora CMA
9
- if new_object?
9
+ if new_record?
10
10
  result = create
11
11
  update_index if create_needs_index?
12
12
  else
13
13
  result = update
14
14
  update_index if update_needs_index?
15
15
  end
16
- self.metadata_is_dirty = false
17
16
  return result
18
17
  end
19
18
 
@@ -27,7 +26,6 @@ module ActiveFedora
27
26
  add_relationship(:has_model, self.class.to_class_uri)
28
27
  end
29
28
 
30
-
31
29
  def update_attributes(properties)
32
30
  self.attributes=properties
33
31
  save
@@ -39,11 +37,22 @@ module ActiveFedora
39
37
  # inner_object.load_attributes_from_fedora
40
38
  end
41
39
 
40
+ def dependent_objects
41
+ # Loop over all the inbound associations (has_many reflections)
42
+ results = {}
43
+ reflections.each_pair do |name, reflection|
44
+ if reflection.macro == :has_many
45
+ results[reflection.options[:property]] = send(name)
46
+ end
47
+ end
48
+ results.merge (inbound_relationships(:object) )
49
+ end
50
+
42
51
  #Deletes a Base object, also deletes the info indexed in Solr, and
43
52
  #the underlying inner_object. If this object is held in any relationships (ie inbound relationships
44
53
  #outside of this object it will remove it from those items rels-ext as well
45
54
  def delete
46
- inbound_relationships(:objects).each_pair do |predicate, objects|
55
+ dependent_objects.each_pair do |predicate, objects|
47
56
  objects.each do |obj|
48
57
  if obj.respond_to?(:remove_relationship)
49
58
  obj.remove_relationship(predicate,self)
@@ -93,7 +102,7 @@ module ActiveFedora
93
102
  # Determines whether an update operation cause a solr index of this object.
94
103
  # Override this if you need different behavior
95
104
  def update_needs_index?
96
- @metadata_is_dirty && ENABLE_SOLR_UPDATES
105
+ ENABLE_SOLR_UPDATES
97
106
  end
98
107
 
99
108
  private
@@ -116,10 +125,6 @@ module ActiveFedora
116
125
  persist
117
126
  end
118
127
 
119
- def metadata_is_dirty=(bool)
120
- @metadata_is_dirty = bool
121
- end
122
-
123
128
  def persist
124
129
  result = @inner_object.save
125
130
 
@@ -0,0 +1,15 @@
1
+ module ActiveFedora
2
+ class Railtie < Rails::Railtie
3
+ rake_tasks do
4
+ load "tasks/active_fedora.rake"
5
+ end
6
+ generators do
7
+ require(
8
+ 'generators/active_fedora/config/config_generator'
9
+ )
10
+ require(
11
+ 'generators/active_fedora/model/model_generator'
12
+ )
13
+ end
14
+ end
15
+ end
@@ -153,6 +153,10 @@ module ActiveFedora
153
153
  end
154
154
  end
155
155
 
156
+ def changed?
157
+ super || dirty?
158
+ end
159
+
156
160
  def dirty?
157
161
  graph.dirty
158
162
  end
@@ -6,12 +6,8 @@ module ActiveFedora
6
6
  :rdfxml
7
7
  end
8
8
 
9
- def mimeType
10
- 'text/xml'
11
- end
12
-
13
- def controlGroup
14
- 'M'
9
+ def self.default_attributes
10
+ super.merge(:mimeType => 'text/xml', :controlGroup => 'X')
15
11
  end
16
12
  end
17
13
  end
@@ -84,6 +84,7 @@ module ActiveFedora
84
84
  # <tt>has_many :clients</tt> returns +{}+
85
85
  attr_reader :options
86
86
 
87
+ attr_reader :macro
87
88
 
88
89
  # Returns the class for the macro.
89
90
  #
@@ -134,6 +135,16 @@ module ActiveFedora
134
135
  @primary_key_name ||= options[:foreign_key] || derive_primary_key_name
135
136
  end
136
137
 
138
+
139
+ # Creates a new instance of the associated class, and immediately saves it
140
+ # with ActiveRecord::Base#save. +options+ will be passed to the class's
141
+ # creation method. Returns the newly created object.
142
+ def create_association(*options)
143
+ klass.create(*options)
144
+ end
145
+
146
+
147
+
137
148
  private
138
149
 
139
150
  def derive_primary_key_name
@@ -494,7 +494,7 @@ module ActiveFedora
494
494
  #
495
495
  # @deprecated use ActiveFedora::Base.has_many or ActiveFedora::Base.belongs_to. has_relationship will be removed in active-fedora 6.0
496
496
  def has_relationship(name, predicate, opts = {})
497
- ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#has_relationship has been deprecated use ActiveFedora::Base.has_many or ActiveFedora::Base.belongs_to. has_relationship will be removed in active-fedora 6.0.")
497
+ ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#has_relationship has been deprecated use ActiveFedora::Base.has_many or ActiveFedora::Base.belongs_to. has_relationship will be removed in active-fedora 6.0.", caller(1))
498
498
  opts = {:singular => nil, :inbound => false}.merge(opts)
499
499
  if opts[:inbound] == true
500
500
  register_relationship_desc(:inbound, name, predicate, opts)
@@ -547,7 +547,7 @@ module ActiveFedora
547
547
  #
548
548
  # @deprecated use ActiveFedora::Base.has_and_belongs_to_many. has_bidirectional_relationship will be removed in active-fedora 6.0
549
549
  def has_bidirectional_relationship(name, outbound_predicate, inbound_predicate, opts={})
550
- ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#has_bidirectional_relationship has been deprecated, reference ActiveFedora::Base.has_and_belongs_to_many. has_bidirectional_relationship will be removed in active-fedora 6.0.")
550
+ ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#has_bidirectional_relationship has been deprecated, reference ActiveFedora::Base.has_and_belongs_to_many. has_bidirectional_relationship will be removed in active-fedora 6.0.", caller(1))
551
551
  create_bidirectional_relationship_finders(name, outbound_predicate, inbound_predicate, opts)
552
552
  end
553
553
 
@@ -596,7 +596,7 @@ module ActiveFedora
596
596
  # @param [Hash] opts (optional)
597
597
  # @deprecated create_bidirectional_relationship_finders will be removed in active-fedora 6.0
598
598
  def create_bidirectional_relationship_finders(name, outbound_predicate, inbound_predicate, opts={})
599
- ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#create_bidirectional_relationship_finders has been deprecated and will be removed in active-fedora 6.0.")
599
+ ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#create_bidirectional_relationship_finders has been deprecated and will be removed in active-fedora 6.0.", caller(1))
600
600
  inbound_method_name = name.to_s+"_inbound"
601
601
  outbound_method_name = name.to_s+"_outbound"
602
602
  has_relationship(outbound_method_name, outbound_predicate, opts)
@@ -634,7 +634,7 @@ module ActiveFedora
634
634
  #
635
635
  # @deprecated create_bidirectional_relationship_name_methods will be removed in active-fedora 6.0
636
636
  def create_bidirectional_relationship_name_methods(name,outbound_name)
637
- ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#create_bidirectional_relationship_name_methods has been deprecated and will be removed in active-fedora 6.0.")
637
+ ActiveSupport::Deprecation.warn("ActiveFedora::Relationships#create_bidirectional_relationship_name_methods has been deprecated and will be removed in active-fedora 6.0.", caller(1))
638
638
  append_method_name = "#{name.to_s.downcase}_append"
639
639
  remove_method_name = "#{name.to_s.downcase}_remove"
640
640
  self.send(:define_method,:"#{append_method_name}") {|object| add_relationship_by_name(outbound_name,object)}
@@ -9,12 +9,12 @@ module ActiveFedora
9
9
  include Solrizer::FieldNameMapper
10
10
  attr_accessor :model
11
11
 
12
- def add_mime_type
13
- self.mimeType= 'application/rdf+xml'
12
+ def self.default_attributes
13
+ super.merge(:mimeType => 'application/rdf+xml')
14
14
  end
15
15
 
16
16
  def changed?
17
- model.relationships_are_dirty or super
17
+ relationships_are_dirty? or super
18
18
  end
19
19
 
20
20
  def metadata?
@@ -22,10 +22,25 @@ module ActiveFedora
22
22
  end
23
23
 
24
24
  def serialize!
25
- self.content = to_rels_ext() if model.relationships_are_dirty
25
+ self.content = to_rels_ext() if relationships_are_dirty?
26
26
  model.relationships_are_dirty = false
27
27
  end
28
28
 
29
+ def relationships_are_dirty?
30
+ model.relationships_are_dirty if model
31
+ end
32
+
33
+ def relationships_are_dirty!
34
+ model.relationships_are_dirty = true
35
+ end
36
+
37
+ def relationships_are_not_dirty!
38
+ model.relationships_are_dirty = false
39
+ end
40
+
41
+ def relationships
42
+ model.relationships
43
+ end
29
44
 
30
45
  def to_xml(fields_xml)
31
46
  ActiveSupport::Deprecation.warn("to_xml is deprecated, use to_rels_ext")
@@ -49,7 +64,7 @@ module ActiveFedora
49
64
  tmpl.model.add_relationship(predicate, object, literal)
50
65
  end
51
66
  end
52
- tmpl.model.relationships_are_dirty = false
67
+ tmpl.relationships_are_not_dirty!
53
68
  tmpl.changed_attributes.clear
54
69
  tmpl
55
70
  end
@@ -59,7 +74,7 @@ module ActiveFedora
59
74
  def to_rels_ext()
60
75
  xml = ActiveFedora::RDFXMLWriter.buffer do |writer|
61
76
  writer.prefixes.merge! ActiveFedora::Predicates.predicate_namespaces
62
- model.relationships.each_statement do |statement|
77
+ relationships.each_statement do |statement|
63
78
  writer << statement
64
79
  end
65
80
  end
@@ -29,7 +29,7 @@ module ActiveFedora
29
29
  # @param object Either a string URI or an object that is a kind of ActiveFedora::Base
30
30
  def add_relationship(predicate, target, literal=false)
31
31
  object_relations.add(predicate, target, literal)
32
- rels_ext.dirty = true if object_relations.dirty
32
+ rels_ext.content_will_change! if object_relations.dirty
33
33
  end
34
34
 
35
35
  # Clears all relationships with the specified predicate
@@ -38,7 +38,7 @@ module ActiveFedora
38
38
  relationships(predicate).each do |target|
39
39
  object_relations.delete(predicate, target)
40
40
  end
41
- rels_ext.dirty = true if object_relations.dirty
41
+ rels_ext.content_will_change! if object_relations.dirty
42
42
  end
43
43
 
44
44
  # Checks that this object is matches the model class passed in.
@@ -111,7 +111,7 @@ module ActiveFedora
111
111
  def remove_relationship(predicate, obj, literal=false)
112
112
  object_relations.delete(predicate, obj)
113
113
  self.relationships_are_dirty = true
114
- rels_ext.dirty = true
114
+ rels_ext.content_will_change!
115
115
  end
116
116
 
117
117
  def inbound_relationships(response_format=:uri)
@@ -0,0 +1,38 @@
1
+ module ActiveFedora
2
+ module TestSupport
3
+
4
+ # Assert that all of the :objects are persisted the :subject's RELS-EXT entry
5
+ # with the :predicate.
6
+ def assert_rels_ext(subject, predicate, objects = [])
7
+ assert_equal objects.count, subject.relationships(predicate).count
8
+ objects.each do |object|
9
+ internal_uri = object.respond_to?(:internal_uri) ?
10
+ object.internal_uri : object
11
+ assert subject.relationships(predicate).include?(internal_uri)
12
+ end
13
+ end
14
+
15
+ # Assert that the :subject's RELS-EXT for predicate :has_model collection
16
+ # includes the class_name
17
+ def assert_rels_ext_has_model(subject, class_name)
18
+ model_relationships = subject.relationships(:has_model)
19
+ assert_block("Expected afmodel:#{class_name} to be defined in #{model_relationships.inspect}") do
20
+ model_relationships.detect {|r| r =~ /\/afmodel:#{class_name}\Z/ }
21
+ end
22
+ end
23
+
24
+ # Assert that the :subject's :association_name equals the input :object
25
+ def assert_active_fedora_belongs_to(subject, association_name, object)
26
+ subject.send(association_name).must_equal object
27
+ end
28
+
29
+ # Assert that the :subject's :association_name contains all of the :objects
30
+ def assert_active_fedora_has_many(subject, association_name, objects)
31
+ association = subject.send(association_name)
32
+ assert_equal objects.count, association.count
33
+ objects.each do |object|
34
+ assert association.include?(object)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "5.0.0"
2
+ VERSION = "5.1.0"
3
3
  end
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Generate ActiveFedora config files
3
+
4
+ Example:
5
+ rails generate active_fedora:config
6
+
7
+ This will create:
8
+ config/fedora.yml
9
+ config/solr.yml
@@ -0,0 +1,10 @@
1
+ require 'rails/generators'
2
+
3
+ module ActiveFedora
4
+ class ConfigGenerator < Rails::Generators::Base
5
+ def generate
6
+ invoke('active_fedora:config:solr')
7
+ invoke('active_fedora:config:fedora')
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails/generators'
2
+
3
+ module ActiveFedora
4
+ class Config::FedoraGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ def generate
8
+ copy_file('fedora.yml', 'config/fedora.yml')
9
+ directory('fedora_conf', 'fedora_conf')
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ development:
2
+ user: fedoraAdmin
3
+ password: fedoraAdmin
4
+ url: http://127.0.0.1:8983/fedora
5
+ test: &TEST
6
+ user: fedoraAdmin
7
+ password: fedoraAdmin
8
+ url: <%= "http://127.0.0.1:#{ENV['TEST_JETTY_PORT'] || 8983}/fedora-test" %>
9
+ production:
10
+ user: fedoraAdmin
11
+ password: fedoraAdmin
12
+ url: http://your.production.server:8080/fedora
13
+ cucumber:
14
+ <<: *TEST
@@ -0,0 +1,953 @@
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="datastreamExtensionMappingSource" value="mime-to-extensions.xml">
4
+ <comment>Source of mappings from MIMETYPE to file extension</comment>
5
+ </param>
6
+ <param name="datastreamExtensionMappingId" value="ifmissing">
7
+ <comment>Controls filename extension mapping when the datastream ID is used
8
+ as the source of the filename. Values are as above.</comment>
9
+ </param>
10
+ <param name="httpClientMaxConnectionsPerHost" value="5">
11
+ <comment>Maximum number of Fedora http client connections allowed to a given host.</comment>
12
+ </param>
13
+ <param name="httpClientSocketTimeoutSecs" value="120">
14
+ <comment>Number of seconds Fedora http client will wait for data coming across an
15
+ established http connection.</comment>
16
+ </param>
17
+ <param name="fedoraServerHost" value="localhost">
18
+ <comment>Defines the host name for the Fedora server, as seen from the
19
+ outside world.</comment>
20
+ </param>
21
+ <param name="datastreamExtensionMappingLabel" value="always">
22
+ <comment>Controls filename extension mapping when the datastream label is used
23
+ as the source of the filename. Values are always: always generate an extension
24
+ based on the MIMETYPE, using the default extension if none can be determined;
25
+ ifmissing: generate an extension if the filename obtained from the source does not
26
+ already contain one (again returning the default if there is no MIMETYPE-to-extension
27
+ mapping is found); never: never generate an extension, use the filename from the source
28
+ as-is</comment>
29
+ </param>
30
+ <param name="httpClientMaxFollowRedirects" value="3">
31
+ <comment>Maximun number of redirects the Fedora http client will follow (only if
32
+ httpClientFollowRedirects is set to true.)</comment>
33
+ </param>
34
+ <param name="httpClientUserAgent" value="Fedora">
35
+ <comment>The value to be set for the User-Agent HTTP request header.</comment>
36
+ </param>
37
+ <param name="httpClientMaxTotalConnections" value="5">
38
+ <comment>Maximum number of total Fedora http client connections allowed at once.</comment>
39
+ </param>
40
+ <param name="datastreamFilenameSource" value="rels label id">
41
+ <comment>determines the source of the filename generated when download=true
42
+ on a datastream dissemination. Value is space separated list of label: use the datastream label;
43
+ id: use the datastream ID; rels: use the value defined in RELS-INT. Each
44
+ source is checked in order, and the first containing a value is used. Omit
45
+ any of the sources if that source is never to be used. If no sources are to be used,
46
+ and just the default filename and extension below are to be used, specify &quot; &quot;.</comment>
47
+ </param>
48
+ <param name="adminEmailList" value="bob@example.org sally@example.org">
49
+ <comment>Defines one or more email addresses for server administrators;
50
+ list is space delimited.</comment>
51
+ </param>
52
+ <param name="datastreamMediationLimit" value="5000">
53
+ <comment>Determines the time interval in which external mechanisms must
54
+ respond to requests by the Fedora server. The value is specified in
55
+ milliseconds. The value specified should be set high enough to allow
56
+ for an average response time from any single external mechanisms. Note
57
+ this value must be less than the limit specified for the
58
+ datastreamExpirationLimit.</comment>
59
+ </param>
60
+ <param name="fedoraServerPort" value="8983">
61
+ <comment>Defines the port number on which the Fedora server runs;
62
+ default is 8080.</comment>
63
+ </param>
64
+ <param name="fedoraRedirectPort" value="8443">
65
+ <comment>Defines the redirect port of the Fedora sever; default is 8443.</comment>
66
+ </param>
67
+ <param name="httpClientFollowRedirects" value="true">
68
+ <comment>Should the Fedora http client follow redirects?</comment>
69
+ </param>
70
+ <param name="datastreamExtensionMappingDefault" value="never">
71
+ <comment>Controls filename extension mapping when no filename can be determined from
72
+ the sources listed in datastreamFilenameSource. Values are always: always generate an extension
73
+ based on the MIMETYPE (using the default if no appropriate mapping is specified);
74
+ never: never generate an extension.</comment>
75
+ </param>
76
+ <param name="datastreamContentDispositionInlineEnabled" value="true">
77
+ <comment>determines if a content-disposition header specifying &quot;inline&quot; and
78
+ a filename is added to the response for the REST API getDatastreamDissemination
79
+ when no query parameter of download=true is specified. Browser support for
80
+ recognising a filename in case of &quot;inline&quot; content disposition is patchy,
81
+ so you may wish to disable the content disposition header in this case and only
82
+ have it provided when download=true is specified, in which case the content disposition
83
+ of &quot;attachment&quot; will be used; which is generally supported.</comment>
84
+ </param>
85
+ <param name="fedoraAppServerContext" value="fedora">
86
+ <comment>Defines the context name for the Fedora server within the
87
+ application server. If set to eg &quot;myfedora&quot; the URL for Fedora will result
88
+ in http[s]://fedoraServerHost[:fedoraServerPort]/myfedora.</comment>
89
+ </param>
90
+ <param name="fedoraShutdownPort" value="8005">
91
+ <comment>Defines the port number used to shutdown the Fedora sever;
92
+ default is 8005.</comment>
93
+ </param>
94
+ <param name="datastreamDefaultExtension" value="bin">
95
+ <comment>Extension to use when none can be determined from mappings</comment>
96
+ </param>
97
+ <param name="datastreamDefaultFilename" value="download">
98
+ <comment>Filename to use for datastream downloads when none can be determined from the
99
+ sources listed in datastreamFilenameSource.</comment>
100
+ </param>
101
+ <param name="datastreamExpirationLimit" value="300">
102
+ <comment>Controls the size of the datastream mediation hash by removing
103
+ entries outside the specified threshold. The value is specified in
104
+ seconds. Note this value must be greater than the limit specified for
105
+ the datastreamMediationLimit.</comment>
106
+ </param>
107
+ <param name="datastreamExtensionMappingRels" value="never">
108
+ <comment>Controls filename extension mapping when RELS-INT is used
109
+ as the source of the filename. Values are as above.</comment>
110
+ </param>
111
+ <param name="httpClientTimeoutSecs" value="20">
112
+ <comment>Number of seconds Fedora http client will wait for a connection before timing
113
+ out.</comment>
114
+ </param>
115
+ <param name="repositoryName" value="Fedora Repository">
116
+ <comment>Defines a human readable name for the Fedora server; default is
117
+ Fedora Repository.</comment>
118
+ </param>
119
+ <module role="org.fcrepo.server.security.Authorization" class="org.fcrepo.server.security.DefaultAuthorization">
120
+ <comment>Builds and manages Fedora's authorization structure.</comment>
121
+ <param name="REPOSITORY-POLICY-GUITOOL-POLICIES-DIRECTORY" value="data/fedora-xacml-policies/repository-policies-generated-by-policyguitool" isFilePath="true">
122
+ <comment>This parameter is for future use.</comment>
123
+ </param>
124
+ <param name="POLICY-SCHEMA-PATH" value="xsd/cs-xacml-schema-policy-01.xsd"/>
125
+ <param name="ENFORCE-MODE" value="permit-all-requests"/>
126
+ <param name="VALIDATE-OBJECT-POLICIES-FROM-DATASTREAM" value="false"/>
127
+ <param name="XACML-COMBINING-ALGORITHM" value="com.sun.xacml.combine.OrderedDenyOverridesPolicyAlg"/>
128
+ <param name="VALIDATE-OBJECT-POLICIES-FROM-FILE" value="false"/>
129
+ <param name="VALIDATE-REPOSITORY-POLICIES" value="true"/>
130
+ <param name="REPOSITORY-POLICIES-DIRECTORY" value="data/fedora-xacml-policies/repository-policies" isFilePath="true"/>
131
+ </module>
132
+ <module role="org.fcrepo.server.security.BackendSecurity" class="org.fcrepo.server.security.DefaultBackendSecurity">
133
+ <comment>Description: Interface to the backend service security
134
+ configuration. This module initializes backend service security
135
+ information in the server by parsing the beSecurity configuration file.
136
+ This file is located in the distribution in
137
+ $FEDORA_HOME/dist/server/config/beSecurity.xml. The configuration file
138
+ is read once at server startup.</comment>
139
+ <param name="beSecurity_char_encoding" value="utf-8">
140
+ <comment>The character encoding used for the beSecurity
141
+ configuration file. The default is &quot;utf-8&quot;. The value
142
+ specified must correspond to the character encoding used in the
143
+ beSecurity configuration file.</comment>
144
+ </param>
145
+ <param name="beSecurity_validation" value="false">
146
+ <comment>Controls whether beSecurity config file is validated
147
+ against the beSecurityDescription schema. The default is
148
+ &quot;false&quot;. Valid values are &quot;true&quot; or
149
+ &quot;false&quot;.</comment>
150
+ </param>
151
+ </module>
152
+ <module role="org.fcrepo.server.storage.DOManager" class="org.fcrepo.server.storage.DefaultDOManager">
153
+ <comment>The interface to the storage subsystem. This provides
154
+ context-appropriate DOReaders and DOWriters for reflecting on and
155
+ writing to the objects stored in the repository. It also provides
156
+ methods for reflecting on the contents of the repository as a whole..</comment>
157
+ <param name="defaultDCControlGroup" value="X">
158
+ <comment>The control group to use for the system-generated DC datastream
159
+ if no DC datastream is present on ingest. Must be &quot;X&quot; or &quot;M&quot;.</comment>
160
+ </param>
161
+ <param name="gSearchPassword" value="examplePassword">
162
+ <comment>The associated password for accessing the REST endpoint
163
+ of the Fedora Generic Search service. This parameter is only
164
+ required if GSearchDOManager is used, and the service requires
165
+ authentication.</comment>
166
+ </param>
167
+ <param name="storageCharacterEncoding" value="UTF-8">
168
+ <comment>If the serialization format is text-based, this is the
169
+ character encoding that should be used. Default is UTF-8.</comment>
170
+ </param>
171
+ <param name="gSearchUsername" value="exampleUsername">
172
+ <comment>The username for accessing the REST endpoint of the
173
+ Fedora Generic Search service. This parameter is only required if
174
+ GSearchDOManager is used, and the service requires
175
+ authentication.</comment>
176
+ </param>
177
+ <param name="storagePool" value="localDerbyPool">
178
+ <comment>The named connection pool from which read/write database
179
+ connections are to be provided for the storage subsystem (see the
180
+ ConnectionPoolManager module). Default is the default provided by the
181
+ ConnectionPoolManager.</comment>
182
+ </param>
183
+ <param name="fedoraStorageHintProvider" value="org.fcrepo.server.storage.NullStorageHintsProvider">
184
+ <comment>Hints are gathered and passed to the underline storage systems (only Akubra for now).
185
+ These are meta data or contextual information about object or datastream to be added or updated.
186
+ The default implementation is NullStorageHintsProvider; it provides no hints. You you can implement
187
+ your own FedoraStorageHintProvider and drop your implementation to the $CATALINA_HOME/webapps/fedora/WEB_INF/classes
188
+ directory (unpackaged), or the $CATALINA_HOME/webapps/fedora/WEB_INF/lib director (packaged).</comment>
189
+ </param>
190
+ <param name="gSearchRESTURL" value="http://localhost:8080/fedoragsearch/rest">
191
+ <comment>The REST endpoint of the Fedora Generic Search service.
192
+ This parameter is only required if GSearchDOManager is
193
+ used.</comment>
194
+ </param>
195
+ <param name="defaultExportFormat" value="info:fedora/fedora-system:FOXML-1.1"/>
196
+ <param name="defaultRELSControlGroup" value="X">
197
+ <comment>The control group to use for system-generated RELS-EXT and
198
+ RELS-INT datastreams where these are not already present when
199
+ adding relationships via addRelationship. Must be &quot;X&quot; or &quot;M&quot;.</comment>
200
+ </param>
201
+ <param name="pidNamespace" value="changeme">
202
+ <comment>This is the namespace id for pids of newly-created objects.
203
+ This should be unique for a repository. It can be from 1 to 17
204
+ characters, and may only contain A-Z, a-z, 0-9, &apos;.&apos;, or &apos;-&apos; (dash).</comment>
205
+ </param>
206
+ </module>
207
+ <module role="org.fcrepo.server.management.Management" class="org.fcrepo.server.management.ManagementModule">
208
+ <comment>The management subsystem. This implements the methods necessary
209
+ to fulfill API-M requests without regard to:
210
+ - how the service is exposed
211
+ - how bytestreams and java types might be marshalled/demarshalled over the wire
212
+ - how the storage subsystem is implemented.</comment>
213
+ <param name="purgeDelayInMillis" value="60000">
214
+ <comment>Optional, default is 60000 (1 minute).
215
+ This specifies the amount of time between checks to remove
216
+ temporary files uploaded via the API-M upload interface. During
217
+ each check, old files whose age exceeds uploadStorageMinutes
218
+ will be removed.</comment>
219
+ </param>
220
+ <param name="decorator1" value="org.fcrepo.server.messaging.NotificationInvocationHandler"/>
221
+ <param name="checksumAlgorithm" value="MD5">
222
+ <comment>Specifies which checksumming algorithm is to be used when
223
+ automatically computing checksums as specified by the above
224
+ parameter. Valid values are: MD5 SHA-1 SHA-256 SHA-384 SHA-512.</comment>
225
+ </param>
226
+ <param name="uploadStorageMinutes" value="5">
227
+ <comment>Optional, default is 5.
228
+ This specifies the minimum amount of time that each uploaded
229
+ file should be kept in temporary storage.</comment>
230
+ </param>
231
+ <param name="autoChecksum" value="false">
232
+ <comment>Controls whether a checksum is automatically computed for
233
+ every datastream as the datastream is added to the repository. This
234
+ will allow the integrity of datastream contents to be periodically
235
+ checked to insure the object is not corrupted.</comment>
236
+ </param>
237
+ </module>
238
+ <module role="org.fcrepo.server.access.Access" class="org.fcrepo.server.access.DefaultAccess">
239
+ <comment>Description: The access subsystem. This implements the methods
240
+ necessary to fulfill API-A requests without regard to:
241
+ - how the service is exposed
242
+ - how bytestreams and java types might be marshalled/demarshalled
243
+ over the wire.</comment>
244
+ <param name="doMediateDatastreams" value="false">
245
+ <comment>A boolean switch indicating whether Datastream Mediation is
246
+ activated or not. Datastream Mediation is required if using basic
247
+ authentication for API-A. When basic authentication is enabled for
248
+ API-A, backend services used by custom disseminations may or may not be
249
+ capable of authenticating with the Fedora server. Datastream mediation
250
+ coupled with the backend service configuration information in the
251
+ beSecurity.xml file enables the Fedora server to determine which backend
252
+ services are required to authenticate and which ones are allowed to
253
+ connect without authentication. Datastream mediation provides additional
254
+ repository security by not exposing the physical location of Referenced
255
+ Content datastreams to external mechanisms(services). Instead of
256
+ exposing the actual physical location of Referenced Content datastreams,
257
+ Datastream Mediation functions as a proxy requiring all external
258
+ services to communicate through the Fedora server to resolve the
259
+ location of Referenced Content datastreams.
260
+
261
+ IMPORTANT: For Datastream Mediation to function, the Fedora server must
262
+ be internet accessible using the configured name for fedoraServerHost
263
+ and fedoraServerPort. For example, using the default fedoraServerHost
264
+ value of &quot;localhost&quot; will not work if you have remote backend services
265
+ since the hostname of &quot;localhost&quot; will not be resolvable as the Fedora
266
+ server by the remote backend services. This requirement can be difficult
267
+ to satisfy if the Fedora server is located behind a firewall and you do
268
+ not have ready access to the firewall&apos;s configuration to enable the
269
+ required access. If the Fedora server is behind a firewall and you have
270
+ no access to the firewall&apos;s configuration, you are limited to keeping
271
+ Datastream Mediation turned off. Note that this will also prevent you
272
+ from using basic authentication with API-A. The default value of
273
+ doMediateDatastreams is false.</comment>
274
+ </param>
275
+ </module>
276
+ <module role="org.fcrepo.server.access.DynamicAccess" class="org.fcrepo.server.access.DynamicAccessModule">
277
+ <comment>The dynamic behavior module for the access subsystem. This
278
+ implements the methods necessary to fulfill API-A requests without
279
+ regard to:
280
+ - dynamically associating a default behavior definition and mechanism with objects
281
+ - (Future) dynamically associating other behavior definitions and mechanisms
282
+ with objects
283
+ - running disseminations of dynamic behaviors</comment>
284
+ <param name="fedora-system:1" value="org.fcrepo.server.access.internalservices.Bootstrap">
285
+ <comment>The interface that defines the methods of the bootstrap
286
+ disseminator. These methods are &quot;built-in&quot; to the Fedora system, and
287
+ are dynamically associated with every behavior definition and
288
+ behavior mechanism object.</comment>
289
+ </param>
290
+ <param name="fedora-system:2" value="org.fcrepo.server.access.internalservices.BootstrapImpl">
291
+ <comment>The class that implements the methods of the bootstrap
292
+ disseminator. These method implementations are &quot;built-in&quot; to the
293
+ Fedora system, and are dynamically associated with every behavior
294
+ definition and behavior mechanism object. This class can be thought
295
+ of as implementing an &quot;internal service&quot; whereas other disseminators
296
+ use external services (described by WSDL) to do their work.</comment>
297
+ </param>
298
+ <param name="fedora-system:3" value="org.fcrepo.server.access.defaultdisseminator.DefaultDisseminator">
299
+ <comment>The interface that defines the methods of the default
300
+ disseminator. These methods are &quot;built-in&quot; to the Fedora system, and
301
+ are dynamically associated with every object.</comment>
302
+ </param>
303
+ <param name="fedora-system:4" value="org.fcrepo.server.access.defaultdisseminator.DefaultDisseminatorImpl">
304
+ <comment>The class that implements the methods of the default
305
+ disseminator. These method implementations are &quot;built-in&quot; to the
306
+ Fedora system, and are dynamically associated with every object.
307
+ This class can be though of as implementing an &quot;internal service&quot;
308
+ whereas other disseminators use external services (described by
309
+ WSDL) to do their work.</comment>
310
+ </param>
311
+ </module>
312
+ <module role="org.fcrepo.server.search.FieldSearch" class="org.fcrepo.server.search.FieldSearchSQLModule">
313
+ <comment>Supports the API-A simpleSearch and advancedSearch methods.</comment>
314
+ <param name="indexDCFields" value="true">
315
+ <comment>(optional, default is true) Whether the content of the DC
316
+ datastream should be examined and the contents indexed, for each object.
317
+ You may wish to save time and space by disabling DC field indexing,
318
+ particularly if you have an external search service (such as Fedora
319
+ Generic Search) that already fulfills this need.
320
+ Note: If you change this value on a Fedora repository that has been
321
+ running for some time, you will need to perform a SQL rebuild using the
322
+ Fedora Rebuilder tool if you want to change objects that have already
323
+ been ingested.</comment>
324
+ </param>
325
+ <param name="connectionPool" value="localDerbyPool">
326
+ <comment>(optional) To make unspecified, comment out or delete the
327
+ whole param line as opposed to using an empty string,
328
+ default=ConnectionPoolManager&apos;s default) The connectionPool
329
+ providing the connection to the database to be used. Warning: When
330
+ setting these values, keep in mind that while a session is not timed
331
+ out (maxSecondsPerSession seconds haven&apos;t elapsed, and not all
332
+ results have been requested), a connection from the pool is tied up.
333
+ Therefore, the connectionPool should be at least of size n, large
334
+ enough to accomodate n simultaneous search sessions. The longer
335
+ maxSecondsPerSession is, the more chance you have of tying up all
336
+ available connections from the pool. Therefore, keep
337
+ maxSecondsPerSession fairly low, but still reasonable for an
338
+ automated program or user to serially get a long list of results,
339
+ and make sure you have a connectionPool large enough to accomodate
340
+ your users.</comment>
341
+ </param>
342
+ <param name="maxSecondsPerSession" value="500">
343
+ <comment>(required, must be &gt; 0)
344
+ The maximum number of seconds that the server guarantees subsequent
345
+ search results may be obtained. This is only used in cases where the
346
+ number of results is greater than maxResults (as specified by the
347
+ server [above] or the client [in the search request]).</comment>
348
+ </param>
349
+ <param name="maxResults" value="100">
350
+ <comment>(required, must be &gt; 0)
351
+ The maximum number of records to
352
+ return as the result of a search. Even if a client requests more
353
+ results at a time, this is the cutoff value.</comment>
354
+ </param>
355
+ </module>
356
+ <module role="org.fcrepo.server.resourceIndex.ResourceIndex" class="org.fcrepo.server.resourceIndex.ResourceIndexModule">
357
+ <comment>Supports the ResourceIndex.</comment>
358
+ <param name="level" value="0">
359
+ <comment>(required)
360
+ Index level. Currently, only 0, and 1 are supported levels.
361
+ 0 = off and 1 = on.
362
+ WARNING: changing the level (except to 0) requires
363
+ 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="datastore" value="localMulgaraTriplestore">
377
+ <comment>(required)
378
+ Name of the triplestore to use. WARNING: changing the
379
+ triplestore running the Resource Index Rebuilder.</comment>
380
+ </param>
381
+ <param name="alias:test" value="http://example.org/terms#">
382
+ <comment>(optional) Aliases that can be used for queries. The param
383
+ name of an alias starts with the string &quot;alias:&quot; and is followed by
384
+ the name of the alias (shortcut) for the value, which is a URI
385
+ prefix. For example: name=&quot;alias:test&quot;
386
+ value=&quot;http://example.org/terms#&quot; will allow a query to use
387
+ test:apple instead of http://example.org/terms#apple</comment>
388
+ </param>
389
+ </module>
390
+ <module role="org.fcrepo.oai.OAIProvider" class="org.fcrepo.server.oai.FedoraOAIProviderModule">
391
+ <comment>Description: Exposes the repository for OAI harvesters.</comment>
392
+ <param name="maxRecords" value="100"/>
393
+ <param name="friends" value="http://arXiv.org/oai2 http://memory.loc.gov/cgi-bin/oai2_0"/>
394
+ <param name="adminEmails" value="oai-admin@example.org bob@example.org"/>
395
+ <param name="repositoryDomainName" value="example.org"/>
396
+ <param name="maxHeaders" value="100"/>
397
+ <param name="repositoryName" value="Your Fedora Repository Name Here"/>
398
+ </module>
399
+ <module role="org.fcrepo.server.storage.translation.DOTranslator" class="org.fcrepo.server.storage.translation.DOTranslatorModule">
400
+ <comment>Supports translation from DigitalObject to a stream of some
401
+ format, and vice-versa. The parameters below specify
402
+ serializer/deserializer classes to be used for a given format. Those
403
+ classes must implement the DOSerializer/DODeserializer interfaces.</comment>
404
+ <param name="serializer_info:fedora/fedora-system:ATOM-1.1" value="org.fcrepo.server.storage.translation.Atom1_1DOSerializer"/>
405
+ <param name="deserializer_info:fedora/fedora-system:FOXML-1.1" value="org.fcrepo.server.storage.translation.FOXML1_1DODeserializer"/>
406
+ <param name="serializer_info:fedora/fedora-system:METSFedoraExt-1.0" value="org.fcrepo.server.storage.translation.METSFedoraExt1_0DOSerializer"/>
407
+ <param name="deserializer_info:fedora/fedora-system:METSFedoraExt-1.1" value="org.fcrepo.server.storage.translation.METSFedoraExt1_1DODeserializer"/>
408
+ <param name="serializer_info:fedora/fedora-system:METSFedoraExt-1.1" value="org.fcrepo.server.storage.translation.METSFedoraExt1_1DOSerializer"/>
409
+ <param name="deserializer_info:fedora/fedora-system:METSFedoraExt-1.0" value="org.fcrepo.server.storage.translation.METSFedoraExt1_0DODeserializer"/>
410
+ <param name="serializer_info:fedora/fedora-system:FOXML-1.0" value="org.fcrepo.server.storage.translation.FOXML1_0DOSerializer"/>
411
+ <param name="deserializer_info:fedora/fedora-system:ATOMZip-1.1" value="org.fcrepo.server.storage.translation.AtomZip1_1DODeserializer"/>
412
+ <param name="serializer_info:fedora/fedora-system:FOXML-1.1" value="org.fcrepo.server.storage.translation.FOXML1_1DOSerializer"/>
413
+ <param name="deserializer_info:fedora/fedora-system:ATOM-1.1" value="org.fcrepo.server.storage.translation.Atom1_1DODeserializer"/>
414
+ <param name="deserializer_info:fedora/fedora-system:FOXML-1.0" value="org.fcrepo.server.storage.translation.FOXML1_0DODeserializer"/>
415
+ <param name="serializer_info:fedora/fedora-system:ATOMZip-1.1" value="org.fcrepo.server.storage.translation.AtomZip1_1DOSerializer"/>
416
+ </module>
417
+ <module role="org.fcrepo.server.management.PIDGenerator" class="org.fcrepo.server.management.BasicPIDGenerator">
418
+ <comment>The pid generator.</comment>
419
+ <param name="pidgen_log_dir" value="pidgen"/>
420
+ </module>
421
+ <module role="org.fcrepo.server.messaging.Messaging" class="org.fcrepo.server.messaging.MessagingModule">
422
+ <comment>Fedora's Java Messaging Service (JMS) Module</comment>
423
+ <param name="enabled" value="false"/>
424
+ <param name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
425
+ <param name="java.naming.provider.url" value="vm:(broker:(tcp://localhost:61616))"/>
426
+ <param name="datastore1" value="apimUpdateMessages">
427
+ <comment>A datastore representing a JMS Destination for APIM events which update the repository</comment>
428
+ </param>
429
+ <param name="datastore2" value="apimAccessMessages">
430
+ <comment>A datastore representing a JMS Destination for APIM events which do not update the repository</comment>
431
+ </param>
432
+ </module>
433
+ <module role="org.fcrepo.server.storage.ConnectionPoolManager" class="org.fcrepo.server.storage.ConnectionPoolManagerImpl">
434
+ <comment>This module facilitates obtaining ConnectionPools</comment>
435
+ <param name="defaultPoolName" value="localDerbyPool"/>
436
+ <param name="poolNames" value="localDerbyPool"/>
437
+ </module>
438
+ <module role="org.fcrepo.server.validation.DOValidator" class="org.fcrepo.server.validation.DOValidatorModule">
439
+ <comment>Description: Supports validation of digital objects, including
440
+ XML Schema validation, Schematron validation (to Fedora Rules schema
441
+ written in Schematron language), and other programatic validation
442
+ including referential integrity checking of existence and
443
+ availability of distributed data and/or services.</comment>
444
+ <param name="tempDir" value="work">
445
+ <comment>(required)
446
+ This is a directory that the validation module can use as a work space, as
447
+ when it must write a temporary file.</comment>
448
+ </param>
449
+ <param name="rules_info:fedora/fedora-system:ATOM-1.1" value="schematron/atom-bogus.xml">
450
+ <comment>The local path to the Schematron Rules used for
451
+ Fedora-specific on Atom XML files.</comment>
452
+ </param>
453
+ <param name="schtron_preprocessor" value="schematron/preprocessor.xslt"/>
454
+ <param name="rules_info:fedora/fedora-system:ATOMZip-1.1" value="schematron/atom-bogus.xml">
455
+ <comment>The local path to the Schematron Rules used for
456
+ Fedora-specific on Atom Zip files.</comment>
457
+ </param>
458
+ <param name="rules_info:fedora/fedora-system:FOXML-1.1" value="schematron/foxmlRules1-1.xml">
459
+ <comment>The local path to the Schematron Rules used for
460
+ Fedora-specific validation on FOXML 1.1 XML files.</comment>
461
+ </param>
462
+ <param name="rules_info:fedora/fedora-system:FOXML-1.0" value="schematron/foxmlRules1-0.xml">
463
+ <comment>The local path to the Schematron Rules used for
464
+ Fedora-specific validation on FOXML 1.0 XML files.</comment>
465
+ </param>
466
+ <param name="xsd_info:fedora/fedora-system:METSFedoraExt-1.1" value="xsd/mets-fedora-ext1-1.xsd">
467
+ <comment>The local path for the Fedora-METS XML
468
+ schema used to do XML schema validation of digital objects.</comment>
469
+ </param>
470
+ <param name="xsd_info:fedora/fedora-system:METSFedoraExt-1.0" value="xsd/mets-fedora-ext.xsd">
471
+ <comment>The local path for the Fedora-METS 1.0 XML
472
+ schema used to do XML schema validation of digital objects.</comment>
473
+ </param>
474
+ <param name="xsd_xacml_policy1.0" value="xsd/cs-xacml-schema-policy-1.0.xsd">
475
+ <comment>The local path for the OASIS XACML XML policy schema
476
+ used to do XML schema validation of XACML policies.</comment>
477
+ </param>
478
+ <param name="xsd_info:fedora/fedora-system:FOXML-1.1" value="xsd/foxml1-1.xsd">
479
+ <comment>The local path for the Fedora FOXML 1.1 XML schema
480
+ used to do XML schema validation of digital objects</comment>
481
+ </param>
482
+ <param name="xsd_info:fedora/fedora-system:FOXML-1.0" value="xsd/foxml1-0.xsd">
483
+ <comment>The local path for the Fedora FOXML 1.0 XML schema
484
+ used to do XML schema validation of digital objects</comment>
485
+ </param>
486
+ <param name="xsd_info:fedora/fedora-system:ATOM-1.1" value="xsd/atom.xsd">
487
+ <comment>The local path for the Atom XML schema used to do XML
488
+ schema validation of digital objects</comment>
489
+ </param>
490
+ <param name="rules_info:fedora/fedora-system:METSFedoraExt-1.0" value="schematron/metsExtRules1-0.xml">
491
+ <comment>The local path to the Schematron Rules used for
492
+ Fedora-specific validation on Fedora-METS 1.0 XML files.</comment>
493
+ </param>
494
+ <param name="xsd_info:fedora/fedora-system:ATOMZip-1.1" value="xsd/atom.xsd">
495
+ <comment>The local path for the Atom XML schema used to do XML
496
+ schema validation of digital objects</comment>
497
+ </param>
498
+ <param name="rules_info:fedora/fedora-system:METSFedoraExt-1.1" value="schematron/metsExtRules1-1.xml">
499
+ <comment>The local path to the Schematron Rules used for
500
+ Fedora-specific validation on Fedora-METS XML files.</comment>
501
+ </param>
502
+ </module>
503
+ <module role="org.fcrepo.server.storage.ExternalContentManager" class="org.fcrepo.server.storage.DefaultExternalContentManager">
504
+ <comment>This module facilitates obtaining external content via HTTP</comment>
505
+ </module>
506
+ <datastore id="localMySQLPool">
507
+ <comment>MySQL database on localhost with db name of fedora3. Each
508
+ connection pool instance has several configuration parameter that
509
+ can be used to tune the options for the connection pool. It is
510
+ recommended that you not change the default values unless you are
511
+ trying to address a specific performance issue. For additional
512
+ information regarding connection pool options, refer to the Apache
513
+ Commons Pool API documentation at
514
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
515
+ <param name="maxIdle" value="10">
516
+ <comment>The maximum number of idle instances in pool.</comment>
517
+ </param>
518
+ <param name="testOnBorrow" value="true">
519
+ <comment>When true objects are validated before borrowed from the
520
+ pool.</comment>
521
+ </param>
522
+ <param name="testWhileIdle" value="true">
523
+ <comment>When true, objects are validated by the idle object evictor
524
+ thread.</comment>
525
+ </param>
526
+ <param name="validationQuery" value="select 1">
527
+ <comment>The query to run when validating connections.
528
+ Connections are validated according to the testOnBorrow,
529
+ testOnReturn, and testWhileIdle configuration values.
530
+ If this is specified, it must be a SQL SELECT statement
531
+ that returns at least one row. If this is NOT specified,
532
+ validation tests will not be run.</comment>
533
+ </param>
534
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.MySQLDDLConverter"/>
535
+ <param name="dbUsername" value="fedoraAdmin">
536
+ <comment>The database user name.</comment>
537
+ </param>
538
+ <param name="testOnReturn" value="true">
539
+ <comment>When true, objects are validated before returned to the
540
+ pool.</comment>
541
+ </param>
542
+ <param name="maxActive" value="100">
543
+ <comment>The maximum number of active instances in pool.</comment>
544
+ </param>
545
+ <param name="dbPassword" value="fedoraAdmin">
546
+ <comment>The database password.</comment>
547
+ </param>
548
+ <param name="jdbcURL" value="jdbc:mysql://localhost/fedora3?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true">
549
+ <comment>The JDBC connection URL.</comment>
550
+ </param>
551
+ <param name="whenExhaustedAction" value="1">
552
+ <comment>Action to take when a new object is requested and the the pool has
553
+ reached maximum number of active objects. Valid values are:
554
+ 0 (fail i.e., throw Exception)
555
+ 1 (block i.e., wait until pool resources are freed)
556
+ 2 (grow i.e., increase the size of the pool).</comment>
557
+ </param>
558
+ <param name="numTestsPerEvictionRun" value="3">
559
+ <comment>The number of objects to be examined on each run of idle
560
+ evictor thread (if applicable). A value less than zero indicates
561
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
562
+ </param>
563
+ <param name="jdbcDriverClass" value="com.mysql.jdbc.Driver">
564
+ <comment>The JDBC driver class name.</comment>
565
+ </param>
566
+ <param name="maxWait" value="-1">
567
+ <comment>The maximum amount of time in milliseconds the
568
+ borrowObject() method should wait before throwing an Exception when
569
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
570
+ than zero indicates block indefinitely.</comment>
571
+ </param>
572
+ <param name="minIdle" value="0">
573
+ <comment>The minimum of idle instances in pool.</comment>
574
+ </param>
575
+ <param name="minEvictableIdleTimeMillis" value="1800000">
576
+ <comment>The minimum amount of time in milliseconds an object can be
577
+ idle in pool before eligible for eviction (if applicable). A value
578
+ less than zero indicates no object will be evicted due to idle time
579
+ alone.</comment>
580
+ </param>
581
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
582
+ <comment>The time in milliseconds to sleep between runs of the idle
583
+ object evictor thread. A value less than zero indicates no idle
584
+ evictor thread is run.</comment>
585
+ </param>
586
+ </datastore>
587
+ <datastore id="localDerbyPool">
588
+ <comment>Derby database on localhost running on port 1527 Each
589
+ connection pool instance has several configuration parameter that
590
+ can be used to tune the options for the connection pool. It is
591
+ recommended that you not change the default values unless you are
592
+ trying to address a specific performance issue. For additional
593
+ information regarding connection pool options, refer to the Apache
594
+ Commons Pool API documentation at
595
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
596
+ <param name="maxIdle" value="10">
597
+ <comment>The maximum number of idle instances in pool.</comment>
598
+ </param>
599
+ <param name="testOnBorrow" value="true">
600
+ <comment>When true objects are validated before borrowed from the
601
+ pool.</comment>
602
+ </param>
603
+ <param name="testWhileIdle" value="true">
604
+ <comment>When true, objects are validated by the idle object evictor
605
+ thread.</comment>
606
+ </param>
607
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.DerbyDDLConverter"/>
608
+ <param name="dbUsername" value="fedoraAdmin">
609
+ <comment>The database user name.</comment>
610
+ </param>
611
+ <param name="testOnReturn" value="true">
612
+ <comment>When true, objects are validated before returned to the
613
+ pool.</comment>
614
+ </param>
615
+ <param name="maxActive" value="100">
616
+ <comment>The maximum number of active instances in pool.</comment>
617
+ </param>
618
+ <param name="dbPassword" value="fedoraAdmin">
619
+ <comment>The database password.</comment>
620
+ </param>
621
+ <param name="jdbcURL" value="jdbc:derby:fedora/default/derby/fedora3;create=true">
622
+ <comment>The JDBC connection URL.</comment>
623
+ </param>
624
+ <param name="whenExhaustedAction" value="1">
625
+ <comment>Action to take when a new object is requested and the the pool has
626
+ reached maximum number of active objects. Valid values are:
627
+ 0 (fail i.e., throw Exception)
628
+ 1 (block i.e., wait until pool resources are freed)
629
+ 2 (grow i.e., increase the size of the pool).</comment>
630
+ </param>
631
+ <param name="numTestsPerEvictionRun" value="3">
632
+ <comment>The number of objects to be examined on each run of idle
633
+ evictor thread (if applicable). A value less than zero indicates
634
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
635
+ </param>
636
+ <param name="jdbcDriverClass" value="org.apache.derby.jdbc.EmbeddedDriver">
637
+ <comment>The JDBC driver class name.</comment>
638
+ </param>
639
+ <param name="maxWait" value="-1">
640
+ <comment>The maximum amount of time in milliseconds the
641
+ borrowObject() method should wait before throwing an Exception when
642
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
643
+ than zero indicates block indefinitely.</comment>
644
+ </param>
645
+ <param name="minIdle" value="0">
646
+ <comment>The minimum of idle instances in pool.</comment>
647
+ </param>
648
+ <param name="minEvictableIdleTimeMillis" value="1800000">
649
+ <comment>The minimum amount of time in milliseconds an object can be
650
+ idle in pool before eligible for eviction (if applicable). A value
651
+ less than zero indicates no object will be evicted due to idle time
652
+ alone.</comment>
653
+ </param>
654
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
655
+ <comment>The time in milliseconds to sleep between runs of the idle
656
+ object evictor thread. A value less than zero indicates no idle
657
+ evictor thread is run.</comment>
658
+ </param>
659
+ </datastore>
660
+ <datastore id="localOraclePool">
661
+ <comment>Oracle database on localhost with SID=fedora3 Each
662
+ connection pool instance has several configuration parameter that
663
+ can be used to tune the options for the connection pool. It is
664
+ recommended that you not change the default values unless you are
665
+ trying to address a specific performance issue. For additional
666
+ information regarding connection pool options, refer to the Apache
667
+ Commons Pool API documentation at
668
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
669
+ <param name="maxIdle" value="10">
670
+ <comment>The maximum number of idle instances in pool.</comment>
671
+ </param>
672
+ <param name="testOnBorrow" value="true">
673
+ <comment>When true objects are validated before borrowed from the
674
+ pool.</comment>
675
+ </param>
676
+ <param name="testWhileIdle" value="true">
677
+ <comment>When true, objects are validated by the idle object evictor
678
+ thread.</comment>
679
+ </param>
680
+ <param name="validationQuery" value="select &apos;validationQuery&apos; from dual">
681
+ <comment>The query to run when validating connections.
682
+ Connections are validated according to the testOnBorrow,
683
+ testOnReturn, and testWhileIdle configuration values.
684
+ If this is specified, it must be a SQL SELECT statement
685
+ that returns at least one row. If this is NOT specified,
686
+ validation tests will not be run.</comment>
687
+ </param>
688
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.OracleDDLConverter"/>
689
+ <param name="dbUsername" value="fedoraAdmin">
690
+ <comment>The database user name.</comment>
691
+ </param>
692
+ <param name="connection.SetBigStringTryClob" value="true"/>
693
+ <param name="testOnReturn" value="true">
694
+ <comment>When true, objects are validated before returned to the
695
+ pool.</comment>
696
+ </param>
697
+ <param name="maxActive" value="100">
698
+ <comment>The maximum number of active instances in pool.</comment>
699
+ </param>
700
+ <param name="dbPassword" value="fedoraAdmin">
701
+ <comment>The database password.</comment>
702
+ </param>
703
+ <param name="jdbcURL" value="jdbc:oracle:thin:@localhost:1521:fedora3">
704
+ <comment>The JDBC connection URL.</comment>
705
+ </param>
706
+ <param name="whenExhaustedAction" value="1">
707
+ <comment>Action to take when a new object is requested and the the pool has
708
+ reached maximum number of active objects. Valid values are:
709
+ 0 (fail i.e., throw Exception)
710
+ 1 (block i.e., wait until pool resources are freed)
711
+ 2 (grow i.e., increase the size of the pool).</comment>
712
+ </param>
713
+ <param name="numTestsPerEvictionRun" value="3">
714
+ <comment>The number of objects to be examined on each run of idle
715
+ evictor thread (if applicable). A value less than zero indicates
716
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
717
+ </param>
718
+ <param name="jdbcDriverClass" value="oracle.jdbc.OracleDriver">
719
+ <comment>The JDBC driver class name.</comment>
720
+ </param>
721
+ <param name="maxWait" value="-1">
722
+ <comment>The maximum amount of time in milliseconds the
723
+ borrowObject() method should wait before throwing an Exception when
724
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
725
+ than zero indicates block indefinitely.</comment>
726
+ </param>
727
+ <param name="minIdle" value="0">
728
+ <comment>The minimum of idle instances in pool.</comment>
729
+ </param>
730
+ <param name="minEvictableIdleTimeMillis" value="1800000">
731
+ <comment>The minimum amount of time in milliseconds an object can be
732
+ idle in pool before eligible for eviction (if applicable). A value
733
+ less than zero indicates no object will be evicted due to idle time
734
+ alone.</comment>
735
+ </param>
736
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
737
+ <comment>The time in milliseconds to sleep between runs of the idle
738
+ object evictor thread. A value less than zero indicates no idle
739
+ evictor thread is run.</comment>
740
+ </param>
741
+ </datastore>
742
+ <datastore id="localPostgreSQLPool">
743
+ <comment>PostgreSQL database on localhost with db name of fedora3. Each
744
+ connection pool instance has several configuration parameter that
745
+ can be used to tune the options for the connection pool. It is
746
+ recommended that you not change the default values unless you are
747
+ trying to address a specific performance issue. For additional
748
+ information regarding connection pool options, refer to the Apache
749
+ Commons Pool API documentation at
750
+ http://jakarta.apache.org/commons/pool/apidocs/index.html.</comment>
751
+ <param name="maxIdle" value="10">
752
+ <comment>The maximum number of idle instances in pool.</comment>
753
+ </param>
754
+ <param name="testOnBorrow" value="true">
755
+ <comment>When true objects are validated before borrowed from the
756
+ pool.</comment>
757
+ </param>
758
+ <param name="testWhileIdle" value="true">
759
+ <comment>When true, objects are validated by the idle object evictor
760
+ thread.</comment>
761
+ </param>
762
+ <param name="validationQuery" value="select 1">
763
+ <comment>The query to run when validating connections.
764
+ Connections are validated according to the testOnBorrow,
765
+ testOnReturn, and testWhileIdle configuration values.
766
+ If this is specified, it must be a SQL SELECT statement
767
+ that returns at least one row. If this is NOT specified,
768
+ validation tests will not be run.</comment>
769
+ </param>
770
+ <param name="ddlConverter" value="org.fcrepo.server.utilities.PostgresDDLConverter"/>
771
+ <param name="dbUsername" value="fedoraAdmin">
772
+ <comment>The database user name.</comment>
773
+ </param>
774
+ <param name="testOnReturn" value="true">
775
+ <comment>When true, objects are validated before returned to the
776
+ pool.</comment>
777
+ </param>
778
+ <param name="maxActive" value="100">
779
+ <comment>The maximum number of active instances in pool.</comment>
780
+ </param>
781
+ <param name="dbPassword" value="fedoraAdmin">
782
+ <comment>The database password.</comment>
783
+ </param>
784
+ <param name="jdbcURL" value="jdbc:postgresql:fedora3">
785
+ <comment>The JDBC connection URL.</comment>
786
+ </param>
787
+ <param name="whenExhaustedAction" value="1">
788
+ <comment>Action to take when a new object is requested and the the pool has
789
+ reached maximum number of active objects. Valid values are:
790
+ 0 (fail i.e., throw Exception)
791
+ 1 (block i.e., wait until pool resources are freed)
792
+ 2 (grow i.e., increase the size of the pool).</comment>
793
+ </param>
794
+ <param name="numTestsPerEvictionRun" value="3">
795
+ <comment>The number of objects to be examined on each run of idle
796
+ evictor thread (if applicable). A value less than zero indicates
797
+ that ceil(numIdle)/abs(numTestsPerEvictionRun) will be run.</comment>
798
+ </param>
799
+ <param name="jdbcDriverClass" value="org.postgresql.Driver">
800
+ <comment>The JDBC driver class name.</comment>
801
+ </param>
802
+ <param name="maxWait" value="-1">
803
+ <comment>The maximum amount of time in milliseconds the
804
+ borrowObject() method should wait before throwing an Exception when
805
+ whenExhaustedAction is set to WHEN_EXHAUSTED_BLOCK. A value less
806
+ than zero indicates block indefinitely.</comment>
807
+ </param>
808
+ <param name="minIdle" value="0">
809
+ <comment>The minimum of idle instances in pool.</comment>
810
+ </param>
811
+ <param name="minEvictableIdleTimeMillis" value="1800000">
812
+ <comment>The minimum amount of time in milliseconds an object can be
813
+ idle in pool before eligible for eviction (if applicable). A value
814
+ less than zero indicates no object will be evicted due to idle time
815
+ alone.</comment>
816
+ </param>
817
+ <param name="timeBetweenEvictionRunsMillis" value="-1">
818
+ <comment>The time in milliseconds to sleep between runs of the idle
819
+ object evictor thread. A value less than zero indicates no idle
820
+ evictor thread is run.</comment>
821
+ </param>
822
+ </datastore>
823
+ <datastore id="localMulgaraTriplestore">
824
+ <comment>local Mulgara Triplestore used by the Resource Index</comment>
825
+ <param name="poolInitialSize" value="3">
826
+ <comment>The initial size of the session pool used for queries.
827
+ Note: A value of 0 will cause the Resource Index to operate in
828
+ synchronized mode: concurrent read/write requests are put in a queue
829
+ and handled in FIFO order; this will severely impair performance and
830
+ is only intended for debugging.</comment>
831
+ </param>
832
+ <param name="bufferSafeCapacity" value="40000">
833
+ <comment>The maximum size the buffer can reach before being forcibly
834
+ flushed. If this threshold is reached, flushing will occur in the
835
+ foreground and the buffer will be locked for writing until it is
836
+ finished. This should be larger than autoFlushBufferSize.</comment>
837
+ </param>
838
+ <param name="autoCreate" value="true">
839
+ <comment>Create the model if it doesn&apos;t already exist.
840
+ At startup, the model will be automatically created. In addition, an
841
+ XML schema datatyped model named &quot;xsd&quot; will also be automatically
842
+ created.</comment>
843
+ </param>
844
+ <param name="bufferFlushBatchSize" value="20000">
845
+ <comment>The number of updates to send to the triplestore at a time.
846
+ This should be the same size as, or smaller than
847
+ autoFlushBufferSize.</comment>
848
+ </param>
849
+ <param name="autoTextIndex" value="false">
850
+ <comment>Whether to propagate adds/deletes to a full-text
851
+ [Full-Text] model automatically. While a very useful feature,
852
+ enabling full-text indexing adds significantly to object ingest
853
+ times. If true, the text model will be named modelName-fullText.
854
+ Note that if this is true and autoCreate is true, the text model
855
+ will also be created if it doesn&apos;t already exist.</comment>
856
+ </param>
857
+ <param name="poolMaxGrowth" value="-1">
858
+ <comment>Maximum number of additional sessions the pool may add. If
859
+ specified as -1, no limit will be placed on pool growth.</comment>
860
+ </param>
861
+ <param name="remote" value="false">
862
+ <comment>Tells the connector to communicate with Mulgara in remote or
863
+ local mode. If true, the host parameter must be defined. If false,
864
+ the path parameter must be defined.</comment>
865
+ </param>
866
+ <param name="autoFlushDormantSeconds" value="5">
867
+ <comment>Seconds of buffer inactivity that will trigger an
868
+ auto-flush. If this threshold is reached, flushing will occur in the
869
+ background, during which time the buffer is still available for
870
+ writing.</comment>
871
+ </param>
872
+ <param name="serverName" value="fedora">
873
+ <comment>The server name for rmi binding.</comment>
874
+ </param>
875
+ <param name="autoFlushBufferSize" value="20000">
876
+ <comment>The size at which the buffer should be auto-flushed. If
877
+ this threshold is reached, flushing will occur in the background,
878
+ during which time the buffer is still available for
879
+ writing.</comment>
880
+ </param>
881
+ <param name="modelName" value="ri">
882
+ <comment>The name of the model to use.</comment>
883
+ </param>
884
+ <param name="readOnly" value="false">
885
+ <comment>Whether the triplestore should be read-only. Most Fedora
886
+ repositories will set this to false.</comment>
887
+ </param>
888
+ <param name="path" value="data/resourceIndex" isFilePath="true">
889
+ <comment>The local path to the main triplestore directory.</comment>
890
+ </param>
891
+ <param name="connectorClassName" value="org.trippi.impl.mulgara.MulgaraConnector">
892
+ <comment>The name of the Trippi Connector class used to communicate
893
+ with the triplestore.</comment>
894
+ </param>
895
+ </datastore>
896
+ <datastore id="localPostgresMPTTriplestore">
897
+ <comment>Example local MPTStore backed by Postgres.
898
+ To use this triplestore for the Resource Index:
899
+ 1) In fedora.fcfg, change the "datastore" parameter of the
900
+ ResourceIndex module to localPostgresMPTTriplestore.
901
+ 2) Login to your Postgres server as an administrative user and
902
+ run the following commands:
903
+ CREATE ROLE "fedoraAdmin" LOGIN PASSWORD 'fedoraAdmin'
904
+ NOINHERIT CREATEDB
905
+ VALID UNTIL 'infinity';
906
+ CREATE DATABASE "riTriples"
907
+ WITH ENCODING='SQL_ASCII'
908
+ OWNER="fedoraAdmin";
909
+ 3) Make sure you can login to your Postgres server as fedoraAdmin.
910
+ 4) Download the appropriate Postgres JDBC 3 driver from
911
+ http://jdbc.postgresql.org/download.html
912
+ and make sure it's accessible to your servlet container.
913
+ If you're running Tomcat, putting it in common/lib/ will work.</comment>
914
+ <param name="fetchSize" value="1000"/>
915
+ <param name="poolInitialSize" value="3"/>
916
+ <param name="bufferSafeCapacity" value="2000"/>
917
+ <param name="bufferFlushBatchSize" value="1000"/>
918
+ <param name="backslashIsEscape" value="true"/>
919
+ <param name="autoFlushDormantSeconds" value="5"/>
920
+ <param name="password" value="fedoraAdmin"/>
921
+ <param name="autoFlushBufferSize" value="1000"/>
922
+ <param name="username" value="fedoraAdmin"/>
923
+ <param name="poolMaxSize" value="10"/>
924
+ <param name="jdbcURL" value="jdbc:postgresql://localhost/riTriples"/>
925
+ <param name="ddlGenerator" value="org.nsdl.mptstore.impl.postgres.PostgresDDLGenerator"/>
926
+ <param name="connectorClassName" value="org.trippi.impl.mpt.MPTConnector"/>
927
+ <param name="jdbcDriver" value="org.postgresql.Driver"/>
928
+ </datastore>
929
+ <datastore id="apimUpdateMessages">
930
+ <comment>Messaging Destination for API-M events which update the repository</comment>
931
+ <param name="messageTypes" value="apimUpdate">
932
+ <comment>A space-separated list of message types that will be
933
+ delivered to this Destination. Currently, &quot;apimUpdate&quot; and
934
+ &quot;apimAccess&quot; are the only supported message types.</comment>
935
+ </param>
936
+ <param name="name" value="fedora.apim.update"/>
937
+ <param name="type" value="topic">
938
+ <comment>Optional, defaults to topic.</comment>
939
+ </param>
940
+ </datastore>
941
+ <datastore id="apimAccessMessages">
942
+ <comment>Messaging Destination for API-M events which did not make changes to the repository</comment>
943
+ <param name="messageTypes" value="apimAccess">
944
+ <comment>A space-separated list of message types that will be
945
+ delivered to this Destination. Currently, &quot;apimUpdate&quot; and
946
+ &quot;apimAccess&quot; are the only supported message types.</comment>
947
+ </param>
948
+ <param name="name" value="fedora.apim.access"/>
949
+ <param name="type" value="topic">
950
+ <comment>Optional, defaults to topic.</comment>
951
+ </param>
952
+ </datastore>
953
+ </server>