@Override protected com.google.api.services.cloudresourcemanager.model.Policy toPb(Policy policy) { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<Role, Set<Identity>> binding : policy.getBindings().entrySet()) { Binding bindingPb = new Binding(); bindingPb.setRole(binding.getKey().getValue()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return IDENTITY_STR_VALUE_FUNCTION.apply(identity); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(policy.getEtag()); policyPb.setVersion(policy.getVersion()); return policyPb; } }
synchronized Response replacePolicy(String projectId, Policy policy) { Policy originalPolicy = policies.get(projectId); if (originalPolicy == null) { return Error.PERMISSION_DENIED.response( "Error when replacing the policy for " + projectId + " because the project was not found."); } String etag = policy.getEtag(); if (etag != null && !originalPolicy.getEtag().equals(etag)) { return Error.ABORTED.response( "Policy etag mismatch when replacing the policy for project " + projectId + ", please retry the read."); } policy.setEtag(UUID.randomUUID().toString()); policy.setVersion(originalPolicy.getVersion()); policies.put(projectId, policy); try { return new Response(HTTP_OK, jsonFactory.toString(policy)); } catch (IOException e) { return Error.INTERNAL_ERROR.response( "Error when serializing the policy for project " + projectId); } }
.setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString()) .setVersion(0); policies.put(project.getProjectId(), emptyPolicy); try {
com.google.api.services.cloudresourcemanager.model.Policy toPb() { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<com.google.api.services.cloudresourcemanager.model.Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<String, Set<Identity>> binding : bindings().entrySet()) { com.google.api.services.cloudresourcemanager.model.Binding bindingPb = new com.google.api.services.cloudresourcemanager.model.Binding(); bindingPb.setRole(binding.getKey()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return identity.strValue(); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(etag()); policyPb.setVersion(version()); return policyPb; }
com.google.api.services.cloudresourcemanager.model.Policy toPb() { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<com.google.api.services.cloudresourcemanager.model.Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<String, Set<Identity>> binding : bindings().entrySet()) { com.google.api.services.cloudresourcemanager.model.Binding bindingPb = new com.google.api.services.cloudresourcemanager.model.Binding(); bindingPb.setRole(binding.getKey()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return identity.strValue(); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(etag()); policyPb.setVersion(version()); return policyPb; }
synchronized Response replacePolicy(String projectId, Policy policy) { Policy originalPolicy = policies.get(projectId); if (originalPolicy == null) { return Error.PERMISSION_DENIED.response("Error when replacing the policy for " + projectId + " because the project was not found."); } String etag = policy.getEtag(); if (etag != null && !originalPolicy.getEtag().equals(etag)) { return Error.ABORTED.response("Policy etag mismatch when replacing the policy for project " + projectId + ", please retry the read."); } policy.setEtag(UUID.randomUUID().toString()); policy.setVersion(originalPolicy.getVersion()); policies.put(projectId, policy); try { return new Response(HTTP_OK, jsonFactory.toString(policy)); } catch (IOException e) { return Error.INTERNAL_ERROR.response( "Error when serializing the policy for project " + projectId); } }
synchronized Response replacePolicy(String projectId, Policy policy) { Policy originalPolicy = policies.get(projectId); if (originalPolicy == null) { return Error.PERMISSION_DENIED.response("Error when replacing the policy for " + projectId + " because the project was not found."); } String etag = policy.getEtag(); if (etag != null && !originalPolicy.getEtag().equals(etag)) { return Error.ABORTED.response("Policy etag mismatch when replacing the policy for project " + projectId + ", please retry the read."); } policy.setEtag(UUID.randomUUID().toString()); policy.setVersion(originalPolicy.getVersion()); policies.put(projectId, policy); try { return new Response(HTTP_OK, jsonFactory.toString(policy)); } catch (IOException e) { return Error.INTERNAL_ERROR.response( "Error when serializing the policy for project " + projectId); } }
synchronized Response create(Project project) { String customErrorMessage = checkForProjectErrors(project); if (customErrorMessage != null) { return Error.INVALID_ARGUMENT.response(customErrorMessage); } else { project.setLifecycleState("ACTIVE"); project.setProjectNumber(Math.abs(PROJECT_NUMBER_GENERATOR.nextLong() % Long.MAX_VALUE)); project.setCreateTime(ISODateTimeFormat.dateTime().print(System.currentTimeMillis())); if (projects.putIfAbsent(project.getProjectId(), project) != null) { return Error.ALREADY_EXISTS.response( "A project with the same project ID (" + project.getProjectId() + ") already exists."); } Policy emptyPolicy = new Policy() .setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString()) .setVersion(0); policies.put(project.getProjectId(), emptyPolicy); try { String createdProjectStr = jsonFactory.toString(project); return new Response(HTTP_OK, createdProjectStr); } catch (IOException e) { return Error.INTERNAL_ERROR.response("Error serializing project " + project.getProjectId()); } } }
synchronized Response create(Project project) { String customErrorMessage = checkForProjectErrors(project); if (customErrorMessage != null) { return Error.INVALID_ARGUMENT.response(customErrorMessage); } else { project.setLifecycleState("ACTIVE"); project.setProjectNumber(Math.abs(PROJECT_NUMBER_GENERATOR.nextLong() % Long.MAX_VALUE)); project.setCreateTime(ISODateTimeFormat.dateTime().print(System.currentTimeMillis())); if (projects.putIfAbsent(project.getProjectId(), project) != null) { return Error.ALREADY_EXISTS.response( "A project with the same project ID (" + project.getProjectId() + ") already exists."); } Policy emptyPolicy = new Policy() .setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString()) .setVersion(0); policies.put(project.getProjectId(), emptyPolicy); try { String createdProjectStr = jsonFactory.toString(project); return new Response(HTTP_OK, createdProjectStr); } catch (IOException e) { return Error.INTERNAL_ERROR.response("Error serializing project " + project.getProjectId()); } } }