mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-08 18:26:30 +00:00
tapestry workshop
This commit is contained in:
parent
e54cea564b
commit
499839d0e6
@ -7,12 +7,14 @@ import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class DownloadServlet extends HttpServlet {
|
||||
public class GitServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void service(HttpServletRequest req, HttpServletResponse resp)
|
||||
throws ServletException, IOException {
|
||||
resp.getOutputStream().println("hello world");
|
||||
resp.getOutputStream().println(req.getServletPath());
|
||||
}
|
||||
|
||||
}
|
||||
@ -84,7 +84,7 @@ public class Plugin extends AbstractPlugin {
|
||||
context.setInitParameter(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM, Plugin.class.getPackage().getName());
|
||||
context.addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
|
||||
context.addServlet(DownloadServlet.class, "/download/*");
|
||||
context.addServlet(GitServlet.class, "*.git");
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.pmease.commons.product.model;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
|
||||
@Entity
|
||||
public class Repository {
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,20 +1,9 @@
|
||||
package com.pmease.commons.product.model;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
public class User {
|
||||
|
||||
import com.pmease.commons.hibernate.AbstractEntity;
|
||||
|
||||
@Entity
|
||||
public class User extends AbstractEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Column(unique = true, nullable = false)
|
||||
private String name;
|
||||
|
||||
private String fullName;
|
||||
|
||||
private String email;
|
||||
|
||||
public String getName() {
|
||||
@ -25,14 +14,6 @@ public class User extends AbstractEntity {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public void setFullName(String fullName) {
|
||||
this.fullName = fullName;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
package com.pmease.commons.product.pages;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
public class AnotherPage {
|
||||
|
||||
public List getElements() {
|
||||
return ImmutableList.of("4", "5", "6");
|
||||
}
|
||||
|
||||
}
|
||||
@ -6,48 +6,73 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.tapestry5.annotations.InjectComponent;
|
||||
import org.apache.tapestry5.annotations.Persist;
|
||||
import org.apache.tapestry5.annotations.Property;
|
||||
import org.apache.tapestry5.corelib.components.Zone;
|
||||
import org.apache.tapestry5.services.ComponentSource;
|
||||
|
||||
import com.pmease.commons.hibernate.dao.GeneralDao;
|
||||
import com.pmease.commons.product.Counter;
|
||||
import com.pmease.commons.product.model.Repository;
|
||||
import com.pmease.commons.product.model.User;
|
||||
|
||||
public class Index {
|
||||
|
||||
@Persist
|
||||
@Property
|
||||
private List<Counter> counters;
|
||||
|
||||
@InjectComponent
|
||||
private Zone zone;
|
||||
|
||||
@Property
|
||||
private Counter counter;
|
||||
private User user;
|
||||
|
||||
@Property
|
||||
private Repository repository;
|
||||
|
||||
@Inject
|
||||
private GeneralDao dao;
|
||||
private ComponentSource componentSource;
|
||||
|
||||
void setupRender() {
|
||||
if (counters == null) {
|
||||
counters = new ArrayList<Counter>();
|
||||
counters.add(new Counter());
|
||||
counters.add(new Counter());
|
||||
}
|
||||
@InjectComponent
|
||||
private Zone myZone;
|
||||
|
||||
public List<User> getUsers() {
|
||||
List<User> users = new ArrayList<User>();
|
||||
|
||||
User user = new User();
|
||||
user.setName("robin");
|
||||
user.setEmail("robin@pmease.com");
|
||||
users.add(user);
|
||||
|
||||
user = new User();
|
||||
user.setName("steve");
|
||||
user.setEmail("steve@pmease.com");
|
||||
users.add(user);
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
void onActionFromModify() {
|
||||
System.out.println(dao.getReference(User.class, 1L).getEmail());
|
||||
void onActivate(String userName) {
|
||||
user = new User();
|
||||
user.setName(userName);
|
||||
}
|
||||
|
||||
Object onActionFromIncrease(int index) {
|
||||
counter = counters.get(index);
|
||||
counter.increase();
|
||||
return zone;
|
||||
void onActivate(String userName, String repositoryName) {
|
||||
user = new User();
|
||||
user.setName(userName);
|
||||
|
||||
repository = new Repository();
|
||||
repository.setName(repositoryName);
|
||||
}
|
||||
|
||||
public String getZoneId() {
|
||||
return zone.getClientId();
|
||||
public UserViewer getUserViewer() {
|
||||
UserViewer viewer = (UserViewer) componentSource.getPage(UserViewer.class);
|
||||
viewer.setUser(user);
|
||||
return viewer;
|
||||
}
|
||||
|
||||
public RepositoryViewer getRepositoryViewer() {
|
||||
RepositoryViewer viewer = (RepositoryViewer) componentSource.getPage(RepositoryViewer.class);
|
||||
viewer.setUser(user);
|
||||
viewer.setRepository(repository);
|
||||
return viewer;
|
||||
}
|
||||
|
||||
Object onActionFromEmailLink(String userName) {
|
||||
user = new User();
|
||||
user.setName(userName);
|
||||
user.setEmail(userName + "@pmease.com");
|
||||
return myZone;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +1,30 @@
|
||||
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
|
||||
<head>
|
||||
<title>Workshop</title>
|
||||
</head>
|
||||
<body>
|
||||
<t:loop source="counters" value="counter" index="var:index">
|
||||
<t:zone t:id="zone">${counter.value}</t:zone>
|
||||
<t:actionlink t:id="increase" t:zone="prop:zoneId" t:context="var:index">increase</t:actionlink>
|
||||
</t:loop>
|
||||
<img src="${asset:ok.gif}"></img>
|
||||
<t:actionlink t:id="modify">modify</t:actionlink>
|
||||
<t:if test="user">
|
||||
<t:if test="repository">
|
||||
<t:delegate to="repositoryViewer"/>
|
||||
<p:else>
|
||||
<t:delegate to="userViewer"/>
|
||||
</p:else>
|
||||
</t:if>
|
||||
<p:else>
|
||||
<t:grid source="users" row="user">
|
||||
<p:nameCell>
|
||||
<t:pagelink page="index" context="user.name">${user.name}</t:pagelink>
|
||||
</p:nameCell>
|
||||
<p:emailCell>
|
||||
<t:jquery.dialogajaxlink t:id="emailLink" t:dialog="myDialog" t:zone="myZone" context="user.name">open</t:jquery.dialogajaxlink>
|
||||
</p:emailCell>
|
||||
</t:grid>
|
||||
</p:else>
|
||||
</t:if>
|
||||
<t:jquery.dialog t:clientId="myDialog">
|
||||
<t:zone t:id="myZone" id="myZone">
|
||||
${user.email}
|
||||
</t:zone>
|
||||
</t:jquery.dialog>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.pmease.commons.product.pages;
|
||||
|
||||
import com.pmease.commons.product.model.Repository;
|
||||
import com.pmease.commons.product.model.User;
|
||||
|
||||
public class RepositoryViewer {
|
||||
|
||||
private User user;
|
||||
|
||||
private Repository repository;
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(User user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public Repository getRepository() {
|
||||
return repository;
|
||||
}
|
||||
|
||||
public void setRepository(Repository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,3 +1,3 @@
|
||||
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
|
||||
<t:commons.viewer elements="elements" value="var:value">${var:value}</t:commons.viewer>
|
||||
${user.name} - ${repository.name}
|
||||
</t:container>
|
||||
@ -0,0 +1,42 @@
|
||||
package com.pmease.commons.product.pages;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.tapestry5.annotations.Property;
|
||||
|
||||
import com.pmease.commons.product.model.Repository;
|
||||
import com.pmease.commons.product.model.User;
|
||||
|
||||
public class UserViewer {
|
||||
|
||||
private User user;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Property
|
||||
private Repository repository;
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(User user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public List<Repository> getRepositories() {
|
||||
List<Repository> repositories = new ArrayList<Repository>();
|
||||
Repository repository = new Repository();
|
||||
repository.setName("QuickBuild");
|
||||
repository.setDescription("QuickBuild Trunk");
|
||||
repositories.add(repository);
|
||||
|
||||
repository = new Repository();
|
||||
repository.setName("Gitop");
|
||||
repository.setDescription("Gitop Trunk");
|
||||
repositories.add(repository);
|
||||
|
||||
return repositories;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
|
||||
<div>${user.name}</div>
|
||||
<t:grid source="repositories" row="repository">
|
||||
<p:nameCell>
|
||||
<t:pagelink page="index" context="[user.name, repository.name]">${repository.name}</t:pagelink>
|
||||
</p:nameCell>
|
||||
</t:grid>
|
||||
</t:container>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
Loading…
x
Reference in New Issue
Block a user