Package com.linkedin.restli.client

Examples of com.linkedin.restli.client.RestClient


  @DataProvider(name = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "oldBuildersClientDataDataProvider")
  public Object[][] oldBuildersClientDataDataProvider()
  {
    return new Object[][]
      {
        { new RestClient(CLIENT, URI_PREFIX), "application/json", new GreetingsBuilders() }, // default client
        { new RestClient(CLIENT, URI_PREFIX), "application/json", new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS) }, // default client
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT, URI_PREFIX,
                         Collections.singletonList(
                           RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT, URI_PREFIX,
                         Collections.singletonList(
                           RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.JSON)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.JSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON,RestClient.AcceptType.PSON)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON,RestClient.AcceptType.PSON)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.ANY)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.ANY)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON, RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON, RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        // accept types and content types
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        }
View Full Code Here


  @DataProvider(name = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "newBuildersClientDataDataProvider")
  public Object[][] newBuildersClientDataDataProvider()
  {
    return new Object[][]
      {
        { new RestClient(CLIENT, URI_PREFIX), "application/json", new GreetingsRequestBuilders() }, // default client
        { new RestClient(CLIENT, URI_PREFIX), "application/json", new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS) }, // default client
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT, URI_PREFIX,
                         Collections.singletonList(
                           RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT, URI_PREFIX,
                         Collections.singletonList(
                           RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.JSON)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.JSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON,RestClient.AcceptType.PSON)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON,RestClient.AcceptType.PSON)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.ANY)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.PSON, RestClient.AcceptType.ANY)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON, RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.JSON, RestClient.AcceptType.ANY)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         Arrays.asList(RestClient.AcceptType.ANY, RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        // accept types and content types
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.JSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.<RestClient.AcceptType>emptyList()),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.JSON)),
          "application/json",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders()
        },
        {
          new RestClient(CLIENT,
                         URI_PREFIX,
                         RestClient.ContentType.PSON, Collections.singletonList(RestClient.AcceptType.PSON)),
          "application/x-pson",
          new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)
        }
View Full Code Here

    for (String operation: compressionOperations)
    {
      Map<String, String> clientProperties = new HashMap<String, String>();
      clientProperties.put(HttpClientFactory.HTTP_RESPONSE_COMPRESSION_OPERATIONS, operation);
      TransportClientAdapter clientAdapter = new TransportClientAdapter(new HttpClientFactory(FilterChains.empty()).getClient(clientProperties));
      RestClient client = new RestClient(clientAdapter, URI_PREFIX);
      result[index--] = new Object[]{ client, operation, RestliRequestOptions.DEFAULT_OPTIONS, Arrays.asList(1000L, 2000L), 0 };
      result[index--] = new Object[]{ client, operation, TestConstants.FORCE_USE_NEXT_OPTIONS, Arrays.asList(1000L, 2000L), 0 };
      result[index--] = new Object[]{ client, operation, RestliRequestOptions.DEFAULT_OPTIONS, Arrays.asList(1L, 2L, 3L, 4L), 4 };
      result[index--] = new Object[]{ client, operation, TestConstants.FORCE_USE_NEXT_OPTIONS, Arrays.asList(1L, 2L, 3L, 4L), 4 };
    }
View Full Code Here

    for (String operation: compressionOperations)
    {
      Map<String, String> clientProperties = new HashMap<String, String>();
      clientProperties.put(HttpClientFactory.HTTP_RESPONSE_COMPRESSION_OPERATIONS, operation);
      TransportClientAdapter clientAdapter = new TransportClientAdapter(new HttpClientFactory(FilterChains.empty()).getClient(clientProperties));
      RestClient client = new RestClient(clientAdapter, URI_PREFIX);
      result[index--] = new Object[]{ client, operation, new RootBuilderWrapper<Long, Greeting>(new GreetingsBuilders()) };
      result[index--] = new Object[]{ client, operation, new RootBuilderWrapper<Long, Greeting>(new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)) };
      result[index--] = new Object[]{ client, operation, new RootBuilderWrapper<Long, Greeting>(new GreetingsRequestBuilders()) };
      result[index--] = new Object[]{ client, operation, new RootBuilderWrapper<Long, Greeting>(new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)) };
    }
View Full Code Here

      getClient(Collections.<String, String>emptyMap()));
    TransportClientAdapter clientAdapter2 = new TransportClientAdapter(new HttpClientFactory(FilterChains.empty()).
      getClient(Collections.<String, String>emptyMap()));
    return new Object[][]
      {
        { new RestClient(clientAdapter1, URI_PREFIX), RestliRequestOptions.DEFAULT_OPTIONS },
        { new RestClient(clientAdapter2, URI_PREFIX), TestConstants.FORCE_USE_NEXT_OPTIONS },
      };
  }
View Full Code Here

      getClient(Collections.<String, String>emptyMap()));
    TransportClientAdapter clientAdapter4 = new TransportClientAdapter(new HttpClientFactory(FilterChains.empty()).
      getClient(Collections.<String, String>emptyMap()));
    return new Object[][]
      {
        { new RestClient(clientAdapter1, URI_PREFIX), new RootBuilderWrapper<Long, Greeting>(new GreetingsBuilders()) },
        { new RestClient(clientAdapter2, URI_PREFIX), new RootBuilderWrapper<Long, Greeting>(new GreetingsBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)) },
        { new RestClient(clientAdapter3, URI_PREFIX), new RootBuilderWrapper<Long, Greeting>(new GreetingsRequestBuilders()) },
        { new RestClient(clientAdapter4, URI_PREFIX), new RootBuilderWrapper<Long, Greeting>(new GreetingsRequestBuilders(TestConstants.FORCE_USE_NEXT_OPTIONS)) }
      };
  }
View Full Code Here

  @Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "requestBuilderDataProvider")
  //test cookbook example from quickstart wiki
  public void testCookbook(RootBuilderWrapper<Long, Greeting> builders) throws Exception
  {
    Client r2Client = new TransportClientAdapter(new HttpClientFactory().getClient(Collections.<String, String>emptyMap()));
    RestClient restClient = new RestClient(r2Client, "http://localhost:1338/");

    // GET
    Request<Greeting> request = builders.get().id(1L).build();
    ResponseFuture<Greeting> future = restClient.sendRequest(request);
    Response<Greeting> greetingResponse = future.getResponse();

    Assert.assertNotNull(greetingResponse.getEntity().getMessage());

    // POST
    Greeting greeting = new Greeting(greetingResponse.getEntity().data().copy());
    final String NEW_MESSAGE = "This is a new message!";
    greeting.setMessage(NEW_MESSAGE);

    Request<EmptyRecord> writeRequest = builders.update().id(1L).input(greeting).build();
    restClient.sendRequest(writeRequest).getResponse();

    // GET again, to verify that our POST worked.
    Request<Greeting> request2 = builders.get().id(1L).build();
    ResponseFuture<Greeting> future2 = restClient.sendRequest(request2);
    greetingResponse = future2.get();

    Assert.assertEquals(greetingResponse.getEntity().getMessage(), NEW_MESSAGE);

    // shut down client
View Full Code Here

    final Client r2Client = new TransportClientAdapter(
                                      http.getClient(Collections.<String, String>emptyMap()));

    // Create a RestClient to talk to localhost:8080
    RestClient restClient = new RestClient(r2Client, "http://localhost:8080/");

    // Generate a random ID for a fortune cookie, in the range 0-5
    long fortuneId = (long) (Math.random() * 5);

    // Construct a request for the specified fortune
    FortunesGetBuilder getBuilder = _fortuneBuilder.get();
    Request<Fortune> getReq = getBuilder.id(fortuneId).build();

    // Send the request and wait for a response
    final ResponseFuture<Fortune> getFuture = restClient.sendRequest(getReq);
    final Response<Fortune> resp = getFuture.getResponse();

    // Print the response
    System.out.println(resp.getEntity().getFortune());

    // shutdown
    restClient.shutdown(new FutureCallback<None>());
    http.shutdown(new FutureCallback<None>());
  }
View Full Code Here

    final TransportClient transportClient = http.getClient(Collections.<String, String>emptyMap());
    // create an abstraction layer over the actual client, which supports both REST and RPC
    final Client r2Client = new TransportClientAdapter(transportClient);
    // REST client wrapper that simplifies the interface
    final StringBuilder serverUrlBuilder = new StringBuilder("http://").append(SERVER_HOSTNAME).append(":").append(SERVER_PORT).append("/");
    final RestClient restClient = new RestClient(r2Client, serverUrlBuilder.toString());
    final RestLiExampleBasicClient photoClient = new RestLiExampleBasicClient(restClient);

    String pathInfo = args.length == 0 ? "" : args[0];
    photoClient.sendRequest(pathInfo, new PrintWriter(System.out));
    photoClient.shutdown();
View Full Code Here

   */
  public static void main(String[] args) throws Exception
  {
    final D2Client d2Client = new D2ClientBuilder().build();
    d2Client.start(new FutureCallback<None>());
    final RestClient restClient = new RestClient(d2Client, "d2://");
    final RestLiExampleBasicClient photoClient = new RestLiExampleBasicClient(restClient);

    photoClient.sendRequest(args[0], new PrintWriter(System.out));
    photoClient.shutdown();
  }
View Full Code Here

TOP

Related Classes of com.linkedin.restli.client.RestClient

Copyright © 2018 www.massapicom. 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.