Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / cacheinvalidation / src / java / com / google / ipc / invalidation / ticl / proto / CommonProtos.java
1 /*
2  * Copyright 2011 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.google.ipc.invalidation.ticl.proto;
17
18 import com.google.ipc.invalidation.ticl.proto.AndroidChannel.AndroidEndpointId;
19 import com.google.ipc.invalidation.ticl.proto.ChannelCommon.NetworkEndpointId;
20 import com.google.ipc.invalidation.ticl.proto.ChannelCommon.NetworkEndpointId.NetworkAddress;
21 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ClientVersion;
22 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.InvalidationP;
23 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ObjectIdP;
24 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationP;
25 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationStatus;
26 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationSummary;
27 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ServerHeader;
28 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.StatusP;
29 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.Version;
30 import com.google.ipc.invalidation.util.Bytes;
31 import com.google.ipc.invalidation.util.Preconditions;
32
33
34 /** Utilities for creating protocol buffer wrappers. */
35 public class CommonProtos {
36
37   public static boolean isAllObjectId(ObjectIdP objectId) {
38     return ClientConstants.ALL_OBJECT_ID.equals(objectId);
39   }
40
41   /** Returns true iff status corresponds to permanent failure. */
42   public static boolean isPermanentFailure(StatusP status) {
43     return status.getCode() == StatusP.Code.PERMANENT_FAILURE;
44   }
45
46   /** Returns true iff status corresponds to success. */
47   public static boolean isSuccess(StatusP status) {
48     return status.getCode() == StatusP.Code.SUCCESS;
49   }
50
51   /** Returns true iff status corresponds to transient failure. */
52   public static boolean isTransientFailure(StatusP status) {
53     return status.getCode() == StatusP.Code.TRANSIENT_FAILURE;
54   }
55
56   /**
57    * Constructs a network endpoint id for an Android client with the given {@code registrationId},
58    * {@code clientKey}, and {@code packageName}.
59    */
60   public static NetworkEndpointId newAndroidEndpointId(String registrationId, String clientKey,
61       String packageName, Version channelVersion) {
62     Preconditions.checkNotNull(registrationId, "Null registration id");
63     Preconditions.checkNotNull(clientKey, "Null client key");
64     Preconditions.checkNotNull(packageName, "Null package name");
65     Preconditions.checkNotNull(channelVersion, "Null channel version");
66
67     AndroidEndpointId endpoint = AndroidEndpointId.create(registrationId, clientKey,
68         /* senderId */ null, channelVersion, packageName);
69     return NetworkEndpointId.create(NetworkAddress.ANDROID, new Bytes(endpoint.toByteArray()),
70         null);
71   }
72
73   public static ClientVersion newClientVersion(String platform, String language,
74       String applicationInfo) {
75     return ClientVersion.create(ClientConstants.CLIENT_VERSION_VALUE, platform, language,
76         applicationInfo);
77   }
78
79   public static StatusP newFailureStatus(boolean isTransient, String description) {
80     return StatusP.create(
81         isTransient ? StatusP.Code.TRANSIENT_FAILURE : StatusP.Code.PERMANENT_FAILURE, description);
82   }
83
84
85   public static InvalidationP newInvalidationP(ObjectIdP objectId, long version,
86       boolean isTrickleRestart, byte[] payload) {
87     return InvalidationP.create(objectId, /* isKnownVersion */ true,
88         version, Bytes.fromByteArray(payload), /* bridgeArrivalTimeMsDeprecated */ null,
89         isTrickleRestart);
90   }
91
92   public static InvalidationP newInvalidationPForUnknownVersion(ObjectIdP oid,
93       long sequenceNumber) {
94     return InvalidationP.create(oid, /* isKnownVersion */ false, sequenceNumber, /* payload */ null,
95     /* bridgeArrivalTimeMsDeprecated */ null, /* isTrickleRestart */ true);
96   }
97
98   public static RegistrationP newRegistrationP(ObjectIdP oid, boolean isReg) {
99     return RegistrationP.create(oid,
100         isReg ? RegistrationP.OpType.REGISTER : RegistrationP.OpType.UNREGISTER);
101   }
102
103   public static ServerHeader newServerHeader(byte[] clientToken, long currentTimeMs,
104       RegistrationSummary registrationSummary, String messageId) {
105     return ServerHeader.create(ClientConstants.PROTOCOL_VERSION, new Bytes(clientToken),
106         registrationSummary, currentTimeMs, messageId);
107   }
108
109   public static StatusP newSuccessStatus() {
110     return StatusP.create(StatusP.Code.SUCCESS, null);
111   }
112
113   public static RegistrationStatus newTransientFailureRegistrationStatus(RegistrationP registration,
114       String description) {
115     return RegistrationStatus.create(registration, newFailureStatus(true, description));
116   }
117
118   // Prevent instantiation.
119   private CommonProtos() {}
120 }