Revision 6610
Added by Chris Jones about 13 years ago
src/edu/ucsb/nceas/metacat/dataone/MNodeService.java | ||
---|---|---|
172 | 172 |
*/ |
173 | 173 |
@Override |
174 | 174 |
public Identifier delete(Session session, Identifier pid) |
175 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented, InvalidRequest {
|
|
175 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented { |
|
176 | 176 |
|
177 | 177 |
String localId = null; |
178 | 178 |
boolean allowed = false; |
... | ... | |
193 | 193 |
|
194 | 194 |
// do we have a valid pid? |
195 | 195 |
if (pid == null || pid.getValue().trim().equals("")) { |
196 |
throw new InvalidRequest("1322", "The provided identifier was invalid.");
|
|
196 |
throw new ServiceFailure("1350", "The provided identifier was invalid.");
|
|
197 | 197 |
} |
198 | 198 |
|
199 | 199 |
// check for the existing identifier |
200 | 200 |
try { |
201 | 201 |
localId = IdentifierManager.getInstance().getLocalId(pid.getValue()); |
202 | 202 |
} catch (McdbDocNotFoundException e) { |
203 |
throw new InvalidRequest("1322", "The object with the provided " + "identifier was not found.");
|
|
203 |
throw new NotFound("1340", "The object with the provided " + "identifier was not found.");
|
|
204 | 204 |
} |
205 | 205 |
|
206 | 206 |
// does the subject have DELETE (a D1 CHANGE_PERMISSION level) priveleges on the pid? |
207 | 207 |
allowed = isAuthorized(session, pid, Permission.CHANGE_PERMISSION); |
208 |
|
|
208 | 209 |
|
209 | 210 |
if (allowed) { |
210 | 211 |
try { |
... | ... | |
213 | 214 |
EventLog.getInstance().log(request.getRemoteAddr(), request.getHeader("User-Agent"), username, localId, Event.DELETE.xmlValue()); |
214 | 215 |
|
215 | 216 |
} catch (McdbDocNotFoundException e) { |
216 |
throw new InvalidRequest("1322", "The provided identifier was invalid.");
|
|
217 |
throw new NotFound("1340", "The provided identifier was invalid.");
|
|
217 | 218 |
|
218 | 219 |
} catch (SQLException e) { |
219 | 220 |
throw new ServiceFailure("1350", "There was a problem deleting the object." + "The error message was: " + e.getMessage()); |
... | ... | |
488 | 489 |
* @throws InvalidRequest |
489 | 490 |
*/ |
490 | 491 |
@Override |
491 |
public DescribeResponse describe(Session session, Identifier pid) throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented,
|
|
492 |
InvalidRequest {
|
|
492 |
public DescribeResponse describe(Session session, Identifier pid) |
|
493 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented {
|
|
493 | 494 |
|
494 | 495 |
// get system metadata and construct the describe response |
495 | 496 |
SystemMetadata sysmeta = getSystemMetadata(session, pid); |
... | ... | |
515 | 516 |
* @throws NotImplemented |
516 | 517 |
*/ |
517 | 518 |
@Override |
518 |
public InputStream get(Session session, Identifier pid) throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented, InvalidRequest { |
|
519 |
public InputStream get(Session session, Identifier pid) |
|
520 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, NotImplemented { |
|
519 | 521 |
|
520 | 522 |
return super.get(session, pid); |
521 | 523 |
|
... | ... | |
539 | 541 |
* @throws NotImplemented |
540 | 542 |
*/ |
541 | 543 |
@Override |
542 |
public Checksum getChecksum(Session session, Identifier pid, String algorithm) throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
543 |
InvalidRequest, NotImplemented { |
|
544 |
public Checksum getChecksum(Session session, Identifier pid, String algorithm) |
|
545 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
546 |
InvalidRequest, NotImplemented { |
|
544 | 547 |
|
545 | 548 |
Checksum checksum = null; |
546 | 549 |
|
... | ... | |
580 | 583 |
* @throws NotImplemented |
581 | 584 |
*/ |
582 | 585 |
@Override |
583 |
public SystemMetadata getSystemMetadata(Session session, Identifier pid) throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, InvalidRequest, |
|
584 |
NotImplemented { |
|
586 |
public SystemMetadata getSystemMetadata(Session session, Identifier pid) |
|
587 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
588 |
NotImplemented { |
|
585 | 589 |
|
586 | 590 |
return super.getSystemMetadata(session, pid); |
587 | 591 |
} |
... | ... | |
636 | 640 |
* @throws NotImplemented |
637 | 641 |
*/ |
638 | 642 |
@Override |
639 |
public Node getCapabilities() throws NotImplemented, NotAuthorized, ServiceFailure, InvalidRequest { |
|
643 |
public Node getCapabilities() |
|
644 |
throws NotImplemented, ServiceFailure { |
|
640 | 645 |
|
641 | 646 |
String nodeName = null; |
642 | 647 |
String nodeId = null; |
... | ... | |
698 | 703 |
canPing.setSuccess(ping()); |
699 | 704 |
} catch (InsufficientResources e) { |
700 | 705 |
e.printStackTrace(); |
701 |
} catch (UnsupportedType e) { |
|
702 |
e.printStackTrace(); |
|
703 | 706 |
} |
707 |
|
|
704 | 708 |
node.setPing(canPing); |
705 | 709 |
|
706 | 710 |
NodeReference identifier = new NodeReference(); |
... | ... | |
794 | 798 |
* @throws InvalidRequest |
795 | 799 |
* @throws NotImplemented |
796 | 800 |
*/ |
797 |
@Override
|
|
798 |
public MonitorList getOperationStatistics(Session session, Date startTime, Date endTime, Subject requestor, Event event, ObjectFormatIdentifier formatId)
|
|
799 |
throws NotImplemented, ServiceFailure, NotAuthorized, InvalidRequest, InsufficientResources, UnsupportedType {
|
|
801 |
public MonitorList getOperationStatistics(Session session, Date startTime,
|
|
802 |
Date endTime, Subject requestor, Event event, ObjectFormatIdentifier formatId)
|
|
803 |
throws NotImplemented, ServiceFailure, NotAuthorized, InsufficientResources, UnsupportedType {
|
|
800 | 804 |
|
801 | 805 |
MonitorList monitorList = new MonitorList(); |
802 | 806 |
|
... | ... | |
841 | 845 |
* |
842 | 846 |
* @throws InvalidToken |
843 | 847 |
* @throws ServiceFailure |
844 |
* @throws NotAuthorized |
|
845 |
* @throws InvalidRequest |
|
846 | 848 |
* @throws NotImplemented |
847 | 849 |
*/ |
848 | 850 |
@Override |
849 |
public boolean ping() throws NotImplemented, ServiceFailure, NotAuthorized, InvalidRequest, InsufficientResources, UnsupportedType { |
|
851 |
public boolean ping() |
|
852 |
throws NotImplemented, ServiceFailure, InsufficientResources { |
|
850 | 853 |
|
851 | 854 |
// test if we can get a database connection |
852 | 855 |
boolean alive = false; |
... | ... | |
876 | 879 |
* |
877 | 880 |
* @throws ServiceFailure |
878 | 881 |
* @throws NotAuthorized |
879 |
* @throws InvalidRequest |
|
880 | 882 |
* @throws NotImplemented |
881 | 883 |
*/ |
882 | 884 |
@Override |
883 |
public void synchronizationFailed(Session session, SynchronizationFailed syncFailed) throws NotImplemented, ServiceFailure, NotAuthorized, InvalidRequest { |
|
885 |
public void synchronizationFailed(Session session, SynchronizationFailed syncFailed) |
|
886 |
throws NotImplemented, ServiceFailure, NotAuthorized { |
|
884 | 887 |
|
885 | 888 |
String localId; |
886 | 889 |
|
887 | 890 |
try { |
888 | 891 |
localId = IdentifierManager.getInstance().getLocalId(syncFailed.getPid()); |
889 | 892 |
} catch (McdbDocNotFoundException e) { |
890 |
throw new InvalidRequest("2163", "The identifier specified by " + syncFailed.getPid() + " was not found on this node.");
|
|
893 |
throw new ServiceFailure("2161", "The identifier specified by " + syncFailed.getPid() + " was not found on this node.");
|
|
891 | 894 |
|
892 | 895 |
} |
893 | 896 |
// TODO: update the CN URL below when the CNRead.SynchronizationFailed |
... | ... | |
914 | 917 |
*/ |
915 | 918 |
@Override |
916 | 919 |
public InputStream getReplica(Session session, Identifier pid) |
917 |
throws InvalidRequest, InvalidToken, NotAuthorized, NotImplemented, |
|
918 |
ServiceFailure, NotFound { |
|
920 |
throws NotAuthorized, NotImplemented, ServiceFailure { |
|
919 | 921 |
|
920 | 922 |
logMetacat.info("MNodeService.getReplica() called."); |
921 | 923 |
|
... | ... | |
928 | 930 |
try { |
929 | 931 |
localId = IdentifierManager.getInstance().getLocalId(pid.getValue()); |
930 | 932 |
} catch (McdbDocNotFoundException e) { |
931 |
throw new NotFound("1020", "The object specified by " + pid.getValue() + " does not exist at this node."); |
|
933 |
throw new ServiceFailure("2181", "The object specified by " + |
|
934 |
pid.getValue() + " does not exist at this node."); |
|
935 |
|
|
932 | 936 |
} |
933 | 937 |
|
934 | 938 |
Subject targetNodeSubject = session.getSubject(); |
935 | 939 |
|
936 | 940 |
// check for authorization to replicate, null session to act as this source MN |
937 |
allowed = D1Client.getCN().isNodeAuthorized(null, targetNodeSubject, pid, Permission.REPLICATE); |
|
941 |
try { |
|
942 |
allowed = D1Client.getCN().isNodeAuthorized(null, targetNodeSubject, pid, Permission.REPLICATE); |
|
943 |
} catch (InvalidToken e1) { |
|
944 |
throw new ServiceFailure("2181", "Could not determine if node is authorized: " |
|
945 |
+ e1.getMessage()); |
|
946 |
|
|
947 |
} catch (NotFound e1) { |
|
948 |
throw new ServiceFailure("2181", "Could not determine if node is authorized: " |
|
949 |
+ e1.getMessage()); |
|
938 | 950 |
|
951 |
} catch (InvalidRequest e1) { |
|
952 |
throw new ServiceFailure("2181", "Could not determine if node is authorized: " |
|
953 |
+ e1.getMessage()); |
|
954 |
|
|
955 |
} |
|
956 |
|
|
939 | 957 |
logMetacat.info("Called D1Client.isNodeAuthorized(). Allowed = " + allowed + |
940 | 958 |
" for identifier " + pid.getValue()); |
941 | 959 |
|
... | ... | |
944 | 962 |
try { |
945 | 963 |
inputStream = handler.read(localId); |
946 | 964 |
} catch (Exception e) { |
947 |
throw new ServiceFailure("1020", "The object specified by " + pid.getValue() + "could not be returned due to error: " + e.getMessage()); |
|
965 |
throw new ServiceFailure("1020", "The object specified by " + |
|
966 |
pid.getValue() + "could not be returned due to error: " + e.getMessage()); |
|
948 | 967 |
} |
949 | 968 |
} |
950 | 969 |
|
951 | 970 |
// if we fail to set the input stream |
952 | 971 |
if (inputStream == null) { |
953 |
throw new NotFound("1020", "The object specified by " + pid.getValue() + "does not exist at this node."); |
|
972 |
throw new ServiceFailure("2181", "The object specified by " + |
|
973 |
pid.getValue() + "does not exist at this node."); |
|
954 | 974 |
} |
955 | 975 |
|
956 | 976 |
// log the replica event |
Also available in: Unified diff
Update methods in MNodeService to reflect they modifications of the MN API with regard to exceptions being raised. Largely removed InvalidRequest from a number of methods, and instead threw an appropriate NotFound or ServiceFailure instead.