Package com.google.gwt.rpc.server

Source Code of com.google.gwt.rpc.server.HostedModeClientOracle

/*
* Copyright 2009 Google Inc.
*
* 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 com.google.gwt.rpc.server;

import com.google.gwt.rpc.client.ast.CommandSink;
import com.google.gwt.rpc.client.impl.SimplePayloadSink;
import com.google.gwt.user.client.rpc.SerializationException;
import com.google.gwt.user.server.rpc.impl.SerializabilityUtil;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.Field;

/**
* A ClientOracle that is used for hosted-mode clients. This type only
* implements a limited subset of the ClientOracle functionality.
*/
public final class HostedModeClientOracle extends ClientOracle {

  @Override
  public CommandSink createCommandSink(OutputStream out) throws IOException {
    final BufferedWriter buffer = new BufferedWriter(new OutputStreamWriter(
        out, "UTF-8"));

    return new SimplePayloadSink(buffer) {
      @Override
      public void finish() throws SerializationException {
        super.finish();
        try {
          buffer.flush();
        } catch (IOException e) {
          throw new SerializationException("Could not flush buffer", e);
        }
      }
    };
  }

  /**
   * Unimplemented.
   */
  @Override
  public String createUnusedIdent(String ident) {
    return unimplemented();
  }

  @Override
  public CastableTypeData getCastableTypeData(Class<?> clazz) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getFieldId(Class<?> clazz, String fieldName) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getFieldId(Enum<?> value) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getFieldId(String className, String fieldName) {
    return unimplemented();
  }

  @Override
  public Pair<Class<?>, String> getFieldName(Class<?> clazz, String fieldId) {
    while (clazz != null) {
      try {
        clazz.getDeclaredField(fieldId);
        return new Pair<Class<?>, String>(clazz, fieldId);
      } catch (SecurityException e) {
        // Fall through
      } catch (NoSuchFieldException e) {
        // Fall through
      }
      clazz = clazz.getSuperclass();
    }
    return null;
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getMethodId(Class<?> clazz, String methodName, Class<?>... args) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getMethodId(String className, String methodName,
      String... jsniArgTypes) {
    return unimplemented();
  }

  /**
   * Falls back to reflectively analyzing the provided class.
   */
  @Override
  public Field[] getOperableFields(Class<?> clazz) {
    return SerializabilityUtil.applyFieldSerializationPolicy(clazz);
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getRuntimeTypeId(Class<?> clazz) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getJsSymbolName(Class<?> clazz) {
    return unimplemented();
  }

  /**
   * Unimplemented.
   */
  @Override
  public String getTypeName(String seedName) {
    return seedName;
  }

  /**
   * Unimplemented.
   */
  @Override
  public boolean isScript() {
    return false;
  }

  private <T> T unimplemented() {
    throw new RuntimeException("Not supported in Development Mode");
  }
}
TOP

Related Classes of com.google.gwt.rpc.server.HostedModeClientOracle

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.