├── src ├── main │ ├── webapp │ │ ├── WEB-INF │ │ │ ├── views │ │ │ │ ├── reset │ │ │ │ │ ├── invalidToken.jsp │ │ │ │ │ ├── reset.jsp │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── changePassword.jsp │ │ │ │ ├── home │ │ │ │ │ ├── contentNotSignedIn.jsp │ │ │ │ │ ├── header.jsp │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── contentSignedIn.jsp │ │ │ │ ├── events │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── list.jsp │ │ │ │ ├── settings │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── settings.jsp │ │ │ │ ├── admin │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── load.jsp │ │ │ │ ├── oauth │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── confirmAccess.jsp │ │ │ │ ├── invite │ │ │ │ │ ├── mail │ │ │ │ │ │ ├── tiles.xml │ │ │ │ │ │ └── invite.jsp │ │ │ │ │ ├── facebook │ │ │ │ │ │ ├── tiles.xml │ │ │ │ │ │ └── invite.jsp │ │ │ │ │ ├── twitter │ │ │ │ │ │ ├── friends.jsp │ │ │ │ │ │ ├── tiles.xml │ │ │ │ │ │ └── friendFinder.jsp │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── accept.jsp │ │ │ │ ├── signin │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── signin.jsp │ │ │ │ ├── signup │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── signup.jsp │ │ │ │ ├── connect │ │ │ │ │ ├── linkedInConnect.jsp │ │ │ │ │ ├── tripItConnect.jsp │ │ │ │ │ ├── twitterConnect.jsp │ │ │ │ │ ├── tripItConnected.jsp │ │ │ │ │ ├── twitterConnected.jsp │ │ │ │ │ ├── linkedInConnected.jsp │ │ │ │ │ ├── facebookConnected.jsp │ │ │ │ │ ├── facebookConnect.jsp │ │ │ │ │ └── tiles.xml │ │ │ │ ├── groups │ │ │ │ │ ├── view.jsp │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── event.jsp │ │ │ │ ├── members │ │ │ │ │ ├── tiles.xml │ │ │ │ │ └── view.jsp │ │ │ │ └── develop │ │ │ │ │ └── apps │ │ │ │ │ ├── view.jsp │ │ │ │ │ ├── appFormFragment.jsp │ │ │ │ │ ├── list.jsp │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── new.jsp │ │ │ │ │ └── tiles.xml │ │ │ ├── layouts │ │ │ │ ├── mobile │ │ │ │ │ ├── footer.jsp │ │ │ │ │ ├── header.jsp │ │ │ │ │ └── page.jsp │ │ │ │ ├── standard │ │ │ │ │ ├── footer.jsp │ │ │ │ │ └── header.jsp │ │ │ │ └── tiles.xml │ │ │ ├── messages │ │ │ │ └── validation.properties │ │ │ └── tags │ │ │ │ ├── develop │ │ │ │ └── apps │ │ │ │ │ └── summary.tag │ │ │ │ ├── urls │ │ │ │ └── absoluteUrl.tag │ │ │ │ └── dates │ │ │ │ └── dateRange.tag │ │ └── resources │ │ │ ├── logo-header.png │ │ │ ├── members │ │ │ ├── male.jpg │ │ │ └── female.jpg │ │ │ ├── messages │ │ │ ├── info.png │ │ │ ├── error.png │ │ │ ├── success.png │ │ │ ├── warning.png │ │ │ └── messages.css │ │ │ ├── background-body.png │ │ │ ├── logo-springsource.png │ │ │ ├── mobile │ │ │ ├── logo-header.png │ │ │ ├── icon-apple-appstore.gif │ │ │ ├── icon-android-marketplace.gif │ │ │ ├── page.css │ │ │ └── form.css │ │ │ ├── social │ │ │ ├── tripit │ │ │ │ └── logo.png │ │ │ ├── facebook │ │ │ │ ├── logo.png │ │ │ │ └── connect_light_medium_short.gif │ │ │ ├── linkedin │ │ │ │ ├── logo.png │ │ │ │ └── connectWithLinkedIn_small.png │ │ │ ├── twitter │ │ │ │ ├── logo.png │ │ │ │ └── signin.png │ │ │ └── google │ │ │ │ └── logo-gmail.png │ │ │ └── profile-pics │ │ │ ├── male │ │ │ ├── large.jpg │ │ │ ├── small.jpg │ │ │ └── normal.jpg │ │ │ └── female │ │ │ ├── large.jpg │ │ │ ├── normal.jpg │ │ │ └── small.jpg │ └── java │ │ ├── com │ │ └── springsource │ │ │ └── greenhouse │ │ │ ├── database │ │ │ ├── upgrade │ │ │ │ ├── v3 │ │ │ │ │ ├── DropAccountConnectionTables.sql │ │ │ │ │ ├── PopulateUserConnectionTable.sql │ │ │ │ │ └── CreateUserConnectionTable.sql │ │ │ │ ├── v4 │ │ │ │ │ └── CreateTimeSlotTable.sql │ │ │ │ └── v2 │ │ │ │ │ └── AlterServiceProviderTable.sql │ │ │ └── install │ │ │ │ ├── Reset.sql │ │ │ │ ├── Group.sql │ │ │ │ ├── Member.sql │ │ │ │ ├── Invite.sql │ │ │ │ ├── Venue.sql │ │ │ │ ├── Activity.sql │ │ │ │ └── ConnectedApp.sql │ │ │ ├── validation │ │ │ └── package-info.java │ │ │ ├── config │ │ │ ├── test-data.sql │ │ │ ├── package-info.java │ │ │ ├── embedded.properties │ │ │ └── IntegrationConfig.java │ │ │ ├── connect │ │ │ └── package-info.java │ │ │ ├── invite │ │ │ ├── mail │ │ │ │ ├── package-info.java │ │ │ │ ├── invite-text.st │ │ │ │ ├── invite-text-body.st │ │ │ │ ├── MailInviteService.java │ │ │ │ └── MailInviteForm.java │ │ │ ├── package-info.java │ │ │ ├── NoSuchInviteException.java │ │ │ ├── InviteAlreadyAcceptedException.java │ │ │ ├── InviteException.java │ │ │ └── InviteAcceptAction.java │ │ │ ├── signup │ │ │ ├── package-info.java │ │ │ ├── welcome.st │ │ │ └── SignedUpGateway.java │ │ │ ├── utils │ │ │ ├── package-info.java │ │ │ ├── VisualResourceReference.java │ │ │ ├── EmailUtils.java │ │ │ ├── SubResourceReference.java │ │ │ ├── ResourceReference.java │ │ │ ├── MessageType.java │ │ │ └── SlugUtils.java │ │ │ ├── members │ │ │ ├── package-info.java │ │ │ ├── ConnectedProfile.java │ │ │ ├── ProfilePictureService.java │ │ │ ├── ProfileRepository.java │ │ │ └── Profile.java │ │ │ ├── account │ │ │ ├── package-info.java │ │ │ ├── InvalidPasswordException.java │ │ │ ├── PictureSize.java │ │ │ ├── SignInNotFoundException.java │ │ │ ├── AccountException.java │ │ │ ├── EmailAlreadyOnFileException.java │ │ │ ├── Gender.java │ │ │ ├── ProfileReference.java │ │ │ └── PictureUrlMapper.java │ │ │ ├── events │ │ │ ├── package-info.java │ │ │ ├── load │ │ │ │ ├── TimeSlotData.java │ │ │ │ ├── EventLoaderRepository.java │ │ │ │ ├── VenueData.java │ │ │ │ ├── EventLoadController.java │ │ │ │ └── LeaderData.java │ │ │ ├── EventSessionLeader.java │ │ │ ├── Rating.java │ │ │ └── RatingPeriodClosedException.java │ │ │ ├── reset │ │ │ ├── package-info.java │ │ │ ├── reset-password.st │ │ │ ├── ResetPasswordMailer.java │ │ │ ├── InvalidResetTokenException.java │ │ │ ├── ResetPasswordRequest.java │ │ │ ├── ChangePasswordForm.java │ │ │ └── AsyncResetPasswordMailer.java │ │ │ ├── settings │ │ │ └── package-info.java │ │ │ ├── activity │ │ │ ├── action │ │ │ │ ├── package-info.java │ │ │ │ ├── ActionGateway.java │ │ │ │ ├── SimpleAction.java │ │ │ │ └── ActionFactory.java │ │ │ ├── badge │ │ │ │ ├── package-info.java │ │ │ │ ├── BadgeAwarder.java │ │ │ │ ├── BadgeSystem.java │ │ │ │ ├── BadgeRepository.java │ │ │ │ ├── SimpleBadgeAwarder.java │ │ │ │ └── BadgeSystemFactoryBean.java │ │ │ └── integration-activity.xml │ │ │ ├── groups │ │ │ ├── package-info.java │ │ │ ├── GroupRepository.java │ │ │ └── Group.java │ │ │ ├── signin │ │ │ ├── package-info.java │ │ │ └── SigninController.java │ │ │ ├── home │ │ │ ├── package-info.java │ │ │ └── HomeController.java │ │ │ └── develop │ │ │ ├── package-info.java │ │ │ ├── oauth │ │ │ ├── package-info.java │ │ │ └── InvalidRequestTokenException.java │ │ │ ├── NoSuchAccountConnectionException.java │ │ │ ├── InvalidAccessTokenException.java │ │ │ ├── InvalidApiKeyException.java │ │ │ └── AppSummary.java │ │ ├── org │ │ └── springframework │ │ │ ├── jdbc │ │ │ ├── core │ │ │ │ └── package-info.java │ │ │ └── versioned │ │ │ │ ├── package-info.java │ │ │ │ ├── DatabaseChange.java │ │ │ │ ├── DatabaseUpgrader.java │ │ │ │ └── AbstractDatabaseChange.java │ │ │ ├── model │ │ │ ├── package-info.java │ │ │ └── FieldModel.java │ │ │ ├── social │ │ │ ├── mobile │ │ │ │ └── device │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── DeviceHandlerMethodArgumentResolver.java │ │ │ └── facebook │ │ │ │ └── web │ │ │ │ └── package-info.java │ │ │ ├── data │ │ │ ├── package-info.java │ │ │ ├── FileStorage.java │ │ │ └── FileData.java │ │ │ └── templating │ │ │ ├── package-info.java │ │ │ ├── StringTemplateFactory.java │ │ │ ├── StringTemplate.java │ │ │ ├── StringTemplateLoader.java │ │ │ ├── DelegatingStringTemplate.java │ │ │ ├── LocalStringTemplate.java │ │ │ └── StandardStringTemplateLoader.java │ │ └── log4j.xml └── test │ └── java │ ├── com │ └── springsource │ │ └── greenhouse │ │ ├── invite │ │ ├── mail │ │ │ └── MailInviteServiceTest.sql │ │ ├── TwitterInviteControllerTest.sql │ │ └── JdbcInviteRepositoryTest.sql │ │ ├── groups │ │ ├── JdbcGroupRepositoryTest.sql │ │ └── JdbcGroupRepositoryTest.java │ │ ├── events │ │ └── load │ │ │ ├── JdbcEventLoaderRepositoryTest.sql │ │ │ ├── JdbcEventLoaderRepositoryTest-context.xml │ │ │ ├── show_short_updated.json │ │ │ └── show_short.json │ │ ├── account │ │ ├── JdbcAccountRepositoryTest.sql │ │ ├── StubFileStorage.java │ │ └── WelcomeMailTransformerTest.java │ │ ├── settings │ │ └── SettingsControllerTest.sql │ │ ├── connect │ │ ├── JdbcServiceProviderFactoryTest.sql │ │ └── JdbcAccountConnectionRepositoryTest.sql │ │ ├── members │ │ └── JdbcProfileRepositoryTest.sql │ │ ├── utils │ │ ├── EmailUtilsTest.java │ │ └── SlugUtilsTest.java │ │ └── develop │ │ └── JdbcAppRepositoryTest.sql │ └── log4j.xml ├── Dockerfile ├── .gitignore ├── .rancher-pipeline.yml ├── .springBeans ├── NOTICE └── deployment.yaml /src/main/webapp/WEB-INF/views/reset/invalidToken.jsp: -------------------------------------------------------------------------------- 1 | <%@ page session="false" %> 2 |
Version 1.0.0 (Beta) - © Copyright 2010-2012 SpringSource, a division of VMware
-------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/messages/validation.properties: -------------------------------------------------------------------------------- 1 | com.springsource.greenhouse.validation.constraints.Confirm.message=could not confirm 2 | typeMismatch=invalid input 3 | eventForm.startDate.typeMismatch=start date should be formatted as mm/dd/yyyy 4 | typeMismatch.org.jodatime.LocalDate=date must be of format mm/dd/yyyy -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/invite/mail/invite-text-body.st: -------------------------------------------------------------------------------- 1 | \$invitee.firstName\$, 2 | 3 | Greenhouse is all about helping you connect with fellow application developers. 4 | 5 | It can help you stay on top of everything that's happening in the Spring community. 6 | 7 | Hope to see you there, 8 | $account.firstName$ -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/database/install/Group.sql: -------------------------------------------------------------------------------- 1 | create table MemberGroup (id identity, 2 | name varchar not null unique, 3 | slug varchar not null unique, 4 | description varchar, 5 | hashtag varchar unique, 6 | leader bigint not null, 7 | primary key (id), 8 | foreign key (leader) references Member(id)); -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/database/upgrade/v4/CreateTimeSlotTable.sql: -------------------------------------------------------------------------------- 1 | create table EventTimeSlot ( 2 | id identity, 3 | startTime timestamp not null, 4 | endTime timestamp not null, 5 | primary key (id) 6 | ); 7 | 8 | alter table EventSession add column timeslot bigint; 9 | alter table EventSession add foreign key (timeslot) references EventTimeSlot(id); -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/signup/welcome.st: -------------------------------------------------------------------------------- 1 | Welcome to the Greenhouse, $firstName$! 2 | 3 | The Greenhouse is a place for application developers to connect and stay on top of everything happening in the Spring community. 4 | 5 | View your member profile at: 6 | $profileUrl$ 7 | 8 | Download Greenhouse for iPhone: 9 | http://itunes.apple.com/us/app/greenhouse/id395862873 -------------------------------------------------------------------------------- /src/test/java/com/springsource/greenhouse/groups/JdbcGroupRepositoryTest.sql: -------------------------------------------------------------------------------- 1 | insert into Member (firstName, lastName, email, password, username, gender, birthdate) values ('Art', 'Names', 'artnames@habuma.com', 'password', 'artnames', 'M', '1977-12-01'); 2 | insert into MemberGroup (name, slug, description, hashtag, leader) values ('Test Group', 'test-group', 'This is a test group', '#test', 1); -------------------------------------------------------------------------------- /src/test/java/com/springsource/greenhouse/events/load/JdbcEventLoaderRepositoryTest.sql: -------------------------------------------------------------------------------- 1 | insert into Member (firstName, lastName, email, password, username, gender, birthdate) values ('Craig' , 'Walls', 'cwalls@vmware.com', 'denton', 'habuma', 'M', '1977-12-01'); 2 | insert into MemberGroup (name, slug, description, hashtag, leader) values ('SpringOne2gx', 's2gx', 'The premier Spring Framework event', '#s2gx', 1); 3 | -------------------------------------------------------------------------------- /src/test/java/com/springsource/greenhouse/account/JdbcAccountRepositoryTest.sql: -------------------------------------------------------------------------------- 1 | insert into Member (firstName, lastName, email, password, username, gender, birthdate) values ('Craig', 'Walls', 'cwalls@vmware.com', 'password', 'habuma', 'M', '1977-12-01'); 2 | insert into Member (firstName, lastName, email, password, username, gender, birthdate) values ('Keith', 'Donald', 'kdonald@vmware.com', 'password', 'kdonald', 'M', '1977-12-01'); 3 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/home/contentNotSignedIn.jsp: -------------------------------------------------------------------------------- 1 | <%@ page session="false" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | 4 |7 | We make it fun to be an application developer. 8 |
9 |10 | We help you connect with fellow developers and take advantage of everything the Spring community has to offer. 11 |
12 |No friends found
15 |Click the button to connect your Greenhouse account with your LinkedIn account.
8 |The application ${clientApp.summary.name} would like the ability to read and update your data on Greenhouse.
7 | 8 |8 | Click the button to connect your Greenhouse account with your TripIt account. 9 | You will be taken to TripIt for authorization and then will be brought back here. 10 |
11 |Click the button to connect your Greenhouse account with your Twitter account.
8 |12 | Your Greenhouse account is connected to your TripIt account. 13 | Click the button if you wish to disconnect. 14 |
15 |12 | Your Greenhouse account is connected to your Twitter account. 13 | Click the button if you wish to disconnect. 14 |
15 |12 | Your Greenhouse account is connected to your LinkedIn account. 13 | Click the button if you wish to disconnect. 14 |
15 |You have not registered any apps.
11 |You have registered the following apps:
14 |Connect one of your apps to Greenhouse by completing the following form.
16 |7 | We make it fun to be an application developer. 8 |
9 |10 | We help you connect with fellow developers and take advantage of everything the Spring community has to offer. 11 |
12 |13 | If this is your first time here, start by ">connecting your Greenhouse account to your social networks, then grab the mobile client. 14 |
15 |See who you follow is also a member of the Greenhouse.
8 |14 | 15 |
16 | 17 | 18 | 19 | 29 | 30 |Join Greenhouse to connect with other application developers using Spring.
22 |17 | Grab the Greenhouse mobile client to follow this Event as it happens. 18 |
19 | -------------------------------------------------------------------------------- /src/test/java/com/springsource/greenhouse/account/StubFileStorage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.springsource.greenhouse.account; 17 | 18 | import org.springframework.data.FileData; 19 | import org.springframework.data.FileStorage; 20 | 21 | public class StubFileStorage implements FileStorage { 22 | 23 | public String absoluteUrl(String fileName) { 24 | return "http://localhost:8080/resources/" + fileName; 25 | } 26 | 27 | public String storeFile(FileData file) { 28 | return absoluteUrl(file.getName()); 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/invite/NoSuchInviteException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.springsource.greenhouse.invite; 17 | 18 | /** 19 | * Thrown when an invite could not be found because one indexed by the provided token does not exist. 20 | * @author Keith Donald 21 | */ 22 | @SuppressWarnings("serial") 23 | public final class NoSuchInviteException extends InviteException { 24 | 25 | public NoSuchInviteException(String token) { 26 | super(token, "No such invite with token '" + token + "'"); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/springframework/templating/StringTemplateFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.springframework.templating; 17 | 18 | /** 19 | * Factory for a fresh StringTemplate instance that can be used in the local thread of execution. 20 | * @author Keith Donald 21 | */ 22 | public interface StringTemplateFactory { 23 | 24 | /** 25 | * Get a fresh StringTemplate instance that can be safely used in the current thread of execution. 26 | * StringTemplates should not be shared between threads. 27 | */ 28 | StringTemplate getStringTemplate(); 29 | 30 | } -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/events/load/EventLoaderRepository.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.springsource.greenhouse.events.load; 17 | 18 | 19 | 20 | /** 21 | * Data access interface for loading {@link Event} data. 22 | * @author Craig Walls 23 | */ 24 | public interface EventLoaderRepository { 25 | 26 | long loadEvent(EventData eventData, VenueData venueData); 27 | 28 | long loadLeader(LeaderData leaderData); 29 | 30 | long loadTimeSlot(TimeSlotData timeSlotData); 31 | 32 | int loadEventSession(EventSessionData eventSessionData); 33 | 34 | } -------------------------------------------------------------------------------- /src/main/java/com/springsource/greenhouse/invite/InviteAlreadyAcceptedException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.springsource.greenhouse.invite; 17 | 18 | /** 19 | * Thrown if an invite has already been accepted and you try to accept it again. 20 | * You can only accept an invite once. 21 | * @author Keith Donald 22 | */ 23 | @SuppressWarnings("serial") 24 | public final class InviteAlreadyAcceptedException extends InviteException { 25 | 26 | public InviteAlreadyAcceptedException(String token) { 27 | super(token, "Invite already accepted with token '" + token + "'"); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/tags/dates/dateRange.tag: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2 | <%@ taglib uri="http://www.springframework.org/tags" prefix="s" %> 3 | <%@ taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %> 4 | <%@ attribute name="startTime" required="true" rtexprvalue="true" type="org.joda.time.DateTime" %> 5 | <%@ attribute name="endTime" required="true" rtexprvalue="true" type="org.joda.time.DateTime" %> 6 | <%@ attribute name="timeZone" required="false" rtexprvalue="true" type="org.joda.time.DateTimeZone" %> 7 | 8 |null if no badge is to be awarded for the Action.
29 | */
30 | public AwardedBadge awardBadgeForAction(A action);
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/springsource/greenhouse/invite/InviteException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.springsource.greenhouse.invite;
17 |
18 | /**
19 | * Base class for invite exceptions.
20 | * @author Keith Donald
21 | */
22 | @SuppressWarnings("serial")
23 | public abstract class InviteException extends Exception {
24 |
25 | private final String token;
26 |
27 | public InviteException(String token, String message) {
28 | super(message);
29 | this.token = token;
30 | }
31 |
32 | /**
33 | * The token identifying the invite.
34 | */
35 | public String getToken() {
36 | return token;
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/springsource/greenhouse/activity/badge/BadgeSystem.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.springsource.greenhouse.activity.badge;
17 |
18 | import com.springsource.greenhouse.activity.action.Action;
19 |
20 | /**
21 | * Entry point into the badge system.
22 | * Actions that are performed are routed to this system and may result in awarded badges.
23 | * @author Keith Donald
24 | */
25 | public interface BadgeSystem {
26 |
27 | /**
28 | * Award a badge for the action performed, if appropriate.
29 | * Returns null if no badge was awarded.
30 | */
31 | AwardedBadge awardBadgeForAction(Action action);
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/springsource/greenhouse/utils/VisualResourceReference.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.springsource.greenhouse.utils;
17 |
18 | /**
19 | * A resource reference that includes a picture of the resource.
20 | * @author Keith Donald
21 | */
22 | public class VisualResourceReference extends ResourceReference Click the button to connect your Greenhouse account with your Facebook account.Connect to Facebook
13 | Welcome to the Greenhouse, ${invitee.firstName}!
10 | Settings
6 |
7 | Connected Accounts
8 |
Some of your friends are already in the Greenhouse
11 | 16 |None of your friends have Greenhouse accounts connected to Facebook
21 |Send a personal Greenhouse invitation to your friends and colleagues.
32 |