Fix DS-3263. Check for null MetadataField whenever using metadataFieldService.findByElement()

This commit is contained in:
Tim Donohue
2016-07-12 11:38:51 -05:00
parent 9495768ade
commit 3f98a52dd8
4 changed files with 34 additions and 5 deletions

View File

@@ -123,14 +123,23 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl<Collection> i
@Override @Override
public List<Collection> findAll(Context context) throws SQLException { public List<Collection> findAll(Context context) throws SQLException {
MetadataField nameField = metadataFieldService.findByElement(context, "dc", "title", null); MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null);
return collectionDAO.findAll(context, nameField); if(nameField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!");
}
return collectionDAO.findAll(context, nameField);
} }
@Override @Override
public List<Collection> findAll(Context context, Integer limit, Integer offset) throws SQLException { public List<Collection> findAll(Context context, Integer limit, Integer offset) throws SQLException {
MetadataField nameField = metadataFieldService.findByElement(context, "dc", "title", null); MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null);
if(nameField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!");
}
return collectionDAO.findAll(context, nameField, limit, offset); return collectionDAO.findAll(context, nameField, limit, offset);
} }

View File

@@ -137,12 +137,22 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl<Community> imp
@Override @Override
public List<Community> findAll(Context context) throws SQLException { public List<Community> findAll(Context context) throws SQLException {
MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null);
if(sortField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!");
}
return communityDAO.findAll(context, sortField); return communityDAO.findAll(context, sortField);
} }
@Override @Override
public List<Community> findAll(Context context, Integer limit, Integer offset) throws SQLException { public List<Community> findAll(Context context, Integer limit, Integer offset) throws SQLException {
MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null);
if(nameField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!");
}
return communityDAO.findAll(context, nameField, limit, offset); return communityDAO.findAll(context, nameField, limit, offset);
} }
@@ -151,6 +161,11 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl<Community> imp
{ {
// get all communities that are not children // get all communities that are not children
MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null);
if(sortField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!");
}
return communityDAO.findAllNoParent(context, sortField); return communityDAO.findAllNoParent(context, sortField);
} }

View File

@@ -207,7 +207,7 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
public void addMetadata(Context context, T dso, String schema, String element, String qualifier, String lang, List<String> values) throws SQLException { public void addMetadata(Context context, T dso, String schema, String element, String qualifier, String lang, List<String> values) throws SQLException {
MetadataField metadataField = metadataFieldService.findByElement(context, schema, element, qualifier); MetadataField metadataField = metadataFieldService.findByElement(context, schema, element, qualifier);
if (metadataField == null) { if (metadataField == null) {
throw new SQLException("bad_dublin_core schema=" + schema + "." + element + "." + qualifier); throw new SQLException("bad_dublin_core schema=" + schema + "." + element + "." + qualifier + ". Metadata field does not exist!");
} }
addMetadata(context, dso, metadataField, lang, values); addMetadata(context, dso, metadataField, lang, values);
@@ -219,7 +219,7 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
// until update() is called. // until update() is called.
MetadataField metadataField = metadataFieldService.findByElement(context, schema, element, qualifier); MetadataField metadataField = metadataFieldService.findByElement(context, schema, element, qualifier);
if (metadataField == null) { if (metadataField == null) {
throw new SQLException("bad_dublin_core schema=" + schema + "." + element + "." + qualifier); throw new SQLException("bad_dublin_core schema=" + schema + "." + element + "." + qualifier + ". Metadata field does not exist!");
} }
addMetadata(context, dso, metadataField, lang, values, authorities, confidences); addMetadata(context, dso, metadataField, lang, values, authorities, confidences);
} }

View File

@@ -192,6 +192,11 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl<Item> implements It
public Iterator<Item> findBySubmitterDateSorted(Context context, EPerson eperson, Integer limit) throws SQLException { public Iterator<Item> findBySubmitterDateSorted(Context context, EPerson eperson, Integer limit) throws SQLException {
MetadataField metadataField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "date", "accessioned"); MetadataField metadataField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "date", "accessioned");
if(metadataField==null)
{
throw new IllegalArgumentException("Required metadata field '" + MetadataSchema.DC_SCHEMA + ".date.accessioned' doesn't exist!");
}
return itemDAO.findBySubmitter(context, eperson, metadataField, limit); return itemDAO.findBySubmitter(context, eperson, metadataField, limit);
} }