git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@823799 13f79535-47bb-0310-9956-ffa450edef68
114 lines
3.8 KiB
Java
114 lines
3.8 KiB
Java
/*
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you 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 sample;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.Date;
|
|
import java.util.Stack;
|
|
|
|
import org.oasisopen.sca.annotation.EagerInit;
|
|
import org.oasisopen.sca.annotation.Init;
|
|
import org.oasisopen.sca.annotation.Reference;
|
|
import org.oasisopen.sca.annotation.Scope;
|
|
import org.oasisopen.sca.annotation.Service;
|
|
|
|
import com.google.appengine.api.datastore.DatastoreService;
|
|
import com.google.appengine.api.datastore.Entity;
|
|
import com.google.appengine.api.datastore.EntityNotFoundException;
|
|
import com.google.appengine.api.datastore.Key;
|
|
import com.google.appengine.api.datastore.KeyFactory;
|
|
import com.google.appengine.api.datastore.Transaction;
|
|
import com.google.appengine.api.memcache.MemcacheService;
|
|
import com.google.appengine.api.urlfetch.HTTPResponse;
|
|
import com.google.appengine.api.urlfetch.URLFetchService;
|
|
import com.google.appengine.api.users.User;
|
|
import com.google.appengine.api.users.UserService;
|
|
|
|
@EagerInit
|
|
@Scope("COMPOSITE")
|
|
@Service(HelloworldService.class)
|
|
public class HelloworldServiceImpl implements HelloworldService {
|
|
@Reference
|
|
protected UserService userService;
|
|
|
|
@Reference
|
|
protected URLFetchService fetchService;
|
|
|
|
@Reference
|
|
protected MemcacheService memcacheService;
|
|
|
|
@Reference
|
|
protected DatastoreService datastoreService;
|
|
|
|
public String sayHello(String name) {
|
|
User user = userService.getCurrentUser();
|
|
String id = (user == null) ? "" : user.getUserId();
|
|
|
|
Stack<String> stack = (Stack<String>)memcacheService.get("history");
|
|
if (stack == null) {
|
|
stack = new Stack<String>();
|
|
}
|
|
stack.push(new Date().toString() + ": " + name);
|
|
memcacheService.put("history", stack);
|
|
|
|
Transaction tx = datastoreService.beginTransaction();
|
|
Entity entity = null;
|
|
Key key = KeyFactory.createKey("HitCounter", "countter");
|
|
try {
|
|
entity = datastoreService.get(tx, key);
|
|
} catch (EntityNotFoundException e1) {
|
|
entity = new Entity(key);
|
|
entity.setProperty("counter", new Long(0));
|
|
}
|
|
|
|
Long count = (Long)entity.getProperty("counter");
|
|
entity.setProperty("counter", new Long(count.longValue() + 1));
|
|
|
|
datastoreService.put(tx, entity);
|
|
tx.commit();
|
|
|
|
String content = "";
|
|
try {
|
|
HTTPResponse response = fetchService.fetch(new URL("http://tuscany.apache.org"));
|
|
content = new String(response.getContent(), 0, 1024);
|
|
content = content.replace("<", "<");
|
|
content = content.replace(">", ">");
|
|
content = content.replace("\"", """);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return "[" + id
|
|
+ "] Hello "
|
|
+ name
|
|
+ "<hr><h1>Content from Tuscany Web Site</h1><p>"
|
|
+ content
|
|
+ "<p>History<hr>"
|
|
+ stack
|
|
+ "</p><b>"
|
|
+ count
|
|
+ "</b>";
|
|
}
|
|
|
|
@Init
|
|
public void init() {
|
|
System.out.println("Starting...");
|
|
}
|
|
|
|
}
|