/** * Creates response for failed archive listing operation * @param e occurred error */ public ListArchiveObjects2Response(YaddaError e) { this(); setError(e); }
/** * Creates response for successful archive listing operation * @param ao page of results * @param resumptionToken token indicating next page of the results */ public ListArchiveObjects2Response(List<ArchiveObject2Meta> ao, String resumptionToken) { this(); setPage(ao); setResumptionToken(resumptionToken); }
public IdResponse getArchiveId(GenericRequest request) { return archive.getArchiveId(request); }
if (request.getToken()==null) { GetArchive2ObjectRequest getObjectReq = new GetArchive2ObjectRequest(); SAMLObject[] samlObjects = securityRequestHandler.extract(request); securityRequestHandler.attach(getObjectReq, samlObjects); getObjectReq.setFetchAllParts(false); getObjectReq.setFetchChildren(false); getObjectReq.setId(request.getOwnerId()); GetArchive2ObjectResponse getObjectResp = getObject(getObjectReq); if (getObjectResp.isOK()) { RetrieveResponse internalResult = archive.readChunk(request); if (internalResult.getDataChunk()!=null && internalResult.getDataChunk().getToken()!=null) { return new RetrieveResponse(getObjectResp.getError()); request.getToken(), null); if (cacheEntry!=null) { request.setToken(cacheEntry.getInternalToken()); RetrieveResponse internalResult = archive.readChunk(request); if (internalResult.getDataChunk()!=null && internalResult.getDataChunk().getToken()!=null) { String message = "invalid resumption token: " + request.getToken(); log.debug(message); return new RetrieveResponse( "security criteria have changed for token " + request.getToken(); log.debug(message); return new RetrieveResponse(
public List<String> listErrorDumps() throws Exception { ArchiveObject2Meta dumpDirectoryMeta = archiveFacade.queryUniqueObject(ERROR_DUMP_OBJECT_PATH, true); if (dumpDirectoryMeta == null) return Collections.emptyList(); ArchiveObjectFacade dumpDirectory = archiveFacade.getObject(dumpDirectoryMeta.getId(), null, true); List<String> dumpList = new LinkedList<String>(); for (Map.Entry<String, List<YaddaObjectID>> children : dumpDirectory.getChildren().entrySet()) { for (YaddaObjectID child : children.getValue()) { ArchiveObjectFacade childObject = archiveFacade.getObject(child, null, false); if (!childObject.getStatus().isDeleted()) { ArchiveObjectPath dumpPath = new ArchiveObjectPath(ERROR_DUMP_OBJECT_PATH, children.getKey()); dumpList.add(dumpPath.encode()); } } } return dumpList; }
log.error("got error from security client: " + secResult.getError().getCode() + ", " + secResult.getError().getMssg()); return new ListArchiveObjects2Response(secResult.getError()); if (request.getResumptionToken()==null) { request.setTags(addSecurityTags(request.getTags(), critResponse.getSecurityCriterion())); } else { ListArchiveObjects2Response internalResponse = archive.listObjects(request); internalResponse.setResumptionToken( storeEntry(internalResponse.getResumptionToken(), critResponse)); return internalResponse; } else { String message = "no permission to list objects: no security tags found!"; log.debug(message); return new ListArchiveObjects2Response( new YaddaError(SecurityConstants.ERROR_AUTH, message)); request.getResumptionToken(), critResponse); if (cacheEntry!=null) { request.setResumptionToken(cacheEntry.getInternalToken()); ListArchiveObjects2Response internalResponse = archive.listObjects(request); internalResponse.setResumptionToken( storeEntry(internalResponse.getResumptionToken(), cacheEntry.getSecurityCriterion())); return internalResponse;
/** * Finds collection id in archive object. * @param archiveObjId * @return collection id * @throws IndeterminateException */ protected String findCollectionTagInArchive(String archiveObjId) throws IndeterminateException { try { ArchiveObjectFacade archObjFacade = archiveFacade.getObject( new YaddaObjectID(archiveObjId), new String[0], false); for (String currentTag : archObjFacade.getTags()) { if (currentTag.startsWith(ACLConstants.COLLECTION_TAG_PREFIX)) { return currentTag; } } return null; } catch (ServiceException e) { throw new IndeterminateException("exception occured when " + "finding archive object for id: " + archiveObjId, e); } }
public void removeDump(String dumpId) throws Exception { ArchiveObject2Meta dumpMeta = archiveFacade.queryUniqueObject(dumpId, false); if (dumpMeta == null) return; storageFacade.deleteObject(dumpMeta.getId()); }
public GetArchive2ObjectResponse getObject(GetArchive2ObjectRequest request) { GetArchive2ObjectResponse response = archive.getObject(request); if(!response.isOK()) return response; if (response.getResult() == null || skipLicenses) return response; YaddaErrorAwareResult<Set<ObligationType>> secResult = licAuthzFacade.retrieveLicenseObligations( securityRequestHandler.extract(request)); if (secResult.getError()!=null) { log.error("got error from security client: " + secResult.getError().getCode() + ", " + secResult.getError().getMssg()); return new GetArchive2ObjectResponse(secResult.getError()); } if (evaluateAccess(secResult.getData(), new LicenseEvaluatorContext<String[]>( request.getId().getId(), response.getResult().getTags()))) { return response; } else { response = new GetArchive2ObjectResponse(new YaddaError(SecurityConstants.ERROR_AUTH, "Permission not granted to retrieve resource id='" + request.getId().getId() + "'!")); return response; } }
public ListArchiveObjects2Response queryObjects(GetArchive2ObjectsRequest request) { ListArchiveObjects2Response result = archive.queryObjects(request); if(skipLicenses) { return result; if (result!=null && result.getPage()!=null) { secResult.getError().getCode() + ", " + secResult.getError().getMssg()); return new ListArchiveObjects2Response(secResult.getError()); Iterator<ArchiveObject2Meta> it = result.getPage().iterator(); while (it.hasNext()) { ArchiveObject2Meta currentObj = it.next(); currentObj.getId(), currentObj.getTags()); if (!evaluateAccess(obligations, context)) { if (request.isFailWhenAccessDenied()) { String message = "access denied when accessing object: " + currentObj.getId() + " for path: " + request.getPath(); log.warn(message); return new ListArchiveObjects2Response( new YaddaError(SecurityConstants.ERROR_AUTH, message)); } else {
@Override public boolean removeProfilePart(String userId, String partType) { boolean partExists = false; try { ArchiveObjectFacade archiveObject; archiveObject = archive.getObjectWithAllParts(new YaddaObjectID(userId), false); Collection<ArchiveContentPartFacade> archiveParts = archiveObject.getParts(); for (ArchiveContentPartFacade archivePart : archiveParts) { if (archivePart.getType().equals(partType)) { partExists = true; archiveParts.remove(archivePart); break; } } if (partExists) { storage.saveObject(generateStorePath(userId), archiveObject, new String[] { partType }, null); } return partExists; } catch (NotFoundException e) { return partExists; } catch (ServiceException e) { String message = "Fetching user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } }
public ChunkErrorDump fetchDump(String dumpId) throws Exception { InputStream is = archiveFacade.fetchPartContent(dumpId, PART_TYPE_DUMP); if (is == null) return null; ObjectInputStream ois = new ObjectInputStream(is); ChunkErrorDump result = (ChunkErrorDump)ois.readObject(); ois.close(); return result; }
@Override protected void processContentFile(String addr, InputStream is, Set<String> tags, boolean closeStream) throws Exception { String ext = contentPathToExtension(addr); String mime = MimeTypeHelper.getTypeForExtension(ext); if (mime == null) { mime = MimeTypeHelper.MIME_UNKNOWN; } String uri = contentPathToArchiveUri(addr); // Object already exists and we don't want to overwrite it if ((overwriteMode == OverwriteMode.NEVER) && (archiveFacade2.queryObjects(uri, false).hasNext())) { return; } archiveTransaction.storeData(uri, mime, is, tags.toArray(new String[tags.size()]), closeStream); archiveObjectsInTransaction++; flushIfNecessary(); }
public GetVersionResponse getVersionResponse(GenericRequest request) { return archive.getVersionResponse(request); }
public GetFeaturesResponse getFeatures(GetFeaturesRequest request) { GetFeaturesResponse resp=archive.getFeatures(request); resp.getFeatures().add(SecurityConstants.FEATURE_REQUIRES_AUTHORIZATION); return resp; }
@Override public boolean addUserProfile(String userId) { try { archive.getObject(new YaddaObjectID(userId), null, false); return false; } catch (NotFoundException e) { ArchiveObjectFacade archiveObject; archiveObject = new ArchiveObjectFacade(); archiveObject.setId(new YaddaObjectID(userId)); archiveObject.setType(USER_PROFILE_TYPE); try { storage.saveObject(generateStorePath(userId), archiveObject, null, null); } catch (ServiceException e1) { String message = "Adding user profile for user " + userId + " not successfull."; logger.error(message, e1); throw new RuntimeException(message, e1); } return true; } catch (ServiceException e) { String message = "Fetching user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } }
public ArchiveObject2Meta next() { String loc = iter.next(); try { currentLoc= loc; ArchiveObject2Meta object = archiveFacade2.queryUniqueObject(loc, true); if (object == null) { logger.error("Unexpected problem: no conent found under address: " + loc); throw new MissingContentRuntimeException(loc); } return object; } catch (Exception ex) { logger.error("Unexpected problem: exception reading content under address: " + loc, ex); throw new MissingContentRuntimeException(loc); } }
@Override public ProfilePart getProfilePart(String userId, String partType) { try { ArchiveObjectFacade archiveObject = archive.getObjectWithAllParts(new YaddaObjectID(userId), false); ArchiveContentPartFacade archivePart = archiveObject.getPart(partType); if (archivePart != null) { ProfilePart profilePart = new ProfilePart(); profilePart.setType(archivePart.getType()); try { profilePart.setContent(IOUtils.toByteArray(archivePart.getData())); } catch (IOException e) { String message = "Setting part with part type " + partType + " to user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } return profilePart; } else { return null; } } catch (NotFoundException e) { // OK profile not found so part is null return null; } catch (ServiceException e) { String message = "Fetching user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } }
@Override public void addProfilePart(String userId, ProfilePart part) throws UserProfileNotFoundException { try { ArchiveObjectFacade archiveObject; archiveObject = archive.getObject(new YaddaObjectID(userId), null, false); archiveObject.addPart(part.getType(), USER_PROFILE_PART_GENERIC_MIMETYPE, new ByteArrayInputStream(part.getContent())); storage.saveObject(generateStorePath(userId), archiveObject, null, null); } catch (NotFoundException e) { logger.error("User profile for user " + userId + " does not exist.", e); throw new UserProfileNotFoundException(userId); } catch (ServiceException e) { String message = "Fetching user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } }
@Override public UserProfile getUserProfile(String userId) { try { ArchiveObjectFacade archiveObject = archive.getObjectWithAllParts(new YaddaObjectID(userId), false); if (archiveObject.getStatus().isDeleted()) { return null; } UserProfile userProfile = new UserProfile(); userProfile.setUserId(archiveObject.getId().getId()); Collection<ArchiveContentPartFacade> archiveParts = archiveObject.getParts(); Set<String> parts = new HashSet<String>(); for (ArchiveContentPartFacade archivePart : archiveParts) { parts.add(archivePart.getType()); } userProfile.setAvailableParts(parts); return userProfile; } catch (NotFoundException e) { // OK profile not found so part is null return null; } catch (ServiceException e) { String message = "Fetching user profile for user " + userId + " not successfull."; logger.error(message, e); throw new RuntimeException(message, e); } }