1.9.30 sync.
[gae.git] / java / src / main / com / google / appengine / api / capabilities / CapabilitiesServiceImpl.java
blob8a9d1ddbd13d148f732076e0838fe192c55ed844
1 package com.google.appengine.api.capabilities;
3 import com.google.appengine.api.capabilities.CapabilityServicePb.IsEnabledRequest;
4 import com.google.appengine.api.capabilities.CapabilityServicePb.IsEnabledResponse;
5 import com.google.appengine.api.capabilities.CapabilityServicePb.IsEnabledResponse.SummaryStatus;
6 import com.google.apphosting.api.ApiProxy;
7 import com.google.protobuf.InvalidProtocolBufferException;
9 /**
10 * Implementation for {@link CapabilitiesService}.
14 class CapabilitiesServiceImpl implements CapabilitiesService {
16 private final static String PACKAGE_NAME = "capability_service";
17 private final static String METHOD_NAME = "IsEnabled";
19 @Override
20 public CapabilityState getStatus(Capability capability) {
22 IsEnabledRequest.Builder builder = CapabilityServicePb.IsEnabledRequest.newBuilder();
23 builder.setPackage(capability.getPackageName());
24 builder.addCapability(capability.getName());
25 IsEnabledRequest request = builder.build();
27 try {
28 byte[] responseBytes =
29 ApiProxy.makeSyncCall(PACKAGE_NAME, METHOD_NAME, request.toByteArray());
30 IsEnabledResponse response = CapabilityServicePb.IsEnabledResponse.parseFrom(responseBytes);
31 SummaryStatus status = response.getSummaryStatus();
32 CapabilityStatus statusValue;
33 long timeUntilScheduled = -1;
34 switch (status) {
35 case ENABLED:
36 statusValue = CapabilityStatus.ENABLED;
37 break;
38 case SCHEDULED_NOW:
39 timeUntilScheduled = 0;
40 statusValue = CapabilityStatus.SCHEDULED_MAINTENANCE;
41 break;
42 case SCHEDULED_FUTURE:
43 timeUntilScheduled = response.getTimeUntilScheduled();
44 statusValue = CapabilityStatus.SCHEDULED_MAINTENANCE;
45 break;
46 case DISABLED:
47 statusValue = CapabilityStatus.DISABLED;
48 break;
49 default:
50 statusValue = CapabilityStatus.UNKNOWN;
51 break;
54 return new CapabilityState(capability, statusValue, timeUntilScheduled);
56 } catch (InvalidProtocolBufferException ex) {
57 throw new ApiProxy.ArgumentException(PACKAGE_NAME, METHOD_NAME);