Android Open Source - JBoss-Admin-Android Talk To J Boss Server Task






From Project

Back to project page JBoss-Admin-Android.

License

The source code is released under:

Apache License

If you think the Android project JBoss-Admin-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * JBoss Admin//  w  w w.  j a va2  s .c  o  m
 * Copyright 2013, Christos Vasilakis, and individual contributors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.cvasilak.jboss.mobile.app.net;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.AbstractHttpClient;
import org.cvasilak.jboss.mobile.app.JBossAdminApplication;
import org.cvasilak.jboss.mobile.app.R;
import org.cvasilak.jboss.mobile.app.model.Server;
import org.cvasilak.jboss.mobile.app.net.ssl.CustomHTTPClient;
import org.cvasilak.jboss.mobile.app.util.ParametersMap;

public class TalkToJBossServerTask extends AsyncTask<ParametersMap, Void, JsonElement> {

    private static final String TAG = TalkToJBossServerTask.class.getSimpleName();

    private final AbstractHttpClient client;
    private final Server server;
    private final Callback callback;

    private Context context;

    private Exception exception;

    // indicate whether to send back to the client
    // that initiated the AsyncTask the full JSON
    // response without any processing
    private boolean shouldProcessRequest;

    private Gson jsonBuilder;
    private JsonParser jsonParser;

    public TalkToJBossServerTask(Context context, Server server, Callback callback) {
        this(context, server, callback, true);
    }

    public TalkToJBossServerTask(Context context, Server server, Callback callback, boolean shouldProcessRequest) {
        this.context = context;
        this.server = server;
        this.callback = callback;
        this.shouldProcessRequest = shouldProcessRequest;

        this.client = CustomHTTPClient.getHttpClient();
        this.jsonBuilder = ((JBossAdminApplication) context.getApplicationContext()).getJSONBuilder();
        this.jsonParser = ((JBossAdminApplication) context.getApplicationContext()).getJSONParser();

        Credentials credentials = new UsernamePasswordCredentials(server.getUsername(), server.getPassword());
        client.getCredentialsProvider().setCredentials(new AuthScope(server.getHostname(), server.getPort(), AuthScope.ANY_REALM), credentials);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected JsonElement doInBackground(ParametersMap... objects) {
        if (client == null) {
            return null;
        }

        ParametersMap params = objects[0];

        // ask the server to pretty print
        params.add("json.pretty", Boolean.TRUE);

        try {
            String json = jsonBuilder.toJson(params);
            StringEntity entity = new StringEntity(json, "UTF-8");
            entity.setContentType("application/json");

            HttpPost httpRequest = new HttpPost(server.getHostPort() + "/management");
            httpRequest.setEntity(entity);

            Log.d(TAG, "--------> " + json);

            HttpResponse serverResponse = client.execute(httpRequest);

            JBossResponseHandler handler = new JBossResponseHandler();
            String response = handler.handleResponse(serverResponse);

            Log.d(TAG, "<-------- " + response);

            return jsonParser.parse(response).getAsJsonObject();

        } catch (Exception e) {
            this.exception = e;
        }

        return null;
    }

    @Override
    protected void onPostExecute(JsonElement reply) {
        super.onPostExecute(reply);

        if (callback == null)
            return;

        if (this.exception != null) {
            callback.onFailure(this.exception);
            return;
        }

        if (reply == null) {
            callback.onFailure(new RuntimeException(context.getString(R.string.empty_response)));
            return;
        }

        if (!reply.isJsonObject()) {
            callback.onFailure(new RuntimeException(context.getString(R.string.invalid_response)));
            return;
        }

        // return the full response if the shouldProcessRequest flag is not set
        if (!shouldProcessRequest) {
            callback.onSuccess(reply);
            return;
        }

        JsonObject jsonObj = (JsonObject) reply;

        if (!jsonObj.has("outcome"))
            callback.onFailure(new RuntimeException(context.getString(R.string.invalid_response)));
        else {
            String outcome = jsonObj.get("outcome").getAsString();

            if (outcome.equals("success")) {
                callback.onSuccess(jsonObj.get("result"));
            } else {
                JsonElement elem = jsonObj.get("failure-description");

                if (elem.isJsonPrimitive()) {
                    callback.onFailure(new RuntimeException(elem.getAsString()));
                } else if (elem.isJsonObject())
                    callback.onFailure(new RuntimeException(elem.getAsJsonObject().get("domain-failure-description").toString()));
            }
        }
    }
}




Java Source Code List

org.cvasilak.jboss.mobile.app.JBossAdminApplication.java
org.cvasilak.jboss.mobile.app.activities.JBossAdminActivity.java
org.cvasilak.jboss.mobile.app.activities.JBossServerRootActivity.java
org.cvasilak.jboss.mobile.app.activities.UploadCompletedActivity.java
org.cvasilak.jboss.mobile.app.fragments.AttributeEditorFragment.java
org.cvasilak.jboss.mobile.app.fragments.ChildResourcesViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.ConfigurationViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.DataSourceMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.DataSourcesViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.DeploymentDetailsDialogFragment.java
org.cvasilak.jboss.mobile.app.fragments.DeploymentsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.DomainServerGroupsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.ExtensionsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JMSQueueMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JMSQueuesViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JMSTopicMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JMSTopicsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JMSTypeSelectorViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.JVMMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.OperationExecViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.OperationsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.ProfileViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.PropertiesViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.RuntimeViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.ServerEditFragment.java
org.cvasilak.jboss.mobile.app.fragments.ServersViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.TransactionMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.WebConnectorMetricsViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.WebConnectorTypeSelectorViewFragment.java
org.cvasilak.jboss.mobile.app.fragments.dialogs.ErrorDialogFragment.java
org.cvasilak.jboss.mobile.app.fragments.dialogs.InfoDialogFragment.java
org.cvasilak.jboss.mobile.app.fragments.dialogs.ParameterizedDialogFragment.java
org.cvasilak.jboss.mobile.app.fragments.dialogs.ProgressDialogFragment.java
org.cvasilak.jboss.mobile.app.fragments.util.ListEditorFragment.java
org.cvasilak.jboss.mobile.app.model.Attribute.java
org.cvasilak.jboss.mobile.app.model.ChildType.java
org.cvasilak.jboss.mobile.app.model.Deployment.java
org.cvasilak.jboss.mobile.app.model.ManagementModelBase.java
org.cvasilak.jboss.mobile.app.model.Metric.java
org.cvasilak.jboss.mobile.app.model.OperationParameter.java
org.cvasilak.jboss.mobile.app.model.Operation.java
org.cvasilak.jboss.mobile.app.model.Server.java
org.cvasilak.jboss.mobile.app.model.ServersManager.java
org.cvasilak.jboss.mobile.app.net.Callback.java
org.cvasilak.jboss.mobile.app.net.JBossOperationsManager.java
org.cvasilak.jboss.mobile.app.net.JBossResponseHandler.java
org.cvasilak.jboss.mobile.app.net.TalkToJBossServerTask.java
org.cvasilak.jboss.mobile.app.net.ssl.CustomHTTPClient.java
org.cvasilak.jboss.mobile.app.net.ssl.EasySSLSocketFactory.java
org.cvasilak.jboss.mobile.app.service.UploadToJBossServerService.java
org.cvasilak.jboss.mobile.app.util.CustomMultiPartEntity.java
org.cvasilak.jboss.mobile.app.util.ParametersMap.java
org.cvasilak.jboss.mobile.app.util.commonsware.MergeAdapter.java
org.cvasilak.jboss.mobile.app.util.commonsware.SackOfViewsAdapter.java
org.cvasilak.jboss.mobile.app.util.listview.adapters.IconTextRowAdapter.java
org.cvasilak.jboss.mobile.app.util.listview.adapters.ManagementModelRowAdapter.java
org.cvasilak.jboss.mobile.app.util.listview.adapters.MetricsAdapter.java
org.cvasilak.jboss.mobile.app.util.listview.adapters.ValueChangedListener.java
org.cvasilak.jboss.mobile.app.util.listview.rows.LabelButtonRow.java
org.cvasilak.jboss.mobile.app.util.listview.rows.LabelCheckBoxRow.java
org.cvasilak.jboss.mobile.app.util.listview.rows.LabelEditTextRow.java
org.cvasilak.jboss.mobile.app.util.listview.rows.RowType.java
org.cvasilak.jboss.mobile.app.util.listview.rows.RowView.java