• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
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 
17 package com.android.exchange.eas;
18 
19 import com.android.exchange.EasResponse;
20 import com.android.exchange.adapter.Serializer;
21 import com.android.exchange.adapter.SettingsParser;
22 import com.android.exchange.adapter.Tags;
23 
24 import org.apache.http.HttpEntity;
25 
26 import java.io.IOException;
27 
28 /**
29  * Performs an Exchange Settings request to the server to communicate our device information.
30  * While the settings command can be used for all sorts of things, we currently only use it to
31  * notify the server of our device information after a Provision command, and only for certain
32  * versions of the protocol (12.1 and 14.0; versions after 14.0 instead specify the device info
33  * in the provision command).
34  *
35  * See http://msdn.microsoft.com/en-us/library/ee202944(v=exchg.80).aspx for details on the Settings
36  * command in general.
37  * See http://msdn.microsoft.com/en-us/library/gg675476(v=exchg.80).aspx for details on the
38  * requirement for communicating device info for some versions of Exchange.
39  */
40 public class EasSettings extends EasOperation {
41 
42 
43     /** Result code indicating the Settings command succeeded. */
44     private static final int RESULT_OK = 1;
45 
EasSettings(final EasOperation parentOperation)46     public EasSettings(final EasOperation parentOperation) {
47         super(parentOperation);
48     }
49 
sendDeviceInformation()50     public boolean sendDeviceInformation() {
51         return performOperation() == RESULT_OK;
52     }
53 
54     @Override
getCommand()55     protected String getCommand() {
56         return "Settings";
57     }
58 
59     @Override
getRequestEntity()60     protected HttpEntity getRequestEntity() throws IOException {
61         final Serializer s = new Serializer();
62         s.start(Tags.SETTINGS_SETTINGS);
63         addDeviceInformationToSerializer(s);
64         s.end().done();
65         return makeEntity(s);
66     }
67 
68     @Override
handleResponse(final EasResponse response)69     protected int handleResponse(final EasResponse response) throws IOException {
70         return new SettingsParser(response.getInputStream()).parse()
71                 ? RESULT_OK : RESULT_OTHER_FAILURE;
72     }
73 
74 }
75