You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
isspst/src/main/webapp/WEB-INF/spring/root-context.xml

431 lines
18 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<context:annotation-config />
<context:component-scan base-package="info.bukova.isspst,org.zkoss.spring.beans.zkcomponents"></context:component-scan>
<task:annotation-driven/>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" id="propertyConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/jdbc.properties</value>
<value>/WEB-INF/ldap.properties</value>
<value>/WEB-INF/mail.properties</value>
<value>/WEB-INF/gmail.properties</value>
<value>/WEB-INF/ad.properties</value>
</list>
</property>
</bean>
<!-- Database -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
p:password="${jdbc.password}">
<property name="validationQuery" value="SELECT 1"/>
<property name="testOnBorrow" value="true"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<map>
<entry key="hibernate.dialect" value="${jdbc.dialect}"/>
<entry key="hibernate.show_sql" value="false"/>
<entry key="hibernate.multiTenancy" value="SCHEMA"/>
<entry key="hibernate.tenant_identifier_resolver" value-ref="clientResolver"/>
<entry key="hibernate.multi_tenant_connection_provider" value-ref="conProvider"/>
</map>
<!-- <props>
<prop key="hibernate.dialect"></prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props> -->
</property>
</bean>
<bean id="clientResolver" class="info.bukova.isspst.ClientResolver" scope="request">
<aop:scoped-proxy/>
</bean>
<bean id="conProvider" class="info.bukova.isspst.ClientConnectionPrivider">
<constructor-arg ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="autodetectDataSource" value="false"/>
</bean>
<!-- Security -->
<security:global-method-security pre-post-annotations="enabled">
<security:expression-handler ref="expressionHandler" />
</security:global-method-security>
<bean id="expressionHandler"
class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
<property name="permissionEvaluator" ref="permissionEvaluator" />
</bean>
<bean id="permissionEvaluator" class="info.bukova.isspst.security.IsPermissionEvaluator">
<!-- <property name="workgroupService" ref="workgroupServiceNoTx"/> -->
</bean>
<bean id="serviceEval" class="info.bukova.isspst.security.ServiceEvaluator"/>
<bean id="wgServiceEval" class="info.bukova.isspst.security.WorkgroupAwareServiceEvaluator">
<constructor-arg ref="workgroupServiceNoTx"/>
</bean>
<bean id="requirementEval" class="info.bukova.isspst.security.RequirementFilterEvaluator">
<constructor-arg ref="workgroupServiceNoTx"/>
</bean>
<bean id="reqEditEval" class="info.bukova.isspst.security.RequirementEvaluator"/>
<bean id="tripReqEditEval" class="info.bukova.isspst.security.TripRequirementEvaluator"/>
<bean id="userEvaluator" class="info.bukova.isspst.security.UserEvaluator"/>
<bean id="evalHolder" class="info.bukova.isspst.security.EvaluatorsHolder">
<property name="globalEvaluators">
<map>
<entry key="#{T(info.bukova.isspst.services.Service)}" value-ref="serviceEval"/>
<entry key="#{T(info.bukova.isspst.data.Requirement)}" value-ref="reqEditEval"/>
<entry key="#{T(info.bukova.isspst.data.TripRequirement)}" value-ref="tripReqEditEval"/>
<entry key="#{T(info.bukova.isspst.data.User)}" value-ref="userEvaluator"/>
</map>
</property>
<property name="specialEvaluators">
<map>
<entry key="#{T(info.bukova.isspst.services.Service)}" value-ref="wgServiceEval"/>
<entry key="#{T(info.bukova.isspst.data.RequirementBase)}" value-ref="requirementEval"/>
<entry key="#{T(info.bukova.isspst.data.JoinedItem)}" value-ref="requirementEval"/>
</map>
</property>
</bean>
<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/app/**" access="hasAnyRole('ROLE_USER', 'ROLE_ADMIN')"/>
<security:intercept-url pattern="/admin/users/**" access="hasRole('PERM_READ_USERS')"/>
<security:intercept-url pattern="/admin/permissions/**" access="hasRole('PERM_READ_PERMISSIONS')"/>
<security:intercept-url pattern="/admin/addressbook/**" access="hasRole('PERM_READ_ADDRESSBOOK')"/>
<security:intercept-url pattern="/munits/**" access="hasRole('PERM_READ_MUNITS')"/>
<security:form-login login-page="/login.zhtml"
authentication-failure-handler-ref="loginFail"
authentication-success-handler-ref="loginSuccess"/>
<security:http-basic/>
<security:openid-login authentication-failure-handler-ref="loginFail"
authentication-success-handler-ref="loginSuccess"
user-service-ref="gmailUserService">
<security:attribute-exchange identifier-match="https://www.google.com/.*">
<security:openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" />
<security:openid-attribute name="firstName" type="http://axschema.org/namePerson/first" required="true" />
<security:openid-attribute name="lastName" type="http://axschema.org/namePerson/last" required="true" />
</security:attribute-exchange>
</security:openid-login>
<security:logout invalidate-session="true"/>
</security:http>
<!-- Authentication methods -->
<import resource="database-auth.xml"/>
<!-- <import resource="ldap-auth.xml"/>
<import resource="ad-auth.xml"/> -->
<import resource="gmail-auth.xml"/>
<import resource="mail-services.xml"/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.springframework.security.core.context.SecurityContextHolder" />
<property name="targetMethod" value="setStrategyName" />
<property name="arguments" value="MODE_INHERITABLETHREADLOCAL" />
</bean>
<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"/>
<bean id="loginFail" class="info.bukova.isspst.security.LoginFailHandler"/>
<bean id="loginSuccess" class="info.bukova.isspst.security.LoginSuccessHandler"/>
<!-- Reporting -->
<bean id="reportDefinition" class="info.bukova.isspst.reporting.ReportDefinition" scope="session">
<aop:scoped-proxy/>
</bean>
<bean id="paramFiller" class="info.bukova.isspst.reporting.ParamFiller"/>
<bean id="genFactory" class="info.bukova.isspst.reporting.GeneratorFactory"/>
<!-- File storage -->
<bean id="storage" class="info.bukova.isspst.storage.LocalFileStorage">
<property name="context" ref="servletContext"/>
<property name="rootPath" value="/WEB-INF/upload"/>
</bean>
<!-- Session data -->
<bean id="sessionData" class="info.bukova.isspst.SessionData" scope="session">
<aop:scoped-proxy/>
</bean>
<!-- DAO -->
<bean id="queryDao" class="info.bukova.isspst.dao.jpa.QueryDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDao" class="info.bukova.isspst.dao.jpa.UserDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="roleDao" class="info.bukova.isspst.dao.jpa.RoleDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="buildingDao" class="info.bukova.isspst.dao.jpa.BuildingDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="munitDao" class="info.bukova.isspst.dao.jpa.MUnitDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="addressDao" class="info.bukova.isspst.dao.jpa.AddressDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="permissionDao" class="info.bukova.isspst.dao.jpa.PermissionDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="materialDao" class="info.bukova.isspst.dao.jpa.MaterialDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="commissionDao" class="info.bukova.isspst.dao.jpa.WorkgroupDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="requirementDao" class="info.bukova.isspst.dao.jpa.RequirementDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="numericSeriesDao" class="info.bukova.isspst.dao.jpa.NumberSeriesDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="reqTypeDao" class="info.bukova.isspst.dao.jpa.RequirementTypeDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="serviceItemDao" class="info.bukova.isspst.dao.jpa.ServiceItemDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="settingsDao" class="info.bukova.isspst.dao.jpa.GlobalSettingsDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="tripReqDao" class="info.bukova.isspst.dao.jpa.TripRequirementDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="tripBillDao" class="info.bukova.isspst.dao.jpa.TripBillDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="orderDao" class="info.bukova.isspst.dao.jpa.OrderDaoJPA">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Business logic -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean id="userService" class="info.bukova.isspst.services.users.UserServiceImpl">
<constructor-arg name="marshaller" ref="marshallerUsrSettings"/>
<constructor-arg name="unmarshaller" ref="unmarshallerUsrSettings"/>
<property name="dao" ref="userDao" />
<property name="encoder" ref="passwordEncoder" />
</bean>
<bean id="xmlCtxUsrSettings" class="org.castor.spring.xml.XMLContextFactoryBean">
<property name="castorProperties">
<props>
<prop key="org.exolab.castor.xml.introspector.primitive.nodetype">element</prop>
</props>
</property>
</bean>
<bean id="unmarshallerUsrSettings" class="org.castor.spring.xml.CastorUnmarshallerFactoryBean">
<property name="xmlContext" ref="xmlCtxUsrSettings" />
</bean>
<bean id="marshallerUsrSettings" class="org.castor.spring.xml.CastorMarshallerFactoryBean">
<property name="xmlContext" ref="xmlCtxUsrSettings" />
</bean>
<bean id="roleService" class="info.bukova.isspst.services.users.RoleServiceImpl">
<property name="dao" ref="roleDao" />
</bean>
<bean id="buildingService" class="info.bukova.isspst.services.buildings.BuildingServiceImpl">
<property name="dao" ref="buildingDao" />
<property name="validator" ref="validator" />
</bean>
<bean id="munitService" class="info.bukova.isspst.services.munits.MUnitServiceImpl">
<property name="dao" ref="munitDao" />
<property name="validator" ref="validator" />
</bean>
<bean id="adbService" class="info.bukova.isspst.services.addressbook.AdbServiceImpl">
<property name="dao" ref="addressDao" />
<property name="validator" ref="validator" />
</bean>
<bean id="addressFinderAres" class="info.bukova.isspst.services.addressbook.AddressFinderAres">
<property name="aresUrl" value="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi" />
<property name="unmarsheller" ref="unmarshallerAres" />
</bean>
<bean id="addressFinderTaxID" class="info.bukova.isspst.services.addressbook.AddressFinderTaxID">
<property name="aresDicUrl" value="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi" />
</bean>
<bean id="xmlCtxAres" class="org.castor.spring.xml.XMLContextFactoryBean">
<property name="mappingLocations">
<list>
<value>info/bukova/isspst/services/addressbook/mappingAres.xml</value>
</list>
</property>
</bean>
<bean id="unmarshallerAres" class="org.castor.spring.xml.CastorUnmarshallerFactoryBean">
<property name="xmlContext" ref="xmlCtxAres" />
</bean>
<bean id="approvedService" class="info.bukova.isspst.services.approved.ApprovedServiceImpl"/>
<bean id="permissionService" class="info.bukova.isspst.services.users.PermissionServiceImpl">
<property name="dao" ref="permissionDao"/>
</bean>
<bean id="materialService" class="info.bukova.isspst.services.reqsubjects.MaterialServiceImpl">
<property name="dao" ref="materialDao"/>
<property name="validator" ref="validator"/>
</bean>
<bean id="workgroupService" class="info.bukova.isspst.services.workgroups.WorkgroupServiceImpl">
<property name="dao" ref="commissionDao"/>
<property name="validator" ref="validator"/>
</bean>
<bean id="workgroupServiceNoTx" class="info.bukova.isspst.services.workgroups.WorkgroupServiceImpl">
<property name="dao" ref="commissionDao"/>
</bean>
<bean id="reqTypeService" class="info.bukova.isspst.services.requirement.RequirementTypeServiceImpl">
<property name="dao" ref="reqTypeDao"/>
<property name="validator" ref="validator"/>
</bean>
<bean id="requirementService" class="info.bukova.isspst.services.requirement.RequirementServiceImpl">
<property name="dao" ref="requirementDao" />
<property name="validator" ref="validator" />
<property name="numberSeriesService" ref="numericSeriesService" />
</bean>
<bean id="reqMaterialService" class="info.bukova.isspst.services.requirement.ReqMaterialServiceImpl">
<property name="dao" ref="requirementDao" />
<property name="validator" ref="validator" />
<property name="numberSeriesService" ref="numericSeriesService" />
</bean>
<bean id="reqServicesService" class="info.bukova.isspst.services.requirement.ReqServicesServiceImpl">
<property name="dao" ref="requirementDao" />
<property name="validator" ref="validator" />
<property name="numberSeriesService" ref="numericSeriesService" />
</bean>
<bean id="numericSeriesService" class="info.bukova.isspst.services.numberseries.NumberSeriesServiceImpl">
<property name="dao" ref="numericSeriesDao" />
<property name="validator" ref="validator" />
</bean>
<bean id="serviceItemService" class="info.bukova.isspst.services.reqsubjects.ServiceItemServiceImpl">
<property name="dao" ref="serviceItemDao" />
<property name="validator" ref="validator" />
</bean>
<bean id="settingsService" class="info.bukova.isspst.services.settings.GlobalSettingServiceImpl">
<constructor-arg name="marshaller" ref="marshallerSettings"/>
<constructor-arg name="unmarshaller" ref="unmarshallerSettings"/>
<property name="dao" ref="settingsDao"/>
</bean>
<bean id="xmlCtxSettings" class="org.castor.spring.xml.XMLContextFactoryBean">
<property name="castorProperties">
<props>
<prop key="org.exolab.castor.xml.introspector.primitive.nodetype">element</prop>
</props>
</property>
<property name="mappingLocations">
<list>
<value>info/bukova/isspst/services/settings/mappingSettings.xml</value>
</list>
</property>
</bean>
<bean id="unmarshallerSettings" class="org.castor.spring.xml.CastorUnmarshallerFactoryBean">
<property name="xmlContext" ref="xmlCtxSettings" />
</bean>
<bean id="marshallerSettings" class="org.castor.spring.xml.CastorMarshallerFactoryBean">
<property name="xmlContext" ref="xmlCtxSettings" />
</bean>
<bean id="tripRequirementService" class="info.bukova.isspst.services.requirement.TripRequirementServiceImpl">
<property name="dao" ref="tripReqDao"/>
<property name="validator" ref="validator"/>
<property name="numberSeriesService" ref="numericSeriesService"/>
</bean>
<bean id="tripBillService" class="info.bukova.isspst.services.tripbill.TripBillServiceImpl">
<property name="dao" ref="tripBillDao"/>
<property name="validator" ref="validator"/>
</bean>
<bean id="orderService" class="info.bukova.isspst.services.approved.OrderServiceImpl">
<property name="dao" ref="orderDao"/>
<property name="validator" ref="validator"/>
<property name="numberSeriesService" ref="numericSeriesService"/>
</bean>
</beans>