├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── archetype
├── archetype-build-file.properties
├── form-jsp-portlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── resources
│ │ ├── META-INF
│ │ └── maven
│ │ │ ├── archetype-metadata.xml
│ │ │ └── archetype.xml
│ │ └── archetype-resources
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── portlet1
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ └── dto
│ │ │ └── User.java
│ │ ├── resources
│ │ ├── content
│ │ │ └── portlet1.properties
│ │ └── log4j.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ ├── liferay-display.xml
│ │ ├── liferay-plugin-package.properties
│ │ ├── liferay-portlet.xml
│ │ ├── portlet.xml
│ │ ├── spring-context
│ │ │ ├── portlet-application-context.xml
│ │ │ └── portlet
│ │ │ │ └── portlet1-context.xml
│ │ ├── views
│ │ │ ├── greeting.jspx
│ │ │ └── user.jspx
│ │ └── web.xml
│ │ └── resources
│ │ ├── css
│ │ └── main.css
│ │ └── images
│ │ └── icon.png
├── form-thymeleaf-portlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── resources
│ │ ├── META-INF
│ │ └── maven
│ │ │ ├── archetype-metadata.xml
│ │ │ └── archetype.xml
│ │ └── archetype-resources
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── portlet1
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ └── dto
│ │ │ └── User.java
│ │ ├── resources
│ │ ├── content
│ │ │ └── portlet1.properties
│ │ └── log4j.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ ├── liferay-display.xml
│ │ ├── liferay-plugin-package.properties
│ │ ├── liferay-portlet.xml
│ │ ├── portlet.xml
│ │ ├── spring-context
│ │ │ ├── portlet-application-context.xml
│ │ │ └── portlet
│ │ │ │ └── portlet1-context.xml
│ │ ├── views
│ │ │ ├── greeting.html
│ │ │ └── user.html
│ │ └── web.xml
│ │ └── resources
│ │ ├── css
│ │ └── main.css
│ │ └── images
│ │ └── icon.png
└── pom.xml
├── demo
├── applicant-jsp-portlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── liferay
│ │ │ └── portletmvc4spring
│ │ │ └── demo
│ │ │ └── applicant
│ │ │ └── jsp
│ │ │ ├── controller
│ │ │ ├── ApplicantController.java
│ │ │ ├── AttachmentManager.java
│ │ │ ├── HelpController.java
│ │ │ ├── PreferencesController.java
│ │ │ └── TermsController.java
│ │ │ ├── dto
│ │ │ ├── Applicant.java
│ │ │ ├── Attachment.java
│ │ │ ├── City.java
│ │ │ ├── Preferences.java
│ │ │ ├── Province.java
│ │ │ └── TransientUpload.java
│ │ │ ├── portlet
│ │ │ └── ApplicantPortlet.java
│ │ │ ├── service
│ │ │ ├── CityService.java
│ │ │ ├── ProvinceService.java
│ │ │ └── mock
│ │ │ │ ├── CityServiceMockImpl.java
│ │ │ │ └── ProvinceServiceMockImpl.java
│ │ │ └── servlet
│ │ │ └── AttachmentSessionListener.java
│ │ ├── resources
│ │ ├── ValidationMessages.properties
│ │ ├── content
│ │ │ └── portlet1.properties
│ │ └── log4j.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ ├── liferay-display.xml
│ │ ├── liferay-plugin-package.properties
│ │ ├── liferay-portlet.xml
│ │ ├── portlet.xml
│ │ ├── spring-context
│ │ │ ├── portlet-application-context.xml
│ │ │ └── portlet
│ │ │ │ └── portlet1-context.xml
│ │ ├── views
│ │ │ ├── acceptance.jspx
│ │ │ ├── applicant.jspx
│ │ │ ├── confirmation.jspx
│ │ │ ├── help.jspx
│ │ │ ├── preferences.jspx
│ │ │ └── terms.jspx
│ │ └── web.xml
│ │ ├── icon.png
│ │ └── images
│ │ ├── icon-delete.png
│ │ └── icon-help.png
├── applicant-thymeleaf-portlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── liferay
│ │ │ └── portletmvc4spring
│ │ │ └── demo
│ │ │ └── applicant
│ │ │ └── thymeleaf
│ │ │ ├── controller
│ │ │ ├── ApplicantController.java
│ │ │ ├── AttachmentManager.java
│ │ │ ├── ControllerUtil.java
│ │ │ ├── HelpController.java
│ │ │ ├── PreferencesController.java
│ │ │ └── TermsController.java
│ │ │ ├── dto
│ │ │ ├── Applicant.java
│ │ │ ├── Attachment.java
│ │ │ ├── City.java
│ │ │ ├── Preferences.java
│ │ │ ├── Province.java
│ │ │ └── TransientUpload.java
│ │ │ ├── portlet
│ │ │ └── ApplicantPortlet.java
│ │ │ ├── service
│ │ │ ├── CityService.java
│ │ │ ├── ProvinceService.java
│ │ │ └── mock
│ │ │ │ ├── CityServiceMockImpl.java
│ │ │ │ └── ProvinceServiceMockImpl.java
│ │ │ └── servlet
│ │ │ └── AttachmentSessionListener.java
│ │ ├── resources
│ │ ├── ValidationMessages.properties
│ │ ├── content
│ │ │ └── portlet1.properties
│ │ └── log4j.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ ├── liferay-display.xml
│ │ ├── liferay-plugin-package.properties
│ │ ├── liferay-portlet.xml
│ │ ├── portlet.xml
│ │ ├── spring-context
│ │ │ ├── portlet-application-context.xml
│ │ │ └── portlet
│ │ │ │ └── portlet1-context.xml
│ │ ├── views
│ │ │ ├── acceptance.html
│ │ │ ├── applicant.html
│ │ │ ├── confirmation.html
│ │ │ ├── help.html
│ │ │ ├── preferences.html
│ │ │ └── terms.html
│ │ └── web.xml
│ │ ├── icon.png
│ │ └── images
│ │ ├── icon-delete.png
│ │ └── icon-help.png
├── applicant-webflow-portlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── liferay
│ │ │ └── portletmvc4spring
│ │ │ └── demo
│ │ │ └── applicant
│ │ │ └── webflow
│ │ │ ├── actions
│ │ │ ├── AutoFillAction.java
│ │ │ ├── DeleteAction.java
│ │ │ └── UploadAction.java
│ │ │ ├── controller
│ │ │ └── ApplicantController.java
│ │ │ ├── dto
│ │ │ ├── Applicant.java
│ │ │ ├── Attachment.java
│ │ │ ├── City.java
│ │ │ ├── Province.java
│ │ │ └── TransientUpload.java
│ │ │ ├── handler
│ │ │ └── ViewFlowHandler.java
│ │ │ ├── portlet
│ │ │ └── ApplicantPortlet.java
│ │ │ ├── service
│ │ │ ├── CityService.java
│ │ │ ├── ProvinceService.java
│ │ │ └── mock
│ │ │ │ ├── CityServiceMockImpl.java
│ │ │ │ └── ProvinceServiceMockImpl.java
│ │ │ └── validators
│ │ │ └── ApplicantValidator.java
│ │ ├── resources
│ │ ├── content
│ │ │ └── portlet1.properties
│ │ └── log4j.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ ├── flows
│ │ │ ├── applicantFlow.xml
│ │ │ ├── page1.jsp
│ │ │ ├── page2.jsp
│ │ │ └── page3.jsp
│ │ ├── liferay-display.xml
│ │ ├── liferay-plugin-package.properties
│ │ ├── liferay-portlet.xml
│ │ ├── portlet.xml
│ │ ├── spring-context
│ │ │ ├── portlet-application-context.xml
│ │ │ └── portlet
│ │ │ │ └── portlet1-context.xml
│ │ └── web.xml
│ │ └── images
│ │ ├── icon-delete.png
│ │ └── icon-help.png
└── pom.xml
├── fix-versions.pl
├── framework
├── pom.xml
└── src
│ ├── main
│ ├── asciidoc
│ │ └── portletmvc4spring.adoc
│ ├── java
│ │ ├── com
│ │ │ └── liferay
│ │ │ │ └── portletmvc4spring
│ │ │ │ ├── DispatcherPortlet.java
│ │ │ │ ├── FrameworkPortlet.java
│ │ │ │ ├── GenericPortletBean.java
│ │ │ │ ├── HandlerAdapter.java
│ │ │ │ ├── HandlerExceptionResolver.java
│ │ │ │ ├── HandlerExecutionChain.java
│ │ │ │ ├── HandlerInterceptor.java
│ │ │ │ ├── HandlerMapping.java
│ │ │ │ ├── ModelAndView.java
│ │ │ │ ├── ModelAndViewDefiningException.java
│ │ │ │ ├── NoHandlerFoundException.java
│ │ │ │ ├── PortletJstlView.java
│ │ │ │ ├── PortletLocaleContextResolver.java
│ │ │ │ ├── PortletLocaleResolver.java
│ │ │ │ ├── ViewRendererServlet.java
│ │ │ │ ├── bind
│ │ │ │ ├── MissingPortletRequestParameterException.java
│ │ │ │ ├── PortletRequestBindingException.java
│ │ │ │ ├── PortletRequestDataBinder.java
│ │ │ │ ├── PortletRequestParameterPropertyValues.java
│ │ │ │ ├── PortletRequestUtils.java
│ │ │ │ ├── annotation
│ │ │ │ │ ├── ActionMapping.java
│ │ │ │ │ ├── EventMapping.java
│ │ │ │ │ ├── RenderMapping.java
│ │ │ │ │ ├── ResourceMapping.java
│ │ │ │ │ ├── package-info.java
│ │ │ │ │ └── support
│ │ │ │ │ │ └── HandlerMethodResolver.java
│ │ │ │ └── package-info.java
│ │ │ │ ├── context
│ │ │ │ ├── AbstractRefreshablePortletApplicationContext.java
│ │ │ │ ├── ConfigurablePortletApplicationContext.java
│ │ │ │ ├── PortletApplicationContext.java
│ │ │ │ ├── PortletApplicationContextUtils.java
│ │ │ │ ├── PortletApplicationObjectSupport.java
│ │ │ │ ├── PortletConfigAware.java
│ │ │ │ ├── PortletConfigPropertySource.java
│ │ │ │ ├── PortletContextAware.java
│ │ │ │ ├── PortletContextAwareProcessor.java
│ │ │ │ ├── PortletContextPropertySource.java
│ │ │ │ ├── PortletContextResource.java
│ │ │ │ ├── PortletContextResourceLoader.java
│ │ │ │ ├── PortletContextResourcePatternResolver.java
│ │ │ │ ├── PortletContextScope.java
│ │ │ │ ├── PortletRequestAttributes.java
│ │ │ │ ├── PortletRequestHandledEvent.java
│ │ │ │ ├── PortletSessionScope.java
│ │ │ │ ├── PortletWebRequest.java
│ │ │ │ ├── StandardPortletEnvironment.java
│ │ │ │ ├── StaticPortletApplicationContext.java
│ │ │ │ ├── XmlPortletApplicationContext.java
│ │ │ │ └── package-info.java
│ │ │ │ ├── handler
│ │ │ │ ├── AbstractHandlerExceptionResolver.java
│ │ │ │ ├── AbstractHandlerMapping.java
│ │ │ │ ├── AbstractMapBasedHandlerMapping.java
│ │ │ │ ├── HandlerInterceptorAdapter.java
│ │ │ │ ├── ParameterHandlerMapping.java
│ │ │ │ ├── ParameterMappingInterceptor.java
│ │ │ │ ├── PortletContentGenerator.java
│ │ │ │ ├── PortletModeHandlerMapping.java
│ │ │ │ ├── PortletModeParameterHandlerMapping.java
│ │ │ │ ├── PortletModeParameterLookupKey.java
│ │ │ │ ├── PortletRequestMethodNotSupportedException.java
│ │ │ │ ├── PortletSessionRequiredException.java
│ │ │ │ ├── SimpleMappingExceptionResolver.java
│ │ │ │ ├── SimplePortletHandlerAdapter.java
│ │ │ │ ├── SimplePortletPostProcessor.java
│ │ │ │ ├── UserRoleAuthorizationInterceptor.java
│ │ │ │ ├── WebRequestHandlerInterceptorAdapter.java
│ │ │ │ └── package-info.java
│ │ │ │ ├── multipart
│ │ │ │ ├── DefaultMultipartActionRequest.java
│ │ │ │ ├── DefaultMultipartResourceRequest.java
│ │ │ │ ├── MultipartActionRequest.java
│ │ │ │ ├── MultipartResourceRequest.java
│ │ │ │ ├── PortletMultipartResolver.java
│ │ │ │ ├── StandardPortletMultipartResolver.java
│ │ │ │ └── package-info.java
│ │ │ │ ├── mvc
│ │ │ │ ├── AbstractController.java
│ │ │ │ ├── Controller.java
│ │ │ │ ├── EventAwareController.java
│ │ │ │ ├── ParameterizableViewController.java
│ │ │ │ ├── PortletModeNameViewController.java
│ │ │ │ ├── PortletWrappingController.java
│ │ │ │ ├── ResourceAwareController.java
│ │ │ │ ├── SimpleControllerHandlerAdapter.java
│ │ │ │ ├── annotation
│ │ │ │ │ ├── AnnotationMethodHandlerExceptionResolver.java
│ │ │ │ │ ├── DefaultAnnotationHandlerMapping.java
│ │ │ │ │ ├── PortletAnnotationMappingUtils.java
│ │ │ │ │ └── package-info.java
│ │ │ │ ├── method
│ │ │ │ │ ├── AbstractPortletHandlerMethodAdapter.java
│ │ │ │ │ └── annotation
│ │ │ │ │ │ ├── PortletCookieValueMethodArgumentResolver.java
│ │ │ │ │ │ ├── PortletInvocableHandlerMethod.java
│ │ │ │ │ │ ├── PortletModelAndViewMethodReturnValueHandler.java
│ │ │ │ │ │ ├── PortletModelAndViewResolver.java
│ │ │ │ │ │ ├── PortletModelAndViewResolverMethodReturnValueHandler.java
│ │ │ │ │ │ ├── PortletModelAttributeMethodProcessor.java
│ │ │ │ │ │ ├── PortletRequestDataBinderFactory.java
│ │ │ │ │ │ ├── PortletRequestMappingHandlerAdapter.java
│ │ │ │ │ │ ├── PortletRequestMethodArgumentResolver.java
│ │ │ │ │ │ ├── PortletResponseMethodArgumentResolver.java
│ │ │ │ │ │ └── RequestResponseBodyAdviceChain.java
│ │ │ │ └── package-info.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── support
│ │ │ │ └── PortletRequestContextUtils.java
│ │ │ │ └── util
│ │ │ │ ├── PortletContainer.java
│ │ │ │ ├── PortletUtils.java
│ │ │ │ └── package-info.java
│ │ └── overview.html
│ └── resources
│ │ ├── META-INF
│ │ └── LICENSE
│ │ └── com
│ │ └── liferay
│ │ └── portletmvc4spring
│ │ └── DispatcherPortlet.properties
│ └── test
│ ├── java
│ └── com
│ │ └── liferay
│ │ ├── portletmvc4spring
│ │ ├── ComplexPortletApplicationContext.java
│ │ ├── DispatcherPortletTests.java
│ │ ├── GenericPortletBeanTests.java
│ │ ├── bind
│ │ │ ├── PortletRequestDataBinderTests.java
│ │ │ ├── PortletRequestParameterPropertyValuesTests.java
│ │ │ └── PortletRequestUtilsTests.java
│ │ ├── context
│ │ │ ├── AbstractXmlWebApplicationContextTests.java
│ │ │ ├── PortletApplicationContextScopeTests.java
│ │ │ ├── PortletConfigAwareBean.java
│ │ │ ├── PortletContextAwareBean.java
│ │ │ ├── PortletContextAwareProcessorTests.java
│ │ │ ├── PortletRequestAttributesTests.java
│ │ │ ├── PortletWebRequestTests.java
│ │ │ └── XmlPortletApplicationContextTests.java
│ │ ├── handler
│ │ │ ├── ParameterHandlerMappingTests.java
│ │ │ ├── ParameterMappingInterceptorTests.java
│ │ │ ├── PortletModeHandlerMappingTests.java
│ │ │ ├── PortletModeParameterHandlerMappingTests.java
│ │ │ ├── SimpleMappingExceptionResolverTests.java
│ │ │ └── UserRoleAuthorizationInterceptorTests.java
│ │ ├── mvc
│ │ │ ├── ParameterizableViewControllerTests.java
│ │ │ ├── PortletModeNameViewControllerTests.java
│ │ │ ├── PortletWrappingControllerTests.java
│ │ │ └── annotation
│ │ │ │ ├── AnnotationMethodHandlerExceptionResolverTests.java
│ │ │ │ ├── Portlet20AnnotationControllerTests.java
│ │ │ │ └── PortletAnnotationControllerTests.java
│ │ └── util
│ │ │ └── PortletUtilsTests.java
│ │ └── spring
│ │ ├── beans
│ │ └── factory
│ │ │ └── xml
│ │ │ ├── AbstractBeanFactoryTests.java
│ │ │ └── AbstractListableBeanFactoryTests.java
│ │ ├── context
│ │ ├── ACATester.java
│ │ ├── AbstractApplicationContextTests.java
│ │ ├── BeanThatBroadcasts.java
│ │ ├── BeanThatListens.java
│ │ ├── LifecycleContextBean.java
│ │ └── TestListener.java
│ │ └── tests
│ │ ├── Assume.java
│ │ ├── TestGroup.java
│ │ └── sample
│ │ └── beans
│ │ ├── AgeHolder.java
│ │ ├── Colour.java
│ │ ├── DerivedTestBean.java
│ │ ├── INestedTestBean.java
│ │ ├── IOther.java
│ │ ├── ITestBean.java
│ │ ├── IndexedTestBean.java
│ │ ├── LifecycleBean.java
│ │ ├── MustBeInitialized.java
│ │ ├── NestedTestBean.java
│ │ ├── TestBean.java
│ │ └── factory
│ │ └── DummyFactory.java
│ └── resources
│ ├── com
│ └── liferay
│ │ └── portletmvc4spring
│ │ ├── context
│ │ └── WEB-INF
│ │ │ ├── applicationContext.xml
│ │ │ ├── context-messages.properties
│ │ │ ├── context-messages_en_GB.properties
│ │ │ ├── context-messages_en_US.properties
│ │ │ ├── contextInclude.xml
│ │ │ ├── empty-portlet.xml
│ │ │ ├── more-context-messages.properties
│ │ │ ├── myoverride.properties
│ │ │ ├── myplaceholder.properties
│ │ │ ├── resources
│ │ │ ├── messageSource.xml
│ │ │ └── themeSource.xml
│ │ │ ├── test-messages.properties
│ │ │ ├── test-portlet.xml
│ │ │ └── test-servlet.xml
│ │ └── handler
│ │ ├── parameterMapping.xml
│ │ ├── portletModeMapping.xml
│ │ └── portletModeParameterMapping.xml
│ └── log4j.properties
├── pom.xml
├── security
├── pom.xml
└── src
│ └── main
│ ├── java
│ ├── com
│ │ └── liferay
│ │ │ └── portletmvc4spring
│ │ │ └── security
│ │ │ ├── SpringSecurityPortletConfigurer.java
│ │ │ ├── SpringSecurityPortletFilter.java
│ │ │ ├── SpringSecurityRequestAdapter.java
│ │ │ └── package-info.java
│ └── overview.html
│ └── resources
│ └── META-INF
│ └── LICENSE
├── test
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── liferay
│ └── portletmvc4spring
│ └── test
│ └── mock
│ └── web
│ └── portlet
│ ├── MockActionParameters.java
│ ├── MockActionRequest.java
│ ├── MockActionResponse.java
│ ├── MockActionURL.java
│ ├── MockBaseURL.java
│ ├── MockCacheControl.java
│ ├── MockClientDataRequest.java
│ ├── MockEvent.java
│ ├── MockEventRequest.java
│ ├── MockEventResponse.java
│ ├── MockMimeResponse.java
│ ├── MockMultipartActionRequest.java
│ ├── MockMutableActionParameters.java
│ ├── MockMutablePortletParameters.java
│ ├── MockMutableRenderParameters.java
│ ├── MockMutableResourceParameters.java
│ ├── MockPortalContext.java
│ ├── MockPortletConfig.java
│ ├── MockPortletContext.java
│ ├── MockPortletParameters.java
│ ├── MockPortletPreferences.java
│ ├── MockPortletRequest.java
│ ├── MockPortletRequestDispatcher.java
│ ├── MockPortletResponse.java
│ ├── MockPortletSession.java
│ ├── MockPortletURL.java
│ ├── MockRenderParameters.java
│ ├── MockRenderRequest.java
│ ├── MockRenderResponse.java
│ ├── MockRenderURL.java
│ ├── MockResourceParameters.java
│ ├── MockResourceRequest.java
│ ├── MockResourceResponse.java
│ ├── MockResourceURL.java
│ ├── MockStateAwareResponse.java
│ ├── ServletWrappingPortletContext.java
│ └── package-info.java
├── thin
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── liferay
│ │ └── portletmvc4spring
│ │ └── thin
│ │ └── OSGiPortletApplicationContext.java
│ └── resources
│ └── META-INF
│ └── LICENSE
└── webflow
├── pom.xml
└── src
├── main
└── java
│ └── com
│ └── liferay
│ └── portletmvc4spring
│ └── webflow
│ ├── context
│ └── portlet
│ │ ├── DefaultFlowUrlHandler.java
│ │ ├── FlowUrlHandler.java
│ │ ├── PortletContextMap.java
│ │ ├── PortletExternalContext.java
│ │ ├── PortletRequestMap.java
│ │ ├── PortletRequestParameterMap.java
│ │ ├── PortletSessionMap.java
│ │ └── package-info.java
│ └── mvc
│ ├── builder
│ ├── DelegatingFlowViewResolver.java
│ ├── FlowResourceFlowViewResolver.java
│ ├── MvcEnvironment.java
│ ├── MvcViewFactoryCreator.java
│ └── package-info.java
│ └── portlet
│ ├── AbstractFlowHandler.java
│ ├── FlowHandler.java
│ ├── FlowHandlerAdapter.java
│ ├── PortletMvcView.java
│ ├── PortletMvcViewFactory.java
│ └── package-info.java
└── test
└── java
└── com
└── liferay
└── portletmvc4spring
└── webflow
├── context
└── portlet
│ ├── DefaultFlowUrlHandlerTests.java
│ ├── PortletContextMapTests.java
│ ├── PortletExternalContextTests.java
│ ├── PortletRequestMapTests.java
│ ├── PortletRequestParameterMapTests.java
│ └── PortletSessionMapTests.java
└── mvc
└── portlet
├── BindBean.java
├── FlowHandlerAdapterTests.java
└── PortletMvcViewTests.java
/.gitignore:
--------------------------------------------------------------------------------
1 | .classpath
2 | .idea
3 | .project
4 | .settings
5 | target
6 | *.sh
7 | *.iml
8 | *.ipr
9 | *.iws
10 | /.metadata/
11 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | If you contribute code that you have written yourself, then it must be contributed under the same license as the
4 | PortletMVC4Spring project, specifically the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
5 |
6 | If you contribute code that you have not written yourself (i.e. copied from elsewhere), then the original license that
7 | governs the contribution must be kept in place. The original license must be clearly referenced in the contribution and
8 | must be compatible with the Apache License, Version 2.0.
9 |
10 | ## Developer Certificate of Origin (DCO)
11 |
12 | Contributions must be received in the form of GitHub pull requests and must adhere to the requirements of the
13 | [DCO](https://developercertificate.org/) by adding a "Signed-off-by" line to commit messages.
14 |
15 | For example:
16 |
17 | Implement feature X.
18 |
19 | Signed-off-by: Developer Name
11 |
14 |
13 |
12 |
9 |
14 |
20 |
22 |
32 |
27 |
29 |
24 |
26 |
16 |
30 |
5 |
8 | 9 |9 |
20 | 21 | 22 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /demo/applicant-thymeleaf-portlet/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |Typically the local name of the event, but fully qualified names with a "{...}" namespace part will be mapped 44 | * correctly as well. 45 | * 46 | *
If not specified, the handler method will be invoked for any event request within its general mapping. 47 | * 48 | * @see javax.portlet.EventRequest#getEvent() 49 | * @see javax.portlet.Event#getName() 50 | */ 51 | String value() default ""; 52 | 53 | } 54 | -------------------------------------------------------------------------------- /framework/src/main/java/com/liferay/portletmvc4spring/bind/annotation/ResourceMapping.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.bind.annotation; 17 | 18 | import java.lang.annotation.Documented; 19 | import java.lang.annotation.ElementType; 20 | import java.lang.annotation.Retention; 21 | import java.lang.annotation.RetentionPolicy; 22 | import java.lang.annotation.Target; 23 | 24 | import org.springframework.web.bind.annotation.Mapping; 25 | 26 | 27 | /** 28 | * Annotation for mapping Portlet resource requests onto handler methods. 29 | * 30 | * @author Juergen Hoeller 31 | * @since 3.0 32 | * @see org.springframework.web.bind.annotation.RequestMapping 33 | */ 34 | @Target({ ElementType.METHOD }) 35 | @Retention(RetentionPolicy.RUNTIME) 36 | @Documented 37 | @Mapping 38 | public @interface ResourceMapping { 39 | 40 | /** 41 | * The id of the resource to be handled. This id uniquely identifies a resource within a portlet mode. 42 | * 43 | *
If not specified, the handler method will be invoked for any resource request within its general mapping. 44 | * 45 | * @see javax.portlet.ResourceRequest#getResourceID() 46 | */ 47 | String value() default ""; 48 | 49 | } 50 | -------------------------------------------------------------------------------- /framework/src/main/java/com/liferay/portletmvc4spring/bind/annotation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2000-2020 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 | /** 17 | * Annotations for binding portlet requests to handler methods. 18 | */ 19 | package com.liferay.portletmvc4spring.bind.annotation; 20 | -------------------------------------------------------------------------------- /framework/src/main/java/com/liferay/portletmvc4spring/bind/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2000-2020 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 | /** 17 | * Provides Portlet-specific data binding functionality. 18 | */ 19 | package com.liferay.portletmvc4spring.bind; 20 | -------------------------------------------------------------------------------- /framework/src/main/java/com/liferay/portletmvc4spring/context/PortletApplicationContext.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.context; 17 | 18 | import org.springframework.web.context.WebApplicationContext; 19 | 20 | 21 | /** 22 | * @author Neil Griffin 23 | */ 24 | public interface PortletApplicationContext extends WebApplicationContext { 25 | 26 | /** 27 | * Scope identifier for global session scope: "globalSession". Supported in addition to the standard scopes 28 | * "singleton" and "prototype". 29 | */ 30 | String SCOPE_GLOBAL_SESSION = "globalSession"; 31 | } 32 | -------------------------------------------------------------------------------- /framework/src/main/java/com/liferay/portletmvc4spring/context/PortletConfigAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.context; 17 | 18 | import javax.portlet.PortletConfig; 19 | 20 | import org.springframework.beans.factory.Aware; 21 | 22 | 23 | /** 24 | * Interface to be implemented by any object that wishes to be notified of the PortletConfig (typically determined by 25 | * the PortletApplicationContext) that it runs in. 26 | * 27 | * @author Juergen Hoeller 28 | * @author Chris Beams 29 | * @since 2.0 30 | * @see PortletContextAware 31 | */ 32 | public interface PortletConfigAware extends Aware { 33 | 34 | /** 35 | * Set the PortletConfigthat this object runs in. 36 | * 37 | *
Invoked after population of normal bean properties but before an init callback like InitializingBean's
38 | * afterPropertiesSet or a custom init-method. Invoked after ApplicationContextAware's setApplicationContext.
39 | *
40 | * @param portletConfig PortletConfig object to be used by this object
41 | */
42 | void setPortletConfig(PortletConfig portletConfig);
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/context/PortletConfigPropertySource.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.context;
17 |
18 | import javax.portlet.PortletConfig;
19 |
20 | import org.springframework.core.env.EnumerablePropertySource;
21 | import org.springframework.core.env.PropertySource;
22 |
23 | import org.springframework.util.StringUtils;
24 |
25 |
26 | /**
27 | * {@link PropertySource} that reads init parameters from a {@link PortletConfig} object.
28 | *
29 | * @author Chris Beams
30 | * @since 3.1
31 | * @see PortletContextPropertySource
32 | */
33 | public class PortletConfigPropertySource extends EnumerablePropertySource Invoked after population of normal bean properties but before an init callback like InitializingBean's
39 | * afterPropertiesSet or a custom init-method. Invoked after ApplicationContextAware's setApplicationContext.
40 | *
41 | * @param portletContext PortletContext object to be used by this object
42 | */
43 | void setPortletContext(PortletContext portletContext);
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/context/PortletContextPropertySource.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.context;
17 |
18 | import javax.portlet.PortletContext;
19 |
20 | import org.springframework.core.env.EnumerablePropertySource;
21 | import org.springframework.core.env.PropertySource;
22 |
23 | import org.springframework.util.StringUtils;
24 |
25 |
26 | /**
27 | * {@link PropertySource} that reads init parameters from a {@link PortletContext} object.
28 | *
29 | * @author Chris Beams
30 | * @since 3.1
31 | * @see PortletConfigPropertySource
32 | */
33 | public class PortletContextPropertySource extends EnumerablePropertySource A concrete implementation is {@link DefaultMultipartActionRequest}.
29 | *
30 | * @author Juergen Hoeller
31 | * @since 2.0
32 | * @see PortletMultipartResolver
33 | * @see org.springframework.web.multipart.MultipartFile
34 | * @see javax.portlet.ActionRequest#getParameter
35 | * @see javax.portlet.ActionRequest#getParameterNames
36 | * @see javax.portlet.ActionRequest#getParameterMap
37 | */
38 | public interface MultipartActionRequest extends ActionRequest, MultipartRequest {
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/multipart/MultipartResourceRequest.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.multipart;
17 |
18 | import javax.portlet.ResourceRequest;
19 |
20 | import org.springframework.web.multipart.MultipartRequest;
21 |
22 |
23 | /**
24 | * Interface which provides additional methods for dealing with multipart content within a portlet request, allowing to
25 | * access uploaded files. Implementations also need to override the standard ResourceRequest methods for parameter
26 | * access, making multipart parameters available.
27 | *
28 | * A concrete implementation is {@link DefaultMultipartResourceRequest}.
29 | *
30 | * @author Neil Griffin
31 | * @since 5.1
32 | * @see PortletMultipartResolver
33 | * @see org.springframework.web.multipart.MultipartFile
34 | * @see ResourceRequest#getParameter
35 | * @see ResourceRequest#getParameterNames
36 | * @see ResourceRequest#getParameterMap
37 | */
38 | public interface MultipartResourceRequest extends ResourceRequest, MultipartRequest {
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/multipart/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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 | /**
17 | * Multipart resolution framework for handling file uploads. Provides a PortletMultipartResolver strategy interface, and
18 | * a generic extension of the ActionRequest interface for accessing multipart files in web application code.
19 | */
20 | package com.liferay.portletmvc4spring.multipart;
21 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/mvc/EventAwareController.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.mvc;
17 |
18 | import javax.portlet.EventRequest;
19 | import javax.portlet.EventResponse;
20 |
21 |
22 | /**
23 | * Extension of the Portlet {@link Controller} interface that allows for handling Portlet 2.0 event requests as well.
24 | * Can also be implemented by {@link AbstractController} subclasses.
25 | *
26 | * @author Juergen Hoeller
27 | * @since 3.0
28 | * @see javax.portlet.EventPortlet
29 | * @see Controller
30 | * @see ResourceAwareController
31 | */
32 | public interface EventAwareController {
33 |
34 | /**
35 | * Process the event request. There is nothing to return.
36 | *
37 | * @param request current portlet event request
38 | * @param response current portlet event response
39 | *
40 | * @throws Exception in case of errors
41 | */
42 | void handleEventRequest(EventRequest request, EventResponse response) throws Exception;
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/framework/src/main/java/com/liferay/portletmvc4spring/mvc/PortletModeNameViewController.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2000-2020 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.liferay.portletmvc4spring.mvc;
17 |
18 | import javax.portlet.ActionRequest;
19 | import javax.portlet.ActionResponse;
20 | import javax.portlet.PortletException;
21 | import javax.portlet.RenderRequest;
22 | import javax.portlet.RenderResponse;
23 |
24 | import com.liferay.portletmvc4spring.ModelAndView;
25 |
26 |
27 | /**
28 | * Trivial controller that transforms the PortletMode to a view name. The advantage here is that the client is not
29 | * exposed to the concrete view technology but rather just to the controller URL; the concrete view will be determined
30 | * by the ViewResolver. Example: PortletMode.VIEW -> "view" This controller does not handle action requests.
4 | PortletMVC4Spring framework API. Includes common support packages.
5 |
4 | PortletMVC4Spring Security API.
5 | More convenient to use than dynamic mock objects (EasyMock) or existing
21 | * Portlet API mock objects.
22 | */
23 | package com.liferay.portletmvc4spring.test.mock.web.portlet;
24 |
--------------------------------------------------------------------------------
/webflow/src/main/java/com/liferay/portletmvc4spring/webflow/context/portlet/PortletRequestMap.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2000-2020 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 | * https://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.liferay.portletmvc4spring.webflow.context.portlet;
17 |
18 | import java.util.Iterator;
19 |
20 | import javax.portlet.PortletRequest;
21 |
22 | import org.springframework.binding.collection.StringKeyedMapAdapter;
23 |
24 | import org.springframework.webflow.core.collection.CollectionUtils;
25 |
26 |
27 | /**
28 | * Map backed by the Portlet request attribute map for accessing request local attributes.
29 | *
30 | * @author Keith Donald
31 | * @author Scott Andrews
32 | */
33 | public class PortletRequestMap extends StringKeyedMapAdapter
12 |
15 |