Showing preview only (1,073K chars total). Download the full file or copy to clipboard to get everything.
Repository: 527515025/springBoot
Branch: master
Commit: 8fadfc312409
Files: 492
Total size: 928.0 KB
Directory structure:
gitextract_rd5xf_h5/
├── .gitignore
├── README.md
├── abel-parent/
│ └── pom.xml
├── abel-util/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── code/
│ │ └── InfoCode.java
│ ├── exception/
│ │ ├── AppRuntimeException.java
│ │ ├── HttpExeption.java
│ │ └── ServiceException.java
│ ├── response/
│ │ └── ResponseEntity.java
│ └── utils/
│ └── DateTimeUtils.java
├── springWebSocket/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Message.java
│ │ │ └── Response.java
│ │ ├── config/
│ │ │ ├── WebSecurityConfig.java
│ │ │ └── WebSocketConfig.java
│ │ ├── controller/
│ │ │ └── WebSocketController.java
│ │ └── service/
│ │ └── WebSocketService.java
│ └── resources/
│ ├── application.properties
│ ├── static/
│ │ └── jquery.js
│ └── templates/
│ ├── chat.html
│ ├── login.html
│ └── ws.html
├── springboot-Cache/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── Person.java
│ │ ├── config/
│ │ │ ├── DBConfig.java
│ │ │ ├── JpaConfig.java
│ │ │ └── RedisConfig.java
│ │ ├── controller/
│ │ │ └── CacheController.java
│ │ ├── dao/
│ │ │ └── PersonRepository.java
│ │ └── service/
│ │ ├── DemoService.java
│ │ └── Impl/
│ │ └── DemoServiceImpl.java
│ └── resources/
│ ├── application.properties
│ └── ehcache.xml
├── springboot-Cache2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── Person.java
│ │ ├── config/
│ │ │ ├── CacheConfig.java
│ │ │ ├── DBConfig.java
│ │ │ └── JpaConfig.java
│ │ ├── controller/
│ │ │ └── CacheController.java
│ │ ├── dao/
│ │ │ └── PersonRepository.java
│ │ └── service/
│ │ ├── DemoService.java
│ │ └── PersonService.java
│ └── resources/
│ └── application.properties
├── springboot-Quartz/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── abel/
│ │ └── quartz/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── InvokingJobDetailFactory.java
│ │ │ └── QuartzConfig.java
│ │ └── job/
│ │ └── ExecuteJob.java
│ └── resources/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-SpringSecurity0/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ ├── WebMvcConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ ├── security/
│ │ │ └── CustomUserService.java
│ │ └── util/
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-SpringSecurity1/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── Permission.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ └── service/
│ │ ├── CustomUserService.java
│ │ ├── MyAccessDecisionManager.java
│ │ ├── MyFilterSecurityInterceptor.java
│ │ └── MyInvocationSecurityMetadataSourceService.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-dubbo/
│ ├── README.md
│ ├── abel-user-api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── user/
│ │ ├── models/
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ └── service/
│ │ ├── PermissionService.java
│ │ ├── RoleService.java
│ │ └── UserService.java
│ └── abel-user-provider/
│ ├── doc/
│ │ └── user.sql
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── user/
│ │ ├── UserProviderApplication.java
│ │ ├── constants/
│ │ │ └── Constants.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ ├── RoleDao.java
│ │ │ └── UserDao.java
│ │ ├── exception/
│ │ │ ├── JsonExceptionMapper.java
│ │ │ ├── ReaderExceptionMapper.java
│ │ │ ├── RestExceptionMapper.java
│ │ │ ├── ServiceExceptionMapper.java
│ │ │ └── ValidationExceptionMapper.java
│ │ ├── filter/
│ │ │ ├── RestFilter.java
│ │ │ └── RestInterceptor.java
│ │ ├── service/
│ │ │ └── impl/
│ │ │ ├── PermissionServiceImpl.java
│ │ │ ├── RoleServiceImpl.java
│ │ │ └── UserServiceImpl.java
│ │ └── utils/
│ │ └── CommentUtils.java
│ ├── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── provider.xml
│ │ ├── dev/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ ├── RoleDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── cn/
│ └── abel/
│ └── user/
│ ├── BaseTest.java
│ └── service/
│ └── impl/
│ └── PermissionServiceImplTest.java
├── springboot-dynamicDataSource/
│ ├── pom.xml
│ ├── sql/
│ │ ├── news.sql
│ │ └── user.sql
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ ├── News.java
│ │ │ │ └── User.java
│ │ │ ├── config/
│ │ │ │ ├── DynamicDataSource.java
│ │ │ │ ├── DynamicDataSourceConfig.java
│ │ │ │ ├── DynamicDataSourceContextHolder.java
│ │ │ │ └── HikariConfig.java
│ │ │ ├── dao/
│ │ │ │ ├── NewsDao.java
│ │ │ │ └── UserDao.java
│ │ │ ├── enums/
│ │ │ │ └── DatabaseTypeEnum.java
│ │ │ └── service/
│ │ │ ├── NewsService.java
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── NewsDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-elasticsearch/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ └── User.java
│ │ │ ├── config/
│ │ │ │ ├── ESRestClient2Config.java
│ │ │ │ └── ESRestClientConfig.java
│ │ │ ├── constants/
│ │ │ │ └── Constants.java
│ │ │ ├── dao/
│ │ │ │ └── UserDao.java
│ │ │ └── service/
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-jpa/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DBConfig.java
│ │ │ └── JpaConfig.java
│ │ ├── controller/
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ └── UserJpaDao.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ ├── serviceImpl/
│ │ │ └── UserServiceImpl.java
│ │ └── util/
│ │ └── CommonUtil.java
│ └── resources/
│ └── application.properties
├── springboot-kafka/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── KafkaConfig.java
│ │ └── service/
│ │ └── prehandle/
│ │ ├── KafkaConsumerService.java
│ │ └── SplitService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-mybatis/
│ ├── docker-it.sh
│ ├── env/
│ │ ├── dev/
│ │ │ ├── application.properties
│ │ │ ├── env.properties
│ │ │ └── log4j.properties
│ │ └── local/
│ │ ├── application.properties
│ │ ├── env.properties
│ │ └── log4j.properties
│ ├── package.sh
│ ├── pom.xml
│ ├── scripts/
│ │ ├── docker/
│ │ │ ├── common/
│ │ │ │ ├── common-env.sh
│ │ │ │ ├── install-cluster.sh
│ │ │ │ ├── install-single.sh
│ │ │ │ ├── install.sh
│ │ │ │ └── package.xml
│ │ │ └── manager/
│ │ │ ├── check-os.sh
│ │ │ ├── setenv.sh
│ │ │ ├── start.sh
│ │ │ └── stop.sh
│ │ └── springboot/
│ │ ├── common/
│ │ │ ├── common-env.sh
│ │ │ ├── install-cluster.sh
│ │ │ ├── install-single.sh
│ │ │ ├── install.sh
│ │ │ └── package.xml
│ │ └── manager/
│ │ ├── setenv.sh
│ │ ├── start.sh
│ │ └── stop.sh
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── us/
│ │ │ │ └── example/
│ │ │ │ ├── Application.java
│ │ │ │ ├── bean/
│ │ │ │ │ └── User.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── DBConfig.java
│ │ │ │ │ ├── MyBatisConfig.java
│ │ │ │ │ ├── MyBatisScannerConfig.java
│ │ │ │ │ └── TransactionConfig.java
│ │ │ │ ├── controller/
│ │ │ │ │ └── UserController.java
│ │ │ │ ├── dao/
│ │ │ │ │ └── UserDao.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── Impl/
│ │ │ │ │ │ └── UserServiceImpl.java
│ │ │ │ │ └── UserService.java
│ │ │ │ └── util/
│ │ │ │ └── CommonUtil.java
│ │ │ └── resources/
│ │ │ └── mapper/
│ │ │ └── UserDaoMapper.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── BaseTest.java
│ │ └── service/
│ │ └── UserServiceTest.java
│ ├── tar-it.sh
│ └── war-it.sh
├── springboot-mybatis2/
│ ├── pom.xml
│ ├── sql/
│ │ └── user.sql
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ └── User.java
│ │ │ ├── dao/
│ │ │ │ └── UserDao.java
│ │ │ └── service/
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── NewsDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-neo4j/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ └── neo4j/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ ├── King.java
│ │ │ │ ├── Person.java
│ │ │ │ ├── Queen.java
│ │ │ │ └── relation/
│ │ │ │ └── FatherAndSonRelation.java
│ │ │ ├── controller/
│ │ │ │ └── KingController.java
│ │ │ ├── dao/
│ │ │ │ ├── KingDao.java
│ │ │ │ ├── Neo4jDao.java
│ │ │ │ └── Neo4jSession.java
│ │ │ ├── dto/
│ │ │ │ └── GraphDTO.java
│ │ │ └── service/
│ │ │ └── KingService.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ └── logback-spring.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ └── neo4j/
│ ├── BaseTest.java
│ └── service/
│ ├── InitData.java
│ └── KingServiceTest.java
├── springboot-redis-queue/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── RedisConfig.java
│ │ ├── controller/
│ │ │ └── PublisherController.java
│ │ └── service/
│ │ ├── ProducerService.java
│ │ └── ReceiverService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-rocketmq/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── JmsConfig.java
│ │ ├── controller/
│ │ │ └── PublisherController.java
│ │ └── service/
│ │ ├── ProducerService.java
│ │ └── ReceiverService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-rocketmq-ali/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── ALiConsumerClient.java
│ │ │ ├── ALiMqConfig.java
│ │ │ └── ALiProducerClient.java
│ │ └── service/
│ │ ├── MessageHandler.java
│ │ └── ProducerService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-shiro/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Event.java
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DataSourceConfig.java
│ │ │ ├── MapperScannerConfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ └── TransactionConfig.java
│ │ ├── controller/
│ │ │ ├── EventController.java
│ │ │ ├── LoginController.java
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ ├── EventDao.java
│ │ │ ├── PermissionDao.java
│ │ │ ├── RoleDao.java
│ │ │ └── UserDao.java
│ │ ├── service/
│ │ │ ├── EventService.java
│ │ │ ├── PermissionService.java
│ │ │ ├── RoleService.java
│ │ │ └── UserService.java
│ │ └── shiro/
│ │ ├── ShiroConfiguration.java
│ │ └── ShiroRealm.java
│ └── resources/
│ ├── application.properties
│ ├── log4j.properties
│ └── mapper/
│ ├── EventDaoMapper.xml
│ ├── PermissionDaoMapper.xml
│ ├── RoleDaoMapper.xml
│ └── UserDaoMapper.xml
├── springboot-shiro2/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── rest/
│ │ ├── ShiroRestApplication.java
│ │ ├── config/
│ │ │ └── RedisConfig.java
│ │ ├── constants/
│ │ │ └── Constants.java
│ │ ├── controller/
│ │ │ └── LoginController.java
│ │ ├── exception/
│ │ │ ├── DefaultErrorController.java
│ │ │ └── DefaultExceptionHandler.java
│ │ ├── freemarker/
│ │ │ ├── CustomFreeMarkerView.java
│ │ │ └── FreeMarkerConfig.java
│ │ ├── shiro/
│ │ │ ├── HttpHeaderSessionManager.java
│ │ │ ├── RedisSessionDao.java
│ │ │ ├── ShiroConfig.java
│ │ │ ├── ShiroProperty.java
│ │ │ ├── ShiroRealm.java
│ │ │ ├── ShiroRedisCacheManager.java
│ │ │ ├── ShiroUser.java
│ │ │ ├── UuidSessionIdGenerator.java
│ │ │ ├── credentials/
│ │ │ │ ├── PasswordHelper.java
│ │ │ │ ├── RetryLimitHashedCredentialsMatcher.java
│ │ │ │ └── ThirdPartySupportedToken.java
│ │ │ ├── ext/
│ │ │ │ ├── QuartzSessionValidationJob.java
│ │ │ │ └── QuartzSessionValidationScheduler.java
│ │ │ └── filter/
│ │ │ ├── ShiroFormAuthenticationFilter.java
│ │ │ └── ShiroLogoutFilter.java
│ │ └── utils/
│ │ ├── ServletKit.java
│ │ └── SpringContextKit.java
│ └── resources/
│ ├── META-INF/
│ │ └── spring/
│ │ └── consumer.xml
│ ├── dev/
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ └── logback-spring.xml
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-springCloud/
│ ├── config/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── ConfigApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ ├── bootstrap.yml
│ │ │ └── config/
│ │ │ ├── person.yml
│ │ │ └── some.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ ├── bootstrap.yml
│ │ └── config/
│ │ ├── person.yml
│ │ └── some.yml
│ ├── discovery/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── DiscoveryApplication.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ └── target/
│ │ └── classes/
│ │ └── application.yml
│ ├── monitor/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── MonitorApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ ├── person/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ ├── PersonApplication.java
│ │ │ │ ├── bean/
│ │ │ │ │ └── Person.java
│ │ │ │ ├── controller/
│ │ │ │ │ └── PersonController.java
│ │ │ │ └── dao/
│ │ │ │ └── PersonRepository.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ ├── pom.xml
│ ├── some/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── SomeApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ └── ui/
│ ├── pom.xml
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── abel/
│ │ │ ├── UiApplication.java
│ │ │ ├── bean/
│ │ │ │ └── Person.java
│ │ │ ├── controller/
│ │ │ │ └── UiController.java
│ │ │ └── service/
│ │ │ ├── PersonHystrixService.java
│ │ │ ├── PersonService.java
│ │ │ └── SomeHystrixService.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── bootstrap.yml
│ │ └── static/
│ │ ├── css/
│ │ │ └── application.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── app.js
│ │ └── tpl/
│ │ ├── person.html
│ │ └── some.html
│ └── target/
│ └── classes/
│ ├── application.yml
│ ├── bootstrap.yml
│ └── static/
│ ├── css/
│ │ └── application.css
│ ├── index.html
│ ├── js/
│ │ └── app.js
│ └── tpl/
│ ├── person.html
│ └── some.html
├── springboot-springSecurity2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ ├── HomeController.java
│ │ │ └── LoginController.java
│ │ ├── dao/
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ ├── security/
│ │ │ └── CustomUserService.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ └── util/
│ │ ├── BCryptPasswordEncoderTest.java
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ └── mapper/
│ └── UserDaoMapper.xml
├── springboot-springSecurity3/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ ├── WebMvcConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── Permission.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ └── service/
│ │ ├── CustomUserService.java
│ │ ├── MyAccessDecisionManager.java
│ │ ├── MyFilterSecurityInterceptor.java
│ │ ├── MyGrantedAuthority.java
│ │ └── MyInvocationSecurityMetadataSourceService.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-springSecurity4/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── yy/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DataSourceConfig.java
│ │ │ ├── MapperScannerConfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ ├── LoginController.java
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── security/
│ │ │ ├── UrlAccessDecisionManager.java
│ │ │ ├── UrlConfigAttribute.java
│ │ │ ├── UrlFilterSecurityInterceptor.java
│ │ │ ├── UrlGrantedAuthority.java
│ │ │ ├── UrlMetadataSourceService.java
│ │ │ └── UrlUserService.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ └── utils/
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ └── com/
│ └── yy/
│ └── example/
│ └── mapper/
│ ├── PermissionDaoMapper.xml
│ └── UserDaoMapper.xml
└── springboot-swagger-ui/
├── pom.xml
└── src/
└── main/
├── java/
│ └── com/
│ └── abel/
│ └── example/
│ ├── Application.java
│ ├── Swagger2.java
│ ├── bean/
│ │ └── User.java
│ ├── config/
│ │ ├── DBConfig.java
│ │ └── JpaConfig.java
│ ├── controller/
│ │ └── UserController.java
│ ├── dao/
│ │ └── UserJpaDao.java
│ ├── service/
│ │ └── UserService.java
│ ├── serviceImpl/
│ │ └── UserServiceImpl.java
│ └── util/
│ └── CommonUtil.java
└── resources/
└── application.properties
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
/.settings
/bin
*/target/*
/logs
*/out/
# filter config files, except .gitignore
*.MF
!.gitignore
*.iml
*.exe
# eclipse ignore
.project
.classpath
# IDEA ignore
.idea
.class
*.class
*.log
!application.properties
================================================
FILE: README.md
================================================
## 致歉
由于自己懒以及身体对issuse 解决的不及时。请大家以后提issuse 的时候写清楚 模块名 比如“springboot-SpringSecurity4” 和问题,我会抽时间抓紧解决。
## springboot-SpringSecurity0
包含两部分代码:
* 第一是 博客 springboot+mybatis+SpringSecurity 实现用户角色数据库管理 地址:http://blog.csdn.net/u012373815/article/details/54632176
* 第二是 博客 springBoot+springSecurity验证密码MD5加密 地址:http://blog.csdn.net/u012373815/article/details/54927070
## springboot-SpringSecurity1
* 博客 springBoot+springSecurity 数据库动态管理用户、角色、权限(二) 地址:http://blog.csdn.net/u012373815/article/details/54633046
## springboot-SpringSecurity2
* 博客 springboot+security restful权限控制官方推荐(五) 地址:http://blog.csdn.net/u012373815/article/details/59749385
## springboot-SpringSecurity3
* 博客 springBoot+springSecurity 动态管理Restful风格权限(三) 地址:http://blog.csdn.net/u012373815/article/details/55225079
## springboot-SpringSecurity4
* 实战,项目中正在用
## springboot-WebSocket
包含三部分代码,三部分代码有交合:
* 第一是 博客 spring boot +WebSocket 广播式(一)地址:http://blog.csdn.net/u012373815/article/details/54375195 中所示代码
* 第二是 博客 spring boot +WebSocket 广播式(二)地址:http://blog.csdn.net/u012373815/article/details/54377937 中所示代码
* 第三是 博客 spring boot +WebSocket(三) 点对点式 地址: http://blog.csdn.net/u012373815/article/details/54380476 中所示代码
## springboot-Cache
包含两部分代码:
* 第一部分是 博客 springboot的缓存技术 地址: http://blog.csdn.net/u012373815/article/details/54564076
* 第二部分是 博客 springboot缓存篇(二)-redis 做缓存 地址:http://blog.csdn.net/u012373815/article/details/54572687
## springboot-Cache2
* 是 博客 springboot缓存 之 GuavaCacheManager 地址:http://blog.csdn.net/u012373815/article/details/60468033
## springboot-shiro
* 是博客 springboot集成shiro 实现权限控制 地址:http://blog.csdn.net/u012373815/article/details/57532292
##springboot-shior2
是使用shior 框架调取用户权限服务,进行登录权限验证的例子,其中的用户权限服务没有写,都是用TODO 标示出来了,使用时可以根据各自的用户权限服务进行编码替换
springboot-shiro2 也是和dubbo 的结合例子是 消费者的示例。
## springboot-swagger-ui
* 博客 spring boot +Swagger-ui 自动生成API文档 地址: https://blog.csdn.net/u012373815/article/details/82685962
## springBoot-Quartz
* 博客 springBoot-Quartz 定时任务 地址: https://abelyang.blog.csdn.net/article/details/86740625
## springboot 整合mybatis2
* springboot 整合mybatis2 更简便的整合方式地址: https://abelyang.blog.csdn.net/article/details/89296273
## springboot+Kafka
* kafka 与 sprigboot 的结合,springboot 从Kafka中读取数据的小例子地址: https://abelyang.blog.csdn.net/article/details/89296305
## springboot+es
* Elasticsearch 与 sprigboot 的结合,springboot 操作es的小例子地址: https://abelyang.blog.csdn.net/article/details/89296320
## Springboot多数据源切换
* springboot 多个数据源的配置, 一个springboot 项目操作多个数据库的数据:https://abelyang.blog.csdn.net/article/details/89296341
##springboot-dubbo
该项目是Springboot 和 dubbo 结合的例子,是provider 的示例,提供服务。简单的写了一些用户和权限的接口没有写的很完整,主要是为了提现dubbo 服务
Springboot-shiro2 也是和dubbo 的结合例子是 消费者的示例。
##未完待续。。。
================================================
FILE: abel-parent/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.abel</groupId>
<artifactId>abel-parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<shiro.version>1.4.0</shiro.version>
<mysql.version>5.1.47</mysql.version>
</properties>
<dependencyManagement>
<dependencies>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>-->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>runtime</scope>
</dependency>-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-quartz</artifactId>
<version>${shiro.version}</version>
<exclusions>
<exclusion>
<groupId>org.opensymphony.quartz</groupId>
<artifactId>quartz</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>shiro-freemarker-tags</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.4.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
<!--<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<!-- dubbo log4j替换为logback -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--dubbox-->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.26.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.26.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.26.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- 阿里大于回调 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
<version>4.4.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sts</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.mns</groupId>
<artifactId>aliyun-sdk-mns</artifactId>
<version>1.1.8.6</version>
</dependency>
<!-- Mapping映射 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.1.0.Final</version>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<repository>
<id>Releases</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/releases</url>
</repository>
<snapshotRepository>
<id>Snapshots</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/snapshots</url>
</snapshotRepository>
</distributionManagement>
<profiles>
<profile>
<id>local</id>
<properties>
<package.environment>local</package.environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<package.environment>dev</package.environment>
</properties>
</profile>
<profile>
<id>online</id>
<properties>
<package.environment>online</package.environment>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<package.environment>test</package.environment>
</properties>
</profile>
<profile>
<id>test-ali</id>
<properties>
<package.environment>test-ali</package.environment>
</properties>
</profile>
</profiles>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources/${package.environment}</directory>
<includes>
<include>*.*</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>local/**</exclude>
<exclude>dev/**</exclude>
<exclude>test/**</exclude>
<exclude>test-ali/**</exclude>
<exclude>online/**</exclude>
</excludes>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--允许包含本地包-->
<includeSystemScope>true</includeSystemScope>
<!--fork:如果没有该项配置devtools不会起作用,即应用不会restart -->
<fork>true</fork>
<!--支持静态文件热部署-->
<addResources>true</addResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.1.0.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
================================================
FILE: abel-util/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.abel</groupId>
<artifactId>abel-util</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>cn.abel</groupId>
<artifactId>abel-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: abel-util/src/main/java/cn/abel/code/InfoCode.java
================================================
package cn.abel.code;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 返回响应 Created by liyunfeng
*/
public enum InfoCode {
//系统错误从200~10000
SUCCESS(200, "OK"),
TIME_OUT(300, "超时"),
//业务相关从10000自增
// 10000开始
INVALID_REQUEST(10000, "不支持的请求方式"),
//用户相关(20000自增)
REQUEST_PARAM_ERROR(20000, "传入参数错误"),
REGISTER_TYPE_ERROR(20001, "不支持的注册类型"),
INVALID_SIGN(20002, "签名无效"),
USER_LOGIN_EXIST(20003, "用户已存在"),
USER_LOGIN_NOT_EXIST(20008, "用户不存在"),
PASSWORD_ERROR(20009, "用户名或密码错误"),
INVALID_TOKEN(20010, "无效token"),
INVALID_LOGIN(20011, "登录失效,重新登录"),
PASSWORD_SAME(20017, "密码重复"),
OLD_PASSWORD_ERROR(20018, "密码错误,不能修改"),
LOGIN_FAIL(20024, "登录失败"),
VISITOR_REGISTER_FAIL(20025, "游客注册失败"),
TOKEN_EXIST(20033, "token重复"),
LOGIN_TYPE_EXIST(20034, "登录方式已存在"),
USER_PROFILE_SEARCH_ERROR(20035, "用户查询失败"),
USER_PROFILE_LOCK(20036, "用户已锁定"),
ACCOUNT_SEARCH_FAIL(20037, "账号查询失败"),
LOGIN_NAME_TYPE_ERROR(20038, "登录名不为空时,登录方式不能为空"),
PASSWORD_SIMPLE_ERROR(20042, "密码错误,长度应为6-18,包含字母、数字和特殊字符"),
PASSWORD_ERROR_MORE_THAN(20043,"用户名密码连续错误已达5次,请15分钟后再试"),
LOGIN_TYPE_ERROR(20044, "不支持的登录类型"),
SERVICE_UNAVAILABLE(50000, "操作失败,请重试");
private int status;
private String msg;
private InfoCode(int status, String msg) {
this.status = status;
this.msg = msg;
}
public int getStatus() {
return status;
}
public String getMsg() {
return msg;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
================================================
FILE: abel-util/src/main/java/cn/abel/exception/AppRuntimeException.java
================================================
package cn.abel.exception;
import cn.abel.code.InfoCode;
/**
* 接口服务抛出的异常
*
*/
public class AppRuntimeException extends RuntimeException {
private static final long serialVersionUID = 2963760410777899525L;
private InfoCode infoCode;
public AppRuntimeException() {
infoCode = InfoCode.SERVICE_UNAVAILABLE;
}
public AppRuntimeException(InfoCode infoCode) {
this.infoCode = infoCode;
}
public AppRuntimeException(InfoCode infoCode, String message) {
super(message);
this.infoCode = infoCode;
}
public InfoCode getInfoCode() {
return infoCode;
}
}
================================================
FILE: abel-util/src/main/java/cn/abel/exception/HttpExeption.java
================================================
package cn.abel.exception;
public class HttpExeption extends Exception {
private static final long serialVersionUID = -4707210535385221192L;
public HttpExeption() {
}
public HttpExeption(String msg) {
super(msg);
}
public HttpExeption(String msg, Throwable e) {
super(msg, e);
}
public HttpExeption(Throwable e) {
super(e);
}
}
================================================
FILE: abel-util/src/main/java/cn/abel/exception/ServiceException.java
================================================
package cn.abel.exception;
import cn.abel.code.*;
/**
* 服务异常类
*
*/
@SuppressWarnings("serial")
public class ServiceException extends Exception {
//默认的错误码
private int errorCode = 500;
private String errorCodes;
public ServiceException() {
}
public ServiceException(Throwable e) {
super(e);
}
public ServiceException(int errorCode) {
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
public String getErrorCodes() {
return errorCodes;
}
public ServiceException(InfoCode infoCode){
super(infoCode.getMsg());
this.errorCode = infoCode.getStatus();
}
public ServiceException(int errorCode, String msg) {
super(msg);
this.errorCode = errorCode;
}
public ServiceException(String errorCode, String msg) {
super(msg);
this.errorCodes = errorCode;
}
public ServiceException(int errorCode, String msg, Throwable e) {
super(msg, e);
this.errorCode = errorCode;
}
public ServiceException(int errorCode, Throwable e) {
super(e);
this.errorCode = errorCode;
}
}
================================================
FILE: abel-util/src/main/java/cn/abel/response/ResponseEntity.java
================================================
package cn.abel.response;
import cn.abel.code.*;
import java.util.HashMap;
/**
* Created by guoshan on 2018/3/21.
* <p>
* 服务端返回给前端或客户端使用
*/
public class ResponseEntity {
int status = 200;
String message = "ok";
Object data = new HashMap();
private ResponseEntity() {
}
public static ResponseEntity ok(Object data) {
ResponseEntity ResponseEntity = new ResponseEntity();
ResponseEntity.setData(data);
return ResponseEntity;
}
public static ResponseEntity error(InfoCode infoCode) {
ResponseEntity ResponseEntity = new ResponseEntity();
ResponseEntity.setStatus(infoCode.getStatus());
ResponseEntity.setMessage(infoCode.getMsg());
return ResponseEntity;
}
public static ResponseEntity ok() {
ResponseEntity ResponseEntity = new ResponseEntity();
return ResponseEntity;
}
public static ResponseEntity error(int code, String msg) {
ResponseEntity ResponseEntity = new ResponseEntity();
ResponseEntity.setStatus(code);
ResponseEntity.setMessage(msg);
return ResponseEntity;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data == null ? new HashMap() : data;
}
public void setData(Object data) {
this.data = data;
}
}
================================================
FILE: abel-util/src/main/java/cn/abel/utils/DateTimeUtils.java
================================================
package cn.abel.utils;
import cn.abel.exception.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
/**
* 日期util。
*/
public class DateTimeUtils {
/**
* 一分钟。
*/
public static final int ONE_MINUTE = 60 * 1000;
/**
* 一小时。
*/
public static final int ONE_HOUR = 60 * ONE_MINUTE;
/**
* 一天。
*/
public static final int ONE_DAY = 24 * ONE_HOUR;
public static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
private static final int ARG_ERROR_CODE = 400;
private static final String ARG_ERROR = "输入的参数有误";
/**
* 根据给定的格式将时间转为字符串。
*
* @param dateTime
* @param pattern
* @return
*/
public static String format(Date dateTime, String pattern) {
if (dateTime == null || pattern == null) {
return StringUtils.EMPTY;
}
return DateFormatUtils.format(dateTime, pattern);
}
/**
* 将时间转为默认格式的字符串。
*
* @param dateTime
* @return
*/
public static String format(Date dateTime) {
return format(dateTime, DEFAULT_DATETIME_PATTERN);
}
/**
* 根据给定的格式获取当前日期的字符串。
*
* @param pattern
* @return
*/
public static String formatCurrent(String pattern) {
return format(new Date(), pattern);
}
/**
* 获取当前日期的字符串。
*
* @return
*/
public static String formatCurrent() {
return format(new Date(), DEFAULT_DATE_PATTERN);
}
/**
* 去除时间中的时分秒毫秒,只保留日期部分。
*
* @param dateTime
* @return
*/
public static Date removeTime(Date dateTime) {
if (dateTime == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateTime);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取明天的日期。
*
* @return
*/
public static Date getTomorrowDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DATE, 1);
return calendar.getTime();
}
/**
* 获取昨天的日期。
*
* @return
*/
public static Date getYesterdayDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* 根据给定的格式将时间字符串转化成{@link Date}对象。
*
* @param dateTimeStr
* @param pattern
* @return
* @throws ServiceException
*/
public static Date parse(String dateTimeStr, String pattern) throws ServiceException {
if (dateTimeStr == null || pattern == null) {
return null;
}
try {
return DateUtils.parseDate(dateTimeStr, pattern);
} catch (ParseException e) {
throw new ServiceException(ARG_ERROR_CODE, ARG_ERROR);
}
}
/**
* 将时间字符串根据默认格式转换成{@link Date}对象。
*
* @param dateTimeStr
* @return
* @throws ServiceException
*/
public static Date parse(String dateTimeStr) throws ServiceException {
return parse(dateTimeStr, DEFAULT_DATETIME_PATTERN);
}
/**
* 获取日期中的月份。
*
* @param date
* @return
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 获取日期中的年份。
*
* @param date
* @return
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
/**
* 增加日期。
*
* @param date
* @param days
* @return
* @throws ServiceException
*/
public static Date dateAdd(Date date, int days) throws ServiceException {
if (date == null) {
throw new ServiceException(ARG_ERROR_CODE, ARG_ERROR);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
return calendar.getTime();
}
/**
* 增加月份。
*
* @param date
* @param months
* @return
* @throws ServiceException
*/
public static Date monthAdd(Date date, int months) throws ServiceException {
if (date == null) {
throw new ServiceException(ARG_ERROR_CODE, ARG_ERROR);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, months);
return calendar.getTime();
}
/**
* 获取两个日期之间的差值。
*
* @param one
* @param two
* @return
* @throws ServiceException
*/
public static int dateDiff(Date one, Date two) throws ServiceException {
if (one == null || two == null) {
throw new ServiceException(ARG_ERROR_CODE, ARG_ERROR);
}
long diff = Math.abs((one.getTime() - two.getTime()) / (1000 * 3600 * 24));
return new Long(diff).intValue();
}
/**
* 计算几天前的时间
*
* @param date 当前时间
* @param day 几天前
* @return
*/
public static Date getDateBefore(Date date, int day) {
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
return now.getTime();
}
/**
* 获取当前月第一天
*
* @return Date
* @throws ParseException
*/
public static Date getFirstAndLastOfMonth() {
LocalDate today = LocalDate.now();
LocalDate firstDay = LocalDate.of(today.getYear(),today.getMonth(),1);
ZoneId zone = ZoneId.systemDefault();
Instant instant = firstDay.atStartOfDay().atZone(zone).toInstant();
return Date.from(instant);
}
/**
* 获取当前周第一天
*
* @return Date
* @throws ParseException
*/
public static Date getWeekFirstDate(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = cal.getTime();
return date;
}
}
================================================
FILE: springWebSocket/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.us.example</groupId>
<artifactId>springWebSocket</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>
<properties>
<start-class>com.us.example.Application</start-class>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
<!-- 核心模块,包括自动配置支持、日志和YAML -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 测试模块,包括JUnit、Hamcrest、Mockito -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 引入Web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringWebSocket依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- 引入security模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--<!–打依赖包–>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: springWebSocket/src/main/java/com/us/example/Application.java
================================================
package com.us.example;
/**
* Created by yangyibo on 16/12/29.
*/
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import static org.springframework.boot.SpringApplication.run;
@ComponentScan(basePackages ="com.us.example")
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext run = run(Application.class, args);
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/bean/Message.java
================================================
package com.us.example.bean;
/**
* Created by yangyibo on 16/12/29.
* 浏览器向服务器发送的消息使用此类接受
*/
public class Message {
private String name;
public String getName(){
return name;
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/bean/Response.java
================================================
package com.us.example.bean;
/**
* Created by yangyibo on 16/12/29.
* 服务器向浏览器发送的此类消息。
*/
public class Response {
public void setResponseMessage(String responseMessage) {
this.responseMessage = responseMessage;
}
private String responseMessage;
public Response(String responseMessage){
this.responseMessage = responseMessage;
}
public String getResponseMessage(){
return responseMessage;
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/config/WebSecurityConfig.java
================================================
package com.us.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/","/login").permitAll()//根路径和/login路径不拦截
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login") //2登陆页面路径为/login
.defaultSuccessUrl("/chat") //3登陆成功转向chat页面
.permitAll()
.and()
.logout()
.permitAll();
}
//4在内存中配置两个用户 wyf 和 wisely ,密码和用户名一致,角色是 USER
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("admin").roles("USER")
.and()
.withUser("abel").password("abel").roles("USER");
}
//5忽略静态资源的拦截
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/static/**");
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/config/WebSocketConfig.java
================================================
package com.us.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
/**
* Created by yangyibo on 16/12/29.
*/
@Configuration
@EnableWebSocketMessageBroker
//通过EnableWebSocketMessageBroker 开启使用STOMP协议来传输基于代理(message broker)的消息,此时浏览器支持使用@MessageMapping 就像支持@RequestMapping一样。
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) { //endPoint 注册协议节点,并映射指定的URl
//注册一个Stomp 协议的endpoint,并指定 SockJS协议
registry.addEndpoint("/endpointWisely").withSockJS();
//注册一个名字为"endpointChat" 的endpoint,并指定 SockJS协议。 点对点-用
registry.addEndpoint("/endpointChat").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {//配置消息代理(message broker)
//广播式应配置一个/topic 消息代理
registry.enableSimpleBroker("/topic");
//点对点式增加一个/queue 消息代理
registry.enableSimpleBroker("/queue","/topic");
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/controller/WebSocketController.java
================================================
package com.us.example.controller;
import com.us.example.bean.Message;
import com.us.example.bean.Response;
import com.us.example.service.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.security.Principal;
/**
* Created by yangyibo on 16/12/29.
*
*/
@CrossOrigin
@Controller
public class WebSocketController {
@Autowired
private WebSocketService ws;
@Autowired
private SimpMessagingTemplate messagingTemplate;
@RequestMapping(value = "/login")
public String login(){
return "login";
}
@RequestMapping(value = "/ws")
public String ws(){
return "ws";
}
@RequestMapping(value = "/chat")
public String chat(){
return "chat";
}
//http://localhost:8080/ws
@MessageMapping("/welcome")//浏览器发送请求通过@messageMapping 映射/welcome 这个地址。
@SendTo("/topic/getResponse")//服务器端有消息时,会订阅@SendTo 中的路径的浏览器发送消息。
public Response say(Message message) throws Exception {
Thread.sleep(1000);
return new Response("Welcome, " + message.getName() + "!");
}
//http://localhost:8080/Welcome1
@RequestMapping("/Welcome1")
@ResponseBody
public String say2()throws Exception
{
ws.sendMessage();
return "is ok";
}
@MessageMapping("/chat")
//在springmvc 中可以直接获得principal,principal 中包含当前用户的信息
public void handleChat(Principal principal, Message message) {
/**
* 此处是一段硬编码。如果发送人是wyf 则发送给 wisely 如果发送人是wisely 就发送给 wyf。
* 通过当前用户,然后查找消息,如果查找到未读消息,则发送给当前用户。
*/
if (principal.getName().equals("admin")) {
//通过convertAndSendToUser 向用户发送信息,
// 第一个参数是接收消息的用户,第二个参数是浏览器订阅的地址,第三个参数是消息本身
messagingTemplate.convertAndSendToUser("abel",
"/queue/notifications", principal.getName() + "-send:"
+ message.getName());
/**
* 72 行操作相等于
* messagingTemplate.convertAndSend("/user/abel/queue/notifications",principal.getName() + "-send:"
+ message.getName());
*/
} else {
messagingTemplate.convertAndSendToUser("admin",
"/queue/notifications", principal.getName() + "-send:"
+ message.getName());
}
}
}
================================================
FILE: springWebSocket/src/main/java/com/us/example/service/WebSocketService.java
================================================
package com.us.example.service;
/**
* Created by yangyibo on 17/1/12.
*/
import com.us.example.bean.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
@Service
public class WebSocketService {
@Autowired
//使用SimpMessagingTemplate 向浏览器发送消息
private SimpMessagingTemplate template;
public void sendMessage() throws Exception{
for(int i=0;i<10;i++)
{
Thread.sleep(1000);
template.convertAndSend("/topic/getResponse",new Response("Welcome,yangyibo !"+i));
System.out.println("----------------------yangyibo"+i);
}
}
}
================================================
FILE: springWebSocket/src/main/resources/application.properties
================================================
server.port=8090
================================================
FILE: springWebSocket/src/main/resources/static/jquery.js
================================================
/*!
* jQuery JavaScript Library v1.6.1
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Thu May 12 15:04:36 2011 -0400
*/
(function( window, undefined ) {
// Use the correct document accordingly with window argument (sandbox)
var document = window.document,
navigator = window.navigator,
location = window.location;
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// A central reference to the root jQuery(document)
rootjQuery,
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
// Check if a string has a non-whitespace character in it
rnotwhite = /\S/,
// Used for trimming whitespace
trimLeft = /^\s+/,
trimRight = /\s+$/,
// Check for digits
rdigit = /\d/,
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
// JSON RegExp
rvalidchars = /^[\],:{}\s]*$/,
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
// Useragent RegExp
rwebkit = /(webkit)[ \/]([\w.]+)/,
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
rmsie = /(msie) ([\w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
// Keep a UserAgent string for use with jQuery.browser
userAgent = navigator.userAgent,
// For matching the engine and version of the browser
browserMatch,
// The deferred used on DOM ready
readyList,
// The ready event handler
DOMContentLoaded,
// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwn = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
trim = String.prototype.trim,
indexOf = Array.prototype.indexOf,
// [[Class]] -> type pairs
class2type = {};
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
// The body element only exists once, optimize finding it
if ( selector === "body" && !context && document.body ) {
this.context = document;
this[0] = document.body;
this.selector = selector;
this.length = 1;
return this;
}
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [ null, selector, null ];
} else {
match = quickExpr.exec( selector );
}
// Verify a match, and that no context was specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] ) {
context = context instanceof jQuery ? context[0] : context;
doc = (context ? context.ownerDocument || context : document);
// If a single string is passed in and it's a single tag
// just do a createElement and skip the rest
ret = rsingleTag.exec( selector );
if ( ret ) {
if ( jQuery.isPlainObject( context ) ) {
selector = [ document.createElement( ret[1] ) ];
jQuery.fn.attr.call( selector, context, true );
} else {
selector = [ doc.createElement( ret[1] ) ];
}
} else {
ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
}
return jQuery.merge( this, selector );
// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
if ( elem && elem.parentNode ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id !== match[2] ) {
return rootjQuery.find( selector );
}
// Otherwise, we inject the element directly into the jQuery object
this.length = 1;
this[0] = elem;
}
this.context = document;
this.selector = selector;
return this;
}
// HANDLE: $(expr, $(...))
} else if ( !context || context.jquery ) {
return (context || rootjQuery).find( selector );
// HANDLE: $(expr, context)
// (which is just equivalent to: $(context).find(expr)
} else {
return this.constructor( context ).find( selector );
}
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
if (selector.selector !== undefined) {
this.selector = selector.selector;
this.context = selector.context;
}
return jQuery.makeArray( selector, this );
},
// Start with an empty selector
selector: "",
// The current version of jQuery being used
jquery: "1.6.1",
// The default length of a jQuery object is 0
length: 0,
// The number of elements contained in the matched element set
size: function() {
return this.length;
},
toArray: function() {
return slice.call( this, 0 );
},
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
return num == null ?
// Return a 'clean' array
this.toArray() :
// Return just the object
( num < 0 ? this[ this.length + num ] : this[ num ] );
},
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
var ret = this.constructor();
if ( jQuery.isArray( elems ) ) {
push.apply( ret, elems );
} else {
jQuery.merge( ret, elems );
}
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
if ( name === "find" ) {
ret.selector = this.selector + (this.selector ? " " : "") + selector;
} else if ( name ) {
ret.selector = this.selector + "." + name + "(" + selector + ")";
}
// Return the newly-formed element set
return ret;
},
// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.done( fn );
return this;
},
eq: function( i ) {
return i === -1 ?
this.slice( i ) :
this.slice( i, +i + 1 );
},
first: function() {
return this.eq( 0 );
},
last: function() {
return this.eq( -1 );
},
slice: function() {
return this.pushStack( slice.apply( this, arguments ),
"slice", slice.call(arguments).join(",") );
},
map: function( callback ) {
return this.pushStack( jQuery.map(this, function( elem, i ) {
return callback.call( elem, i, elem );
}));
},
end: function() {
return this.prevObject || this.constructor(null);
},
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,
splice: [].splice
};
// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
// Handle a deep copy situation
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
// Handle case when target is a string or something (possible in deep copy)
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
target = {};
}
// extend jQuery itself if only one argument is passed
if ( length === i ) {
target = this;
--i;
}
for ( ; i < length; i++ ) {
// Only deal with non-null/undefined values
if ( (options = arguments[ i ]) != null ) {
// Extend the base object
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
// Prevent never-ending loop
if ( target === copy ) {
continue;
}
// Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray(src) ? src : [];
} else {
clone = src && jQuery.isPlainObject(src) ? src : {};
}
// Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy );
// Don't bring in undefined values
} else if ( copy !== undefined ) {
target[ name ] = copy;
}
}
}
}
// Return the modified object
return target;
};
jQuery.extend({
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
},
// Is the DOM ready to be used? Set to true once it occurs.
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
readyWait: 1,
// Hold (or release) the ready event
holdReady: function( hold ) {
if ( hold ) {
jQuery.readyWait++;
} else {
jQuery.ready( true );
}
},
// Handle when the DOM is ready
ready: function( wait ) {
// Either a released hold or an DOMready/load event and not yet ready
if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( !document.body ) {
return setTimeout( jQuery.ready, 1 );
}
// Remember that the DOM is ready
jQuery.isReady = true;
// If a normal DOM Ready event fired, decrement, and wait if need be
if ( wait !== true && --jQuery.readyWait > 0 ) {
return;
}
// If there are functions bound, to execute
readyList.resolveWith( document, [ jQuery ] );
// Trigger any bound ready events
if ( jQuery.fn.trigger ) {
jQuery( document ).trigger( "ready" ).unbind( "ready" );
}
}
},
bindReady: function() {
if ( readyList ) {
return;
}
readyList = jQuery._Deferred();
// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
// Handle it asynchronously to allow scripts the opportunity to delay ready
return setTimeout( jQuery.ready, 1 );
}
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
// A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false );
// If IE event model is used
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent( "onreadystatechange", DOMContentLoaded );
// A fallback to window.onload, that will always work
window.attachEvent( "onload", jQuery.ready );
// If IE and not a frame
// continually check to see if the document is ready
var toplevel = false;
try {
toplevel = window.frameElement == null;
} catch(e) {}
if ( document.documentElement.doScroll && toplevel ) {
doScrollCheck();
}
}
},
// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
return jQuery.type(obj) === "function";
},
isArray: Array.isArray || function( obj ) {
return jQuery.type(obj) === "array";
},
// A crude way of determining if an object is a window
isWindow: function( obj ) {
return obj && typeof obj === "object" && "setInterval" in obj;
},
isNaN: function( obj ) {
return obj == null || !rdigit.test( obj ) || isNaN( obj );
},
type: function( obj ) {
return obj == null ?
String( obj ) :
class2type[ toString.call(obj) ] || "object";
},
isPlainObject: function( obj ) {
// Must be an Object.
// Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well
if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
return false;
}
// Not own constructor property must be Object
if ( obj.constructor &&
!hasOwn.call(obj, "constructor") &&
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
var key;
for ( key in obj ) {}
return key === undefined || hasOwn.call( obj, key );
},
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
},
error: function( msg ) {
throw msg;
},
parseJSON: function( data ) {
if ( typeof data !== "string" || !data ) {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( rvalidchars.test( data.replace( rvalidescape, "@" )
.replace( rvalidtokens, "]" )
.replace( rvalidbraces, "")) ) {
return (new Function( "return " + data ))();
}
jQuery.error( "Invalid JSON: " + data );
},
// Cross-browser xml parsing
// (xml & tmp used internally)
parseXML: function( data , xml , tmp ) {
if ( window.DOMParser ) { // Standard
tmp = new DOMParser();
xml = tmp.parseFromString( data , "text/xml" );
} else { // IE
xml = new ActiveXObject( "Microsoft.XMLDOM" );
xml.async = "false";
xml.loadXML( data );
}
tmp = xml.documentElement;
if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
jQuery.error( "Invalid XML: " + data );
}
return xml;
},
noop: function() {},
// Evaluates a script in a global context
// Workarounds based on findings by Jim Driscoll
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
if ( data && rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
// args is for internal usage only
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}
return object;
},
// Use native String.trim function wherever possible
trim: trim ?
function( text ) {
return text == null ?
"" :
trim.call( text );
} :
// Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
},
// results is for internal usage only
makeArray: function( array, results ) {
var ret = results || [];
if ( array != null ) {
// The window, strings (and functions) also have 'length'
// The extra typeof function check is to prevent crashes
// in Safari 2 (See: #3039)
// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
var type = jQuery.type( array );
if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
push.call( ret, array );
} else {
jQuery.merge( ret, array );
}
}
return ret;
},
inArray: function( elem, array ) {
if ( indexOf ) {
return indexOf.call( array, elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;
}
}
return -1;
},
merge: function( first, second ) {
var i = first.length,
j = 0;
if ( typeof second.length === "number" ) {
for ( var l = second.length; j < l; j++ ) {
first[ i++ ] = second[ j ];
}
} else {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
},
grep: function( elems, callback, inv ) {
var ret = [], retVal;
inv = !!inv;
// Go through the array, only saving the items
// that pass the validator function
for ( var i = 0, length = elems.length; i < length; i++ ) {
retVal = !!callback( elems[ i ], i );
if ( inv !== retVal ) {
ret.push( elems[ i ] );
}
}
return ret;
},
// arg is for internal usage only
map: function( elems, callback, arg ) {
var value, key, ret = [],
i = 0,
length = elems.length,
// jquery objects are treated as arrays
isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
// Go through the array, translating each of the items to their
if ( isArray ) {
for ( ; i < length; i++ ) {
value = callback( elems[ i ], i, arg );
if ( value != null ) {
ret[ ret.length ] = value;
}
}
// Go through every key on the object,
} else {
for ( key in elems ) {
value = callback( elems[ key ], key, arg );
if ( value != null ) {
ret[ ret.length ] = value;
}
}
}
// Flatten any nested arrays
return ret.concat.apply( [], ret );
},
// A global GUID counter for objects
guid: 1,
// Bind a function to a context, optionally partially applying any
// arguments.
proxy: function( fn, context ) {
if ( typeof context === "string" ) {
var tmp = fn[ context ];
context = fn;
fn = tmp;
}
// Quick check to determine if target is callable, in the spec
// this throws a TypeError, but we will just return undefined.
if ( !jQuery.isFunction( fn ) ) {
return undefined;
}
// Simulated bind
var args = slice.call( arguments, 2 ),
proxy = function() {
return fn.apply( context, args.concat( slice.call( arguments ) ) );
};
// Set the guid of unique handler to the same of original handler, so it can be removed
proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
return proxy;
},
// Mutifunctional method to get and set values to a collection
// The value/s can be optionally by executed if its a function
access: function( elems, key, value, exec, fn, pass ) {
var length = elems.length;
// Setting many attributes
if ( typeof key === "object" ) {
for ( var k in key ) {
jQuery.access( elems, k, key[k], exec, fn, value );
}
return elems;
}
// Setting one attribute
if ( value !== undefined ) {
// Optionally, function values get executed if exec is true
exec = !pass && exec && jQuery.isFunction(value);
for ( var i = 0; i < length; i++ ) {
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
}
return elems;
}
// Getting an attribute
return length ? fn( elems[0], key ) : undefined;
},
now: function() {
return (new Date()).getTime();
},
// Use of jQuery.browser is frowned upon.
// More details: http://docs.jquery.com/Utilities/jQuery.browser
uaMatch: function( ua ) {
ua = ua.toLowerCase();
var match = rwebkit.exec( ua ) ||
ropera.exec( ua ) ||
rmsie.exec( ua ) ||
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
[];
return { browser: match[1] || "", version: match[2] || "0" };
},
sub: function() {
function jQuerySub( selector, context ) {
return new jQuerySub.fn.init( selector, context );
}
jQuery.extend( true, jQuerySub, this );
jQuerySub.superclass = this;
jQuerySub.fn = jQuerySub.prototype = this();
jQuerySub.fn.constructor = jQuerySub;
jQuerySub.sub = this.sub;
jQuerySub.fn.init = function init( selector, context ) {
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
context = jQuerySub( context );
}
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
};
jQuerySub.fn.init.prototype = jQuerySub.fn;
var rootjQuerySub = jQuerySub(document);
return jQuerySub;
},
browser: {}
});
// Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
browserMatch = jQuery.uaMatch( userAgent );
if ( browserMatch.browser ) {
jQuery.browser[ browserMatch.browser ] = true;
jQuery.browser.version = browserMatch.version;
}
// Deprecated, use jQuery.browser.webkit instead
if ( jQuery.browser.webkit ) {
jQuery.browser.safari = true;
}
// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
trimLeft = /^[\s\xA0]+/;
trimRight = /[\s\xA0]+$/;
}
// All jQuery objects should point back to these
rootjQuery = jQuery(document);
// Cleanup functions for the document ready method
if ( document.addEventListener ) {
DOMContentLoaded = function() {
document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
jQuery.ready();
};
} else if ( document.attachEvent ) {
DOMContentLoaded = function() {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( document.readyState === "complete" ) {
document.detachEvent( "onreadystatechange", DOMContentLoaded );
jQuery.ready();
}
};
}
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if ( jQuery.isReady ) {
return;
}
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch(e) {
setTimeout( doScrollCheck, 1 );
return;
}
// and execute any waiting functions
jQuery.ready();
}
// Expose jQuery to the global object
return jQuery;
})();
var // Promise methods
promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
// Static reference to slice
sliceDeferred = [].slice;
jQuery.extend({
// Create a simple deferred (one callbacks list)
_Deferred: function() {
var // callbacks list
callbacks = [],
// stored [ context , args ]
fired,
// to avoid firing when already doing so
firing,
// flag to know if the deferred has been cancelled
cancelled,
// the deferred itself
deferred = {
// done( f1, f2, ...)
done: function() {
if ( !cancelled ) {
var args = arguments,
i,
length,
elem,
type,
_fired;
if ( fired ) {
_fired = fired;
fired = 0;
}
for ( i = 0, length = args.length; i < length; i++ ) {
elem = args[ i ];
type = jQuery.type( elem );
if ( type === "array" ) {
deferred.done.apply( deferred, elem );
} else if ( type === "function" ) {
callbacks.push( elem );
}
}
if ( _fired ) {
deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
}
}
return this;
},
// resolve with given context and args
resolveWith: function( context, args ) {
if ( !cancelled && !fired && !firing ) {
// make sure args are available (#8421)
args = args || [];
firing = 1;
try {
while( callbacks[ 0 ] ) {
callbacks.shift().apply( context, args );
}
}
finally {
fired = [ context, args ];
firing = 0;
}
}
return this;
},
// resolve with this as context and given arguments
resolve: function() {
deferred.resolveWith( this, arguments );
return this;
},
// Has this deferred been resolved?
isResolved: function() {
return !!( firing || fired );
},
// Cancel
cancel: function() {
cancelled = 1;
callbacks = [];
return this;
}
};
return deferred;
},
// Full fledged deferred (two callbacks list)
Deferred: function( func ) {
var deferred = jQuery._Deferred(),
failDeferred = jQuery._Deferred(),
promise;
// Add errorDeferred methods, then and promise
jQuery.extend( deferred, {
then: function( doneCallbacks, failCallbacks ) {
deferred.done( doneCallbacks ).fail( failCallbacks );
return this;
},
always: function() {
return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
},
fail: failDeferred.done,
rejectWith: failDeferred.resolveWith,
reject: failDeferred.resolve,
isRejected: failDeferred.isResolved,
pipe: function( fnDone, fnFail ) {
return jQuery.Deferred(function( newDefer ) {
jQuery.each( {
done: [ fnDone, "resolve" ],
fail: [ fnFail, "reject" ]
}, function( handler, data ) {
var fn = data[ 0 ],
action = data[ 1 ],
returned;
if ( jQuery.isFunction( fn ) ) {
deferred[ handler ](function() {
returned = fn.apply( this, arguments );
if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise().then( newDefer.resolve, newDefer.reject );
} else {
newDefer[ action ]( returned );
}
});
} else {
deferred[ handler ]( newDefer[ action ] );
}
});
}).promise();
},
// Get a promise for this deferred
// If obj is provided, the promise aspect is added to the object
promise: function( obj ) {
if ( obj == null ) {
if ( promise ) {
return promise;
}
promise = obj = {};
}
var i = promiseMethods.length;
while( i-- ) {
obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
}
return obj;
}
});
// Make sure only one callback list will be used
deferred.done( failDeferred.cancel ).fail( deferred.cancel );
// Unexpose cancel
delete deferred.cancel;
// Call given func if any
if ( func ) {
func.call( deferred, deferred );
}
return deferred;
},
// Deferred helper
when: function( firstParam ) {
var args = arguments,
i = 0,
length = args.length,
count = length,
deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
firstParam :
jQuery.Deferred();
function resolveFunc( i ) {
return function( value ) {
args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
if ( !( --count ) ) {
// Strange bug in FF4:
// Values changed onto the arguments object sometimes end up as undefined values
// outside the $.when method. Cloning the object into a fresh array solves the issue
deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
}
};
}
if ( length > 1 ) {
for( ; i < length; i++ ) {
if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
args[ i ].promise().then( resolveFunc(i), deferred.reject );
} else {
--count;
}
}
if ( !count ) {
deferred.resolveWith( deferred, args );
}
} else if ( deferred !== firstParam ) {
deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
}
return deferred.promise();
}
});
jQuery.support = (function() {
var div = document.createElement( "div" ),
documentElement = document.documentElement,
all,
a,
select,
opt,
input,
marginDiv,
support,
fragment,
body,
bodyStyle,
tds,
events,
eventName,
i,
isSupported;
// Preliminary tests
div.setAttribute("className", "t");
div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
all = div.getElementsByTagName( "*" );
a = div.getElementsByTagName( "a" )[ 0 ];
// Can't get basic test support
if ( !all || !all.length || !a ) {
return {};
}
// First batch of supports tests
select = document.createElement( "select" );
opt = select.appendChild( document.createElement("option") );
input = div.getElementsByTagName( "input" )[ 0 ];
support = {
// IE strips leading whitespace when .innerHTML is used
leadingWhitespace: ( div.firstChild.nodeType === 3 ),
// Make sure that tbody elements aren't automatically inserted
// IE will insert them into empty tables
tbody: !div.getElementsByTagName( "tbody" ).length,
// Make sure that link elements get serialized correctly by innerHTML
// This requires a wrapper element in IE
htmlSerialize: !!div.getElementsByTagName( "link" ).length,
// Get the style information from getAttribute
// (IE uses .cssText instead)
style: /top/.test( a.getAttribute("style") ),
// Make sure that URLs aren't manipulated
// (IE normalizes it by default)
hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
// Make sure that element opacity exists
// (IE uses filter instead)
// Use a regex to work around a WebKit issue. See #5145
opacity: /^0.55$/.test( a.style.opacity ),
// Verify style float existence
// (IE uses styleFloat instead of cssFloat)
cssFloat: !!a.style.cssFloat,
// Make sure that if no value is specified for a checkbox
// that it defaults to "on".
// (WebKit defaults to "" instead)
checkOn: ( input.value === "on" ),
// Make sure that a selected-by-default option has a working selected property.
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
optSelected: opt.selected,
// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
getSetAttribute: div.className !== "t",
// Will be defined later
submitBubbles: true,
changeBubbles: true,
focusinBubbles: false,
deleteExpando: true,
noCloneEvent: true,
inlineBlockNeedsLayout: false,
shrinkWrapBlocks: false,
reliableMarginRight: true
};
// Make sure checked status is properly cloned
input.checked = true;
support.noCloneChecked = input.cloneNode( true ).checked;
// Make sure that the options inside disabled selects aren't marked as disabled
// (WebKit marks them as disabled)
select.disabled = true;
support.optDisabled = !opt.disabled;
// Test to see if it's possible to delete an expando from an element
// Fails in Internet Explorer
try {
delete div.test;
} catch( e ) {
support.deleteExpando = false;
}
if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
div.attachEvent( "onclick", function click() {
// Cloning a node shouldn't copy over any
// bound event handlers (IE does this)
support.noCloneEvent = false;
div.detachEvent( "onclick", click );
});
div.cloneNode( true ).fireEvent( "onclick" );
}
// Check if a radio maintains it's value
// after being appended to the DOM
input = document.createElement("input");
input.value = "t";
input.setAttribute("type", "radio");
support.radioValue = input.value === "t";
input.setAttribute("checked", "checked");
div.appendChild( input );
fragment = document.createDocumentFragment();
fragment.appendChild( div.firstChild );
// WebKit doesn't clone checked state correctly in fragments
support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
div.innerHTML = "";
// Figure out if the W3C box model works as expected
div.style.width = div.style.paddingLeft = "1px";
// We use our own, invisible, body
body = document.createElement( "body" );
bodyStyle = {
visibility: "hidden",
width: 0,
height: 0,
border: 0,
margin: 0,
// Set background to avoid IE crashes when removing (#9028)
background: "none"
};
for ( i in bodyStyle ) {
body.style[ i ] = bodyStyle[ i ];
}
body.appendChild( div );
documentElement.insertBefore( body, documentElement.firstChild );
// Check if a disconnected checkbox will retain its checked
// value of true after appended to the DOM (IE6/7)
support.appendChecked = input.checked;
support.boxModel = div.offsetWidth === 2;
if ( "zoom" in div.style ) {
// Check if natively block-level elements act like inline-block
// elements when setting their display to 'inline' and giving
// them layout
// (IE < 8 does this)
div.style.display = "inline";
div.style.zoom = 1;
support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
// Check if elements with layout shrink-wrap their children
// (IE 6 does this)
div.style.display = "";
div.innerHTML = "<div style='width:4px;'></div>";
support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
}
div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
tds = div.getElementsByTagName( "td" );
// Check if table cells still have offsetWidth/Height when they are set
// to display:none and there are still other visible table cells in a
// table row; if so, offsetWidth/Height are not reliable for use when
// determining if an element has been hidden directly using
// display:none (it is still safe to use offsets if a parent element is
// hidden; don safety goggles and see bug #4512 for more information).
// (only IE 8 fails this test)
isSupported = ( tds[ 0 ].offsetHeight === 0 );
tds[ 0 ].style.display = "";
tds[ 1 ].style.display = "none";
// Check if empty table cells still have offsetWidth/Height
// (IE < 8 fail this test)
support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
div.innerHTML = "";
// Check if div with explicit width and no margin-right incorrectly
// gets computed margin-right based on width of container. For more
// info see bug #3333
// Fails in WebKit before Feb 2011 nightlies
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
if ( document.defaultView && document.defaultView.getComputedStyle ) {
marginDiv = document.createElement( "div" );
marginDiv.style.width = "0";
marginDiv.style.marginRight = "0";
div.appendChild( marginDiv );
support.reliableMarginRight =
( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
}
// Remove the body element we added
body.innerHTML = "";
documentElement.removeChild( body );
// Technique from Juriy Zaytsev
// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
// We only care about the case where non-standard event systems
// are used, namely in IE. Short-circuiting here helps us to
// avoid an eval call (in setAttribute) which can cause CSP
// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
if ( div.attachEvent ) {
for( i in {
submit: 1,
change: 1,
focusin: 1
} ) {
eventName = "on" + i;
isSupported = ( eventName in div );
if ( !isSupported ) {
div.setAttribute( eventName, "return;" );
isSupported = ( typeof div[ eventName ] === "function" );
}
support[ i + "Bubbles" ] = isSupported;
}
}
return support;
})();
// Keep track of boxModel
jQuery.boxModel = jQuery.support.boxModel;
var rbrace = /^(?:\{.*\}|\[.*\])$/,
rmultiDash = /([a-z])([A-Z])/g;
jQuery.extend({
cache: {},
// Please use with caution
uuid: 0,
// Unique for each copy of jQuery on the page
// Non-digits removed to match rinlinejQuery
expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
// The following elements throw uncatchable exceptions if you
// attempt to add expando properties to them.
noData: {
"embed": true,
// Ban all objects except for Flash (which handle expandos)
"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
"applet": true
},
hasData: function( elem ) {
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
return !!elem && !isEmptyDataObject( elem );
},
data: function( elem, name, data, pvt /* Internal Use Only */ ) {
if ( !jQuery.acceptData( elem ) ) {
return;
}
var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
// We have to handle DOM nodes and JS objects differently because IE6-7
// can't GC object references properly across the DOM-JS boundary
isNode = elem.nodeType,
// Only DOM nodes need the global jQuery cache; JS object data is
// attached directly to the object so GC can occur automatically
cache = isNode ? jQuery.cache : elem,
// Only defining an ID for JS objects if its cache already exists allows
// the code to shortcut on the same path as a DOM node with no cache
id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
// Avoid doing any more work than we need to when trying to get data on an
// object that has no data at all
if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
return;
}
if ( !id ) {
// Only DOM nodes need a new unique ID for each element since their data
// ends up in the global cache
if ( isNode ) {
elem[ jQuery.expando ] = id = ++jQuery.uuid;
} else {
id = jQuery.expando;
}
}
if ( !cache[ id ] ) {
cache[ id ] = {};
// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
// metadata on plain JS objects when the object is serialized using
// JSON.stringify
if ( !isNode ) {
cache[ id ].toJSON = jQuery.noop;
}
}
// An object can be passed to jQuery.data instead of a key/value pair; this gets
// shallow copied over onto the existing cache
if ( typeof name === "object" || typeof name === "function" ) {
if ( pvt ) {
cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
} else {
cache[ id ] = jQuery.extend(cache[ id ], name);
}
}
thisCache = cache[ id ];
// Internal jQuery data is stored in a separate object inside the object's data
// cache in order to avoid key collisions between internal data and user-defined
// data
if ( pvt ) {
if ( !thisCache[ internalKey ] ) {
thisCache[ internalKey ] = {};
}
thisCache = thisCache[ internalKey ];
}
if ( data !== undefined ) {
thisCache[ jQuery.camelCase( name ) ] = data;
}
// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
// not attempt to inspect the internal events object using jQuery.data, as this
// internal data object is undocumented and subject to change.
if ( name === "events" && !thisCache[name] ) {
return thisCache[ internalKey ] && thisCache[ internalKey ].events;
}
return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
},
removeData: function( elem, name, pvt /* Internal Use Only */ ) {
if ( !jQuery.acceptData( elem ) ) {
return;
}
var internalKey = jQuery.expando, isNode = elem.nodeType,
// See jQuery.data for more information
cache = isNode ? jQuery.cache : elem,
// See jQuery.data for more information
id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
// If there is already no cache entry for this object, there is no
// purpose in continuing
if ( !cache[ id ] ) {
return;
}
if ( name ) {
var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
if ( thisCache ) {
delete thisCache[ name ];
// If there is no data left in the cache, we want to continue
// and let the cache object itself get destroyed
if ( !isEmptyDataObject(thisCache) ) {
return;
}
}
}
// See jQuery.data for more information
if ( pvt ) {
delete cache[ id ][ internalKey ];
// Don't destroy the parent cache unless the internal data object
// had been the only thing left in it
if ( !isEmptyDataObject(cache[ id ]) ) {
return;
}
}
var internalCache = cache[ id ][ internalKey ];
// Browsers that fail expando deletion also refuse to delete expandos on
// the window, but it will allow it on all other JS objects; other browsers
// don't care
if ( jQuery.support.deleteExpando || cache != window ) {
delete cache[ id ];
} else {
cache[ id ] = null;
}
// We destroyed the entire user cache at once because it's faster than
// iterating through each key, but we need to continue to persist internal
// data if it existed
if ( internalCache ) {
cache[ id ] = {};
// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
// metadata on plain JS objects when the object is serialized using
// JSON.stringify
if ( !isNode ) {
cache[ id ].toJSON = jQuery.noop;
}
cache[ id ][ internalKey ] = internalCache;
// Otherwise, we need to eliminate the expando on the node to avoid
// false lookups in the cache for entries that no longer exist
} else if ( isNode ) {
// IE does not allow us to delete expando properties from nodes,
// nor does it have a removeAttribute function on Document nodes;
// we must handle all of these cases
if ( jQuery.support.deleteExpando ) {
delete elem[ jQuery.expando ];
} else if ( elem.removeAttribute ) {
elem.removeAttribute( jQuery.expando );
} else {
elem[ jQuery.expando ] = null;
}
}
},
// For internal use only.
_data: function( elem, name, data ) {
return jQuery.data( elem, name, data, true );
},
// A method for determining if a DOM node can handle the data expando
acceptData: function( elem ) {
if ( elem.nodeName ) {
var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
if ( match ) {
return !(match === true || elem.getAttribute("classid") !== match);
}
}
return true;
}
});
jQuery.fn.extend({
data: function( key, value ) {
var data = null;
if ( typeof key === "undefined" ) {
if ( this.length ) {
data = jQuery.data( this[0] );
if ( this[0].nodeType === 1 ) {
var attr = this[0].attributes, name;
for ( var i = 0, l = attr.length; i < l; i++ ) {
name = attr[i].name;
if ( name.indexOf( "data-" ) === 0 ) {
name = jQuery.camelCase( name.substring(5) );
dataAttr( this[0], name, data[ name ] );
}
}
}
}
return data;
} else if ( typeof key === "object" ) {
return this.each(function() {
jQuery.data( this, key );
});
}
var parts = key.split(".");
parts[1] = parts[1] ? "." + parts[1] : "";
if ( value === undefined ) {
data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
// Try to fetch any internally stored data first
if ( data === undefined && this.length ) {
data = jQuery.data( this[0], key );
data = dataAttr( this[0], key, data );
}
return data === undefined && parts[1] ?
this.data( parts[0] ) :
data;
} else {
return this.each(function() {
var $this = jQuery( this ),
args = [ parts[0], value ];
$this.triggerHandler( "setData" + parts[1] + "!", args );
jQuery.data( this, key, value );
$this.triggerHandler( "changeData" + parts[1] + "!", args );
});
}
},
removeData: function( key ) {
return this.each(function() {
jQuery.removeData( this, key );
});
}
});
function dataAttr( elem, key, data ) {
// If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute
if ( data === undefined && elem.nodeType === 1 ) {
var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
data = elem.getAttribute( name );
if ( typeof data === "string" ) {
try {
data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
!jQuery.isNaN( data ) ? parseFloat( data ) :
rbrace.test( data ) ? jQuery.parseJSON( data ) :
data;
} catch( e ) {}
// Make sure we set the data so it isn't changed later
jQuery.data( elem, key, data );
} else {
data = undefined;
}
}
return data;
}
// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
// property to be considered empty objects; this property always exists in
// order to make sure JSON.stringify does not expose internal metadata
function isEmptyDataObject( obj ) {
for ( var name in obj ) {
if ( name !== "toJSON" ) {
return false;
}
}
return true;
}
function handleQueueMarkDefer( elem, type, src ) {
var deferDataKey = type + "defer",
queueDataKey = type + "queue",
markDataKey = type + "mark",
defer = jQuery.data( elem, deferDataKey, undefined, true );
if ( defer &&
( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
// Give room for hard-coded callbacks to fire first
// and eventually mark/queue something else on the element
setTimeout( function() {
if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
!jQuery.data( elem, markDataKey, undefined, true ) ) {
jQuery.removeData( elem, deferDataKey, true );
defer.resolve();
}
}, 0 );
}
}
jQuery.extend({
_mark: function( elem, type ) {
if ( elem ) {
type = (type || "fx") + "mark";
jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
}
},
_unmark: function( force, elem, type ) {
if ( force !== true ) {
type = elem;
elem = force;
force = false;
}
if ( elem ) {
type = type || "fx";
var key = type + "mark",
count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
if ( count ) {
jQuery.data( elem, key, count, true );
} else {
jQuery.removeData( elem, key, true );
handleQueueMarkDefer( elem, type, "mark" );
}
}
},
queue: function( elem, type, data ) {
if ( elem ) {
type = (type || "fx") + "queue";
var q = jQuery.data( elem, type, undefined, true );
// Speed up dequeue by getting out quickly if this is just a lookup
if ( data ) {
if ( !q || jQuery.isArray(data) ) {
q = jQuery.data( elem, type, jQuery.makeArray(data), true );
} else {
q.push( data );
}
}
return q || [];
}
},
dequeue: function( elem, type ) {
type = type || "fx";
var queue = jQuery.queue( elem, type ),
fn = queue.shift(),
defer;
// If the fx queue is dequeued, always remove the progress sentinel
if ( fn === "inprogress" ) {
fn = queue.shift();
}
if ( fn ) {
// Add a progress sentinel to prevent the fx queue from being
// automatically dequeued
if ( type === "fx" ) {
queue.unshift("inprogress");
}
fn.call(elem, function() {
jQuery.dequeue(elem, type);
});
}
if ( !queue.length ) {
jQuery.removeData( elem, type + "queue", true );
handleQueueMarkDefer( elem, type, "queue" );
}
}
});
jQuery.fn.extend({
queue: function( type, data ) {
if ( typeof type !== "string" ) {
data = type;
type = "fx";
}
if ( data === undefined ) {
return jQuery.queue( this[0], type );
}
return this.each(function() {
var queue = jQuery.queue( this, type, data );
if ( type === "fx" && queue[0] !== "inprogress" ) {
jQuery.dequeue( this, type );
}
});
},
dequeue: function( type ) {
return this.each(function() {
jQuery.dequeue( this, type );
});
},
// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
type = type || "fx";
return this.queue( type, function() {
var elem = this;
setTimeout(function() {
jQuery.dequeue( elem, type );
}, time );
});
},
clearQueue: function( type ) {
return this.queue( type || "fx", [] );
},
// Get a promise resolved when queues of a certain type
// are emptied (fx is the type by default)
promise: function( type, object ) {
if ( typeof type !== "string" ) {
object = type;
type = undefined;
}
type = type || "fx";
var defer = jQuery.Deferred(),
elements = this,
i = elements.length,
count = 1,
deferDataKey = type + "defer",
queueDataKey = type + "queue",
markDataKey = type + "mark",
tmp;
function resolve() {
if ( !( --count ) ) {
defer.resolveWith( elements, [ elements ] );
}
}
while( i-- ) {
if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
count++;
tmp.done( resolve );
}
}
resolve();
return defer.promise();
}
});
var rclass = /[\n\t\r]/g,
rspace = /\s+/,
rreturn = /\r/g,
rtype = /^(?:button|input)$/i,
rfocusable = /^(?:button|input|object|select|textarea)$/i,
rclickable = /^a(?:rea)?$/i,
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
rinvalidChar = /\:/,
formHook, boolHook;
jQuery.fn.extend({
attr: function( name, value ) {
return jQuery.access( this, name, value, true, jQuery.attr );
},
removeAttr: function( name ) {
return this.each(function() {
jQuery.removeAttr( this, name );
});
},
prop: function( name, value ) {
return jQuery.access( this, name, value, true, jQuery.prop );
},
removeProp: function( name ) {
name = jQuery.propFix[ name ] || name;
return this.each(function() {
// try/catch handles cases where IE balks (such as removing a property on window)
try {
this[ name ] = undefined;
delete this[ name ];
} catch( e ) {}
});
},
addClass: function( value ) {
if ( jQuery.isFunction( value ) ) {
return this.each(function(i) {
var self = jQuery(this);
self.addClass( value.call(this, i, self.attr("class") || "") );
});
}
if ( value && typeof value === "string" ) {
var classNames = (value || "").split( rspace );
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 ) {
if ( !elem.className ) {
elem.className = value;
} else {
var className = " " + elem.className + " ",
setClass = elem.className;
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
setClass += " " + classNames[c];
}
}
elem.className = jQuery.trim( setClass );
}
}
}
}
return this;
},
removeClass: function( value ) {
if ( jQuery.isFunction(value) ) {
return this.each(function(i) {
var self = jQuery(this);
self.removeClass( value.call(this, i, self.attr("class")) );
});
}
if ( (value && typeof value === "string") || value === undefined ) {
var classNames = (value || "").split( rspace );
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 && elem.className ) {
if ( value ) {
var className = (" " + elem.className + " ").replace(rclass, " ");
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
className = className.replace(" " + classNames[c] + " ", " ");
}
elem.className = jQuery.trim( className );
} else {
elem.className = "";
}
}
}
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value,
isBool = typeof stateVal === "boolean";
if ( jQuery.isFunction( value ) ) {
return this.each(function(i) {
var self = jQuery(this);
self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
});
}
return this.each(function() {
if ( type === "string" ) {
// toggle individual class names
var className,
i = 0,
self = jQuery( this ),
state = stateVal,
classNames = value.split( rspace );
while ( (className = classNames[ i++ ]) ) {
// check each className given, space seperated list
state = isBool ? state : !self.hasClass( className );
self[ state ? "addClass" : "removeClass" ]( className );
}
} else if ( type === "undefined" || type === "boolean" ) {
if ( this.className ) {
// store className if set
jQuery._data( this, "__className__", this.className );
}
// toggle whole className
this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
}
});
},
hasClass: function( selector ) {
var className = " " + selector + " ";
for ( var i = 0, l = this.length; i < l; i++ ) {
if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
return true;
}
}
return false;
},
val: function( value ) {
var hooks, ret,
elem = this[0];
if ( !arguments.length ) {
if ( elem ) {
hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
return ret;
}
return (elem.value || "").replace(rreturn, "");
}
return undefined;
}
var isFunction = jQuery.isFunction( value );
return this.each(function( i ) {
var self = jQuery(this), val;
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
val = value.call( this, i, self.val() );
} else {
val = value;
}
// Treat null/undefined as ""; convert numbers to string
if ( val == null ) {
val = "";
} else if ( typeof val === "number" ) {
val += "";
} else if ( jQuery.isArray( val ) ) {
val = jQuery.map(val, function ( value ) {
return value == null ? "" : value + "";
});
}
hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
// If set returns undefined, fall back to normal setting
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
this.value = val;
}
});
}
});
jQuery.extend({
valHooks: {
option: {
get: function( elem ) {
// attributes.value is undefined in Blackberry 4.7 but
// uses .value. See #6932
var val = elem.attributes.value;
return !val || val.specified ? elem.value : elem.text;
}
},
select: {
get: function( elem ) {
var value,
index = elem.selectedIndex,
values = [],
options = elem.options,
one = elem.type === "select-one";
// Nothing was selected
if ( index < 0 ) {
return null;
}
// Loop through all the selected options
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
var option = options[ i ];
// Don't return options that are disabled or in a disabled optgroup
if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
// Get the specific value for the option
value = jQuery( option ).val();
// We don't need an array for one selects
if ( one ) {
return value;
}
// Multi-Selects return an array
values.push( value );
}
}
// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
if ( one && !values.length && options.length ) {
return jQuery( options[ index ] ).val();
}
return values;
},
set: function( elem, value ) {
var values = jQuery.makeArray( value );
jQuery(elem).find("option").each(function() {
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
elem.selectedIndex = -1;
}
return values;
}
}
},
attrFn: {
val: true,
css: true,
html: true,
text: true,
data: true,
width: true,
height: true,
offset: true
},
attrFix: {
// Always normalize to ensure hook usage
tabindex: "tabIndex"
},
attr: function( elem, name, value, pass ) {
var nType = elem.nodeType;
// don't get/set attributes on text, comment and attribute nodes
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return undefined;
}
if ( pass && name in jQuery.attrFn ) {
return jQuery( elem )[ name ]( value );
}
// Fallback to prop when attributes are not supported
if ( !("getAttribute" in elem) ) {
return jQuery.prop( elem, name, value );
}
var ret, hooks,
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
// Normalize the name if needed
name = notxml && jQuery.attrFix[ name ] || name;
hooks = jQuery.attrHooks[ name ];
if ( !hooks ) {
// Use boolHook for boolean attributes
if ( rboolean.test( name ) &&
(typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
hooks = boolHook;
// Use formHook for forms and if the name contains certain characters
} else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
hooks = formHook;
}
}
if ( value !== undefined ) {
if ( value === null ) {
jQuery.removeAttr( elem, name );
return undefined;
} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
return ret;
} else {
elem.setAttribute( name, "" + value );
return value;
}
} else if ( hooks && "get" in hooks && notxml ) {
return hooks.get( elem, name );
} else {
ret = elem.getAttribute( name );
// Non-existent attributes return null, we normalize to undefined
return ret === null ?
undefined :
ret;
}
},
removeAttr: function( elem, name ) {
var propName;
if ( elem.nodeType === 1 ) {
name = jQuery.attrFix[ name ] || name;
if ( jQuery.support.getSetAttribute ) {
// Use removeAttribute in browsers that support it
elem.removeAttribute( name );
} else {
jQuery.attr( elem, name, "" );
elem.removeAttributeNode( elem.getAttributeNode( name ) );
}
// Set corresponding property to false for boolean attributes
if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
elem[ propName ] = false;
}
}
},
attrHooks: {
type: {
set: function( elem, value ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
jQuery.error( "type property can't be changed" );
} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
// Setting the type on a radio button after the value resets the value in IE6-9
// Reset value to it's default in case type is set after value
// This is for element creation
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
},
tabIndex: {
get: function( elem ) {
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
var attributeNode = elem.getAttributeNode("tabIndex");
return attributeNode && attributeNode.specified ?
parseInt( attributeNode.value, 10 ) :
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
0 :
undefined;
}
}
},
propFix: {
tabindex: "tabIndex",
readonly: "readOnly",
"for": "htmlFor",
"class": "className",
maxlength: "maxLength",
cellspacing: "cellSpacing",
cellpadding: "cellPadding",
rowspan: "rowSpan",
colspan: "colSpan",
usemap: "useMap",
frameborder: "frameBorder",
contenteditable: "contentEditable"
},
prop: function( elem, name, value ) {
var nType = elem.nodeType;
// don't get/set properties on text, comment and attribute nodes
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return undefined;
}
var ret, hooks,
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
// Try to normalize/fix the name
name = notxml && jQuery.propFix[ name ] || name;
hooks = jQuery.propHooks[ name ];
if ( value !== undefined ) {
if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
return ret;
} else {
return (elem[ name ] = value);
}
} else {
if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
return ret;
} else {
return elem[ name ];
}
}
},
propHooks: {}
});
// Hook for boolean attributes
boolHook = {
get: function( elem, name ) {
// Align boolean attributes with corresponding properties
return elem[ jQuery.propFix[ name ] || name ] ?
name.toLowerCase() :
undefined;
},
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// value is true since we know at this point it's type boolean and not false
// Set boolean attributes to the same name and set the DOM property
propName = jQuery.propFix[ name ] || name;
if ( propName in elem ) {
// Only set the IDL specifically if it already exists on the element
elem[ propName ] = value;
}
elem.setAttribute( name, name.toLowerCase() );
}
return name;
}
};
// Use the value property for back compat
// Use the formHook for button elements in IE6/7 (#1954)
jQuery.attrHooks.value = {
get: function( elem, name ) {
if ( formHook && jQuery.nodeName( elem, "button" ) ) {
return formHook.get( elem, name );
}
return elem.value;
},
set: function( elem, value, name ) {
if ( formHook && jQuery.nodeName( elem, "button" ) ) {
return formHook.set( elem, value, name );
}
// Does not return so that setAttribute is also used
elem.value = value;
}
};
// IE6/7 do not support getting/setting some attributes with get/setAttribute
if ( !jQuery.support.getSetAttribute ) {
// propFix is more comprehensive and contains all fixes
jQuery.attrFix = jQuery.propFix;
// Use this for any attribute on a form in IE6/7
formHook = jQuery.attrHooks.name = jQuery.valHooks.button = {
get: function( elem, name ) {
var ret;
ret = elem.getAttributeNode( name );
// Return undefined if nodeValue is empty string
return ret && ret.nodeValue !== "" ?
ret.nodeValue :
undefined;
},
set: function( elem, value, name ) {
// Check form objects in IE (multiple bugs related)
// Only use nodeValue if the attribute node exists on the form
var ret = elem.getAttributeNode( name );
if ( ret ) {
ret.nodeValue = value;
return value;
}
}
};
// Set width and height to auto instead of 0 on empty string( Bug #8150 )
// This is for removals
jQuery.each([ "width", "height" ], function( i, name ) {
jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
set: function( elem, value ) {
if ( value === "" ) {
elem.setAttribute( name, "auto" );
return value;
}
}
});
});
}
// Some attributes require a special call on IE
if ( !jQuery.support.hrefNormalized ) {
jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
get: function( elem ) {
var ret = elem.getAttribute( name, 2 );
return ret === null ? undefined : ret;
}
});
});
}
if ( !jQuery.support.style ) {
jQuery.attrHooks.style = {
get: function( elem ) {
// Return undefined in the case of empty string
// Normalize to lowercase since IE uppercases css property names
return elem.style.cssText.toLowerCase() || undefined;
},
set: function( elem, value ) {
return (elem.style.cssText = "" + value);
}
};
}
// Safari mis-reports the default selected property of an option
// Accessing the parent's selectedIndex property fixes it
if ( !jQuery.support.optSelected ) {
jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
get: function( elem ) {
var parent = elem.parentNode;
if ( parent ) {
parent.selectedIndex;
// Make sure that it also works with optgroups, see #5701
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
}
}
}
});
}
// Radios and checkboxes getter/setter
if ( !jQuery.support.checkOn ) {
jQuery.each([ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = {
get: function( elem ) {
// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
return elem.getAttribute("value") === null ? "on" : elem.value;
}
};
});
}
jQuery.each([ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
set: function( elem, value ) {
if ( jQuery.isArray( value ) ) {
return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
}
}
});
});
var hasOwn = Object.prototype.hasOwnProperty,
rnamespaces = /\.(.*)$/,
rformElems = /^(?:textarea|input|select)$/i,
rperiod = /\./g,
rspaces = / /g,
rescape = /[^\w\s.|`]/g,
fcleanup = function( nm ) {
return nm.replace(rescape, "\\$&");
};
/*
* A number of helper functions used for managing events.
* Many of the ideas behind this code originated from
* Dean Edwards' addEvent library.
*/
jQuery.event = {
// Bind an event to an element
// Original by Dean Edwards
add: function( elem, types, handler, data ) {
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
return;
}
if ( handler === false ) {
handler = returnFalse;
} else if ( !handler ) {
// Fixes bug #7229. Fix recommended by jdalton
return;
}
var handleObjIn, handleObj;
if ( handler.handler ) {
handleObjIn = handler;
handler = handleObjIn.handler;
}
// Make sure that the function being executed has a unique ID
if ( !handler.guid ) {
handler.guid = jQuery.guid++;
}
// Init the element's event structure
var elemData = jQuery._data( elem );
// If no elemData is found then we must be trying to bind to one of the
// banned noData elements
if ( !elemData ) {
return;
}
var events = elemData.events,
eventHandle = elemData.handle;
if ( !events ) {
elemData.events = events = {};
}
if ( !eventHandle ) {
elemData.handle = eventHandle = function( e ) {
// Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded
return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
jQuery.event.handle.apply( eventHandle.elem, arguments ) :
undefined;
};
}
// Add elem as a property of the handle function
// This is to prevent a memory leak with non-native events in IE.
eventHandle.elem = elem;
// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = types.split(" ");
var type, i = 0, namespaces;
while ( (type = types[ i++ ]) ) {
handleObj = handleObjIn ?
jQuery.extend({}, handleObjIn) :
{ handler: handler, data: data };
// Namespaced event handlers
if ( type.indexOf(".") > -1 ) {
namespaces = type.split(".");
type = namespaces.shift();
handleObj.namespace = namespaces.slice(0).sort().join(".");
} else {
namespaces = [];
handleObj.namespace = "";
}
handleObj.type = type;
if ( !handleObj.guid ) {
handleObj.guid = handler.guid;
}
// Get the current list of functions bound to this event
var handlers = events[ type ],
special = jQuery.event.special[ type ] || {};
// Init the event handler queue
if ( !handlers ) {
handlers = events[ type ] = [];
// Check for a special event handler
// Only use addEventListener/attachEvent if the special
// events handler returns false
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
// Bind the global event handler to the element
if ( elem.addEventListener ) {
elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, eventHandle );
}
}
}
if ( special.add ) {
special.add.call( elem, handleObj );
if ( !handleObj.handler.guid ) {
handleObj.handler.guid = handler.guid;
}
}
// Add the function to the element's handler list
handlers.push( handleObj );
// Keep track of which events have been used, for event optimization
jQuery.event.global[ type ] = true;
}
// Nullify elem to prevent memory leaks in IE
elem = null;
},
global: {},
// Detach an event or set of events from an element
remove: function( elem, types, handler, pos ) {
// don't do events on text and comment nodes
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
return;
}
if ( handler === false ) {
handler = returnFalse;
}
var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
events = elemData && elemData.events;
if ( !elemData || !events ) {
return;
}
// types is actually an event object here
if ( types && types.type ) {
handler = types.handler;
types = types.type;
}
// Unbind all events for the element
if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
types = types || "";
for ( type in events ) {
jQuery.event.remove( elem, type + types );
}
return;
}
// Handle multiple events separated by a space
// jQuery(...).unbind("mouseover mouseout", fn);
types = types.split(" ");
while ( (type = types[ i++ ]) ) {
origType = type;
handleObj = null;
all = type.indexOf(".") < 0;
namespaces = [];
if ( !all ) {
// Namespaced event handlers
namespaces = type.split(".");
type = namespaces.shift();
namespace = new RegExp("(^|\\.)" +
jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
}
eventType = events[ type ];
if ( !eventType ) {
continue;
}
if ( !handler ) {
for ( j = 0; j < eventType.length; j++ ) {
handleObj = eventType[ j ];
if ( all || namespace.test( handleObj.namespace ) ) {
jQuery.event.remove( elem, origType, handleObj.handler, j );
eventType.splice( j--, 1 );
}
}
continue;
}
special = jQuery.event.special[ type ] || {};
for ( j = pos || 0; j < eventType.length; j++ ) {
handleObj = eventType[ j ];
if ( handler.guid === handleObj.guid ) {
// remove the given handler for the given type
if ( all || namespace.test( handleObj.namespace ) ) {
if ( pos == null ) {
eventType.splice( j--, 1 );
}
if ( special.remove ) {
special.remove.call( elem, handleObj );
}
}
if ( pos != null ) {
break;
}
}
}
// remove generic event handler if no more handlers exist
if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
jQuery.removeEvent( elem, type, elemData.handle );
}
ret = null;
delete events[ type ];
}
}
// Remove the expando if it's no longer used
if ( jQuery.isEmptyObject( events ) ) {
var handle = elemData.handle;
if ( handle ) {
handle.elem = null;
}
delete elemData.events;
delete elemData.handle;
if ( jQuery.isEmptyObject( elemData ) ) {
jQuery.removeData( elem, undefined, true );
}
}
},
// Events that are safe to short-circuit if no handlers are attached.
// Native DOM events should not be added, they may have inline handlers.
customEvent: {
"getData": true,
"setData": true,
"changeData": true
},
trigger: function( event, data, elem, onlyHandlers ) {
// Event object or event type
var type = event.type || event,
namespaces = [],
exclusive;
if ( type.indexOf("!") >= 0 ) {
// Exclusive events trigger only for the exact event (no namespaces)
type = type.slice(0, -1);
exclusive = true;
}
if ( type.indexOf(".") >= 0 ) {
// Namespaced trigger; create a regexp to match event type in handle()
namespaces = type.split(".");
type = namespaces.shift();
namespaces.sort();
}
if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
// No jQuery handlers for this event type, and it can't have inline handlers
return;
}
// Caller can pass in an Event, Object, or just an event type string
event = typeof event === "object" ?
// jQuery.Event object
event[ jQuery.expando ] ? event :
// Object literal
new jQuery.Event( type, event ) :
// Just the event type (string)
new jQuery.Event( type );
event.type = type;
event.exclusive = exclusive;
event.namespace = namespaces.join(".");
event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
// triggerHandler() and global events don't bubble or run the default action
if ( onlyHandlers || !elem ) {
event.preventDefault();
event.stopPropagation();
}
// Handle a global trigger
if ( !elem ) {
// TODO: Stop taunting the data cache; remove global events and always attach to document
jQuery.each( jQuery.cache, function() {
// internalKey variable is just used to make it easier to find
// and potentially change this stuff later; currently it just
// points to jQuery.expando
var internalKey = jQuery.expando,
internalCache = this[ internalKey ];
if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
jQuery.event.trigger( event, data, internalCache.handle.elem );
}
});
return;
}
// Don't do events on text and comment nodes
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
return;
}
// Clean up the event in case it is being reused
event.result = undefined;
event.target = elem;
// Clone any incoming data and prepend the event, creating the handler arg list
data = data ? jQuery.makeArray( data ) : [];
data.unshift( event );
var cur = elem,
// IE doesn't like method names with a colon (#3533, #8272)
ontype = type.indexOf(":") < 0 ? "on" + type : "";
// Fire event on the current element, then bubble up the DOM tree
do {
var handle = jQuery._data( cur, "handle" );
event.currentTarget = cur;
if ( handle ) {
handle.apply( cur, data );
}
// Trigger an inline bound script
if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
event.result = false;
event.preventDefault();
}
// Bubble up to document, then to window
cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
} while ( cur && !event.isPropagationStopped() );
// If nobody prevented the default action, do it now
if ( !event.isDefaultPrevented() ) {
var old,
special = jQuery.event.special[ type ] || {};
if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
// Call a native DOM method on the target with the same name name as the event.
// Can't use an .isFunction)() check here because IE6/7 fails that test.
// IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
try {
if ( ontype && elem[ type ] ) {
// Don't re-trigger an onFOO event when we call its FOO() method
old = elem[ ontype ];
if ( old ) {
elem[ ontype ] = null;
}
jQuery.event.triggered = type;
elem[ type ]();
}
} catch ( ieError ) {}
if ( old ) {
elem[ ontype ] = old;
}
jQuery.event.triggered = undefined;
}
}
return event.result;
},
handle: function( event ) {
event = jQuery.event.fix( event || window.event );
// Snapshot the handlers list since a called handler may add/remove events.
var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
run_all = !event.exclusive && !event.namespace,
args = Array.prototype.slice.call( arguments, 0 );
// Use the fix-ed Event rather than the (read-only) native event
args[0] = event;
event.currentTarget = this;
for ( var j = 0, l = handlers.length; j < l; j++ ) {
var handleObj = handlers[ j ];
// Triggered event must 1) be non-exclusive and have no namespace, or
// 2) have namespace(s) a subset or equal to those in the bound event.
if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
// Pass in a reference to the handler function itself
// So that we can later remove it
event.handler = handleObj.handler;
event.data = handleObj.data;
event.handleObj = handleObj;
var ret = handleObj.handler.apply( this, args );
if ( ret !== undefined ) {
event.result = ret;
if ( ret === false ) {
event.preventDefault();
event.stopPropagation();
}
}
if ( event.isImmediatePropagationStopped() ) {
break;
}
}
}
return event.result;
},
props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix: function( event ) {
if ( event[ jQuery.expando ] ) {
return event;
}
// store a copy of the original event object
// and "clone" to set read-only properties
var originalEvent = event;
event = jQuery.Event( originalEvent );
for ( var i = this.props.length, prop; i; ) {
prop = this.props[ --i ];
event[ prop ] = originalEvent[ prop ];
}
// Fix target property, if necessary
if ( !event.target ) {
// Fixes #1925 where srcElement might not be defined either
event.target = event.srcElement || document;
}
// check if target is a textnode (safari)
if ( event.target.nodeType === 3 ) {
event.target = event.target.parentNode;
}
// Add relatedTarget, if necessary
if ( !event.relatedTarget && event.fromElement ) {
event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
}
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
var eventDocument = event.target.ownerDocument || document,
doc = eventDocument.documentElement,
body = eventDocument.body;
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
}
// Add which for key events
if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
event.which = event.charCode != null ? event.charCode : event.keyCode;
}
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
if ( !event.metaKey && event.ctrlKey ) {
event.metaKey = event.ctrlKey;
}
// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && event.button !== undefined ) {
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
}
return event;
},
// Deprecated, use jQuery.guid instead
guid: 1E8,
// Deprecated, use jQuery.proxy instead
proxy: jQuery.proxy,
special: {
ready: {
// Make sure the ready event is setup
setup: jQuery.bindReady,
teardown: jQuery.noop
},
live: {
add: function( handleObj ) {
jQuery.event.add( this,
liveConvert( handleObj.origType, handleObj.selector ),
jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
},
remove: function( handleObj ) {
jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
}
},
beforeunload: {
setup: function( data, namespaces, eventHandle ) {
// We only want to do this special case on windows
if ( jQuery.isWindow( this ) ) {
this.onbeforeunload = eventHandle;
}
},
teardown: function( namespaces, eventHandle ) {
if ( this.onbeforeunload === eventHandle ) {
this.onbeforeunload = null;
}
}
}
}
};
jQuery.removeEvent = document.removeEventListener ?
function( elem, type, handle ) {
if ( elem.removeEventListener ) {
elem.removeEventListener( type, handle, false );
}
} :
function( elem, type, handle ) {
if ( elem.detachEvent ) {
elem.detachEvent( "on" + type, handle );
}
};
jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword
if ( !this.preventDefault ) {
return new jQuery.Event( src, props );
}
// Event object
if ( src && src.type ) {
this.originalEvent = src;
this.type = src.type;
// Events bubbling up the document may have been marked as prevented
// by a handler lower down the tree; reflect the correct value.
this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
// Event type
} else {
this.type = src;
}
// Put explicitly provided properties onto the event object
if ( props ) {
jQuery.extend( this, props );
}
// timeStamp is buggy for some events on Firefox(#3843)
// So we won't rely on the native value
this.timeStamp = jQuery.now();
// Mark it as fixed
this[ jQuery.expando ] = true;
};
function returnFalse() {
return false;
}
function returnTrue() {
return true;
}
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
jQuery.Event.prototype = {
preventDefault: function() {
this.isDefaultPrevented = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if preventDefault exists run it on the original event
if ( e.preventDefault ) {
e.preventDefault();
// otherwise set the returnValue property of the original event to false (IE)
} else {
e.returnValue = false;
}
},
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if stopPropagation exists run it on the original event
if ( e.stopPropagation ) {
e.stopPropagation();
}
// otherwise set the cancelBubble property of the original event to true (IE)
e.cancelBubble = true;
},
stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
},
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse
};
// Checks if an event happened on an element within another element
// Used in jQuery.event.special.mouseenter and mouseleave handlers
var withinElement = function( event ) {
// Check if mouse(over|out) are still within the same parent element
var parent = event.relatedTarget;
// set the correct event type
event.type = event.data;
// Firefox sometimes assigns relatedTarget a XUL element
// which we cannot access the parentNode property of
try {
// Chrome does something similar, the parentNode property
// can be accessed but is null.
if ( parent && parent !== document && !parent.parentNode ) {
return;
}
// Traverse up the tree
while ( parent && parent !== this ) {
parent = parent.parentNode;
}
if ( parent !== this ) {
// handle event if we actually just moused on to a non sub-element
jQuery.event.handle.apply( this, arguments );
}
// assuming we've left the element since we most likely mousedover a xul element
} catch(e) { }
},
// In case of event delegation, we only need to rename the event.type,
// liveHandler will take care of the rest.
delegate = function( event ) {
event.type = event.data;
jQuery.event.handle.apply( this, arguments );
};
// Create mouseenter and mouseleave events
jQuery.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function( orig, fix ) {
jQuery.event.special[ orig ] = {
setup: function( data ) {
jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
},
teardown: function( data ) {
jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
}
};
});
// submit delegation
if ( !jQuery.support.submitBubbles ) {
jQuery.event.special.submit = {
setup: function( data, namespaces ) {
if ( !jQuery.nodeName( this, "form" ) ) {
jQuery.event.add(this, "click.specialSubmit", function( e ) {
var elem = e.target,
type = elem.type;
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
trigger( "submit", this, arguments );
}
});
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
var elem = e.target,
type = elem.type;
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
trigger( "submit", this, arguments );
}
});
} else {
return false;
}
},
teardown: function( namespaces ) {
jQuery.event.remove( this, ".specialSubmit" );
}
};
}
// change delegation, happens here so we have bind.
if ( !jQuery.support.changeBubbles ) {
var changeFilters,
getVal = function( elem ) {
var type = elem.type, val = elem.value;
if ( type === "radio" || type === "checkbox" ) {
val = elem.checked;
} else if ( type === "select-multiple" ) {
val = elem.selectedIndex > -1 ?
jQuery.map( elem.options, function( elem ) {
return elem.selected;
}).join("-") :
"";
} else if ( jQuery.nodeName( elem, "select" ) ) {
val = elem.selectedIndex;
}
return val;
},
testChange = function testChange( e ) {
var elem = e.target, data, val;
if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
return;
}
data = jQuery._data( elem, "_change_data" );
val = getVal(elem);
// the current data will be also retrieved by beforeactivate
if ( e.type !== "focusout" || elem.type !== "radio" ) {
jQuery._data( elem, "_change_data", val );
}
if ( data === undefined || val === data ) {
return;
}
if ( data != null || val ) {
e.type = "change";
e.liveFired = undefined;
jQuery.event.trigger( e, arguments[1], elem );
}
};
jQuery.event.special.change = {
filters: {
focusout: testChange,
beforedeactivate: testChange,
click: function( e ) {
var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
testChange.call( this, e );
}
},
// Change has to be called before submit
// Keydown will be called before keypress, which is used in submit-event delegation
keydown: function( e ) {
var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
type === "select-multiple" ) {
testChange.call( this, e );
}
},
// Beforeactivate happens also before the previous element is blurred
// with this event you can't trigger a change event, but you can store
// information
beforeactivate: function( e ) {
var elem = e.target;
jQuery._data( elem, "_change_data", getVal(elem) );
}
},
setup: function( data, namespaces ) {
if ( this.type === "file" ) {
return false;
}
for ( var type in changeFilters ) {
jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
}
return rformElems.test( this.nodeName );
},
teardown: function( namespaces ) {
jQuery.event.remove( this, ".specialChange" );
return rformElems.test( this.nodeName );
}
};
changeFilters = jQuery.event.special.change.filters;
// Handle when the input is .focus()'d
changeFilters.focus = changeFilters.beforeactivate;
}
function trigger( type, elem, args ) {
// Piggyback on a donor event to simulate a different one.
// Fake originalEvent to avoid donor's stopPropagation, but if the
// simulated event prevents default then we do the same on the donor.
// Don't pass args or remember liveFired; they apply to the donor event.
var event = jQuery.extend( {}, args[ 0 ] );
event.type = type;
event.originalEvent = {};
event.liveFired = undefined;
jQuery.event.handle.call( elem, event );
if ( event.isDefaultPrevented() ) {
args[ 0 ].preventDefault();
}
}
// Create "bubbling" focus and blur events
if ( !jQuery.support.focusinBubbles ) {
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
// Attach a single capturing handler while someone wants focusin/focusout
var attaches = 0;
jQuery.event.special[ fix ] = {
setup: function() {
if ( attaches++ === 0 ) {
document.addEventListener( orig, handler, true );
}
},
teardown: function() {
if ( --attaches === 0 ) {
document.removeEventListener( orig, handler, true );
}
}
};
function handler( donor ) {
// Donor event is always a native one; fix it and switch its type.
// Let focusin/out handler cancel the donor focus/blur event.
var e = jQuery.event.fix( donor );
e.type = fix;
e.originalEvent = {};
jQuery.event.trigger( e, null, e.target );
if ( e.isDefaultPrevented() ) {
donor.preventDefault();
}
}
});
}
jQuery.each(["bind", "one"], function( i, name ) {
jQuery.fn[ name ] = function( type, data, fn ) {
var handler;
// Handle object literals
if ( typeof type === "object" ) {
for ( var key in type ) {
this[ name ](key, data, type[key], fn);
}
return this;
}
if ( arguments.length === 2 || data === false ) {
fn = data;
data = undefined;
}
if ( name === "one" ) {
handler = function( event ) {
jQuery( this ).unbind( event, handler );
return fn.apply( this, arguments );
};
handler.guid = fn.guid || jQuery.guid++;
} else {
handler = fn;
}
if ( type === "unload" && name !== "one" ) {
this.one( type, data, fn );
} else {
for ( var i = 0, l = this.length; i < l; i++ ) {
jQuery.event.add( this[i], type, handler, data );
}
}
return this;
};
});
jQuery.fn.extend({
unbind: function( type, fn ) {
// Handle object literals
if ( typeof type === "object" && !type.preventDefault ) {
for ( var key in type ) {
this.unbind(key, type[key]);
}
} else {
for ( var i = 0, l = this.length; i < l; i++ ) {
jQuery.event.remove( this[i], type, fn );
}
}
return this;
},
delegate: function( selector, types, data, fn ) {
return this.live( types, data, fn, selector );
},
undelegate: function( selector, types, fn ) {
if ( arguments.length === 0 ) {
return this.unbind( "live" );
} else {
return this.die( types, null, fn, selector );
}
},
trigger: function( type, data ) {
return this.each(function() {
jQuery.event.trigger( type, data, this );
});
},
triggerHandler: function( type, data ) {
if ( this[0] ) {
return jQuery.event.trigger( type, data, this[0], true );
}
},
toggle: function( fn ) {
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
},
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
});
var liveMap = {
focus: "focusin",
blur: "focusout",
mouseenter: "mouseover",
mouseleave: "mouseout"
};
jQuery.each(["live", "die"], function( i, name ) {
jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
var type, i = 0, match, namespaces, preType,
selector = origSelector || this.selector,
context = origSelector ? this : jQuery( this.context );
if ( typeof types === "object" && !types.preventDefault ) {
for ( var key in types ) {
context[ name ]( key, data, types[key], selector );
}
return this;
}
if ( name === "die" && !types &&
origSelector && origSelector.charAt(0) === "." ) {
context.unbind( origSelector );
return this;
}
if ( data === false || jQuery.isFunction( data ) ) {
fn = data || returnFalse;
data = undefined;
}
types = (types || "").split(" ");
while ( (type = types[ i++ ]) != null ) {
match = rnamespaces.exec( type );
namespaces = "";
if ( match ) {
namespaces = match[0];
type = type.replace( rnamespaces, "" );
}
if ( type === "hover" ) {
types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
continue;
}
preType = type;
if ( liveMap[ type ] ) {
types.push( liveMap[ type ] + namespaces );
type = type + namespaces;
} else {
type = (liveMap[ type ] || type) + namespaces;
}
if ( name === "live" ) {
// bind live handler
for ( var j = 0, l = context.length; j < l; j++ ) {
jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
}
} else {
// unbind live handler
context.unbind( "live." + liveConvert( type, selector ), fn );
}
}
return this;
};
});
function liveHandler( event ) {
var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
elems = [],
selectors = [],
events = jQuery._data( this, "events" );
// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
return;
}
if ( event.namespace ) {
namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
}
event.liveFired = this;
var live = events.live.slice(0);
for ( j = 0; j < live.length; j++ ) {
handleObj = live[j];
if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
selectors.push( handleObj.selector );
} else {
live.splice( j--, 1 );
}
}
match = jQuery( event.target ).closest( selectors, event.currentTarget );
for ( i = 0, l = match.length; i < l; i++ ) {
close = match[i];
for ( j = 0; j < live.length; j++ ) {
handleObj = live[j];
if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
elem = close.elem;
related = null;
// Those two events require additional checking
if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
event.type = handleObj.preType;
related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
// Make sure not to accidentally match a child element with the same selector
if ( related && jQuery.contains( elem, related ) ) {
related = elem;
}
}
if ( !related || related !== elem ) {
elems.push({ elem: elem, handleObj: handleObj, level: close.level });
}
}
}
}
for ( i = 0, l = elems.length; i < l; i++ ) {
match = elems[i];
if ( maxLevel && match.level > maxLevel ) {
break;
}
event.currentTarget = match.elem;
event.data = match.handleObj.data;
event.handleObj = match.handleObj;
ret = match.handleObj.origHandler.apply( match.elem, arguments );
if ( ret === false || event.isPropagationStopped() ) {
maxLevel = match.level;
if ( ret === false ) {
stop = false;
}
if ( event.isImmediatePropagationStopped() ) {
break;
}
}
}
return stop;
}
function liveConvert( type, selector ) {
return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
}
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup error").split(" "), function( i, name ) {
// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
if ( fn == null ) {
fn = data;
data = null;
}
return arguments.length > 0 ?
this.bind( name, data, fn ) :
this.trigger( name );
};
if ( jQuery.attrFn ) {
jQuery.attrFn[ name ] = true;
}
});
/*!
* Sizzle CSS Selector Engine
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
baseHasDuplicate = true,
rBackslash = /\\/g,
rNonWord = /\W/;
// Here we check if the JavaScript engine is using some sort of
// optimization where it does not always call our comparision
// function. If that is the case, discard the hasDuplicate value.
// Thus far that includes Google Chrome.
[0, 0].sort(function() {
baseHasDuplicate = false;
return 0;
});
var Sizzle = function( selector, context, results, seed ) {
results = results || [];
context = context || document;
var origContext = context;
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
}
if ( !selector || typeof selector !== "string" ) {
return results;
}
var m, set, checkSet, extra, ret, cur, pop, i,
prune = true,
contextXML = Sizzle.isXML( context ),
parts = [],
soFar = selector;
// Reset the position of the chunker regexp (start from head)
do {
chunker.exec( "" );
m = chunker.exec( soFar );
if ( m ) {
soFar = m[3];
parts.push( m[1] );
if ( m[2] ) {
extra = m[3];
break;
}
}
} while ( m );
if ( parts.length > 1 && origPOS.exec( selector ) ) {
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
set = posProcess( parts[0] + parts[1], context );
} else {
set = Expr.relative[ parts[0] ] ?
[ context ] :
Sizzle( parts.shift(), context );
while ( parts.length ) {
selector = parts.shift();
if ( Expr.relative[ selector ] ) {
selector += parts.shift();
}
set = posProcess( selector, set );
}
}
} else {
// Take a shortcut and set the context if the root selector is an ID
// (but not if it'll be faster if the inner selector is an ID)
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
ret = Sizzle.find( parts.shift(), context, contextXML );
context = ret.expr ?
Sizzle.filter( ret.expr, ret.set )[0] :
ret.set[0];
}
if ( context ) {
ret = seed ?
{ expr: parts.pop(), set: makeArray(seed) } :
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
set = ret.expr ?
Sizzle.filter( ret.expr, ret.set ) :
ret.set;
if ( parts.length > 0 ) {
checkSet = makeArray( set );
} else {
prune = false;
}
while ( parts.length ) {
cur = parts.pop();
pop = cur;
if ( !Expr.relative[ cur ] ) {
cur = "";
} else {
pop = parts.pop();
}
if ( pop == null ) {
pop = context;
}
Expr.relative[ cur ]( checkSet, pop, contextXML );
}
} else {
checkSet = parts = [];
}
}
if ( !checkSet ) {
checkSet = set;
}
if ( !checkSet ) {
Sizzle.error( cur || selector );
}
if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
} else if ( context && context.nodeType === 1 ) {
for ( i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
results.push( set[i] );
}
}
} else {
for ( i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
results.push( set[i] );
}
}
}
} else {
makeArray( checkSet, results );
}
if ( extra ) {
Sizzle( extra, origContext, results, seed );
Sizzle.uniqueSort( results );
}
return results;
};
Sizzle.uniqueSort = function( results ) {
if ( sortOrder ) {
hasDuplicate = baseHasDuplicate;
results.sort( sortOrder );
if ( hasDuplicate ) {
for ( var i = 1; i < results.length; i++ ) {
if ( results[i] === results[ i - 1 ] ) {
results.splice( i--, 1 );
}
}
}
}
return results;
};
Sizzle.matches = function( expr, set ) {
return Sizzle( expr, null, null, set );
};
Sizzle.matchesSelector = function( node, expr ) {
return Sizzle( expr, null, null, [node] ).length > 0;
};
Sizzle.find = function( expr, context, isXML ) {
var set;
if ( !expr ) {
return [];
}
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
var match,
type = Expr.order[i];
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
var left = match[1];
match.splice( 1, 1 );
if ( left.substr( left.length - 1 ) !== "\\" ) {
match[1] = (match[1] || "").replace( rBackslash, "" );
set = Expr.find[ type ]( match, context, isXML );
if ( set != null ) {
expr = expr.replace( Expr.match[ type ], "" );
break;
}
}
}
}
if ( !set ) {
set = typeof context.getElementsByTagName !== "undefined" ?
context.getElementsByTagName( "*" ) :
[];
}
return { set: set, expr: expr };
};
Sizzle.filter = function( expr, set, inplace, not ) {
var match, anyFound,
old = expr,
result = [],
curLoop = set,
isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
while ( expr && set.length ) {
for ( var type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
var found, item,
filter = Expr.filter[ type ],
left = match[1];
anyFound = false;
match.splice(1,1);
if ( left.substr( left.length - 1 ) === "\\" ) {
continue;
}
if ( curLoop === result ) {
result = [];
}
if ( Expr.preFilter[ type ] ) {
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
if ( !match ) {
anyFound = found = true;
} else if ( match === true ) {
continue;
}
}
if ( match ) {
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
if ( item ) {
found = filter( item, match, i, curLoop );
var pass = not ^ !!found;
if ( inplace && found != null ) {
if ( pass ) {
anyFound = true;
} else {
curLoop[i] = false;
}
} else if ( pass ) {
result.push( item );
anyFound = true;
}
}
}
}
if ( found !== undefined ) {
if ( !inplace ) {
curLoop = result;
}
expr = expr.replace( Expr.match[ type ], "" );
if ( !anyFound ) {
return [];
}
break;
}
}
}
// Improper expression
if ( expr === old ) {
if ( anyFound == null ) {
Sizzle.error( expr );
} else {
break;
}
}
old = expr;
}
return curLoop;
};
Sizzle.error = function( msg ) {
throw "Syntax error, unrecognized expression: " + msg;
};
var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
match: {
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
},
leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function( elem ) {
return elem.getAttribute( "href" );
},
type: function( elem ) {
return elem.getAttribute( "type" );
}
},
relative: {
"+": function(checkSet, part){
var isPartStr = typeof part === "string",
isTag = isPartStr && !rNonWord.test( part ),
isPartStrNotTag = isPartStr && !isTag;
if ( isTag ) {
part = part.toLowerCase();
}
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
if ( (elem = checkSet[i]) ) {
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
elem || false :
elem === part;
}
}
if ( isPartStrNotTag ) {
Sizzle.filter( part, checkSet, true );
}
},
">": function( checkSet, part ) {
var elem,
isPartStr = typeof part === "string",
i = 0,
l = checkSet.length;
if ( isPartStr && !rNonWord.test( part ) ) {
part = part.toLowerCase();
for ( ; i < l; i++ ) {
elem = checkSet[i];
if ( elem ) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
}
}
} else {
for ( ; i < l; i++ ) {
elem = checkSet[i];
if ( elem ) {
checkSet[i] = isPartStr ?
elem.parentNode :
elem.parentNode === part;
}
}
if ( isPartStr ) {
Sizzle.filter( part, checkSet, true );
}
}
},
"": function(checkSet, part, isXML){
var nodeCheck,
doneName = done++,
checkFn = dirCheck;
if ( typeof part === "string" && !rNonWord.test( part ) ) {
part = part.toLowerCase();
nodeCheck = part;
checkFn = dirNodeCheck;
}
checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
},
"~": function( checkSet, part, isXML ) {
var nodeCheck,
doneName = done++,
checkFn = dirCheck;
if ( typeof part === "string" && !rNonWord.test( part ) ) {
part = part.toLowerCase();
nodeCheck = part;
checkFn = dirNodeCheck;
}
checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
}
},
find: {
ID: function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
return m && m.parentNode ? [m] : [];
}
},
NAME: function( match, context ) {
if ( typeof context.getElementsByName !== "undefined" ) {
var ret = [],
results = context.getElementsByName( match[1] );
for ( var i = 0, l = results.length; i < l; i++ ) {
if ( results[i].getAttribute("name") === match[1] ) {
ret.push( results[i] );
}
}
return ret.length === 0 ? null : ret;
}
},
TAG: function( match, context ) {
if ( typeof context.getElementsByTagName !== "undefined" ) {
return context.getElementsByTagName( match[1] );
}
}
},
preFilter: {
CLASS: function( match, curLoop, inplace, result, not, isXML ) {
match = " " + match[1].replace( rBackslash, "" ) + " ";
if ( isXML ) {
return match;
}
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
if ( !inplace ) {
result.push( elem );
}
} else if ( inplace ) {
curLoop[i] = false;
}
}
}
return false;
},
ID: function( match ) {
return match[1].replace( rBackslash, "" );
},
TAG: function( match, curLoop ) {
return match[1].replace( rBackslash, "" ).toLowerCase();
},
CHILD: function( match ) {
if ( match[1] === "nth" ) {
if ( !match[2] ) {
Sizzle.error( match[0] );
}
match[2] = match[2].replace(/^\+|\s*/g, '');
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
// calculate the numbers (first)n+(last) including if they are negative
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0;
}
else if ( match[2] ) {
Sizzle.error( match[0] );
}
// TODO: Move to normal caching system
match[0] = done++;
return match;
},
ATTR: function( match, curLoop, inplace, result, not, isXML ) {
var name = match[1] = match[1].replace( rBackslash, "" );
if ( !isXML && Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}
// Handle if an un-quoted value was used
match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
if ( match[2] === "~=" ) {
match[4] = " " + match[4] + " ";
}
return match;
},
PSEUDO: function( match, curLoop, inplace, result, not ) {
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
match[3] = Sizzle(match[3], null, null, curLoop);
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
if ( !inplace ) {
result.push.apply( result, ret );
}
return false;
}
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
return true;
}
return match;
},
POS: function( match ) {
match.unshift( true );
return match;
}
},
filters: {
enabled: function( elem ) {
return elem.disabled === false && elem.type !== "hidden";
},
disabled: function( elem ) {
return elem.disabled === true;
},
checked: function( elem ) {
return elem.checked === true;
},
selected: function( elem ) {
// Accessing this property makes selected-by-default
// options in Safari work properly
if ( elem.parentNode ) {
elem.parentNode.selectedIndex;
}
return elem.selected === true;
},
parent: function( elem ) {
return !!elem.firstChild;
},
empty: function( elem ) {
return !elem.firstChild;
},
has: function( elem, i, match ) {
return !!Sizzle( match[3], elem ).length;
},
header: function( elem ) {
return (/h\d/i).test( elem.nodeName );
},
text: function( elem ) {
var attr = elem.getAttribute( "type" ), type = elem.type;
// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
// use getAttribute instead to test this case
return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
},
radio: function( elem ) {
return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
},
checkbox: function( elem ) {
return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
},
file: function( elem ) {
return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
},
password: function( elem ) {
return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
},
submit: function( elem ) {
var name = elem.nodeName.toLowerCase();
return (name === "input" || name === "button") && "submit" === elem.type;
},
image: function( elem ) {
return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
},
reset: function( elem ) {
var name = elem.nodeName.toLowerCase();
return (name === "input" || name === "button") && "reset" === elem.type;
},
button: function( elem ) {
var name = elem.nodeName.toLowerCase();
return name === "input" && "button" === elem.type || name === "button";
},
input: function( elem ) {
return (/input|select|textarea|button/i).test( elem.nodeName );
},
focus: function( elem ) {
return elem === elem.ownerDocument.activeElement;
}
},
setFilters: {
first: function( elem, i ) {
return i === 0;
},
last: function( elem, i, match, array ) {
return i === array.length - 1;
},
even: function( elem, i ) {
return i % 2 === 0;
},
odd: function( elem, i ) {
return i % 2 === 1;
},
lt: function( elem, i, match ) {
return i < match[3] - 0;
},
gt: function( elem, i, match ) {
return i > match[3] - 0;
},
nth: function( elem, i, match ) {
return match[3] - 0 === i;
},
eq: function( elem, i, match ) {
return match[3] - 0 === i;
}
},
filter: {
PSEUDO: function( elem, match, i, array ) {
var name = match[1],
filter = Expr.filters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
} else if ( name === "contains" ) {
return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
} else if ( name === "not" ) {
var not = match[3];
for ( var j = 0, l = not.length; j < l; j++ ) {
if ( not[j] === elem ) {
return false;
}
}
return true;
} else {
Sizzle.error( name );
}
},
CHILD: function( elem, match ) {
var type = match[1],
node = elem;
switch ( type ) {
case "only":
case "first":
while ( (node = node.previousSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
if ( type === "first" ) {
return true;
}
node = elem;
case "last":
while ( (node = node.nextSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
return true;
case "nth":
var first = match[2],
last = match[3];
if ( first === 1 && last === 0 ) {
return true;
}
var doneName = match[0],
parent = elem.parentNode;
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
var count = 0;
for ( node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType === 1 ) {
node.nodeIndex = ++count;
}
}
parent.sizcache = doneName;
}
var diff = elem.nodeIndex - last;
if ( first === 0 ) {
return diff === 0;
} else {
return ( diff % first === 0 && diff / first >= 0 );
}
}
},
ID: function( elem, match ) {
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
TAG: function( elem, match ) {
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
},
CLASS: function( elem, match ) {
return (" " + (elem.className || elem.getAttribute("class")) + " ")
.indexOf( match ) > -1;
},
ATTR: function( elem, match ) {
var name = match[1],
result = Expr.attrHandle[ name ] ?
Expr.attrHandle[ name ]( elem ) :
elem[ name ] != null ?
elem[ name ] :
elem.getAttribute( name ),
value = result + "",
type = match[2],
check = match[4];
return result == null ?
type === "!=" :
type === "=" ?
value === check :
type === "*=" ?
value.indexOf(check) >= 0 :
type === "~=" ?
(" " + value + " ").indexOf(check) >= 0 :
!check ?
value && result !== false :
type === "!=" ?
value !== check :
type === "^=" ?
value.indexOf(check) === 0 :
type === "$=" ?
value.substr(value.length - check.length) === check :
type === "|=" ?
value === check || value.substr(0, check.length + 1) === check + "-" :
false;
},
POS: function( elem, match, i, array ) {
var name = match[2],
filter = Expr.setFilters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
}
}
}
};
var origPOS = Expr.match.POS,
fescape = function(all, num){
return "\\" + (num - 0 + 1);
};
for ( var type in Expr.match ) {
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
var makeArray = function( array, results ) {
array = Array.prototype.slice.call( array, 0 );
if ( results ) {
results.push.apply( results, array );
return results;
}
return array;
};
// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
// Also verifies that the returned array holds DOM nodes
// (which is not the case in the Blackberry browser)
try {
Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
// Provide a fallback method if it does not work
} catch( e ) {
makeArray = function( array, results ) {
var i = 0,
ret = results || [];
if ( toString.call(array) === "[object Array]" ) {
Array.prototype.push.apply( ret, array );
} else {
if ( typeof array.length === "number" ) {
for ( var l = array.length; i < l; i++ ) {
ret.push( array[i] );
}
} else {
for ( ; array[i]; i++ ) {
ret.push( array[i] );
}
}
}
return ret;
};
}
var sortOrder, siblingCheck;
if ( document.documentElement.compareDocumentPosition ) {
sortOrder = function( a, b ) {
if ( a === b ) {
hasDuplicate = true;
return 0;
}
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
return a.compareDocumentPosition ? -1 : 1;
}
return a.compareDocumentPosition(b) & 4 ? -1 : 1;
};
} else {
sortOrder = function( a, b ) {
// The nodes are identical, we can exit early
if ( a === b ) {
hasDuplicate = true;
return 0;
// Fallback to using sourceIndex (in IE) if it's available on both nodes
} else if ( a.sourceIndex && b.sourceIndex ) {
return a.sourceIndex - b.sourceIndex;
}
var al, bl,
ap = [],
bp = [],
aup = a.parentNode,
bup = b.parentNode,
cur = aup;
// If the nodes are siblings (or identical) we can do a quick check
if ( aup === bup ) {
return siblingCheck( a, b );
// If no parents were found then the nodes are disconnected
} else if ( !aup ) {
return -1;
} else if ( !bup ) {
return 1;
}
// Otherwise they're somewhere else in the tree so we need
// to build up a full list of the parentNodes for comparison
while ( cur ) {
ap.unshift( cur );
cur = cur.parentNode;
}
cur = bup;
while ( cur ) {
bp.unshift( cur );
cur = cur.parentNode;
}
al = ap.length;
bl = bp.length;
// Start walking down the tree looking for a discrepancy
for ( var i = 0; i < al && i < bl; i++ ) {
if ( ap[i] !== bp[i] ) {
return siblingCheck( ap[i], bp[i] );
}
}
// We ended someplace up the tree so do a sibling check
return i === al ?
siblingCheck( a, bp[i], -1 ) :
siblingCheck( ap[i], b, 1 );
};
siblingCheck = function( a, b, ret ) {
if ( a === b ) {
return ret;
}
var cur = a.nextSibling;
while ( cur ) {
if ( cur === b ) {
return -1;
}
cur = cur.nextSibling;
}
return 1;
};
}
// Utility function for retreiving the text value of an array of DOM nodes
Sizzle.getText = function( elems ) {
var ret = "", elem;
for ( var i = 0; elems[i]; i++ ) {
elem = elems[i];
// Get the text from text nodes and CDATA nodes
if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
ret += elem.nodeValue;
// Traverse everything else, except comment nodes
} else if ( elem.nodeType !== 8 ) {
ret += Sizzle.getText( elem.childNodes );
}
}
return ret;
};
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
// We're going to inject a fake input element with a specified name
var form = document.createElement("div"),
id = "script" + (new Date()).getTime(),
root = document.documentElement;
form.innerHTML = "<a name='" + id + "'/>";
// Inject it into the root element, check its status, and remove it quickly
root.insertBefore( form, root.firstChild );
// The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching)
if ( document.getElementById( id ) ) {
Expr.find.ID = function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
return m ?
m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
[m] :
undefined :
[];
}
};
Expr.filter.ID = function( elem, match ) {
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match;
};
}
root.removeChild( form );
// release memory in IE
root = form = null;
})();
(function(){
// Check to see if the browser returns only elements
// when doing getElementsByTagName("*")
// Create a fake element
var div = document.createElement("div");
div.appendChild( document.createComment("") );
// Make sure no comments are found
if ( div.getElementsByTagName("*").length > 0 ) {
Expr.find.TAG = function( match, context ) {
var results = context.getElementsByTagName( match[1] );
// Filter out possible comments
if ( match[1] === "*" ) {
var tmp = [];
for ( var i = 0; results[i]; i++ ) {
if ( results[i].nodeType === 1 ) {
tmp.push( results[i] );
}
}
results = tmp;
}
return results;
};
}
// Check to see if an attribute returns normalized href attributes
div.innerHTML = "<a href='#'></a>";
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
div.firstChild.getAttribute("href") !== "#" ) {
Expr.attrHandle.href = function( elem ) {
return elem.getAttribute( "href", 2 );
};
}
// release memory in IE
div = null;
})();
if ( document.querySelectorAll ) {
(function(){
var oldSizzle = Sizzle,
div = document.createElement("div"),
id = "__sizzle__";
div.innerHTML = "<p class='TEST'></p>";
// Safari can't handle uppercase or unicode characters when
// in quirks mode.
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
Sizzle = function( query, context, extra, seed ) {
context = context || document;
// Only use querySelectorAll on non-XML documents
// (ID selectors don't work in non-HTML documents)
if ( !seed && !Sizzle.isXML(context) ) {
// See if we find a selector to speed up
var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
// Speed-up: Sizzle("TAG")
if ( match[1] ) {
return makeArray( context.getElementsByTagName( query ), extra );
// Speed-up: Sizzle(".CLASS")
} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
return makeArray( context.getElementsByClassName( match[2] ), extra );
}
}
if ( context.nodeType === 9 ) {
// Speed-up: Sizzle("body")
// The body element only exists once, optimize finding it
if ( query === "body" && context.body ) {
return makeArray( [ context.body ], extra );
// Speed-up: Sizzle("#ID")
} else if ( match && match[3] ) {
var elem = context.getElementById( match[3] );
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
if ( elem && elem.parentNode ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id === match[3] ) {
return makeArray( [ elem ], extra );
}
} else {
return makeArray( [], extra );
}
}
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(qsaError) {}
// qSA works strangely on Element-rooted queries
// We can work around this by specifying an extra ID on the root
// and working up from there (Thanks to Andrew Dupont for the technique)
// IE 8 doesn't work on object elements
} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
var oldContext = context,
old = context.getAttribute( "id" ),
nid = old || id,
hasParent = context.parentNode,
relativeHierarchySelector = /^\s*[+~]/.test( query );
if ( !old ) {
context.setAttribute( "id", nid );
} else {
nid = nid.replace( /'/g, "\\$&" );
}
if ( relativeHierarchySelector && hasParent ) {
context = context.parentNode;
}
try {
if ( !relativeHierarchySelector || hasParent ) {
return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
}
} catch(pseudoError) {
} finally {
if ( !old ) {
oldContext.removeAttribute( "id" );
}
}
}
}
return oldSizzle(query, context, extra, seed);
};
for ( var prop in oldSizzle ) {
Sizzle[ prop ] = oldSizzle[ prop ];
}
// release memory in IE
div = null;
})();
}
(function(){
var html = document.documentElement,
matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
if ( matches ) {
// Check to see if it's possible to do matchesSelector
// on a disconnected node (IE 9 fails this)
var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
pseudoWorks = false;
try {
// This should fail with an exception
// Gecko does not error, returns false instead
matches.call( document.documentElement, "[test!='']:sizzle" );
} catch( pseudoError ) {
pseudoWorks = true;
}
Sizzle.matchesSelector = function( node, expr ) {
// Make sure that attribute selectors are quoted
expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
if ( !Sizzle.isXML( node ) ) {
try {
if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
var ret = matches.call( node, expr );
// IE 9's matchesSelector returns false on disconnected nodes
if ( ret || !disconnectedMatch ||
// As well, disconnected nodes are said to be in a document
// fragment in IE 9, so check for that
node.document && node.document.nodeType !== 11 ) {
return ret;
}
}
} catch(e) {}
}
return Sizzle(expr, null, null, [node]).length > 0;
};
}
})();
(function(){
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
// Opera can't find a second classname (in 9.6)
// Also, make sure that getElementsByClassName actually exists
if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
return;
}
// Safari caches class attributes, doesn't catch changes (in 3.2)
div.lastChild.className = "e";
if ( div.getElementsByClassName("e").length === 1 ) {
return;
}
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function( match, context, isXML ) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
return context.getElementsByClassName(match[1]);
}
};
// release memory in IE
div = null;
})();
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var match = false;
elem = elem[dir];
while ( elem ) {
if ( elem.sizcache === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 && !isXML ){
elem.sizcache = doneName;
elem.sizset = i;
}
if ( elem.nodeName.toLowerCase() === cur ) {
match = elem;
break;
}
elem = elem[dir];
}
checkSet[i] = match;
}
}
}
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var match = false;
elem = elem[dir];
while ( elem ) {
if ( elem.sizcache === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 ) {
if ( !isXML ) {
elem.sizcache = doneName;
elem.sizset = i;
}
if ( typeof cur !== "string" ) {
if ( elem === cur ) {
match = true;
break;
}
} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
match = elem;
break;
}
}
elem = elem[dir];
}
checkSet[i] = match;
}
}
}
if ( document.documentElement.contains ) {
Sizzle.contains = function( a, b ) {
return a !== b && (a.contains ? a.contains(b) : true);
};
} else if ( document.documentElement.compareDocumentPosition ) {
Sizzle.contains = function( a, b ) {
return !!(a.compareDocumentPosition(b) & 16);
};
} else {
Sizzle.contains = function() {
return false;
};
}
Sizzle.isXML = function( elem ) {
// documentElement is verified for cases where it doesn't yet exist
// (such as loading iframes in IE - #4833)
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false;
};
var posProcess = function( selector, context ) {
var match,
tmpSet = [],
later = "",
root = context.nodeType ? [context] : context;
// Position selectors must be done after the filter
// And so must :not(positional) so we move all PSEUDOs to the end
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
later += match[0];
selector = selector.replace( Expr.match.PSEUDO, "" );
}
selector = Expr.relative[selector] ? selector + "*" : selector;
for ( var i = 0, l = root.length; i < l; i++ ) {
Sizzle( selector, root[i], tmpSet );
}
return Sizzle.filter( later, tmpSet );
};
// EXPOSE
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains;
})();
var runtil = /Until$/,
rparentsprev = /^(?:parents|prevUntil|prevAll)/,
// Note: This RegExp should be improved, or likely pulled from Sizzle
rmultiselector = /,/,
isSimple = /^.[^:#\[\.,]*$/,
slice = Array.prototype.slice,
POS = jQuery.expr.match.POS,
// methods guaranteed to produce a unique set when starting from a unique set
guaranteedUnique = {
children: true,
contents: true,
next: true,
prev: true
};
jQuery.fn.extend({
find: function( selector ) {
var self = this,
i, l;
if ( typeof selector !== "string" ) {
return jQuery( selector ).filter(function() {
for ( i = 0, l = self.length; i < l; i++ ) {
if ( jQuery.contains( self[ i ], this ) ) {
return true;
}
}
});
}
var ret = this.pushStack( "", "find", selector ),
length, n, r;
for ( i = 0, l = this.length; i < l; i++ ) {
length = ret.length;
jQuery.find( selector, this[i], ret );
if ( i > 0 ) {
// Make sure that the results are unique
for ( n = length; n < ret.length; n++ ) {
for ( r = 0; r < length; r++ ) {
if ( ret[r] === ret[n] ) {
ret.splice(n--, 1);
break;
}
}
}
}
}
return ret;
},
has: function( target ) {
var targets = jQuery( target );
return this.filter(function() {
for ( var i = 0, l = targets.length; i < l; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) {
return true;
}
}
});
},
not: function( selector ) {
return this.pushStack( winnow(this, selector, false), "not", selector);
},
filter: function( selector ) {
return this.pushStack( winnow(this, selector, true), "filter", selector );
},
is: function( selector ) {
return !!selector && ( typeof selector === "string" ?
jQuery.filter( selector, this ).length > 0 :
this.filter( selector ).length > 0 );
},
closest: function( selectors, context ) {
var ret = [], i, l, cur = this[0];
// Array
if ( jQuery.isArray( selectors ) ) {
var match, selector,
matches = {},
level = 1;
if ( cur && selectors.length ) {
for ( i = 0, l = selectors.length; i < l; i++ ) {
selector = selectors[i];
if ( !matches[ selector ] ) {
matches[ selector ] = POS.test( selector ) ?
jQuery( selector, context || this.context ) :
selector;
}
}
while ( cur && cur.ownerDocument && cur !== context ) {
for ( selector in matches ) {
match = matches[ selector ];
if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
ret.push({ selector: selector, elem: cur, level: level });
}
}
cur = cur.parentNode;
level++;
}
}
return ret;
}
// String
var pos = POS.test( selectors ) || typeof selectors !== "string" ?
jQuery( selectors, context || this.context ) :
0;
for ( i = 0, l = this.length; i < l; i++ ) {
cur = this[i];
while ( cur ) {
if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
ret.push( cur );
break;
} else {
cur = cur.parentNode;
if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
break;
}
}
}
}
ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
return this.pushStack( ret, "closest", selectors );
},
// Determine the position of an element within
// the matched set of elements
index: function( elem ) {
if ( !elem || typeof elem === "string" ) {
return jQuery.inArray( this[0],
// If it receives a string, the selector is used
// If it receives nothing, the siblings are used
elem ? jQuery( elem ) : this.parent().children() );
}
// Locate the position of the desired element
return jQuery.inArray(
// If it receives a jQuery object, the first element is used
elem.jquery ? elem[0] : elem, this );
},
add: function( selector, context ) {
var set = typeof selector === "string" ?
jQuery( selector, context ) :
jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
all = jQuery.merge( this.get(), set );
return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
all :
jQuery.unique( all ) );
},
andSelf: function() {
return this.add( this.prevObject );
}
});
// A painfully simple check to see if an element is disconnected
// from a document (should be improved, where feasible).
function isDisconnected( node ) {
return !node || !node.parentNode || node.parentNode.nodeType === 11;
}
jQuery.each({
parent: function( elem ) {
var parent = elem.parentNode;
return parent && parent.nodeType !== 11 ? parent : null;
},
parents: function( elem ) {
return jQuery.dir( elem, "parentNode" );
},
parentsUntil: function( elem, i, until ) {
return jQuery.dir( elem, "parentNode", until );
},
next: function( elem ) {
return jQuery.nth( elem, 2, "nextSibling" );
},
prev: function( elem ) {
return jQuery.nth( elem, 2, "previousSibling" );
},
nextAll: function( elem ) {
return jQuery.dir( elem, "nextSibling" );
},
prevAll: function( elem ) {
return jQuery.dir( elem, "previousSibling" );
},
nextUntil: function( elem, i, until ) {
return jQuery.dir( elem, "nextSibling", until );
},
prevUntil: function( elem, i, until ) {
return jQuery.dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
return jQuery.sibling( elem.firstChild );
},
contents: function( elem ) {
return jQuery.nodeName( elem, "iframe" ) ?
elem.contentDocument || elem.contentWindow.document :
jQuery.makeArray( elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
var ret = jQuery.map( this, fn, until ),
// The variable 'args' was introduced in
// https://github.com/jquery/jquery/commit/52a0238
// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
// http://code.google.com/p/v8/issues/detail?id=1050
args = slice.call(arguments);
if ( !runtil.test( name ) ) {
selector = until;
}
if ( selector && typeof selector === "string" ) {
ret = jQuery.filter( selector, ret );
}
ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
ret = ret.reverse();
}
return this.pushStack( ret, name, args.join(",") );
};
});
jQuery.extend({
filter: function( expr, elems, not ) {
if ( not ) {
expr = ":not(" + expr + ")";
}
return elems.length === 1 ?
jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
jQuery.find.matches(expr, elems);
},
dir: function( elem, dir, until ) {
var matched = [],
cur = elem[ dir ];
while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
if ( cur.nodeType === 1 ) {
matched.push( cur );
}
cur = cur[dir];
}
return matched;
},
nth: function( cur, result, dir, elem ) {
result = result || 1;
var num = 0;
for ( ; cur; cur = cur[dir] ) {
if ( cur.nodeType === 1 && ++num === result ) {
break;
}
}
return cur;
},
sibling: function( n, elem ) {
var r = [];
for ( ; n; n = n.nextSibling ) {
if ( n.nodeType === 1 && n !== elem ) {
r.push( n );
}
}
return r;
}
});
// Implement the identical functionality for filter and not
function winnow( elements, qualifier, keep ) {
// Can't pass null or undefined to indexOf in Firefox 4
// Set to 0 to skip string check
qualifier = qualifier || 0;
if ( jQuery.isFunction( qualifier ) ) {
return jQuery.grep(elements, function( elem, i ) {
var retVal = !!qualifier.call( elem, i, elem );
return retVal === keep;
});
} else if ( qualifier.nodeType ) {
return jQuery.grep(elements, function( elem, i ) {
return (elem === qualifier) === keep;
});
} else if ( typeof qualifier === "string" ) {
var filtered = jQuery.grep(elements, function( elem ) {
return elem.nodeType === 1;
});
if ( isSimple.test( qualifier ) ) {
return jQuery.filter(qualifier, filtered, !keep);
} else {
qualifier = jQuery.filter( qualifier, filtered );
}
}
return jQuery.grep(elements, function( elem, i ) {
return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
});
}
var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
rleadingWhitespace = /^\s+/,
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
rtagName = /<([\w:]+)/,
rtbody = /<tbody/i,
rhtml = /<|&#?\w+;/,
rnocache = /<(?:script|object|embed|option|style)/i,
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rscriptType = /\/(java|ecma)script/i,
rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
wrapMap = {
option: [ 1, "<select multiple='multiple'>", "</select>" ],
legend: [ 1, "<fieldset>", "</fieldset>" ],
thead: [ 1, "<table>", "</table>" ],
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
area: [ 1, "<map>", "</map>" ],
_default: [ 0, "", "" ]
};
wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;
// IE can't serialize <link> and <script> tags normally
if ( !jQuery.support.htmlSerialize ) {
wrapMap._default = [ 1, "div<div>", "</div>" ];
}
jQuery.fn.extend({
text: function( text ) {
if ( jQuery.isFunction(text) ) {
return this.each(function(i) {
var self = jQuery( this );
self.text( text.call(this, i, self.text()) );
});
}
if ( typeof text !== "object" && text !== undefined ) {
return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
}
return jQuery.text( this );
},
wrapAll: function( html ) {
if ( jQuery.isFunction( html ) ) {
return this.each(function(i) {
jQuery(this).wrapAll( html.call(this, i) );
});
}
if ( this[0] ) {
// The elements to wrap the target around
var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
if ( this[0].parentNode ) {
wrap.insertBefore( this[0] );
}
wrap.map(function() {
var elem = this;
while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
elem = elem.firstChild;
}
return elem;
}).append( this );
}
return this;
},
wrapInner: function( html ) {
if ( jQuery.isFunction( html ) ) {
return this.each(function(i) {
jQuery(this).wrapInner( html.call(this, i) );
});
}
return this.each(function() {
var self = jQuery( this ),
contents = self.contents();
if ( contents.length ) {
contents.wrapAll( html );
} else {
self.append( html );
}
});
},
wrap: function( html ) {
return this.each(function() {
jQuery( this ).wrapAll( html );
});
},
unwrap: function() {
return this.parent().each(function() {
if ( !jQuery.nodeName( this, "body" ) ) {
jQuery( this ).replaceWith( this.childNodes );
}
}).end();
},
append: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.appendChild( elem );
}
});
},
prepend: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.insertBefore( elem, this.firstChild );
}
});
},
before: function() {
if ( this[0] && this[0].parentNode ) {
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this );
});
} else if ( arguments.length ) {
var set = jQuery(arguments[0]);
set.push.apply( set, this.toArray() );
return this.pushStack( set, "before", arguments );
}
},
after: function() {
if ( this[0] && this[0].parentNode ) {
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this.nextSibling );
});
} else if ( arguments.length ) {
var set = this.pushStack( this, "after", arguments );
set.push.apply( set, jQuery(arguments[0]).toArray() );
return set;
}
},
// keepData is for internal use only--do not document
remove: function( selector, keepData ) {
for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
if ( !keepData && elem.nodeType === 1 ) {
jQuery.cleanData( elem.getElementsByTagName("*") );
jQuery.cleanData( [ elem ] );
}
if ( elem.parentNode ) {
elem.parentNode.removeChild( elem );
}
}
}
return this;
},
empty: function() {
for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
// Remove element nodes and prevent memory leaks
if ( elem.nodeType === 1 ) {
jQuery.cleanData( elem.getElementsByTagName("*") );
}
// Remove any remaining nodes
while ( elem.firstChild ) {
elem.removeChild( elem.firstChild );
}
}
return this;
},
clone: function( dataAndEvents, deepDataAndEvents ) {
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
return this.map( function () {
return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
});
},
html: function( value ) {
if ( value === undefined ) {
return this[0] && this[0].nodeType === 1 ?
this[0].innerHTML.replace(rinlinejQuery, "") :
null;
// See if we can take a shortcut and just use innerHTML
} else if ( typeof value === "string" && !rnocache.test( value ) &&
(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
!wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
value = value.replace(rxhtmlTag, "<$1></$2>");
try {
for ( var i = 0, l = this.length; i < l; i++ ) {
// Remove element nodes and prevent memory leaks
if ( this[i].nodeType === 1 ) {
jQuery.cleanData( this[i].getElementsByTagName("*") );
this[i].innerHTML = value;
}
}
// If using innerHTML throws an exception, use the fallback method
} catch(e) {
this.empty().append( value );
}
} else if ( jQuery.isFunction( value ) ) {
this.each(function(i){
var self = jQuery( this );
self.html( value.call(this, i, self.html()) );
});
} else {
this.empty().append( value );
}
return this;
},
replaceWith: function( value ) {
if ( this[0] && this[0].parentNode ) {
// Make sure that the elements are removed from the DOM before they are inserted
// this can help fix replacing a parent with child elements
if ( jQuery.isFunction( value ) ) {
return this.each(function(i) {
var self = jQuery(this), old = self.html();
self.replaceWith( value.call( this, i, old ) );
});
}
if ( typeof value !== "string" ) {
value = jQuery( value ).detach();
}
return this.each(function() {
var next = this.nextSibling,
parent = this.parentNode;
jQuery( this ).remove();
if ( next ) {
jQuery(next).before( value );
} else {
jQuery(parent).append( value );
}
});
} else {
return this.length ?
this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
this;
}
},
detach: function( selector ) {
return this.remove( selector, true );
},
domManip: function( args, table, callback ) {
var results, first, fragment, parent,
value = args[0],
scripts = [];
// We can't cloneNode fragments that contain checked, in WebKit
if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
return this.each(function() {
jQuery(this).domManip( args, table, callback, true );
});
}
if ( jQuery.isFunction(value) ) {
return this.each(function(i) {
var self = jQuery(this);
args[0] = value.call(this, i, table ? self.html() : undefined);
self.domManip( args, table, callback );
});
}
if ( this[0] ) {
parent = value && value.parentNode;
// If we're in a fragment, just use that instead of building a new one
if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
results = { fragment: parent };
} else {
results = jQuery.buildFragment( args, this, scripts );
}
fragment = results.fragment;
if ( fragment.childNodes.length === 1 ) {
first = fragment = fragment.firstChild;
} else {
first = fragment.firstChild;
}
if ( first ) {
table = table && jQuery.nodeName( first, "tr" );
for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
callback.call(
table ?
root(this[i], first) :
this[i],
// Make sure that we do not leak memory by inadvertently discarding
// the original fragment (which might have attached data) instead of
// using it; in addition, use the original fragment object for the last
// item instead of first because it can end up being emptied incorrectly
// in certain situations (Bug #8070).
// Fragments from the fragment cache must always be cloned and never used
// in place.
results.cacheable || (l > 1 && i < lastIndex) ?
jQuery.clone( fragment, true, true ) :
fragment
);
}
}
if ( scripts.length ) {
jQuery.each( scripts, evalScript );
}
}
return this;
}
});
function root( elem, cur ) {
return jQuery.nodeName(elem, "table") ?
(elem.getElementsByTagName("tbody")[0] ||
elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
elem;
}
function cloneCopyEvent( src, dest ) {
if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
return;
}
var internalKey = jQuery.expando,
oldData = jQuery.data( src ),
curData = jQuery.data( dest, oldData );
// Switch to use the internal data object, if it exists, for the next
// stage of data copying
if ( (oldData = oldData[ internalKey ]) ) {
var events = oldData.events;
curData = curData[ internalKey ] = jQuery.extend({}, oldData);
if ( events ) {
delete curData.handle;
curData.events = {};
for ( var type in events ) {
for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
}
}
}
}
}
function cloneFixAttributes( src, dest ) {
var nodeName;
// We do not need to do anything for non-Elements
if ( dest.nodeType !== 1 ) {
return;
}
// clearAttributes removes the attributes, which we don't want,
// but also removes the attachEvent events, which we *do* want
if ( dest.clearAttributes ) {
dest.clearAttributes();
}
// mergeAttributes, in contrast, only merges back on the
// original attributes, not the events
if ( dest.mergeAttributes ) {
dest.mergeAttributes( src );
}
nodeName = dest.nodeName.toLowerCase();
// IE6-8 fail to clone children inside object elements that use
// the proprietary classid attribute value (rather than the type
// attribute) to identify the type of content to display
if ( nodeName === "object" ) {
dest.outerHTML = src.outerHTML;
} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
// IE6-8 fails to persist the checked state of a cloned checkbox
// or radio button. Worse, IE6-7 fail to give the cloned element
// a checked appearance if the defaultChecked value isn't also set
if ( src.checked ) {
dest.defaultChecked = dest.checked = src.checked;
}
// IE6-7 get confused and end up setting the value of a cloned
// checkbox/radio button to an empty string instead of "on"
if ( dest.value !== src.value ) {
dest.value = src.value;
}
// IE6-8 fails to return the selected option to the default selected
// state when cloning options
} else if ( nodeName === "option" ) {
dest.selected = src.defaultSelected;
// IE6-8 fails to set the defaultValue to the correct value when
// cloning other types of input fields
} else if ( nodeName === "input" || nodeName === "textarea" ) {
dest.defaultValue = src.defaultValue;
}
// Event data gets referenced instead of copied if the expando
// gets copied too
dest.removeAttribute( jQuery.expando );
}
jQuery.buildFragment = function( args, nodes, scripts ) {
var fragment, cacheable, cacheresults,
doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
// Only cache "small" (1/2 KB) HTML strings that are associated with the main document
// Cloning options loses the selected state, so don't cache them
// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
cacheable = true;
cacheresults = jQuery.fragments[ args[0] ];
if ( cacheresults && cacheresults !== 1 ) {
fragment = cacheresults;
}
}
if ( !fragment ) {
fragment = doc.createDocumentFragment();
jQuery.clean( args, doc, fragment, scripts );
}
if ( cacheable ) {
jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
}
return { fragment: fragment, cacheable: cacheable };
};
jQuery.fragments = {};
jQuery.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function( name, original ) {
jQuery.fn[ name ] = function( selector ) {
var ret = [],
insert = jQuery( selector ),
parent = this.length === 1 && this[0].parentNode;
if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
insert[ original ]( this[0] );
return this;
} else {
for ( var i = 0, l = insert.length; i < l; i++ ) {
var elems = (i > 0 ? this.clone(true) : this).get();
jQuery( insert[i] )[ original ]( elems );
ret = ret.concat( elems );
}
return this.pu
gitextract_rd5xf_h5/
├── .gitignore
├── README.md
├── abel-parent/
│ └── pom.xml
├── abel-util/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── code/
│ │ └── InfoCode.java
│ ├── exception/
│ │ ├── AppRuntimeException.java
│ │ ├── HttpExeption.java
│ │ └── ServiceException.java
│ ├── response/
│ │ └── ResponseEntity.java
│ └── utils/
│ └── DateTimeUtils.java
├── springWebSocket/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Message.java
│ │ │ └── Response.java
│ │ ├── config/
│ │ │ ├── WebSecurityConfig.java
│ │ │ └── WebSocketConfig.java
│ │ ├── controller/
│ │ │ └── WebSocketController.java
│ │ └── service/
│ │ └── WebSocketService.java
│ └── resources/
│ ├── application.properties
│ ├── static/
│ │ └── jquery.js
│ └── templates/
│ ├── chat.html
│ ├── login.html
│ └── ws.html
├── springboot-Cache/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── Person.java
│ │ ├── config/
│ │ │ ├── DBConfig.java
│ │ │ ├── JpaConfig.java
│ │ │ └── RedisConfig.java
│ │ ├── controller/
│ │ │ └── CacheController.java
│ │ ├── dao/
│ │ │ └── PersonRepository.java
│ │ └── service/
│ │ ├── DemoService.java
│ │ └── Impl/
│ │ └── DemoServiceImpl.java
│ └── resources/
│ ├── application.properties
│ └── ehcache.xml
├── springboot-Cache2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── Person.java
│ │ ├── config/
│ │ │ ├── CacheConfig.java
│ │ │ ├── DBConfig.java
│ │ │ └── JpaConfig.java
│ │ ├── controller/
│ │ │ └── CacheController.java
│ │ ├── dao/
│ │ │ └── PersonRepository.java
│ │ └── service/
│ │ ├── DemoService.java
│ │ └── PersonService.java
│ └── resources/
│ └── application.properties
├── springboot-Quartz/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── abel/
│ │ └── quartz/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── InvokingJobDetailFactory.java
│ │ │ └── QuartzConfig.java
│ │ └── job/
│ │ └── ExecuteJob.java
│ └── resources/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-SpringSecurity0/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ ├── WebMvcConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ ├── security/
│ │ │ └── CustomUserService.java
│ │ └── util/
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-SpringSecurity1/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── Permission.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ └── service/
│ │ ├── CustomUserService.java
│ │ ├── MyAccessDecisionManager.java
│ │ ├── MyFilterSecurityInterceptor.java
│ │ └── MyInvocationSecurityMetadataSourceService.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-dubbo/
│ ├── README.md
│ ├── abel-user-api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── user/
│ │ ├── models/
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ └── service/
│ │ ├── PermissionService.java
│ │ ├── RoleService.java
│ │ └── UserService.java
│ └── abel-user-provider/
│ ├── doc/
│ │ └── user.sql
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── user/
│ │ ├── UserProviderApplication.java
│ │ ├── constants/
│ │ │ └── Constants.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ ├── RoleDao.java
│ │ │ └── UserDao.java
│ │ ├── exception/
│ │ │ ├── JsonExceptionMapper.java
│ │ │ ├── ReaderExceptionMapper.java
│ │ │ ├── RestExceptionMapper.java
│ │ │ ├── ServiceExceptionMapper.java
│ │ │ └── ValidationExceptionMapper.java
│ │ ├── filter/
│ │ │ ├── RestFilter.java
│ │ │ └── RestInterceptor.java
│ │ ├── service/
│ │ │ └── impl/
│ │ │ ├── PermissionServiceImpl.java
│ │ │ ├── RoleServiceImpl.java
│ │ │ └── UserServiceImpl.java
│ │ └── utils/
│ │ └── CommentUtils.java
│ ├── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── provider.xml
│ │ ├── dev/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ ├── RoleDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── cn/
│ └── abel/
│ └── user/
│ ├── BaseTest.java
│ └── service/
│ └── impl/
│ └── PermissionServiceImplTest.java
├── springboot-dynamicDataSource/
│ ├── pom.xml
│ ├── sql/
│ │ ├── news.sql
│ │ └── user.sql
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ ├── News.java
│ │ │ │ └── User.java
│ │ │ ├── config/
│ │ │ │ ├── DynamicDataSource.java
│ │ │ │ ├── DynamicDataSourceConfig.java
│ │ │ │ ├── DynamicDataSourceContextHolder.java
│ │ │ │ └── HikariConfig.java
│ │ │ ├── dao/
│ │ │ │ ├── NewsDao.java
│ │ │ │ └── UserDao.java
│ │ │ ├── enums/
│ │ │ │ └── DatabaseTypeEnum.java
│ │ │ └── service/
│ │ │ ├── NewsService.java
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── NewsDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-elasticsearch/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ └── User.java
│ │ │ ├── config/
│ │ │ │ ├── ESRestClient2Config.java
│ │ │ │ └── ESRestClientConfig.java
│ │ │ ├── constants/
│ │ │ │ └── Constants.java
│ │ │ ├── dao/
│ │ │ │ └── UserDao.java
│ │ │ └── service/
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-jpa/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DBConfig.java
│ │ │ └── JpaConfig.java
│ │ ├── controller/
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ └── UserJpaDao.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ ├── serviceImpl/
│ │ │ └── UserServiceImpl.java
│ │ └── util/
│ │ └── CommonUtil.java
│ └── resources/
│ └── application.properties
├── springboot-kafka/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── KafkaConfig.java
│ │ └── service/
│ │ └── prehandle/
│ │ ├── KafkaConsumerService.java
│ │ └── SplitService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-mybatis/
│ ├── docker-it.sh
│ ├── env/
│ │ ├── dev/
│ │ │ ├── application.properties
│ │ │ ├── env.properties
│ │ │ └── log4j.properties
│ │ └── local/
│ │ ├── application.properties
│ │ ├── env.properties
│ │ └── log4j.properties
│ ├── package.sh
│ ├── pom.xml
│ ├── scripts/
│ │ ├── docker/
│ │ │ ├── common/
│ │ │ │ ├── common-env.sh
│ │ │ │ ├── install-cluster.sh
│ │ │ │ ├── install-single.sh
│ │ │ │ ├── install.sh
│ │ │ │ └── package.xml
│ │ │ └── manager/
│ │ │ ├── check-os.sh
│ │ │ ├── setenv.sh
│ │ │ ├── start.sh
│ │ │ └── stop.sh
│ │ └── springboot/
│ │ ├── common/
│ │ │ ├── common-env.sh
│ │ │ ├── install-cluster.sh
│ │ │ ├── install-single.sh
│ │ │ ├── install.sh
│ │ │ └── package.xml
│ │ └── manager/
│ │ ├── setenv.sh
│ │ ├── start.sh
│ │ └── stop.sh
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── us/
│ │ │ │ └── example/
│ │ │ │ ├── Application.java
│ │ │ │ ├── bean/
│ │ │ │ │ └── User.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── DBConfig.java
│ │ │ │ │ ├── MyBatisConfig.java
│ │ │ │ │ ├── MyBatisScannerConfig.java
│ │ │ │ │ └── TransactionConfig.java
│ │ │ │ ├── controller/
│ │ │ │ │ └── UserController.java
│ │ │ │ ├── dao/
│ │ │ │ │ └── UserDao.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── Impl/
│ │ │ │ │ │ └── UserServiceImpl.java
│ │ │ │ │ └── UserService.java
│ │ │ │ └── util/
│ │ │ │ └── CommonUtil.java
│ │ │ └── resources/
│ │ │ └── mapper/
│ │ │ └── UserDaoMapper.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── BaseTest.java
│ │ └── service/
│ │ └── UserServiceTest.java
│ ├── tar-it.sh
│ └── war-it.sh
├── springboot-mybatis2/
│ ├── pom.xml
│ ├── sql/
│ │ └── user.sql
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ └── User.java
│ │ │ ├── dao/
│ │ │ │ └── UserDao.java
│ │ │ └── service/
│ │ │ └── UserService.java
│ │ └── resources/
│ │ ├── local/
│ │ │ ├── application.properties
│ │ │ ├── banner.txt
│ │ │ └── logback-spring.xml
│ │ └── mapper/
│ │ ├── NewsDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ ├── BaseTest.java
│ └── service/
│ └── ServiceTest.java
├── springboot-neo4j/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cn/
│ │ │ └── abel/
│ │ │ └── neo4j/
│ │ │ ├── Application.java
│ │ │ ├── bean/
│ │ │ │ ├── King.java
│ │ │ │ ├── Person.java
│ │ │ │ ├── Queen.java
│ │ │ │ └── relation/
│ │ │ │ └── FatherAndSonRelation.java
│ │ │ ├── controller/
│ │ │ │ └── KingController.java
│ │ │ ├── dao/
│ │ │ │ ├── KingDao.java
│ │ │ │ ├── Neo4jDao.java
│ │ │ │ └── Neo4jSession.java
│ │ │ ├── dto/
│ │ │ │ └── GraphDTO.java
│ │ │ └── service/
│ │ │ └── KingService.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ └── logback-spring.xml
│ └── test/
│ └── java/
│ └── cn/
│ └── abel/
│ └── neo4j/
│ ├── BaseTest.java
│ └── service/
│ ├── InitData.java
│ └── KingServiceTest.java
├── springboot-redis-queue/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── RedisConfig.java
│ │ ├── controller/
│ │ │ └── PublisherController.java
│ │ └── service/
│ │ ├── ProducerService.java
│ │ └── ReceiverService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-rocketmq/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ └── JmsConfig.java
│ │ ├── controller/
│ │ │ └── PublisherController.java
│ │ └── service/
│ │ ├── ProducerService.java
│ │ └── ReceiverService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-rocketmq-ali/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── queue/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── ALiConsumerClient.java
│ │ │ ├── ALiMqConfig.java
│ │ │ └── ALiProducerClient.java
│ │ └── service/
│ │ ├── MessageHandler.java
│ │ └── ProducerService.java
│ └── resources/
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-shiro/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Event.java
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DataSourceConfig.java
│ │ │ ├── MapperScannerConfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ └── TransactionConfig.java
│ │ ├── controller/
│ │ │ ├── EventController.java
│ │ │ ├── LoginController.java
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ ├── EventDao.java
│ │ │ ├── PermissionDao.java
│ │ │ ├── RoleDao.java
│ │ │ └── UserDao.java
│ │ ├── service/
│ │ │ ├── EventService.java
│ │ │ ├── PermissionService.java
│ │ │ ├── RoleService.java
│ │ │ └── UserService.java
│ │ └── shiro/
│ │ ├── ShiroConfiguration.java
│ │ └── ShiroRealm.java
│ └── resources/
│ ├── application.properties
│ ├── log4j.properties
│ └── mapper/
│ ├── EventDaoMapper.xml
│ ├── PermissionDaoMapper.xml
│ ├── RoleDaoMapper.xml
│ └── UserDaoMapper.xml
├── springboot-shiro2/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── abel/
│ │ └── rest/
│ │ ├── ShiroRestApplication.java
│ │ ├── config/
│ │ │ └── RedisConfig.java
│ │ ├── constants/
│ │ │ └── Constants.java
│ │ ├── controller/
│ │ │ └── LoginController.java
│ │ ├── exception/
│ │ │ ├── DefaultErrorController.java
│ │ │ └── DefaultExceptionHandler.java
│ │ ├── freemarker/
│ │ │ ├── CustomFreeMarkerView.java
│ │ │ └── FreeMarkerConfig.java
│ │ ├── shiro/
│ │ │ ├── HttpHeaderSessionManager.java
│ │ │ ├── RedisSessionDao.java
│ │ │ ├── ShiroConfig.java
│ │ │ ├── ShiroProperty.java
│ │ │ ├── ShiroRealm.java
│ │ │ ├── ShiroRedisCacheManager.java
│ │ │ ├── ShiroUser.java
│ │ │ ├── UuidSessionIdGenerator.java
│ │ │ ├── credentials/
│ │ │ │ ├── PasswordHelper.java
│ │ │ │ ├── RetryLimitHashedCredentialsMatcher.java
│ │ │ │ └── ThirdPartySupportedToken.java
│ │ │ ├── ext/
│ │ │ │ ├── QuartzSessionValidationJob.java
│ │ │ │ └── QuartzSessionValidationScheduler.java
│ │ │ └── filter/
│ │ │ ├── ShiroFormAuthenticationFilter.java
│ │ │ └── ShiroLogoutFilter.java
│ │ └── utils/
│ │ ├── ServletKit.java
│ │ └── SpringContextKit.java
│ └── resources/
│ ├── META-INF/
│ │ └── spring/
│ │ └── consumer.xml
│ ├── dev/
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ └── logback-spring.xml
│ └── local/
│ ├── application.properties
│ ├── banner.txt
│ └── logback-spring.xml
├── springboot-springCloud/
│ ├── config/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── ConfigApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ ├── bootstrap.yml
│ │ │ └── config/
│ │ │ ├── person.yml
│ │ │ └── some.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ ├── bootstrap.yml
│ │ └── config/
│ │ ├── person.yml
│ │ └── some.yml
│ ├── discovery/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── DiscoveryApplication.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ └── target/
│ │ └── classes/
│ │ └── application.yml
│ ├── monitor/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── MonitorApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ ├── person/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ ├── PersonApplication.java
│ │ │ │ ├── bean/
│ │ │ │ │ └── Person.java
│ │ │ │ ├── controller/
│ │ │ │ │ └── PersonController.java
│ │ │ │ └── dao/
│ │ │ │ └── PersonRepository.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ ├── pom.xml
│ ├── some/
│ │ ├── pom.xml
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── abel/
│ │ │ │ └── SomeApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ │ └── target/
│ │ └── classes/
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ └── ui/
│ ├── pom.xml
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── abel/
│ │ │ ├── UiApplication.java
│ │ │ ├── bean/
│ │ │ │ └── Person.java
│ │ │ ├── controller/
│ │ │ │ └── UiController.java
│ │ │ └── service/
│ │ │ ├── PersonHystrixService.java
│ │ │ ├── PersonService.java
│ │ │ └── SomeHystrixService.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── bootstrap.yml
│ │ └── static/
│ │ ├── css/
│ │ │ └── application.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── app.js
│ │ └── tpl/
│ │ ├── person.html
│ │ └── some.html
│ └── target/
│ └── classes/
│ ├── application.yml
│ ├── bootstrap.yml
│ └── static/
│ ├── css/
│ │ └── application.css
│ ├── index.html
│ ├── js/
│ │ └── app.js
│ └── tpl/
│ ├── person.html
│ └── some.html
├── springboot-springSecurity2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ ├── HomeController.java
│ │ │ └── LoginController.java
│ │ ├── dao/
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ ├── security/
│ │ │ └── CustomUserService.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ └── util/
│ │ ├── BCryptPasswordEncoderTest.java
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ └── mapper/
│ └── UserDaoMapper.xml
├── springboot-springSecurity3/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── us/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── config/
│ │ │ ├── DBconfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ ├── WebMvcConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ └── HomeController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── domain/
│ │ │ ├── Msg.java
│ │ │ ├── Permission.java
│ │ │ ├── SysRole.java
│ │ │ └── SysUser.java
│ │ └── service/
│ │ ├── CustomUserService.java
│ │ ├── MyAccessDecisionManager.java
│ │ ├── MyFilterSecurityInterceptor.java
│ │ ├── MyGrantedAuthority.java
│ │ └── MyInvocationSecurityMetadataSourceService.java
│ └── resources/
│ ├── application.properties
│ ├── mapper/
│ │ ├── PermissionDaoMapper.xml
│ │ └── UserDaoMapper.xml
│ └── templates/
│ ├── home.html
│ └── login.html
├── springboot-springSecurity4/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── yy/
│ │ └── example/
│ │ ├── Application.java
│ │ ├── bean/
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ ├── config/
│ │ │ ├── DataSourceConfig.java
│ │ │ ├── MapperScannerConfig.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── MyBatisScannerConfig.java
│ │ │ ├── TransactionConfig.java
│ │ │ └── WebSecurityConfig.java
│ │ ├── controller/
│ │ │ ├── LoginController.java
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ ├── PermissionDao.java
│ │ │ └── UserDao.java
│ │ ├── security/
│ │ │ ├── UrlAccessDecisionManager.java
│ │ │ ├── UrlConfigAttribute.java
│ │ │ ├── UrlFilterSecurityInterceptor.java
│ │ │ ├── UrlGrantedAuthority.java
│ │ │ ├── UrlMetadataSourceService.java
│ │ │ └── UrlUserService.java
│ │ ├── service/
│ │ │ └── UserService.java
│ │ └── utils/
│ │ └── MD5Util.java
│ └── resources/
│ ├── application.properties
│ └── com/
│ └── yy/
│ └── example/
│ └── mapper/
│ ├── PermissionDaoMapper.xml
│ └── UserDaoMapper.xml
└── springboot-swagger-ui/
├── pom.xml
└── src/
└── main/
├── java/
│ └── com/
│ └── abel/
│ └── example/
│ ├── Application.java
│ ├── Swagger2.java
│ ├── bean/
│ │ └── User.java
│ ├── config/
│ │ ├── DBConfig.java
│ │ └── JpaConfig.java
│ ├── controller/
│ │ └── UserController.java
│ ├── dao/
│ │ └── UserJpaDao.java
│ ├── service/
│ │ └── UserService.java
│ ├── serviceImpl/
│ │ └── UserServiceImpl.java
│ └── util/
│ └── CommonUtil.java
└── resources/
└── application.properties
SYMBOL INDEX (1617 symbols across 307 files)
FILE: abel-util/src/main/java/cn/abel/code/InfoCode.java
type InfoCode (line 9) | public enum InfoCode {
method InfoCode (line 47) | private InfoCode(int status, String msg) {
method getStatus (line 52) | public int getStatus() {
method getMsg (line 56) | public String getMsg() {
method toString (line 60) | @Override
FILE: abel-util/src/main/java/cn/abel/exception/AppRuntimeException.java
class AppRuntimeException (line 10) | public class AppRuntimeException extends RuntimeException {
method AppRuntimeException (line 15) | public AppRuntimeException() {
method AppRuntimeException (line 20) | public AppRuntimeException(InfoCode infoCode) {
method AppRuntimeException (line 24) | public AppRuntimeException(InfoCode infoCode, String message) {
method getInfoCode (line 29) | public InfoCode getInfoCode() {
FILE: abel-util/src/main/java/cn/abel/exception/HttpExeption.java
class HttpExeption (line 3) | public class HttpExeption extends Exception {
method HttpExeption (line 7) | public HttpExeption() {
method HttpExeption (line 10) | public HttpExeption(String msg) {
method HttpExeption (line 14) | public HttpExeption(String msg, Throwable e) {
method HttpExeption (line 18) | public HttpExeption(Throwable e) {
FILE: abel-util/src/main/java/cn/abel/exception/ServiceException.java
class ServiceException (line 9) | @SuppressWarnings("serial")
method ServiceException (line 17) | public ServiceException() {
method ServiceException (line 20) | public ServiceException(Throwable e) {
method ServiceException (line 24) | public ServiceException(int errorCode) {
method getErrorCode (line 28) | public int getErrorCode() {
method getErrorCodes (line 32) | public String getErrorCodes() {
method ServiceException (line 36) | public ServiceException(InfoCode infoCode){
method ServiceException (line 41) | public ServiceException(int errorCode, String msg) {
method ServiceException (line 46) | public ServiceException(String errorCode, String msg) {
method ServiceException (line 51) | public ServiceException(int errorCode, String msg, Throwable e) {
method ServiceException (line 56) | public ServiceException(int errorCode, Throwable e) {
FILE: abel-util/src/main/java/cn/abel/response/ResponseEntity.java
class ResponseEntity (line 13) | public class ResponseEntity {
method ResponseEntity (line 21) | private ResponseEntity() {
method ok (line 24) | public static ResponseEntity ok(Object data) {
method error (line 30) | public static ResponseEntity error(InfoCode infoCode) {
method ok (line 37) | public static ResponseEntity ok() {
method error (line 42) | public static ResponseEntity error(int code, String msg) {
method getStatus (line 49) | public int getStatus() {
method setStatus (line 53) | public void setStatus(int status) {
method getMessage (line 57) | public String getMessage() {
method setMessage (line 61) | public void setMessage(String message) {
method getData (line 65) | public Object getData() {
method setData (line 69) | public void setData(Object data) {
FILE: abel-util/src/main/java/cn/abel/utils/DateTimeUtils.java
class DateTimeUtils (line 18) | public class DateTimeUtils {
method format (line 49) | public static String format(Date dateTime, String pattern) {
method format (line 63) | public static String format(Date dateTime) {
method formatCurrent (line 73) | public static String formatCurrent(String pattern) {
method formatCurrent (line 82) | public static String formatCurrent() {
method removeTime (line 92) | public static Date removeTime(Date dateTime) {
method getTomorrowDate (line 108) | public static Date getTomorrowDate() {
method getYesterdayDate (line 122) | public static Date getYesterdayDate() {
method parse (line 139) | public static Date parse(String dateTimeStr, String pattern) throws Se...
method parse (line 157) | public static Date parse(String dateTimeStr) throws ServiceException {
method getMonth (line 167) | public static int getMonth(Date date) {
method getYear (line 179) | public static int getYear(Date date) {
method dateAdd (line 193) | public static Date dateAdd(Date date, int days) throws ServiceException {
method monthAdd (line 211) | public static Date monthAdd(Date date, int months) throws ServiceExcep...
method dateDiff (line 229) | public static int dateDiff(Date one, Date two) throws ServiceException {
method getDateBefore (line 245) | public static Date getDateBefore(Date date, int day) {
method getFirstAndLastOfMonth (line 258) | public static Date getFirstAndLastOfMonth() {
method getWeekFirstDate (line 272) | public static Date getWeekFirstDate(){
FILE: springWebSocket/src/main/java/com/us/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us.example")
method main (line 18) | public static void main(String[] args) {
FILE: springWebSocket/src/main/java/com/us/example/bean/Message.java
class Message (line 7) | public class Message {
method getName (line 10) | public String getName(){
FILE: springWebSocket/src/main/java/com/us/example/bean/Response.java
class Response (line 7) | public class Response {
method setResponseMessage (line 8) | public void setResponseMessage(String responseMessage) {
method Response (line 13) | public Response(String responseMessage){
method getResponseMessage (line 16) | public String getResponseMessage(){
FILE: springWebSocket/src/main/java/com/us/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 10) | @Configuration
method configure (line 13) | @Override
method configure (line 30) | @Override
method configure (line 39) | @Override
FILE: springWebSocket/src/main/java/com/us/example/config/WebSocketConfig.java
class WebSocketConfig (line 12) | @Configuration
method registerStompEndpoints (line 18) | @Override
method configureMessageBroker (line 29) | @Override
FILE: springWebSocket/src/main/java/com/us/example/controller/WebSocketController.java
class WebSocketController (line 23) | @CrossOrigin
method login (line 32) | @RequestMapping(value = "/login")
method ws (line 36) | @RequestMapping(value = "/ws")
method chat (line 40) | @RequestMapping(value = "/chat")
method say (line 45) | @MessageMapping("/welcome")//浏览器发送请求通过@messageMapping 映射/welcome 这个地址。
method say2 (line 53) | @RequestMapping("/Welcome1")
method handleChat (line 61) | @MessageMapping("/chat")
FILE: springWebSocket/src/main/java/com/us/example/service/WebSocketService.java
class WebSocketService (line 12) | @Service
method sendMessage (line 19) | public void sendMessage() throws Exception{
FILE: springWebSocket/src/main/resources/static/jquery.js
function jQuerySub (line 849) | function jQuerySub( selector, context ) {
function doScrollCheck (line 915) | function doScrollCheck() {
function resolveFunc (line 1106) | function resolveFunc( i ) {
function dataAttr (line 1661) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 1693) | function isEmptyDataObject( obj ) {
function handleQueueMarkDefer (line 1706) | function handleQueueMarkDefer( elem, type, src ) {
function resolve (line 1856) | function resolve() {
function returnFalse (line 3094) | function returnFalse() {
function returnTrue (line 3097) | function returnTrue() {
function trigger (line 3346) | function trigger( type, elem, args ) {
function handler (line 3381) | function handler( donor ) {
function liveHandler (line 3585) | function liveHandler( event ) {
function liveConvert (line 3673) | function liveConvert( type, selector ) {
function dirNodeCheck (line 4988) | function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck (line 5021) | function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function isDisconnected (line 5296) | function isDisconnected( node ) {
function winnow (line 5418) | function winnow( elements, qualifier, keep ) {
function root (line 5798) | function root( elem, cur ) {
function cloneCopyEvent (line 5805) | function cloneCopyEvent( src, dest ) {
function cloneFixAttributes (line 5834) | function cloneFixAttributes( src, dest ) {
function getAll (line 5953) | function getAll( elem ) {
function fixDefaultChecked (line 5966) | function fixDefaultChecked( elem ) {
function findInputs (line 5972) | function findInputs( elem ) {
function evalScript (line 6186) | function evalScript( i, elem ) {
function getWH (line 6543) | function getWH( elem, name, extra ) {
function addToPrefiltersOrTransports (line 6643) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 6679) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function done (line 7045) | function done( status, statusText, responses, headers ) {
function buildParams (line 7357) | function buildParams( prefix, obj, traditional, add ) {
function ajaxHandleResponses (line 7407) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 7472) | function ajaxConvert( s, response ) {
function createStandardXHR (line 7738) | function createStandardXHR() {
function createActiveXHR (line 7744) | function createActiveXHR() {
function createFxNow (line 8226) | function createFxNow() {
function clearFxNow (line 8231) | function clearFxNow() {
function genFx (line 8236) | function genFx( type, num ) {
function t (line 8347) | function t( gotoEnd ) {
function defaultDisplay (line 8515) | function defaultDisplay( nodeName ) {
function getWindow (line 8859) | function getWindow( elem ) {
FILE: springboot-Cache/src/main/java/com/us/example/Application.java
class Application (line 14) | @ComponentScan(basePackages ="com.us.example")
method main (line 18) | public static void main(String[] args) {
FILE: springboot-Cache/src/main/java/com/us/example/bean/Person.java
class Person (line 11) | @Entity
method Person (line 27) | public Person() {
method Person (line 30) | public Person(Long id, String name, Integer age, String address) {
method getId (line 37) | public Long getId() {
method setId (line 40) | public void setId(Long id) {
method getName (line 43) | public String getName() {
method setName (line 46) | public void setName(String name) {
method getAge (line 49) | public Integer getAge() {
method setAge (line 52) | public void setAge(Integer age) {
method getAddress (line 55) | public String getAddress() {
method setAddress (line 58) | public void setAddress(String address) {
FILE: springboot-Cache/src/main/java/com/us/example/config/DBConfig.java
class DBConfig (line 14) | @Configuration
method dataSource (line 19) | @Bean(name="dataSource")
FILE: springboot-Cache/src/main/java/com/us/example/config/JpaConfig.java
class JpaConfig (line 24) | @Configuration
method entityManagerFactory (line 32) | @Bean
method transactionManager (line 54) | @Bean
FILE: springboot-Cache/src/main/java/com/us/example/config/RedisConfig.java
class RedisConfig (line 21) | @Configuration
method redisConnectionFactory (line 29) | @Bean
method redisTemplate (line 37) | @Bean
method cacheManager (line 44) | @Bean
method errorHandler (line 51) | public CacheErrorHandler errorHandler() {
FILE: springboot-Cache/src/main/java/com/us/example/controller/CacheController.java
class CacheController (line 13) | @RestController
method put (line 20) | @RequestMapping("/put")
method cacheable (line 27) | @RequestMapping("/able")
method evit (line 37) | @RequestMapping("/evit")
FILE: springboot-Cache/src/main/java/com/us/example/dao/PersonRepository.java
type PersonRepository (line 9) | public interface PersonRepository extends JpaRepository<Person, Long> {
FILE: springboot-Cache/src/main/java/com/us/example/service/DemoService.java
type DemoService (line 8) | public interface DemoService {
method save (line 9) | public Person save(Person person);
method remove (line 11) | public void remove(Long id);
method findOne (line 13) | public Person findOne(Person person);
FILE: springboot-Cache/src/main/java/com/us/example/service/Impl/DemoServiceImpl.java
class DemoServiceImpl (line 15) | @Service
method save (line 21) | @Override
method remove (line 30) | @Override
method findOne (line 38) | @Override
FILE: springboot-Cache2/src/main/java/com/us/example/Application.java
class Application (line 14) | @ComponentScan(basePackages ="com.us.example")
method main (line 18) | public static void main(String[] args) {
FILE: springboot-Cache2/src/main/java/com/us/example/bean/Person.java
class Person (line 12) | @Entity
method Person (line 28) | public Person() {
method getId (line 32) | public Long getId() {
method setId (line 36) | public void setId(Long id) {
method getName (line 40) | public String getName() {
method setName (line 44) | public void setName(String name) {
method getAge (line 48) | public Integer getAge() {
method setAge (line 52) | public void setAge(Integer age) {
method getAddress (line 56) | public String getAddress() {
method setAddress (line 60) | public void setAddress(String address) {
method Person (line 64) | public Person(Long id, String name, Integer age, String address) {
method toString (line 72) | @Override
FILE: springboot-Cache2/src/main/java/com/us/example/config/CacheConfig.java
class CacheConfig (line 18) | @Configuration
method getCacheManager (line 24) | @Bean
FILE: springboot-Cache2/src/main/java/com/us/example/config/DBConfig.java
class DBConfig (line 14) | @Configuration
method dataSource (line 19) | @Bean(name="dataSource")
FILE: springboot-Cache2/src/main/java/com/us/example/config/JpaConfig.java
class JpaConfig (line 24) | @Configuration
method entityManagerFactory (line 32) | @Bean
method transactionManager (line 54) | @Bean
FILE: springboot-Cache2/src/main/java/com/us/example/controller/CacheController.java
class CacheController (line 10) | @RestController
method put (line 18) | @RequestMapping(method = RequestMethod.POST)
method cacheable (line 26) | @RequestMapping(value ="/{id}" ,method = RequestMethod.GET)
FILE: springboot-Cache2/src/main/java/com/us/example/dao/PersonRepository.java
type PersonRepository (line 9) | public interface PersonRepository extends JpaRepository<Person, Long> {
FILE: springboot-Cache2/src/main/java/com/us/example/service/DemoService.java
class DemoService (line 13) | @Service
method findAll (line 20) | public List<Person> findAll() {
FILE: springboot-Cache2/src/main/java/com/us/example/service/PersonService.java
class PersonService (line 13) | @Service
method findOne (line 22) | public Person findOne(Long id) {
method save (line 34) | public Person save(Person person) {
method getCache (line 40) | public Person getCache(Long id, CacheManager cacheManager) {
FILE: springboot-Quartz/src/main/java/com/abel/quartz/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 13) | public static void main(String[] args) {
FILE: springboot-Quartz/src/main/java/com/abel/quartz/config/InvokingJobDetailFactory.java
class InvokingJobDetailFactory (line 13) | public class InvokingJobDetailFactory extends QuartzJobBean {
method executeInternal (line 27) | @Override
method setApplicationContext (line 46) | public void setApplicationContext(ApplicationContext applicationContex...
method setTargetObject (line 50) | public void setTargetObject(String targetObject) {
method setTargetMethod (line 54) | public void setTargetMethod(String targetMethod) {
FILE: springboot-Quartz/src/main/java/com/abel/quartz/config/QuartzConfig.java
class QuartzConfig (line 24) | @Configuration
method quartzProperties (line 56) | private Properties quartzProperties() throws IOException {
method createDataSource (line 111) | @Bean
method cronTriggerFactoryBean (line 130) | private static CronTriggerFactoryBean cronTriggerFactoryBean(JobDetail...
method schedulerFactoryBean (line 150) | @Bean
method executeJobTrigger (line 180) | @Bean(name = "executeJobTrigger")
method executeJobDetail (line 195) | @Bean
method createJobDetail (line 210) | private static JobDetailFactoryBean createJobDetail(Class<? extends Jo...
FILE: springboot-Quartz/src/main/java/com/abel/quartz/job/ExecuteJob.java
class ExecuteJob (line 10) | @Service
method execute (line 17) | public void execute() {
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us.example")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/DBconfig.java
class DBconfig (line 13) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/MyBatisConfig.java
class MyBatisConfig (line 12) | @Configuration
method sqlSessionFactory (line 19) | @Bean(name = "sqlSessionFactory")
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/WebMvcConfig.java
class WebMvcConfig (line 9) | @Configuration
method addViewControllers (line 13) | @Override
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 19) | @Configuration
method customUserService (line 23) | @Bean
method configure (line 28) | @Override
method configure (line 43) | @Override
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/controller/HomeController.java
class HomeController (line 11) | @Controller
method index (line 14) | @RequestMapping("/")
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/dao/UserDao.java
type UserDao (line 6) | public interface UserDao {
method findByUserName (line 7) | public SysUser findByUserName(String username);
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/domain/Msg.java
class Msg (line 7) | public class Msg {
method Msg (line 12) | public Msg(String title, String content, String etraInfo) {
method getTitle (line 18) | public String getTitle() {
method setTitle (line 21) | public void setTitle(String title) {
method getContent (line 24) | public String getContent() {
method setContent (line 27) | public void setContent(String content) {
method getEtraInfo (line 30) | public String getEtraInfo() {
method setEtraInfo (line 33) | public void setEtraInfo(String etraInfo) {
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/domain/SysRole.java
class SysRole (line 7) | public class SysRole {
method getId (line 11) | public Integer getId() {
method setId (line 14) | public void setId(Integer id) {
method getName (line 17) | public String getName() {
method setName (line 20) | public void setName(String name) {
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/domain/SysUser.java
class SysUser (line 9) | public class SysUser {
method getId (line 16) | public Integer getId() {
method setId (line 20) | public void setId(Integer id) {
method getUsername (line 24) | public String getUsername() {
method setUsername (line 28) | public void setUsername(String username) {
method getPassword (line 32) | public String getPassword() {
method setPassword (line 36) | public void setPassword(String password) {
method getRoles (line 40) | public List<SysRole> getRoles() {
method setRoles (line 44) | public void setRoles(List<SysRole> roles) {
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/security/CustomUserService.java
class CustomUserService (line 19) | @Service
method loadUserByUsername (line 25) | @Override
FILE: springboot-SpringSecurity0/src/main/java/com/us/example/util/MD5Util.java
class MD5Util (line 11) | public class MD5Util {
method encode (line 15) | public static String encode(String password) {
method main (line 41) | public static void main(String[] args) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us.example")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/config/DBconfig.java
class DBconfig (line 13) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/config/MyBatisConfig.java
class MyBatisConfig (line 12) | @Configuration
method sqlSessionFactory (line 19) | @Bean(name = "sqlSessionFactory")
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 20) | @Configuration
method configure (line 30) | @Override
method configure (line 36) | @Override
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/controller/HomeController.java
class HomeController (line 12) | @Controller
method index (line 15) | @RequestMapping("/")
method login (line 22) | @RequestMapping("/login")
method hello (line 27) | @RequestMapping("/admin")
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/dao/PermissionDao.java
type PermissionDao (line 10) | public interface PermissionDao {
method findAll (line 11) | public List<Permission> findAll();
method findByAdminUserId (line 12) | public List<Permission> findByAdminUserId(int userId);
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/dao/UserDao.java
type UserDao (line 6) | public interface UserDao {
method findByUserName (line 7) | public SysUser findByUserName(String username);
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/domain/Msg.java
class Msg (line 7) | public class Msg {
method Msg (line 12) | public Msg(String title, String content, String etraInfo) {
method getTitle (line 18) | public String getTitle() {
method setTitle (line 21) | public void setTitle(String title) {
method getContent (line 24) | public String getContent() {
method setContent (line 27) | public void setContent(String content) {
method getEtraInfo (line 30) | public String getEtraInfo() {
method setEtraInfo (line 33) | public void setEtraInfo(String etraInfo) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/domain/Permission.java
class Permission (line 6) | public class Permission {
method getId (line 21) | public int getId() {
method setId (line 25) | public void setId(int id) {
method getName (line 29) | public String getName() {
method setName (line 33) | public void setName(String name) {
method getDescritpion (line 37) | public String getDescritpion() {
method setDescritpion (line 41) | public void setDescritpion(String descritpion) {
method getUrl (line 45) | public String getUrl() {
method setUrl (line 49) | public void setUrl(String url) {
method getPid (line 53) | public int getPid() {
method setPid (line 57) | public void setPid(int pid) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/domain/SysRole.java
class SysRole (line 7) | public class SysRole {
method getId (line 11) | public Integer getId() {
method setId (line 14) | public void setId(Integer id) {
method getName (line 17) | public String getName() {
method setName (line 20) | public void setName(String name) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/domain/SysUser.java
class SysUser (line 9) | public class SysUser {
method getId (line 16) | public Integer getId() {
method setId (line 20) | public void setId(Integer id) {
method getUsername (line 24) | public String getUsername() {
method setUsername (line 28) | public void setUsername(String username) {
method getPassword (line 32) | public String getPassword() {
method setPassword (line 36) | public void setPassword(String password) {
method getRoles (line 40) | public List<SysRole> getRoles() {
method setRoles (line 44) | public void setRoles(List<SysRole> roles) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/service/CustomUserService.java
class CustomUserService (line 23) | @Service
method loadUserByUsername (line 31) | public UserDetails loadUserByUsername(String username) {
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/service/MyAccessDecisionManager.java
class MyAccessDecisionManager (line 17) | @Service
method decide (line 19) | @Override
method supports (line 41) | @Override
method supports (line 46) | @Override
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/service/MyFilterSecurityInterceptor.java
class MyFilterSecurityInterceptor (line 23) | @Service
method setMyAccessDecisionManager (line 30) | @Autowired
method init (line 36) | @Override
method doFilter (line 41) | @Override
method invoke (line 49) | public void invoke(FilterInvocation fi) throws IOException, ServletExc...
method destroy (line 63) | @Override
method getSecureObjectClass (line 68) | @Override
method obtainSecurityMetadataSource (line 74) | @Override
FILE: springboot-SpringSecurity1/src/main/java/com/us/example/service/MyInvocationSecurityMetadataSourceService.java
class MyInvocationSecurityMetadataSourceService (line 19) | @Service
method loadResourceDefine (line 31) | public void loadResourceDefine(){
method getAttributes (line 45) | @Override
method getAllConfigAttributes (line 61) | @Override
method supports (line 66) | @Override
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/Permission.java
class Permission (line 6) | public class Permission implements Serializable {
method getId (line 15) | public Integer getId() {
method setId (line 19) | public void setId(Integer id) {
method getName (line 23) | public String getName() {
method setName (line 27) | public void setName(String name) {
method getPermissionUrl (line 31) | public String getPermissionUrl() {
method setPermissionUrl (line 35) | public void setPermissionUrl(String permissionUrl) {
method getMethod (line 39) | public String getMethod() {
method setMethod (line 43) | public void setMethod(String method) {
method getDescription (line 47) | public String getDescription() {
method setDescription (line 51) | public void setDescription(String description) {
method toString (line 55) | @Override
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/Role.java
class Role (line 6) | public class Role implements Serializable {
method getId (line 14) | public Integer getId() {
method setId (line 18) | public void setId(Integer id) {
method getName (line 22) | public String getName() {
method setName (line 26) | public void setName(String name) {
method getRoleLevel (line 30) | public Integer getRoleLevel() {
method setRoleLevel (line 34) | public void setRoleLevel(Integer roleLevel) {
method getDescription (line 38) | public String getDescription() {
method setDescription (line 42) | public void setDescription(String description) {
method toString (line 46) | @Override
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/User.java
class User (line 9) | public class User implements Serializable {
method getId (line 24) | public Integer getId() {
method setId (line 28) | public void setId(Integer id) {
method getCnname (line 32) | public String getCnname() {
method setCnname (line 36) | public void setCnname(String cnname) {
method getUsername (line 40) | public String getUsername() {
method getPassword (line 44) | public String getPassword() {
method setPassword (line 48) | public void setPassword(String password) {
method getEmail (line 52) | public String getEmail() {
method setEmail (line 56) | public void setEmail(String email) {
method getMobilePhone (line 61) | public String getMobilePhone() {
method setMobilePhone (line 65) | public void setMobilePhone(String mobilePhone) {
method getRoles (line 69) | public List<Role> getRoles() {
method setRoles (line 73) | public void setRoles(List<Role> roles) {
method toString (line 77) | @Override
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/PermissionService.java
type PermissionService (line 8) | public interface PermissionService {
method getByMap (line 10) | List<Permission> getByMap(Map<String, Object> map);
method getById (line 12) | Permission getById(Integer id);
method create (line 14) | Permission create(Permission permission);
method update (line 17) | Permission update(Permission permission);
method delete (line 19) | int delete(Integer id);
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/RoleService.java
type RoleService (line 9) | public interface RoleService {
method getByMap (line 12) | List<Role> getByMap(Map<String, Object> map);
method getById (line 14) | Role getById(Integer id);
method create (line 16) | Role create(Role role);
method update (line 18) | Role update(Role role);
method delete (line 20) | int delete(Integer id);
FILE: springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/UserService.java
type UserService (line 8) | public interface UserService {
method getByMap (line 10) | List<User> getByMap(Map<String, Object> map);
method getById (line 12) | User getById(Integer id);
method create (line 14) | User create(User user);
method update (line 16) | User update(User user);
method delete (line 18) | int delete(Integer id);
method getByUserName (line 20) | User getByUserName(String userName);
FILE: springboot-dubbo/abel-user-provider/doc/user.sql
type `permission` (line 24) | CREATE TABLE `permission` (
type `role` (line 38) | CREATE TABLE `role` (
type `role_permission` (line 51) | CREATE TABLE `role_permission` (
type `user` (line 61) | CREATE TABLE `user` (
type `user_role` (line 77) | CREATE TABLE `user_role` (
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/UserProviderApplication.java
class UserProviderApplication (line 7) | @SpringBootApplication
method main (line 11) | public static void main(String[] args) {
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/constants/Constants.java
type Constants (line 6) | public interface Constants {
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/PermissionDao.java
type PermissionDao (line 11) | @Repository
method getByMap (line 15) | List<Permission> getByMap(Map<String, Object> map);
method getById (line 17) | Permission getById(Integer id);
method create (line 19) | Integer create(Permission permission);
method update (line 21) | int update(Permission permission);
method delete (line 23) | int delete(Integer id);
method getList (line 25) | List<Permission> getList();
method getByUserId (line 27) | List<Permission> getByUserId(Integer userId);
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/RoleDao.java
type RoleDao (line 11) | @Repository
method getByMap (line 15) | List<Role> getByMap(Map<String, Object> map);
method getById (line 16) | Role getById(Integer id);
method create (line 17) | Integer create(Role role);
method update (line 18) | int update(Role role);
method delete (line 19) | int delete(Integer id);
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/UserDao.java
type UserDao (line 10) | @Repository
method getByMap (line 14) | List<User> getByMap(Map<String, Object> map);
method getById (line 15) | User getById(Integer id);
method create (line 16) | Integer create(User user);
method update (line 17) | int update(User user);
method delete (line 18) | int delete(Integer id);
method getByUserName (line 19) | User getByUserName(String userName);
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/JsonExceptionMapper.java
class JsonExceptionMapper (line 19) | public class JsonExceptionMapper implements ExceptionMapper<JsonProcessi...
method toResponse (line 24) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ReaderExceptionMapper.java
class ReaderExceptionMapper (line 19) | public class ReaderExceptionMapper implements ExceptionMapper<ReaderExce...
method toResponse (line 24) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/RestExceptionMapper.java
class RestExceptionMapper (line 19) | public class RestExceptionMapper implements ExceptionMapper<WebApplicati...
method toResponse (line 24) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ServiceExceptionMapper.java
class ServiceExceptionMapper (line 18) | public class ServiceExceptionMapper implements ExceptionMapper<ServiceEx...
method toResponse (line 23) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ValidationExceptionMapper.java
class ValidationExceptionMapper (line 18) | public class ValidationExceptionMapper extends RpcExceptionMapper {
method handleConstraintViolationException (line 20) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/filter/RestFilter.java
class RestFilter (line 28) | @Priority(900)
method filter (line 36) | @Override
method filter (line 41) | @Override
method filter (line 46) | @Override
method filter (line 51) | @Override
method logHttpHeaders (line 57) | protected void logHttpHeaders(MultivaluedMap<String, String> headers) {
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/filter/RestInterceptor.java
class RestInterceptor (line 24) | public class RestInterceptor implements WriterInterceptor, ReaderInterce...
method aroundReadFrom (line 29) | @Override
method aroundWriteTo (line 37) | @Override
class OutputStreamWrapper (line 46) | protected static class OutputStreamWrapper extends OutputStream {
method OutputStreamWrapper (line 51) | private OutputStreamWrapper(OutputStream output) {
method write (line 55) | @Override
method write (line 61) | @Override
method write (line 67) | @Override
method flush (line 73) | @Override
method close (line 78) | @Override
method getBytes (line 83) | public byte[] getBytes() {
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/PermissionServiceImpl.java
class PermissionServiceImpl (line 12) | @Service(protocol = {"dubbo"}, validation = "false")
method getByMap (line 17) | @Override
method getById (line 22) | @Override
method create (line 27) | @Override
method update (line 33) | @Override
method delete (line 39) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/RoleServiceImpl.java
class RoleServiceImpl (line 13) | @Service(protocol = {"dubbo"}, validation = "false")
method getByMap (line 17) | @Override
method getById (line 21) | @Override
method create (line 25) | @Override
method update (line 30) | @Override
method delete (line 35) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/UserServiceImpl.java
class UserServiceImpl (line 12) | @Service(protocol = {"dubbo"}, validation = "false")
method getByMap (line 17) | @Override
method getById (line 22) | @Override
method create (line 27) | @Override
method update (line 33) | @Override
method delete (line 39) | @Override
method getByUserName (line 44) | @Override
FILE: springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/utils/CommentUtils.java
class CommentUtils (line 13) | public class CommentUtils {
method copyList (line 21) | public static <T> List copyList(List<T> list) {
FILE: springboot-dubbo/abel-user-provider/src/main/test/cn/abel/user/BaseTest.java
class BaseTest (line 17) | @RunWith(SpringRunner.class)
class ComponentScanConfig (line 22) | @Configuration
method contextLoads (line 29) | @Test
FILE: springboot-dubbo/abel-user-provider/src/main/test/cn/abel/user/service/impl/PermissionServiceImplTest.java
class PermissionServiceImplTest (line 15) | public class PermissionServiceImplTest extends BaseTest {
method getByMap (line 18) | @Test
method getById (line 23) | @Test
method create (line 29) | @Test
method update (line 39) | @Test
method delete (line 50) | @Test
FILE: springboot-dynamicDataSource/sql/news.sql
type `news` (line 24) | CREATE TABLE `news` (
FILE: springboot-dynamicDataSource/sql/user.sql
type `user` (line 24) | CREATE TABLE `user` (
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/bean/News.java
class News (line 4) | public class News {
method getId (line 11) | public Integer getId() {
method setId (line 15) | public void setId(Integer id) {
method getTitle (line 19) | public String getTitle() {
method setTitle (line 23) | public void setTitle(String title) {
method getContent (line 27) | public String getContent() {
method setContent (line 31) | public void setContent(String content) {
method getImagePath (line 35) | public String getImagePath() {
method setImagePath (line 39) | public void setImagePath(String imagePath) {
method getReadSum (line 43) | public Integer getReadSum() {
method setReadSum (line 47) | public void setReadSum(Integer readSum) {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/bean/User.java
class User (line 6) | public class User {
method getId (line 15) | public Integer getId() {
method setId (line 19) | public void setId(Integer id) {
method getName (line 23) | public String getName() {
method setName (line 27) | public void setName(String name) {
method getAddress (line 31) | public String getAddress() {
method setAddress (line 35) | public void setAddress(String address) {
method getMobile (line 39) | public String getMobile() {
method setMobile (line 43) | public void setMobile(String mobile) {
method getEmail (line 47) | public String getEmail() {
method setEmail (line 51) | public void setEmail(String email) {
method getCreateTime (line 55) | public Date getCreateTime() {
method setCreateTime (line 59) | public void setCreateTime(Date createTime) {
method getRole (line 63) | public Integer getRole() {
method setRole (line 67) | public void setRole(Integer role) {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSource.java
class DynamicDataSource (line 9) | public class DynamicDataSource extends AbstractRoutingDataSource {
method determineCurrentLookupKey (line 10) | @Override
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSourceConfig.java
class DynamicDataSourceConfig (line 23) | @Configuration
method getPrimaryDataSource (line 41) | @Primary
method getUserDataSource (line 47) | @Bean(name = "userDataSource")
method dynamicDataSource (line 60) | @Bean("dynamicDataSource")
method sqlSessionFactory (line 76) | @Bean
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSourceContextHolder.java
class DynamicDataSourceContextHolder (line 9) | public class DynamicDataSourceContextHolder {
method setDatabaseType (line 12) | public static void setDatabaseType(DatabaseTypeEnum type){
method getDatabaseType (line 16) | public static DatabaseTypeEnum getDatabaseType(){
method resetDatabaseType (line 20) | public static void resetDatabaseType() {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/config/HikariConfig.java
class HikariConfig (line 11) | @Service
method getHikariDataSource (line 42) | public HikariDataSource getHikariDataSource(String url) {
method getHikariDataSource (line 66) | public HikariDataSource getHikariDataSource(String url, String userNam...
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/dao/NewsDao.java
type NewsDao (line 10) | @Repository
method getByMap (line 14) | List<News> getByMap(Map<String, Object> map);
method getById (line 16) | News getById(Integer id);
method create (line 18) | Integer create(News news);
method update (line 20) | int update(News news);
method delete (line 22) | int delete(Integer id);
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/dao/UserDao.java
type UserDao (line 10) | @Repository
method getByMap (line 14) | List<User> getByMap(Map<String, Object> map);
method getById (line 16) | User getById(Integer id);
method create (line 18) | Integer create(User user);
method update (line 20) | int update(User user);
method delete (line 22) | int delete(Integer id);
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/enums/DatabaseTypeEnum.java
type DatabaseTypeEnum (line 7) | public enum DatabaseTypeEnum {
method DatabaseTypeEnum (line 12) | DatabaseTypeEnum(String code) {
method getCode (line 16) | public String getCode() {
method setCode (line 20) | public void setCode(String code) {
method getDatabaseTypeEnum (line 24) | public static DatabaseTypeEnum getDatabaseTypeEnum(String code) {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/service/NewsService.java
class NewsService (line 15) | @Service
method getByMap (line 20) | public List<News> getByMap(Map<String, Object> map) {
method getById (line 25) | public News getById(Integer id) {
method create (line 30) | public News create(News news) {
method update (line 36) | public News update(News news) {
method delete (line 42) | public int delete(Integer id) {
FILE: springboot-dynamicDataSource/src/main/java/cn/abel/service/UserService.java
class UserService (line 14) | @Service
method getByMap (line 19) | public List<User> getByMap(Map<String,Object> map){
method getById (line 24) | public User getById(Integer id){
method create (line 29) | public User create(User user){
method update (line 35) | public User update(User user){
method delete (line 41) | public int delete(Integer id){
FILE: springboot-dynamicDataSource/src/test/java/cn/abel/BaseTest.java
class BaseTest (line 16) | @RunWith(SpringRunner.class)
class ComponentScanConfig (line 21) | @Configuration
method contextLoads (line 28) | @Test
FILE: springboot-dynamicDataSource/src/test/java/cn/abel/service/ServiceTest.java
class ServiceTest (line 15) | public class ServiceTest extends BaseTest {
method dynamicDataSourceTest (line 22) | @Test
FILE: springboot-elasticsearch/src/main/java/cn/abel/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-elasticsearch/src/main/java/cn/abel/bean/User.java
class User (line 6) | public class User {
method getId (line 18) | public Integer getId() {
method setId (line 22) | public void setId(Integer id) {
method getName (line 26) | public String getName() {
method setName (line 30) | public void setName(String name) {
method getAddress (line 34) | public String getAddress() {
method setAddress (line 38) | public void setAddress(String address) {
method getMobile (line 42) | public String getMobile() {
method setMobile (line 46) | public void setMobile(String mobile) {
method getEmail (line 50) | public String getEmail() {
method setEmail (line 54) | public void setEmail(String email) {
method getCreateTime (line 58) | public Date getCreateTime() {
method setCreateTime (line 62) | public void setCreateTime(Date createTime) {
method getRole (line 66) | public Integer getRole() {
method setRole (line 70) | public void setRole(Integer role) {
method getIdCard (line 74) | public String getIdCard() {
method setIdCard (line 78) | public void setIdCard(String idCard) {
method getType (line 82) | public int getType() {
method setType (line 86) | public void setType(int type) {
FILE: springboot-elasticsearch/src/main/java/cn/abel/config/ESRestClient2Config.java
class ESRestClient2Config (line 20) | @Configuration
method getRestClient (line 33) | @Bean(name = NAME, destroyMethod = "close")
FILE: springboot-elasticsearch/src/main/java/cn/abel/config/ESRestClientConfig.java
class ESRestClientConfig (line 20) | @Configuration
method getRestClient (line 33) | @Bean(name = NAME, destroyMethod = "close")
FILE: springboot-elasticsearch/src/main/java/cn/abel/constants/Constants.java
class Constants (line 7) | public class Constants {
FILE: springboot-elasticsearch/src/main/java/cn/abel/dao/UserDao.java
type UserDao (line 10) | @Repository
method getByMap (line 14) | List<User> getByMap(Map<String, Object> map);
method getById (line 16) | User getById(Integer id);
method create (line 18) | Integer create(User user);
method update (line 20) | int update(User user);
method delete (line 22) | int delete(Integer id);
FILE: springboot-elasticsearch/src/main/java/cn/abel/service/UserService.java
class UserService (line 37) | @Service
method getByMap (line 60) | public List<User> getByMap(Map<String, Object> map) {
method getById (line 64) | public User getById(Integer id) throws Exception {
method getList (line 88) | public JSONObject getList(String keyword, Integer type, String startTi...
method create (line 112) | public User create(User user) {
method update (line 117) | public User update(User user) {
method delete (line 122) | public int delete(Integer id) {
method searchListQuery (line 133) | private JSONObject searchListQuery(String keyword, Integer type, Strin...
method esSearch (line 192) | public JsonNode esSearch(JSONObject search, String endpoint, RestClien...
method setPage (line 226) | public static JSONObject setPage(Integer pageIndex, Integer pageSize, ...
method getJSONObject (line 240) | public static JSONObject getJSONObject(String key, Object value) {
FILE: springboot-elasticsearch/src/test/java/cn/abel/BaseTest.java
class BaseTest (line 16) | @RunWith(SpringRunner.class)
class ComponentScanConfig (line 21) | @Configuration
method contextLoads (line 28) | @Test
FILE: springboot-elasticsearch/src/test/java/cn/abel/service/ServiceTest.java
class ServiceTest (line 13) | public class ServiceTest extends BaseTest {
method dynamicDataSourceTest (line 19) | @Test
FILE: springboot-jpa/src/main/java/com/us/example/Application.java
class Application (line 14) | @ComponentScan(basePackages ="com.us.example")
method main (line 18) | public static void main(String[] args) {
FILE: springboot-jpa/src/main/java/com/us/example/bean/User.java
class User (line 13) | @Entity
method getName (line 52) | public String getName() {
method setName (line 56) | public void setName(String name) {
method getPassword (line 60) | @JsonIgnore
method setPassword (line 65) | public void setPassword(String password) {
method getUsername (line 69) | public String getUsername() {
method setUsername (line 73) | public void setUsername(String username) {
method getDivisionId (line 77) | public Integer getDivisionId() {
method setDivisionId (line 81) | public void setDivisionId(Integer divisionId) {
method getEmail (line 85) | public String getEmail() {
method setEmail (line 89) | public void setEmail(String email) {
method getGender (line 93) | public String getGender() {
method setGender (line 97) | public void setGender(String gender) {
method getMobilephone (line 101) | public String getMobilephone() {
method setMobilephone (line 105) | public void setMobilephone(String mobilephone) {
method getTelephone (line 109) | public String getTelephone() {
method setTelephone (line 113) | public void setTelephone(String telephone) {
method getUserType (line 117) | public Integer getUserType() {
method setUserType (line 121) | public void setUserType(Integer userType) {
method getCreateBy (line 125) | public String getCreateBy() {
method setCreateBy (line 129) | public void setCreateBy(String createBy) {
method getCreateTime (line 133) | public Date getCreateTime() {
method setCreateTime (line 137) | public void setCreateTime(Date createTime) {
method getUpdateBy (line 141) | public String getUpdateBy() {
method setUpdateBy (line 145) | public void setUpdateBy(String updateBy) {
method getUpdateTime (line 149) | public Date getUpdateTime() {
method setUpdateTime (line 153) | public void setUpdateTime(Date updateTime) {
method getDisabled (line 157) | public Integer getDisabled() {
method setDisabled (line 161) | public void setDisabled(Integer disabled) {
method getTheme (line 165) | public String getTheme() {
method setTheme (line 169) | public void setTheme(String theme) {
method getIsLdap (line 173) | public Integer getIsLdap() {
method setIsLdap (line 177) | public void setIsLdap(Integer isLdap) {
method getId (line 181) | public Integer getId() {
method setId (line 185) | public void setId(Integer id) {
FILE: springboot-jpa/src/main/java/com/us/example/config/DBConfig.java
class DBConfig (line 12) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-jpa/src/main/java/com/us/example/config/JpaConfig.java
class JpaConfig (line 20) | @Configuration
method entityManagerFactory (line 29) | @Bean
method transactionManager (line 51) | @Bean
FILE: springboot-jpa/src/main/java/com/us/example/controller/UserController.java
class UserController (line 20) | @Controller
method getUser (line 36) | @RequestMapping(value = "/byname", method = RequestMethod.GET)
FILE: springboot-jpa/src/main/java/com/us/example/dao/UserJpaDao.java
type UserJpaDao (line 11) | public interface UserJpaDao extends JpaRepository<User, Long> {
method findByName (line 19) | User findByName(String name);
FILE: springboot-jpa/src/main/java/com/us/example/service/UserService.java
type UserService (line 10) | public interface UserService {
method getUserByName (line 18) | public User getUserByName(String username);
FILE: springboot-jpa/src/main/java/com/us/example/serviceImpl/UserServiceImpl.java
class UserServiceImpl (line 18) | @Service
method getUserByName (line 27) | @Override
FILE: springboot-jpa/src/main/java/com/us/example/util/CommonUtil.java
class CommonUtil (line 11) | public class CommonUtil {
method getParameterMap (line 19) | public static Map<String, Object> getParameterMap(HttpServletRequest r...
FILE: springboot-kafka/src/main/java/cn/abel/Application.java
class Application (line 10) | @SpringBootApplication(exclude = KafkaAutoConfiguration.class)
method main (line 12) | public static void main(String[] args) {
FILE: springboot-kafka/src/main/java/cn/abel/config/KafkaConfig.java
class KafkaConfig (line 20) | @Configuration
method batchFactory (line 56) | @Bean(name = "kafkaListenerContainerFactory")
method consumerFactory (line 67) | @Bean
method consumerConfigs (line 71) | @Bean
FILE: springboot-kafka/src/main/java/cn/abel/service/prehandle/KafkaConsumerService.java
class KafkaConsumerService (line 14) | @Component
method processMessage (line 20) | @KafkaListener(topics = "${log.statistical.kafka.topic}", containerFac...
FILE: springboot-kafka/src/main/java/cn/abel/service/prehandle/SplitService.java
class SplitService (line 14) | @Service
method saveAndSplitLog (line 20) | public void saveAndSplitLog(String message) {
FILE: springboot-mybatis/src/main/java/com/us/example/Application.java
class Application (line 12) | @ComponentScan(basePackages ="com.us.example,com.jf")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-mybatis/src/main/java/com/us/example/bean/User.java
class User (line 3) | public class User {
method getId (line 55) | public Integer getId() {
method setId (line 59) | public void setId(Integer id) {
method getName (line 68) | public String getName() {
method setName (line 77) | public void setName(String name) {
method getRePassword (line 86) | public String getRePassword()
method setRePassword (line 96) | public void setRePassword(String rePassword)
method getPassword (line 106) | public String getPassword() {
method setPassword (line 115) | public void setPassword(String password) {
method getUsername (line 124) | public String getUsername() {
method setUsername (line 133) | public void setUsername(String username) {
method getDivisionId (line 142) | public Integer getDivisionId() {
method setDivisionId (line 151) | public void setDivisionId(Integer divisionId) {
method getEmail (line 160) | public String getEmail() {
method setEmail (line 169) | public void setEmail(String email) {
method getGender (line 178) | public String getGender() {
method setGender (line 187) | public void setGender(String gender) {
method getMobilephone (line 196) | public String getMobilephone() {
method setMobilephone (line 205) | public void setMobilephone(String mobilephone) {
method getTelephone (line 214) | public String getTelephone() {
method setTelephone (line 223) | public void setTelephone(String telephone) {
method getUserType (line 232) | public Integer getUserType() {
method setUserType (line 241) | public void setUserType(Integer userType) {
method getCreateBy (line 250) | public String getCreateBy() {
method setCreateBy (line 259) | public void setCreateBy(String createBy) {
method getCreateTime (line 268) | public Date getCreateTime() {
method setCreateTime (line 277) | public void setCreateTime(Date createTime) {
method getUpdateBy (line 286) | public String getUpdateBy() {
method setUpdateBy (line 295) | public void setUpdateBy(String updateBy) {
method getUpdateTime (line 304) | public Date getUpdateTime() {
method setUpdateTime (line 313) | public void setUpdateTime(Date updateTime) {
method getDisabled (line 322) | public Integer getDisabled() {
method setDisabled (line 331) | public void setDisabled(Integer disabled) {
method getTheme (line 340) | public String getTheme() {
method setTheme (line 349) | public void setTheme(String theme) {
method getIsLdap (line 358) | public Integer getIsLdap()
method setIsLdap (line 368) | public void setIsLdap(Integer isLdap)
FILE: springboot-mybatis/src/main/java/com/us/example/config/DBConfig.java
class DBConfig (line 12) | @Configuration
method dataSource (line 17) | @Bean(name="dataSource")
FILE: springboot-mybatis/src/main/java/com/us/example/config/MyBatisConfig.java
class MyBatisConfig (line 13) | @Configuration
method sqlSessionFactory (line 20) | @Bean(name = "sqlSessionFactory")
FILE: springboot-mybatis/src/main/java/com/us/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-mybatis/src/main/java/com/us/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-mybatis/src/main/java/com/us/example/controller/UserController.java
class UserController (line 24) | @Controller
method list (line 39) | @RequestMapping(method = RequestMethod.GET, produces = "application/js...
FILE: springboot-mybatis/src/main/java/com/us/example/dao/UserDao.java
type UserDao (line 8) | public interface UserDao {
method getList (line 9) | List<User> getList(Map<String,Object> map);
FILE: springboot-mybatis/src/main/java/com/us/example/service/Impl/UserServiceImpl.java
class UserServiceImpl (line 23) | @Service
method getList (line 34) | @Page
method printName (line 41) | @Scheduled(cron = "0/30 * * * * ?")
FILE: springboot-mybatis/src/main/java/com/us/example/service/UserService.java
type UserService (line 10) | public interface UserService {
method getList (line 18) | Object getList(Map<String, Object> map);
method printName (line 20) | void printName();
FILE: springboot-mybatis/src/main/java/com/us/example/util/CommonUtil.java
class CommonUtil (line 13) | public class CommonUtil {
method getParameterMap (line 21) | public static Map<String, Object> getParameterMap(HttpServletRequest r...
FILE: springboot-mybatis/src/test/java/com/us/example/BaseTest.java
class BaseTest (line 19) | @RunWith(SpringJUnit4ClassRunner.class)
class ComponentScanConfig (line 23) | @Configuration
method assertNotNull (line 29) | public void assertNotNull(Object obj) {
FILE: springboot-mybatis/src/test/java/com/us/example/service/UserServiceTest.java
class UserServiceTest (line 13) | public class UserServiceTest extends BaseTest {
method getListTest (line 17) | @Test
FILE: springboot-mybatis2/sql/user.sql
type `user` (line 24) | CREATE TABLE `user` (
FILE: springboot-mybatis2/src/main/java/cn/abel/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-mybatis2/src/main/java/cn/abel/bean/User.java
class User (line 6) | public class User {
method getId (line 15) | public Integer getId() {
method setId (line 19) | public void setId(Integer id) {
method getName (line 23) | public String getName() {
method setName (line 27) | public void setName(String name) {
method getAddress (line 31) | public String getAddress() {
method setAddress (line 35) | public void setAddress(String address) {
method getMobile (line 39) | public String getMobile() {
method setMobile (line 43) | public void setMobile(String mobile) {
method getEmail (line 47) | public String getEmail() {
method setEmail (line 51) | public void setEmail(String email) {
method getCreateTime (line 55) | public Date getCreateTime() {
method setCreateTime (line 59) | public void setCreateTime(Date createTime) {
method getRole (line 63) | public Integer getRole() {
method setRole (line 67) | public void setRole(Integer role) {
FILE: springboot-mybatis2/src/main/java/cn/abel/dao/UserDao.java
type UserDao (line 10) | @Repository
method getByMap (line 14) | List<User> getByMap(Map<String, Object> map);
method getById (line 16) | User getById(Integer id);
method create (line 18) | Integer create(User user);
method update (line 20) | int update(User user);
method delete (line 22) | int delete(Integer id);
FILE: springboot-mybatis2/src/main/java/cn/abel/service/UserService.java
class UserService (line 12) | @Service
method getByMap (line 17) | public List<User> getByMap(Map<String,Object> map){
method getById (line 21) | public User getById(Integer id){
method create (line 25) | public User create(User user){
method update (line 30) | public User update(User user){
method delete (line 35) | public int delete(Integer id){
FILE: springboot-mybatis2/src/test/java/cn/abel/BaseTest.java
class BaseTest (line 16) | @RunWith(SpringRunner.class)
class ComponentScanConfig (line 21) | @Configuration
method contextLoads (line 28) | @Test
FILE: springboot-mybatis2/src/test/java/cn/abel/service/ServiceTest.java
class ServiceTest (line 14) | public class ServiceTest extends BaseTest {
method dynamicDataSourceTest (line 20) | @Test
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/Application.java
class Application (line 11) | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
method main (line 13) | public static void main(String[] args) {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/bean/King.java
class King (line 18) | @NodeEntity(label = "King")
method getName (line 59) | public String getName() {
method setName (line 63) | public void setName(String name) {
method getClan (line 67) | public String getClan() {
method setClan (line 71) | public void setClan(String clan) {
method getTimes (line 75) | public String getTimes() {
method setTimes (line 79) | public void setTimes(String times) {
method getPosthumousTitle (line 83) | public String getPosthumousTitle() {
method setPosthumousTitle (line 87) | public void setPosthumousTitle(String posthumousTitle) {
method getTempleNumber (line 91) | public String getTempleNumber() {
method setTempleNumber (line 95) | public void setTempleNumber(String templeNumber) {
method getTomb (line 99) | public String getTomb() {
method setTomb (line 103) | public void setTomb(String tomb) {
method getRemark (line 107) | public String getRemark() {
method setRemark (line 111) | public void setRemark(String remark) {
method getSuccessor (line 115) | public King getSuccessor() {
method setSuccessor (line 119) | public void setSuccessor(King successor) {
method getSons (line 123) | public List<FatherAndSonRelation> getSons() {
method setSons (line 127) | public void setSons(List<FatherAndSonRelation> sons) {
method addRelation (line 135) | public void addRelation(FatherAndSonRelation fatherAndSonRelation){
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/bean/Person.java
class Person (line 11) | public class Person {
method getId (line 18) | public long getId() {
method setId (line 22) | public void setId(long id) {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/bean/Queen.java
class Queen (line 11) | public class Queen extends Person {
method getName (line 48) | public String getName() {
method setName (line 52) | public void setName(String name) {
method getClan (line 56) | public String getClan() {
method setClan (line 60) | public void setClan(String clan) {
method getTimes (line 64) | public String getTimes() {
method setTimes (line 68) | public void setTimes(String times) {
method getTempleNumber (line 72) | public String getTempleNumber() {
method setTempleNumber (line 76) | public void setTempleNumber(String templeNumber) {
method getPosthumousTitle (line 80) | public String getPosthumousTitle() {
method setPosthumousTitle (line 84) | public void setPosthumousTitle(String posthumousTitle) {
method getSon (line 88) | public String getSon() {
method setSon (line 92) | public void setSon(String son) {
method getRemark (line 96) | public String getRemark() {
method setRemark (line 100) | public void setRemark(String remark) {
method getKing (line 104) | public King getKing() {
method setKing (line 108) | public void setKing(King king) {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/bean/relation/FatherAndSonRelation.java
class FatherAndSonRelation (line 14) | @RelationshipEntity(type = "father_son")
method getId (line 26) | public long getId() {
method setId (line 30) | public void setId(long id) {
method getFrom (line 34) | public King getFrom() {
method setFrom (line 38) | public void setFrom(King from) {
method getTo (line 42) | public King getTo() {
method setTo (line 46) | public void setTo(King to) {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/controller/KingController.java
class KingController (line 20) | @Controller
method save (line 26) | @RequestMapping(value = "/save/{id}", method = RequestMethod.GET)
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/dao/KingDao.java
type KingDao (line 17) | @Repository
method findByName (line 27) | King findByName(String name);
method getKings (line 36) | @Query("match p=(a:King)-[r:`传位`*0..]->(b:King) where a.name={0} retur...
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/dao/Neo4jDao.java
class Neo4jDao (line 17) | @Repository
method open (line 34) | public Neo4jSession open() {
method getSessionFactory (line 40) | private synchronized SessionFactory getSessionFactory() {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/dao/Neo4jSession.java
class Neo4jSession (line 16) | public class Neo4jSession {
method Neo4jSession (line 21) | public Neo4jSession(SessionFactory factory) {
method exec (line 32) | public Iterator<Map<String, Object>> exec(String cypher) {
method execSave (line 46) | public void execSave(Object o) {
method clear (line 56) | public void clear() {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/dto/GraphDTO.java
class GraphDTO (line 10) | public class GraphDTO {
method getNodes (line 14) | public List<Object> getNodes() {
method setNodes (line 18) | public void setNodes(List<Object> nodes) {
method getLinks (line 22) | public List<Object> getLinks() {
method setLinks (line 26) | public void setLinks(List<Object> links) {
FILE: springboot-neo4j/src/main/java/cn/abel/neo4j/service/KingService.java
class KingService (line 26) | @Service
method saveKing (line 39) | public void saveKing(List<King> list) {
method saveQueen (line 51) | public void saveQueen(List<Queen> list) {
method getKingAndQueen (line 64) | public GraphDTO getKingAndQueen(String kingName) {
method mapToGraph (line 75) | private GraphDTO mapToGraph(
method findByName (line 117) | public King findByName(String name) {
method getKings (line 129) | public List<King> getKings(String name) {
method saveRelation (line 141) | public void saveRelation(String fatherName, String sonName) {
FILE: springboot-neo4j/src/test/java/cn/abel/neo4j/BaseTest.java
class BaseTest (line 16) | @RunWith(SpringRunner.class)
class ComponentScanConfig (line 21) | @Configuration
method contextLoads (line 28) | @Test
FILE: springboot-neo4j/src/test/java/cn/abel/neo4j/service/InitData.java
class InitData (line 13) | public class InitData {
method initKing (line 15) | public static List<King> initKing() {
method initQueen (line 220) | public static List<Queen> initQueen() {
FILE: springboot-neo4j/src/test/java/cn/abel/neo4j/service/KingServiceTest.java
class KingServiceTest (line 18) | public class KingServiceTest extends BaseTest {
method saveKing (line 25) | @Test
method saveQueen (line 31) | @Test
method saveRelation (line 37) | @Test
method getOneKing (line 42) | @Test
method getKingAndQueen (line 49) | @Test
FILE: springboot-redis-queue/src/main/java/cn/abel/queue/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-redis-queue/src/main/java/cn/abel/queue/config/RedisConfig.java
class RedisConfig (line 31) | @Configuration
method keyGenerator (line 62) | @Override
method redisTemplate (line 76) | @Bean(name = "redisTemplate")
method redisConnectionFactory (line 81) | private RedisConnectionFactory redisConnectionFactory() {
method connectionFactory (line 100) | private RedisConnectionFactory connectionFactory(Integer maxActive,
method getTemplate (line 135) | private RedisTemplate<Object, Object> getTemplate(RedisConnectionFacto...
method jackson2JsonRedisSerializer (line 153) | private Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerialize...
FILE: springboot-redis-queue/src/main/java/cn/abel/queue/controller/PublisherController.java
class PublisherController (line 16) | @RestController
method sendMessage (line 24) | @RequestMapping(value = "{name}",method = RequestMethod.GET)
method getMessage (line 30) | @RequestMapping(value = "/get",method =RequestMethod.GET )
FILE: springboot-redis-queue/src/main/java/cn/abel/queue/service/ProducerService.java
class ProducerService (line 13) | @Service
method sendMessage (line 18) | public String sendMessage(String name) {
FILE: springboot-redis-queue/src/main/java/cn/abel/queue/service/ReceiverService.java
class ReceiverService (line 11) | @Service
method getMessage (line 16) | public String getMessage() {
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/config/ALiConsumerClient.java
class ALiConsumerClient (line 24) | @Configuration
method buildConsumer (line 53) | @Bean(initMethod = "start", destroyMethod = "shutdown")
method ALiConsumerClient (line 75) | @Autowired
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/config/ALiMqConfig.java
class ALiMqConfig (line 13) | @Component
method getMqProperties (line 23) | public Properties getMqProperties() {
method getAccessKey (line 32) | public String getAccessKey() {
method setAccessKey (line 36) | public void setAccessKey(String accessKey) {
method getSecretKey (line 40) | public String getSecretKey() {
method setSecretKey (line 44) | public void setSecretKey(String secretKey) {
method getNameSrvAddr (line 48) | public String getNameSrvAddr() {
method setNameSrvAddr (line 52) | public void setNameSrvAddr(String nameSrvAddr) {
method getTestTopic (line 56) | public String getTestTopic() {
method setTestTopic (line 60) | public void setTestTopic(String testTopic) {
method getTestGroupId (line 64) | public String getTestGroupId() {
method setTestGroupId (line 68) | public void setTestGroupId(String testGroupId) {
method getTestTag (line 72) | public String getTestTag() {
method setTestTag (line 76) | public void setTestTag(String testTag) {
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/config/ALiProducerClient.java
class ALiProducerClient (line 12) | @Component
method build (line 17) | @Bean(name = "producer", initMethod = "start", destroyMethod = "shutdo...
method ALiProducerClient (line 24) | @Autowired
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/service/MessageHandler.java
class MessageHandler (line 17) | @Component
method consume (line 21) | @Override
FILE: springboot-rocketmq-ali/src/main/java/cn/abel/queue/service/ProducerService.java
class ProducerService (line 24) | @Service
method sendMessage (line 37) | public void sendMessage(Object o) {
method sendAsync (line 50) | private static void sendAsync(Predicate<ProducerBean> predicate, Produ...
FILE: springboot-rocketmq/src/main/java/cn/abel/queue/Application.java
class Application (line 10) | @SpringBootApplication
method main (line 12) | public static void main(String[] args) {
FILE: springboot-rocketmq/src/main/java/cn/abel/queue/config/JmsConfig.java
class JmsConfig (line 7) | public class JmsConfig {
FILE: springboot-rocketmq/src/main/java/cn/abel/queue/controller/PublisherController.java
class PublisherController (line 22) | @RestController
method PublisherController (line 35) | public PublisherController() {
method callback (line 45) | @RequestMapping("/text/rocketmq")
FILE: springboot-rocketmq/src/main/java/cn/abel/queue/service/ProducerService.java
class ProducerService (line 15) | @Service
method ProducerService (line 21) | public ProducerService(){
method start (line 33) | public void start(){
method getProducer (line 41) | public DefaultMQProducer getProducer(){
method shutdown (line 47) | public void shutdown(){
FILE: springboot-rocketmq/src/main/java/cn/abel/queue/service/ReceiverService.java
class ReceiverService (line 18) | @Service
method ReceiverService (line 31) | public ReceiverService() throws MQClientException {
FILE: springboot-shiro/src/main/java/com/us/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-shiro/src/main/java/com/us/bean/Event.java
class Event (line 6) | public class Event {
method getId (line 30) | public Integer getId() {
method setId (line 33) | public void setId(Integer id) {
method getRawEventId (line 36) | public Integer getRawEventId() {
method setRawEventId (line 39) | public void setRawEventId(Integer rawEventId) {
method getHost (line 42) | public String getHost() {
method setHost (line 45) | public void setHost(String host) {
method getIp (line 48) | public String getIp() {
method setIp (line 51) | public void setIp(String ip) {
method getSource (line 54) | public String getSource() {
method setSource (line 57) | public void setSource(String source) {
method getType (line 60) | public String getType() {
method setType (line 63) | public void setType(String type) {
method getStartTime (line 66) | public Date getStartTime() {
method setStartTime (line 69) | public void setStartTime(Date startTime) {
method getEndTime (line 72) | public Date getEndTime() {
method setEndTime (line 75) | public void setEndTime(Date endTime) {
method getContent (line 78) | public String getContent() {
method setContent (line 81) | public void setContent(String content) {
method getDataType (line 84) | public String getDataType() {
method setDataType (line 87) | public void setDataType(String dataType) {
method getSuggest (line 90) | public String getSuggest() {
method setSuggest (line 93) | public void setSuggest(String suggest) {
method getBusinessSystemId (line 96) | public Integer getBusinessSystemId() {
method setBusinessSystemId (line 99) | public void setBusinessSystemId(Integer businessSystemId) {
method getDepartmentId (line 102) | public Integer getDepartmentId() {
method setDepartmentId (line 105) | public void setDepartmentId(Integer departmentId) {
method getStatus (line 108) | public String getStatus() {
method setStatus (line 111) | public void setStatus(String status) {
method getOccurCount (line 114) | public Integer getOccurCount() {
method setOccurCount (line 117) | public void setOccurCount(Integer occurCount) {
method getOwner (line 120) | public String getOwner() {
method setOwner (line 123) | public void setOwner(String owner) {
method getResponsedTime (line 126) | public Date getResponsedTime() {
method setResponsedTime (line 129) | public void setResponsedTime(Date responsedTime) {
method getResponsedBy (line 132) | public String getResponsedBy() {
method setResponsedBy (line 135) | public void setResponsedBy(String responsedBy) {
method getResolvedTime (line 138) | public Date getResolvedTime() {
method setResolvedTime (line 141) | public void setResolvedTime(Date resolvedTime) {
method getResolvedBy (line 144) | public String getResolvedBy() {
method setResolvedBy (line 147) | public void setResolvedBy(String resolvedBy) {
method getClosedTime (line 150) | public Date getClosedTime() {
method setClosedTime (line 153) | public void setClosedTime(Date closedTime) {
method getClosedBy (line 156) | public String getClosedBy() {
method setClosedBy (line 159) | public void setClosedBy(String closedBy) {
method toString (line 162) | @Override
FILE: springboot-shiro/src/main/java/com/us/bean/Permission.java
class Permission (line 4) | public class Permission {
method getId (line 11) | public Integer getId() {
method setId (line 15) | public void setId(Integer id) {
method getName (line 19) | public String getName() {
method setName (line 23) | public void setName(String name) {
method getPermissionUrl (line 27) | public String getPermissionUrl() {
method setPermissionUrl (line 31) | public void setPermissionUrl(String permissionUrl) {
method getMethod (line 35) | public String getMethod() {
method setMethod (line 39) | public void setMethod(String method) {
method getDescription (line 43) | public String getDescription() {
method setDescription (line 47) | public void setDescription(String description) {
method toString (line 51) | @Override
FILE: springboot-shiro/src/main/java/com/us/bean/Role.java
class Role (line 5) | public class Role {
method getId (line 11) | public Integer getId() {
method setId (line 14) | public void setId(Integer id) {
method getName (line 17) | public String getName() {
method setName (line 20) | public void setName(String name) {
method getRoleLevel (line 23) | public Integer getRoleLevel() {
method setRoleLevel (line 26) | public void setRoleLevel(Integer roleLevel) {
method getDescription (line 29) | public String getDescription() {
method setDescription (line 32) | public void setDescription(String description) {
method toString (line 35) | @Override
FILE: springboot-shiro/src/main/java/com/us/bean/User.java
class User (line 6) | public class User {
method getId (line 22) | public Integer getId() {
method setId (line 25) | public void setId(Integer id) {
method getCnname (line 28) | public String getCnname() {
method setCnname (line 31) | public void setCnname(String cnname) {
method getUsername (line 34) | public String getUsername() {
method getPassword (line 37) | public String getPassword() {
method setPassword (line 40) | public void setPassword(String password) {
method getEmail (line 43) | public String getEmail() {
method setEmail (line 46) | public void setEmail(String email) {
method getTelephone (line 49) | public String getTelephone() {
method setTelephone (line 52) | public void setTelephone(String telephone) {
method getMobilePhone (line 55) | public String getMobilePhone() {
method setMobilePhone (line 58) | public void setMobilePhone(String mobilePhone) {
method getWechatId (line 61) | public String getWechatId() {
method setWechatId (line 64) | public void setWechatId(String wechatId) {
method getSkill (line 67) | public String getSkill() {
method setSkill (line 70) | public void setSkill(String skill) {
method getDepartmentId (line 73) | public Integer getDepartmentId() {
method setDepartmentId (line 76) | public void setDepartmentId(Integer departmentId) {
method getLoginCount (line 79) | public Integer getLoginCount() {
method setLoginCount (line 82) | public void setLoginCount(Integer loginCount) {
method getRoles (line 86) | public List<Role> getRoles() {
method setRoles (line 90) | public void setRoles(List<Role> roles) {
method toString (line 93) | @Override
FILE: springboot-shiro/src/main/java/com/us/config/DataSourceConfig.java
class DataSourceConfig (line 11) | @Configuration
method dataSource (line 16) | @Bean(name="dataSource")
FILE: springboot-shiro/src/main/java/com/us/config/MapperScannerConfig.java
class MapperScannerConfig (line 7) | @Configuration
method mapperScannerConfigurer (line 10) | @Bean
FILE: springboot-shiro/src/main/java/com/us/config/MyBatisConfig.java
class MyBatisConfig (line 14) | @Configuration
method sqlSessionFactory (line 20) | @Bean(name = "sqlSessionFactory")
FILE: springboot-shiro/src/main/java/com/us/config/TransactionConfig.java
class TransactionConfig (line 12) | @Configuration
method annotationDrivenTransactionManager (line 18) | @Override
FILE: springboot-shiro/src/main/java/com/us/controller/EventController.java
class EventController (line 11) | @RequestMapping(value = "/events")
method list (line 19) | @RequestMapping(method = RequestMethod.GET)
method detail (line 24) | @RequestMapping(value = "/{id}", method = RequestMethod.GET)
method create (line 29) | @RequestMapping(method = RequestMethod.POST)
method update (line 34) | @RequestMapping(method = RequestMethod.PUT)
method delete (line 39) | @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
FILE: springboot-shiro/src/main/java/com/us/controller/LoginController.java
class LoginController (line 20) | @RestController
method login (line 24) | @RequestMapping(value = "/login", method = RequestMethod.POST)
method index (line 45) | @RequestMapping("/")
FILE: springboot-shiro/src/main/java/com/us/controller/UserController.java
class UserController (line 12) | @RequestMapping(value = "/users")
method list (line 20) | @RequestMapping(method = RequestMethod.GET)
method detail (line 25) | @RequestMapping(value = "/{id}", method = RequestMethod.GET)
method create (line 30) | @RequestMapping(method = RequestMethod.POST)
method update (line 35) | @RequestMapping(method = RequestMethod.PUT)
method delete (line 40) | @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
FILE: springboot-shiro/src/main/java/com/us/dao/EventDao.java
type EventDao (line 8) | public interface EventDao {
method getByMap (line 10) | List<Event> getByMap(Map<String, Object> map);
method getById (line 11) | Event getById(Integer id);
method create (line 12) | Integer create(Event event);
method update (line 13) | int update(Event event);
method delete (line 14) | int delete(Integer id);
FILE: springboot-shiro/src/main/java/com/us/dao/PermissionDao.java
type PermissionDao (line 8) | public interface PermissionDao {
method getByMap (line 10) | List<Permission> getByMap(Map<String, Object> map);
method getById (line 12) | Permission getById(Integer id);
method create (line 14) | Integer create(Permission permission);
method update (line 16) | int update(Permission permission);
method delete (line 18) | int delete(Integer id);
method getList (line 20) | List<Permission> getList();
method getByUserId (line 22) | List<Permission> getByUserId(Integer userId);
FILE: springboot-shiro/src/main/java/com/us/dao/RoleDao.java
type RoleDao (line 9) | public interface RoleDao {
method getByMap (line 11) | List<Role> getByMap(Map<String, Object> map);
method getById (line 12) | Role getById(Integer id);
method create (line 13) | Integer create(Role role);
method update (line 14) | int update(Role role);
method delete (line 15) | int delete(Integer id);
FILE: springboot-shiro/src/main/java/com/us/dao/UserDao.java
type UserDao (line 8) | public interface UserDao {
method getByMap (line 10) | List<User> getByMap(Map<String, Object> map);
method getById (line 11) | User getById(Integer id);
method create (line 12) | Integer create(User user);
method update (line 13) | int update(User user);
method delete (line 14) | int delete(Integer id);
method getByUserName (line 15) | User getByUserName(String userName);
FILE: springboot-shiro/src/main/java/com/us/service/EventService.java
class EventService (line 11) | @Service
method getByMap (line 16) | public List<Event> getByMap(Map<String,Object> map) {
method getById (line 20) | public Event getById(Integer id) {
method create (line 24) | public Event create(Event event) {
method update (line 29) | public Event update(Event event) {
method delete (line 34) | public int delete(Integer id) {
FILE: springboot-shiro/src/main/java/com/us/service/PermissionService.java
class PermissionService (line 11) | @Service
method getByMap (line 16) | public List<Permission> getByMap(Map<String,Object> map) {
method getById (line 20) | public Permission getById(Integer id) {
method create (line 24) | public Permission create(Permission permission) {
method update (line 29) | public Permission update(Permission permission) {
method delete (line 34) | public int delete(Integer id) {
FILE: springboot-shiro/src/main/java/com/us/service/RoleService.java
class RoleService (line 12) | @Service
method getByMap (line 17) | public List<Role> getByMap(Map<String,Object> map) {
method getById (line 21) | public Role getById(Integer id) {
method create (line 25) | public Role create(Role role) {
method update (line 30) | public Role update(Role role) {
method delete (line 35) | public int delete(Integer id) {
FILE: springboot-shiro/src/main/java/com/us/service/UserService.java
class UserService (line 11) | @Service
method getByMap (line 16) | public List<User> getByMap(Map<String,Object> map) {
method getById (line 20) | public User getById(Integer id) {
method create (line 24) | public User create(User user) {
method update (line 29) | public User update(User user) {
method delete (line 34) | public int delete(Integer id) {
method getByUserName (line 38) | public User getByUserName(String userName) {
FILE: springboot-shiro/src/main/java/com/us/shiro/ShiroConfiguration.java
class ShiroConfiguration (line 25) | @Configuration
method lifecycleBeanPostProcessor (line 32) | @Bean(name = "lifecycleBeanPostProcessor")
method hashedCredentialsMatcher (line 42) | @Bean(name = "hashedCredentialsMatcher")
method shiroRealm (line 55) | @Bean(name = "shiroRealm")
method securityManager (line 77) | @Bean(name = "securityManager")
method shiroFilterFactoryBean (line 89) | @Bean(name = "shiroFilter")
method defaultAdvisorAutoProxyCreator (line 117) | @Bean
method authorizationAttributeSourceAdvisor (line 129) | @Bean
FILE: springboot-shiro/src/main/java/com/us/shiro/ShiroRealm.java
class ShiroRealm (line 23) | public class ShiroRealm extends AuthorizingRealm {
method doGetAuthorizationInfo (line 30) | @Override
method doGetAuthenticationInfo (line 55) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/ShiroRestApplication.java
class ShiroRestApplication (line 12) | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
method main (line 16) | public static void main(String[] args) {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/config/RedisConfig.java
class RedisConfig (line 42) | @Configuration
method keyGenerator (line 77) | @Override
method cacheManager (line 94) | @Override
method redisTemplate (line 129) | @Bean(name = "redisTemplate")
method stringRedisTemplate (line 135) | @Bean(name = "stringRedisTemplate")
method redisConnectionFactory (line 140) | private RedisConnectionFactory redisConnectionFactory() {
method connectionFactory (line 144) | private RedisConnectionFactory connectionFactory(Integer maxActive,
method getTemplate (line 174) | private RedisTemplate<String, Object> getTemplate(RedisConnectionFacto...
method jackson2JsonRedisSerializer (line 188) | private RedisSerializer<Object> jackson2JsonRedisSerializer() {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/constants/Constants.java
type Constants (line 4) | public interface Constants {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/controller/LoginController.java
class LoginController (line 24) | @RestController
method login (line 38) | @RequestMapping(value = "/login", method = RequestMethod.POST)
method loginInfo (line 51) | @GetMapping("/logininfo")
method logout (line 72) | @PostMapping("/logout")
FILE: springboot-shiro2/src/main/java/cn/abel/rest/exception/DefaultErrorController.java
class DefaultErrorController (line 22) | @Controller
method DefaultErrorController (line 25) | public DefaultErrorController(ServerProperties serverProperties) {
method error (line 32) | @Override
method errorHtml (line 48) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/exception/DefaultExceptionHandler.java
class DefaultExceptionHandler (line 25) | @ControllerAdvice
method handleMethodArgumentNotValidException (line 44) | @ResponseBody
method handleConstraintViolationException (line 65) | @ResponseBody
method processServiceException (line 84) | @ExceptionHandler({ServiceException.class})
method processUnauthorizedException (line 102) | @ExceptionHandler({UnauthorizedException.class})
method processException (line 116) | @ExceptionHandler({RuntimeException.class})
method processException (line 130) | @ExceptionHandler({Exception.class})
FILE: springboot-shiro2/src/main/java/cn/abel/rest/freemarker/CustomFreeMarkerView.java
class CustomFreeMarkerView (line 14) | public class CustomFreeMarkerView extends FreeMarkerView {
method exposeHelpers (line 18) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/freemarker/FreeMarkerConfig.java
class FreeMarkerConfig (line 16) | @Configuration
method setSharedVariable (line 26) | @PostConstruct
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/HttpHeaderSessionManager.java
class HttpHeaderSessionManager (line 12) | public class HttpHeaderSessionManager extends DefaultWebSessionManager {
method getSessionId (line 16) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/RedisSessionDao.java
class RedisSessionDao (line 19) | public class RedisSessionDao extends EnterpriseCacheSessionDAO {
method cache (line 24) | private Cache cache() {
method doCreate (line 35) | @Override
method doReadSession (line 48) | @Override
method doUpdate (line 73) | @Override
method doDelete (line 94) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ShiroConfig.java
class ShiroConfig (line 40) | @Configuration
method shiroFilter (line 50) | @Bean(name = "shiroFilter")
method shiroRedisCacheManager (line 82) | @Bean(name = "shiroRedisCacheManager")
method realm (line 98) | @Bean
method sessionValidationScheduler (line 119) | @Bean(name = "sessionValidationScheduler")
method sessionDAO (line 137) | @Bean
method sessionIdCookie (line 150) | @Bean
method rememberMeCookie (line 163) | @Bean
method sessionManager (line 177) | @Bean
method securityManager (line 199) | @Bean
method rememberMeManager (line 215) | @Bean
method credentialsMatcher (line 229) | @Bean(name = "credentialsMatcher")
method methodInvokingFactoryBean (line 241) | @Bean
method lifecycleBeanPostProcessor (line 254) | @Bean
method formAuthenticationFilter (line 259) | public ShiroFormAuthenticationFilter formAuthenticationFilter() {
method advisorAutoProxyCreator (line 276) | @Bean
method authorizationAttributeSourceAdvisor (line 292) | @Bean
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ShiroProperty.java
class ShiroProperty (line 9) | @Configuration
method getShiroRetryExpireTimeRedis (line 24) | public int getShiroRetryExpireTimeRedis() {
method setShiroRetryExpireTimeRedis (line 28) | public void setShiroRetryExpireTimeRedis(int shiroRetryExpireTimeRedis) {
method getShiroAuthorizationExpireTimeRedis (line 32) | public int getShiroAuthorizationExpireTimeRedis() {
method setShiroAuthorizationExpireTimeRedis (line 36) | public void setShiroAuthorizationExpireTimeRedis(int shiroAuthorizatio...
method getShiroRetryMax (line 40) | public int getShiroRetryMax() {
method setShiroRetryMax (line 44) | public void setShiroRetryMax(int shiroRetryMax) {
method getShiroSessionExpireTimeRedis (line 48) | public Integer getShiroSessionExpireTimeRedis() {
method setShiroSessionExpireTimeRedis (line 52) | public void setShiroSessionExpireTimeRedis(Integer shiroSessionExpireT...
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ShiroRealm.java
class ShiroRealm (line 34) | @Component
method doGetAuthenticationInfo (line 53) | @Override
method doGetAuthorizationInfo (line 72) | @Override
method clearCachedAuthorizationInfo (line 110) | @Override
method clearCachedAuthenticationInfo (line 116) | @Override
method clearCache (line 122) | @Override
method clearAllCachedAuthorizationInfo (line 128) | public void clearAllCachedAuthorizationInfo() {
method clearAllCachedAuthenticationInfo (line 134) | public void clearAllCachedAuthenticationInfo() {
method clearAllCache (line 141) | public void clearAllCache() {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ShiroRedisCacheManager.java
class ShiroRedisCacheManager (line 22) | @Component
method getCache (line 36) | @Override
class ShiroRedisCache (line 49) | public class ShiroRedisCache<K, V> implements Cache<K, V> {
method ShiroRedisCache (line 56) | public ShiroRedisCache(String cacheKey, long expireTime) {
method get (line 61) | @Override
method put (line 68) | @Override
method remove (line 78) | @Override
method clear (line 93) | @Override
method size (line 98) | @Override
method keys (line 104) | @Override
method values (line 110) | @Override
method hashKey (line 116) | protected Object hashKey(K key) {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ShiroUser.java
class ShiroUser (line 11) | public class ShiroUser implements Serializable {
method getUserId (line 23) | public Long getUserId() {
method setUserId (line 27) | public void setUserId(Long userId) {
method getLoginName (line 31) | public String getLoginName() {
method setLoginName (line 35) | public void setLoginName(String loginName) {
method setNickName (line 39) | public void setNickName(String nickName) {
method ShiroUser (line 43) | public ShiroUser(Long userId, String loginName, String nickName) {
method getNickName (line 49) | public String getNickName() {
method getToken (line 53) | public String getToken() {
method setToken (line 57) | public void setToken(String token) {
method toString (line 64) | @Override
method hashCode (line 72) | @Override
method equals (line 80) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/UuidSessionIdGenerator.java
class UuidSessionIdGenerator (line 14) | public class UuidSessionIdGenerator implements SessionIdGenerator {
method generateId (line 16) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/credentials/PasswordHelper.java
class PasswordHelper (line 10) | public class PasswordHelper {
method setAlgorithmName (line 15) | public void setAlgorithmName(String algorithmName) {
method setHashIterations (line 19) | public void setHashIterations(int hashIterations) {
method encryptPassword (line 23) | public static String encryptPassword(String userName, String password) {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/credentials/RetryLimitHashedCredentialsMatcher.java
class RetryLimitHashedCredentialsMatcher (line 23) | public class RetryLimitHashedCredentialsMatcher extends HashedCredential...
method RetryLimitHashedCredentialsMatcher (line 33) | public RetryLimitHashedCredentialsMatcher(CacheManager cacheManager) {
method doCredentialsMatch (line 37) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/credentials/ThirdPartySupportedToken.java
class ThirdPartySupportedToken (line 9) | public class ThirdPartySupportedToken extends UsernamePasswordToken {
method ThirdPartySupportedToken (line 20) | public ThirdPartySupportedToken(
method getUsername (line 29) | @Override
method setUsername (line 34) | @Override
method getPassword (line 39) | @Override
method setPassword (line 44) | @Override
method getPrincipal (line 49) | @Override
method getCredentials (line 54) | @Override
method getHost (line 59) | @Override
method setHost (line 64) | @Override
method isRememberMe (line 69) | @Override
method setRememberMe (line 74) | @Override
method getAccessToken (line 79) | public String getAccessToken() {
method setAccessToken (line 83) | public void setAccessToken(String accessToken) {
method clear (line 87) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ext/QuartzSessionValidationJob.java
class QuartzSessionValidationJob (line 16) | public class QuartzSessionValidationJob implements Job {
method execute (line 46) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/ext/QuartzSessionValidationScheduler.java
class QuartzSessionValidationScheduler (line 23) | public class QuartzSessionValidationScheduler implements SessionValidati...
method QuartzSessionValidationScheduler (line 37) | public QuartzSessionValidationScheduler() {
method QuartzSessionValidationScheduler (line 40) | public QuartzSessionValidationScheduler(ValidatingSessionManager sessi...
method getScheduler (line 44) | protected Scheduler getScheduler() throws SchedulerException {
method setScheduler (line 52) | public void setScheduler(Scheduler scheduler) {
method setSessionManager (line 56) | public void setSessionManager(ValidatingSessionManager sessionManager) {
method isEnabled (line 60) | @Override
method setSessionValidationInterval (line 65) | public void setSessionValidationInterval(long sessionValidationInterva...
method enableSessionValidation (line 69) | @Override
method disableSessionValidation (line 104) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/filter/ShiroFormAuthenticationFilter.java
class ShiroFormAuthenticationFilter (line 28) | public class ShiroFormAuthenticationFilter extends FormAuthenticationFil...
method onPreHandle (line 31) | @Override
method onAccessDenied (line 52) | @Override
method onLoginFailure (line 74) | @Override
method onLoginSuccess (line 106) | @Override
method createToken (line 124) | @Override
method responseDirectly (line 143) | private boolean responseDirectly(HttpServletResponse response, Respons...
FILE: springboot-shiro2/src/main/java/cn/abel/rest/shiro/filter/ShiroLogoutFilter.java
class ShiroLogoutFilter (line 16) | public class ShiroLogoutFilter extends LogoutFilter {
method preHandle (line 20) | @Override
FILE: springboot-shiro2/src/main/java/cn/abel/rest/utils/ServletKit.java
class ServletKit (line 14) | public class ServletKit {
method getRequest (line 21) | public static HttpServletRequest getRequest() {
method isStaticFile (line 31) | public static boolean isStaticFile(String uri) {
FILE: springboot-shiro2/src/main/java/cn/abel/rest/utils/SpringContextKit.java
class SpringContextKit (line 16) | @Component
method setApplicationContext (line 23) | @Override
method getApplicationContext (line 28) | public static ApplicationContext getApplicationContext() {
method getBean (line 32) | public static Object getBean(String name) throws BeansException {
method getBean (line 36) | public static Object getBean(String name, Class requiredType) throws B...
method getBean (line 41) | public static <T> T getBean(Class<T> clazz) throws BeansException {
method containsBean (line 45) | public static boolean containsBean(String name) {
method isSingleton (line 49) | public static boolean isSingleton(String name) throws NoSuchBeanDefini...
method getType (line 53) | public static Class getType(String name) throws NoSuchBeanDefinitionEx...
method getAliases (line 57) | public static String[] getAliases(String name) throws NoSuchBeanDefini...
FILE: springboot-springCloud/config/src/main/java/com/abel/ConfigApplication.java
class ConfigApplication (line 12) | @SpringBootApplication
method main (line 18) | public static void main(String[] args) {
FILE: springboot-springCloud/discovery/src/main/java/com/abel/DiscoveryApplication.java
class DiscoveryApplication (line 11) | @SpringBootApplication
method main (line 14) | public static void main(String[] args) {
FILE: springboot-springCloud/monitor/src/main/java/com/abel/MonitorApplication.java
class MonitorApplication (line 11) | @SpringBootApplication
method main (line 17) | public static void main(String[] args) {
FILE: springboot-springCloud/person/src/main/java/com/abel/PersonApplication.java
class PersonApplication (line 9) | @SpringBootApplication
method main (line 11) | public static void main(String[] args) {
FILE: springboot-springCloud/person/src/main/java/com/abel/bean/Person.java
class Person (line 10) | @Entity
method Person (line 18) | public Person() {
method Person (line 22) | public Person(String name) {
method getId (line 27) | public Long getId() {
method setId (line 31) | public void setId(Long id) {
method getName (line 35) | public String getName() {
method setName (line 39) | public void setName(String name) {
FILE: springboot-springCloud/person/src/main/java/com/abel/controller/PersonController.java
class PersonController (line 17) | @RestController
method savePerson (line 22) | @RequestMapping(value = "/save", method = RequestMethod.POST)
FILE: springboot-springCloud/person/src/main/java/com/abel/dao/PersonRepository.java
type PersonRepository (line 8) | public interface PersonRepository extends JpaRepository<Person, Long>{
FILE: springboot-springCloud/some/src/main/java/com/abel/SomeApplication.java
class SomeApplication (line 13) | @SpringBootApplication
method getsome (line 20) | @RequestMapping(value = "/getsome")
method main (line 24) | public static void main(String[] args) {
FILE: springboot-springCloud/ui/src/main/java/com/abel/UiApplication.java
class UiApplication (line 13) | @SpringBootApplication
method main (line 19) | public static void main(String[] args) {
FILE: springboot-springCloud/ui/src/main/java/com/abel/bean/Person.java
class Person (line 6) | public class Person {
method Person (line 12) | public Person() {
method Person (line 16) | public Person(String name) {
method getId (line 21) | public Long getId() {
method setId (line 25) | public void setId(Long id) {
method getName (line 29) | public String getName() {
method setName (line 33) | public void setName(String name) {
FILE: springboot-springCloud/ui/src/main/java/com/abel/controller/UiController.java
class UiController (line 17) | @RestController
method sendMessage (line 25) | @RequestMapping("/dispatch")
method getSome (line 30) | @RequestMapping(value = "/getsome",produces={MediaType.TEXT_PLAIN_VALUE})
FILE: springboot-springCloud/ui/src/main/java/com/abel/service/PersonHystrixService.java
class PersonHystrixService (line 14) | @Service
method save (line 20) | @HystrixCommand(fallbackMethod = "fallbackSave") //使用HystrixCommand的fa...
method fallbackSave (line 25) | public List<Person> fallbackSave(String name){
FILE: springboot-springCloud/ui/src/main/java/com/abel/service/PersonService.java
type PersonService (line 18) | @FeignClient("person")
method save (line 20) | @RequestMapping(method = RequestMethod.POST, value = "/save",
FILE: springboot-springCloud/ui/src/main/java/com/abel/service/SomeHystrixService.java
class SomeHystrixService (line 12) | @Service
method getSome (line 18) | @HystrixCommand(fallbackMethod = "fallbackSome") //HystrixCommand 的参数指...
method fallbackSome (line 23) | public String fallbackSome(){
FILE: springboot-springSecurity2/src/main/java/com/us/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us.example")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-springSecurity2/src/main/java/com/us/example/config/DBconfig.java
class DBconfig (line 13) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-springSecurity2/src/main/java/com/us/example/config/MyBatisConfig.java
class MyBatisConfig (line 12) | @Configuration
method sqlSessionFactory (line 19) | @Bean(name = "sqlSessionFactory")
FILE: springboot-springSecurity2/src/main/java/com/us/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-springSecurity2/src/main/java/com/us/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-springSecurity2/src/main/java/com/us/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 17) | @Configuration
method configure (line 26) | @Autowired
method configure (line 31) | @Override
FILE: springboot-springSecurity2/src/main/java/com/us/example/controller/HomeController.java
class HomeController (line 17) | @Controller
method getUsers (line 23) | @RequestMapping(method = RequestMethod.GET)
method save (line 29) | @Secured({"ROLE_ADMIN","ROLE_USER"})
method update (line 37) | @Secured("ROLE_ADMIN")
method delete (line 45) | @Secured("ROLE_ADMIN")
FILE: springboot-springSecurity2/src/main/java/com/us/example/controller/LoginController.java
class LoginController (line 14) | @RestController
method login (line 17) | @RequestMapping(value = "/login")
FILE: springboot-springSecurity2/src/main/java/com/us/example/dao/UserDao.java
type UserDao (line 6) | public interface UserDao {
method findByUserName (line 7) | SysUser findByUserName(String username);
method create (line 9) | int create (SysUser sysUser);
FILE: springboot-springSecurity2/src/main/java/com/us/example/domain/SysRole.java
class SysRole (line 7) | public class SysRole {
method getId (line 11) | public Integer getId() {
method setId (line 14) | public void setId(Integer id) {
method getName (line 17) | public String getName() {
method setName (line 20) | public void setName(String name) {
FILE: springboot-springSecurity2/src/main/java/com/us/example/domain/SysUser.java
class SysUser (line 14) | public class SysUser implements UserDetails { // implements UserDetails...
method getId (line 25) | public Integer getId() {
method setId (line 29) | public void setId(Integer id) {
method getUsername (line 33) | public String getUsername() {
method setUsername (line 37) | public void setUsername(String username) {
method getPassword (line 41) | public String getPassword() {
method setPassword (line 45) | public void setPassword(String password) {
method getRoles (line 49) | public List<SysRole> getRoles() {
method setRoles (line 53) | public void setRoles(List<SysRole> roles) {
method getRawPassword (line 57) | public String getRawPassword() {
method setRawPassword (line 61) | public void setRawPassword(String rawPassword) {
method isAccountNonExpired (line 66) | @JsonIgnore
method isAccountNonLocked (line 72) | @JsonIgnore
method isCredentialsNonExpired (line 78) | @JsonIgnore
method isEnabled (line 85) | @JsonIgnore
method getAuthorities (line 91) | @JsonIgnore
method setGrantedAuthorities (line 97) | public void setGrantedAuthorities(List<? extends GrantedAuthority> aut...
FILE: springboot-springSecurity2/src/main/java/com/us/example/security/CustomUserService.java
class CustomUserService (line 20) | @Service
method loadUserByUsername (line 27) | @Override
FILE: springboot-springSecurity2/src/main/java/com/us/example/service/UserService.java
class UserService (line 13) | @Service
method create (line 18) | public SysUser create(SysUser sysUser){
FILE: springboot-springSecurity2/src/main/java/com/us/example/util/BCryptPasswordEncoderTest.java
class BCryptPasswordEncoderTest (line 8) | public class BCryptPasswordEncoderTest {
method main (line 9) | public static void main(String[] args) {
FILE: springboot-springSecurity2/src/main/java/com/us/example/util/MD5Util.java
class MD5Util (line 8) | public class MD5Util {
method encode (line 11) | public static String encode(String password) {
method processEncode (line 16) | public static String processEncode(String password) {
method main (line 41) | public static void main(String[] args) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.us.example")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/DBconfig.java
class DBconfig (line 13) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/MyBatisConfig.java
class MyBatisConfig (line 12) | @Configuration
method sqlSessionFactory (line 19) | @Bean(name = "sqlSessionFactory")
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/WebMvcConfig.java
class WebMvcConfig (line 9) | @Configuration
method addViewControllers (line 13) | @Override
FILE: springboot-springSecurity3/src/main/java/com/us/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 20) | @Configuration
method customUserService (line 28) | @Bean
method configure (line 33) | @Override
method configure (line 39) | @Override
FILE: springboot-springSecurity3/src/main/java/com/us/example/controller/HomeController.java
class HomeController (line 13) | @Controller
method index (line 16) | @RequestMapping("/")
method hello (line 24) | @RequestMapping("/admin")
method login (line 30) | @RequestMapping("/login")
method getList (line 35) | @RequestMapping(value = "/user", method = RequestMethod.GET)
method save (line 42) | @RequestMapping(value = "/user", method = RequestMethod.POST)
method update (line 49) | @RequestMapping(value = "/user", method = RequestMethod.PUT)
FILE: springboot-springSecurity3/src/main/java/com/us/example/dao/PermissionDao.java
type PermissionDao (line 10) | public interface PermissionDao {
method findAll (line 11) | public List<Permission> findAll();
method findByAdminUserId (line 12) | public List<Permission> findByAdminUserId(int userId);
FILE: springboot-springSecurity3/src/main/java/com/us/example/dao/UserDao.java
type UserDao (line 6) | public interface UserDao {
method findByUserName (line 7) | public SysUser findByUserName(String username);
FILE: springboot-springSecurity3/src/main/java/com/us/example/domain/Msg.java
class Msg (line 7) | public class Msg {
method Msg (line 12) | public Msg(String title, String content, String etraInfo) {
method getTitle (line 18) | public String getTitle() {
method setTitle (line 21) | public void setTitle(String title) {
method getContent (line 24) | public String getContent() {
method setContent (line 27) | public void setContent(String content) {
method getEtraInfo (line 30) | public String getEtraInfo() {
method setEtraInfo (line 33) | public void setEtraInfo(String etraInfo) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/domain/Permission.java
class Permission (line 6) | public class Permission {
method getId (line 24) | public int getId() {
method setId (line 28) | public void setId(int id) {
method getName (line 32) | public String getName() {
method setName (line 36) | public void setName(String name) {
method getDescritpion (line 40) | public String getDescritpion() {
method setDescritpion (line 44) | public void setDescritpion(String descritpion) {
method getUrl (line 48) | public String getUrl() {
method setUrl (line 52) | public void setUrl(String url) {
method getPid (line 56) | public int getPid() {
method setPid (line 60) | public void setPid(int pid) {
method getMethod (line 64) | public String getMethod() {
method setMethod (line 68) | public void setMethod(String method) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/domain/SysRole.java
class SysRole (line 7) | public class SysRole {
method getId (line 11) | public Integer getId() {
method setId (line 14) | public void setId(Integer id) {
method getName (line 17) | public String getName() {
method setName (line 20) | public void setName(String name) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/domain/SysUser.java
class SysUser (line 9) | public class SysUser {
method getId (line 16) | public Integer getId() {
method setId (line 20) | public void setId(Integer id) {
method getUsername (line 24) | public String getUsername() {
method setUsername (line 28) | public void setUsername(String username) {
method getPassword (line 32) | public String getPassword() {
method setPassword (line 36) | public void setPassword(String password) {
method getRoles (line 40) | public List<SysRole> getRoles() {
method setRoles (line 44) | public void setRoles(List<SysRole> roles) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/service/CustomUserService.java
class CustomUserService (line 23) | @Service
method loadUserByUsername (line 31) | public UserDetails loadUserByUsername(String username) {
FILE: springboot-springSecurity3/src/main/java/com/us/example/service/MyAccessDecisionManager.java
class MyAccessDecisionManager (line 20) | @Service
method decide (line 24) | @Override
method supports (line 54) | @Override
method supports (line 59) | @Override
FILE: springboot-springSecurity3/src/main/java/com/us/example/service/MyFilterSecurityInterceptor.java
class MyFilterSecurityInterceptor (line 23) | @Service
method setMyAccessDecisionManager (line 30) | @Autowired
method init (line 36) | @Override
method doFilter (line 41) | @Override
method invoke (line 49) | public void invoke(FilterInvocation fi) throws IOException, ServletExc...
method destroy (line 63) | @Override
method getSecureObjectClass (line 68) | @Override
method obtainSecurityMetadataSource (line 74) | @Override
FILE: springboot-springSecurity3/src/main/java/com/us/example/service/MyGrantedAuthority.java
class MyGrantedAuthority (line 8) | public class MyGrantedAuthority implements GrantedAuthority {
method getPermissionUrl (line 13) | public String getPermissionUrl() {
method setPermissionUrl (line 17) | public void setPermissionUrl(String permissionUrl) {
method getMethod (line 21) | public String getMethod() {
method setMethod (line 25) | public void setMethod(String method) {
method MyGrantedAuthority (line 29) | public MyGrantedAuthority(String url, String method) {
method getAuthority (line 34) | @Override
FILE: springboot-springSecurity3/src/main/java/com/us/example/service/MyInvocationSecurityMetadataSourceService.java
class MyInvocationSecurityMetadataSourceService (line 19) | @Service
method getAttributes (line 27) | @Override
method getAllConfigAttributes (line 34) | @Override
method supports (line 39) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/Application.java
class Application (line 13) | @ComponentScan(basePackages ="com.yy.example")
method main (line 16) | public static void main(String[] args) {
FILE: springboot-springSecurity4/src/main/java/com/yy/example/bean/Permission.java
class Permission (line 4) | public class Permission {
method getId (line 11) | public Integer getId() {
method setId (line 15) | public void setId(Integer id) {
method getName (line 19) | public String getName() {
method setName (line 23) | public void setName(String name) {
method getPermissionUrl (line 27) | public String getPermissionUrl() {
method setPermissionUrl (line 31) | public void setPermissionUrl(String permissionUrl) {
method getMethod (line 35) | public String getMethod() {
method setMethod (line 39) | public void setMethod(String method) {
method getDescription (line 43) | public String getDescription() {
method setDescription (line 47) | public void setDescription(String description) {
method toString (line 51) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/bean/Role.java
class Role (line 5) | public class Role implements Comparable<Role>{
method getId (line 12) | public Integer getId() {
method setId (line 15) | public void setId(Integer id) {
method getName (line 18) | public String getName() {
method setName (line 21) | public void setName(String name) {
method getRoleLevel (line 24) | public Integer getRoleLevel() {
method setRoleLevel (line 27) | public void setRoleLevel(Integer roleLevel) {
method getDescription (line 30) | public String getDescription() {
method setDescription (line 33) | public void setDescription(String description) {
method getMenuItems (line 36) | public String getMenuItems() {
method setMenuItems (line 40) | public void setMenuItems(String menuItems) {
method compareTo (line 44) | @Override
method equals (line 55) | @Override
method toString (line 65) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/bean/User.java
class User (line 10) | public class User implements UserDetails {
method isAccountNonExpired (line 27) | @Override
method isAccountNonLocked (line 33) | @Override
method isCredentialsNonExpired (line 39) | @Override
method isEnabled (line 45) | @Override
method setUsername (line 51) | public void setUsername(String username) {
method getAuthorities (line 55) | @JsonIgnore
method setGrantedAuthorities (line 60) | public void setGrantedAuthorities(List<? extends GrantedAuthority> aut...
method getId (line 64) | public Integer getId() {
method setId (line 68) | public void setId(Integer id) {
method getCnname (line 72) | public String getCnname() {
method setCnname (line 76) | public void setCnname(String cnname) {
method getUsername (line 80) | public String getUsername() {
method getPassword (line 84) | public String getPassword() {
method setPassword (line 88) | public void setPassword(String password) {
method getEmail (line 92) | public String getEmail() {
method setEmail (line 96) | public void setEmail(String email) {
method getTelephone (line 100) | public String getTelephone() {
method setTelephone (line 104) | public void setTelephone(String telephone) {
method getMobilePhone (line 108) | public String getMobilePhone() {
method setMobilePhone (line 112) | public void setMobilePhone(String mobilePhone) {
method getRePassword (line 116) | public String getRePassword() {
method setRePassword (line 120) | public void setRePassword(String rePassword) {
method getHistoryPassword (line 124) | public String getHistoryPassword() {
method setHistoryPassword (line 128) | public void setHistoryPassword(String historyPassword) {
method getRole (line 132) | public Role getRole() {
method setRole (line 136) | public void setRole(Role role) {
method getRoleId (line 140) | public Integer getRoleId() {
method setRoleId (line 144) | public void setRoleId(Integer roleId) {
method toString (line 147) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/DataSourceConfig.java
class DataSourceConfig (line 11) | @Configuration
method dataSource (line 16) | @Bean(name="dataSource")
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/MapperScannerConfig.java
class MapperScannerConfig (line 7) | @Configuration
method mapperScannerConfigurer (line 10) | @Bean
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/MyBatisConfig.java
class MyBatisConfig (line 12) | @Configuration
method sqlSessionFactory (line 18) | @Bean(name = "sqlSessionFactory")
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/MyBatisScannerConfig.java
class MyBatisScannerConfig (line 7) | @Configuration
method MapperScannerConfigurer (line 9) | @Bean
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/TransactionConfig.java
class TransactionConfig (line 13) | @Configuration
method annotationDrivenTransactionManager (line 19) | @Bean(name = "transactionManager")
FILE: springboot-springSecurity4/src/main/java/com/yy/example/config/WebSecurityConfig.java
class WebSecurityConfig (line 26) | @Configuration
method configure (line 35) | @Override
method configure (line 60) | @Override
method getSessionRegistry (line 76) | @Bean
FILE: springboot-springSecurity4/src/main/java/com/yy/example/controller/LoginController.java
class LoginController (line 14) | @Controller
method login (line 19) | @RequestMapping(value = "/login")
FILE: springboot-springSecurity4/src/main/java/com/yy/example/controller/UserController.java
class UserController (line 7) | @RequestMapping(value = "/users")
method list (line 12) | @RequestMapping(method = RequestMethod.GET)
method detail (line 19) | @RequestMapping(value = "/{id}", method = RequestMethod.GET)
method create (line 25) | @RequestMapping(method = RequestMethod.POST)
method update (line 31) | @RequestMapping(method = RequestMethod.PUT)
FILE: springboot-springSecurity4/src/main/java/com/yy/example/dao/PermissionDao.java
type PermissionDao (line 9) | public interface PermissionDao {
method getByMap (line 11) | List<Permission> getByMap(Map<String, Object> map);
method getById (line 13) | Permission getById(Integer id);
method create (line 15) | Integer create(Permission permission);
method update (line 17) | int update(Permission permission);
method getByUserId (line 19) | List<Permission> getByUserId(Integer userId);
FILE: springboot-springSecurity4/src/main/java/com/yy/example/dao/UserDao.java
type UserDao (line 9) | public interface UserDao {
method getByMap (line 11) | List<User> getByMap(Map<String, Object> map);
method getByRoleId (line 12) | List<User> getByRoleId(Map<String, Object> map);
method getById (line 13) | User getById(Integer id);
method create (line 14) | Integer create(User user);
method update (line 15) | int update(User user);
method getByUserName (line 16) | User getByUserName(String userName);
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlAccessDecisionManager.java
class UrlAccessDecisionManager (line 21) | @Service
method decide (line 23) | @Override
method supports (line 55) | @Override
method supports (line 60) | @Override
method matchers (line 66) | private boolean matchers(String url, HttpServletRequest request) {
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlConfigAttribute.java
class UrlConfigAttribute (line 10) | public class UrlConfigAttribute implements ConfigAttribute {
method UrlConfigAttribute (line 14) | public UrlConfigAttribute(HttpServletRequest httpServletRequest) {
method getAttribute (line 19) | @Override
method getHttpServletRequest (line 24) | public HttpServletRequest getHttpServletRequest() {
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlFilterSecurityInterceptor.java
class UrlFilterSecurityInterceptor (line 17) | @Service
method setUrlAccessDecisionManager (line 24) | @Autowired
method init (line 30) | @Override
method doFilter (line 35) | @Override
method invoke (line 43) | public void invoke(FilterInvocation fi) throws IOException, ServletExc...
method destroy (line 57) | @Override
method getSecureObjectClass (line 62) | @Override
method obtainSecurityMetadataSource (line 68) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlGrantedAuthority.java
class UrlGrantedAuthority (line 8) | public class UrlGrantedAuthority implements GrantedAuthority {
method getPermissionUrl (line 13) | public String getPermissionUrl() {
method setPermissionUrl (line 17) | public void setPermissionUrl(String permissionUrl) {
method getMethod (line 21) | public String getMethod() {
method setMethod (line 25) | public void setMethod(String method) {
method UrlGrantedAuthority (line 29) | public UrlGrantedAuthority (String permissionUrl, String method) {
method getAuthority (line 34) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlMetadataSourceService.java
class UrlMetadataSourceService (line 16) | @Service
method getAttributes (line 20) | @Override
method getAllConfigAttributes (line 29) | @Override
method supports (line 34) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/security/UrlUserService.java
class UrlUserService (line 20) | @Service
method loadUserByUsername (line 26) | @Override
FILE: springboot-springSecurity4/src/main/java/com/yy/example/service/UserService.java
class UserService (line 11) | @Service
method getById (line 19) | public User getById(Integer id) {
FILE: springboot-springSecurity4/src/main/java/com/yy/example/utils/MD5Util.java
class MD5Util (line 12) | public class MD5Util {
method encode (line 18) | public static String encode(String password) {
method wechatEncode (line 26) | public static String wechatEncode(String password){
method wehcatValidation (line 31) | public static boolean wehcatValidation(String str, String token){
method processEncode (line 39) | public static String processEncode(String password) {
method main (line 65) | public static void main(String[] args) {
FILE: springboot-swagger-ui/src/main/java/com/abel/example/Application.java
class Application (line 14) | @ComponentScan(basePackages ="com.abel.example")
method main (line 18) | public static void main(String[] args) {
FILE: springboot-swagger-ui/src/main/java/com/abel/example/Swagger2.java
class Swagger2 (line 17) | @Configuration
method createRestApi (line 28) | @Bean
method apiInfo (line 43) | private ApiInfo apiInfo() {
FILE: springboot-swagger-ui/src/main/java/com/abel/example/bean/User.java
class User (line 13) | @Entity
method getName (line 45) | public String getName() {
method setName (line 49) | public void setName(String name) {
method getPassword (line 53) | @JsonIgnore
method setPassword (line 58) | public void setPassword(String password) {
method getUsername (line 62) | public String getUsername() {
method setUsername (line 66) | public void setUsername(String username) {
method getEmail (line 70) | public String getEmail() {
method setEmail (line 74) | public void setEmail(String email) {
method getMobilephone (line 78) | public String getMobilephone() {
method setMobilephone (line 82) | public void setMobilephone(String mobilephone) {
method getTelephone (line 86) | public String getTelephone() {
method setTelephone (line 90) | public void setTelephone(String telephone) {
method getUserType (line 94) | public Integer getUserType() {
method setUserType (line 98) | public void setUserType(Integer userType) {
method getCreateBy (line 102) | public String getCreateBy() {
method setCreateBy (line 106) | public void setCreateBy(String createBy) {
method getCreateTime (line 110) | public Date getCreateTime() {
method setCreateTime (line 114) | public void setCreateTime(Date createTime) {
method getUpdateBy (line 118) | public String getUpdateBy() {
method setUpdateBy (line 122) | public void setUpdateBy(String updateBy) {
method getUpdateTime (line 126) | public Date getUpdateTime() {
method setUpdateTime (line 130) | public void setUpdateTime(Date updateTime) {
method getDisabled (line 134) | public Integer getDisabled() {
method setDisabled (line 138) | public void setDisabled(Integer disabled) {
method getId (line 142) | public Long getId() {
method setId (line 146) | public void setId(Long id) {
FILE: springboot-swagger-ui/src/main/java/com/abel/example/config/DBConfig.java
class DBConfig (line 12) | @Configuration
method dataSource (line 18) | @Bean(name="dataSource")
FILE: springboot-swagger-ui/src/main/java/com/abel/example/config/JpaConfig.java
class JpaConfig (line 20) | @Configuration
method entityManagerFactory (line 29) | @Bean
method transactionManager (line 51) | @Bean
FILE: springboot-swagger-ui/src/main/java/com/abel/example/controller/UserController.java
class UserController (line 20) | @Controller
method findAll (line 34) | @RequestMapping(method = RequestMethod.GET)
method getUserById (line 47) | @RequestMapping(value = "/{id}", method = RequestMethod.GET)
method getUserByUserName (line 62) | @RequestMapping(value = "/byname", method = RequestMethod.GET)
method getUsers (line 79) | @RequestMapping(value = "/byUserNameContain", method = RequestMethod.GET)
method saveUser (line 97) | @RequestMapping(method = RequestMethod.POST)
method updateUser (line 111) | @RequestMapping(method = RequestMethod.PUT)
method deleteUser (line 125) | @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
FILE: springboot-swagger-ui/src/main/java/com/abel/example/dao/UserJpaDao.java
type UserJpaDao (line 16) | public interface UserJpaDao extends JpaRepository<User, Long> {
method findByName (line 24) | User findByName(String name);
method getOne (line 26) | User getOne(Long id);
method findByUsernameContaining (line 28) | List<User> findByUsernameContaining(String username);
method getByUsernameIs (line 30) | User getByUsernameIs(String username);
method findByNameLike (line 32) | @Query("select s from User s where name like CONCAT('%',:name,'%')")
FILE: springboot-swagger-ui/src/main/java/com/abel/example/service/UserService.java
type UserService (line 10) | public interface UserService {
method getUserByUserName (line 18) | public User getUserByUserName(String username);
method getByUsernameContaining (line 20) | public List<User> getByUsernameContaining(String username);
method saveUser (line 27) | User saveUser(User user);
method removeUser (line 34) | int removeUser(Long id);
method updateUser (line 41) | User updateUser(User user);
method getUserById (line 48) | User getUserById(Long id);
method listUsers (line 54) | List<User> listUsers();
FILE: springboot-swagger-ui/src/main/java/com/abel/example/serviceImpl/UserServiceImpl.java
class UserServiceImpl (line 16) | @Service
method getUserByUserName (line 25) | @Override
method getByUsernameContaining (line 30) | @Override
method saveUser (line 35) | @Override
method removeUser (line 40) | @Override
method updateUser (line 50) | @Override
method getUserById (line 55) | @Override
method listUsers (line 60) | @Override
FILE: springboot-swagger-ui/src/main/java/com/abel/example/util/CommonUtil.java
class CommonUtil (line 11) | public class CommonUtil {
method getParameterMap (line 19) | public static Map<String, Object> getParameterMap(HttpServletRequest r...
Condensed preview — 492 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,067K chars).
[
{
"path": ".gitignore",
"chars": 214,
"preview": "\n/.settings\n/bin\n*/target/*\n/logs\n*/out/\n\n# filter config files, except .gitignore\n*.MF\n!.gitignore\n*.iml\n*.exe\n# eclips"
},
{
"path": "README.md",
"chars": 2736,
"preview": "## 致歉\n由于自己懒以及身体对issuse 解决的不及时。请大家以后提issuse 的时候写清楚 模块名 比如“springboot-SpringSecurity4” 和问题,我会抽时间抓紧解决。\n\n## springboot-Sprin"
},
{
"path": "abel-parent/pom.xml",
"chars": 13833,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "abel-util/pom.xml",
"chars": 2168,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "abel-util/src/main/java/cn/abel/code/InfoCode.java",
"chars": 1717,
"preview": "package cn.abel.code;\n\nimport org.apache.commons.lang3.builder.ToStringBuilder;\nimport org.apache.commons.lang3.builder."
},
{
"path": "abel-util/src/main/java/cn/abel/exception/AppRuntimeException.java",
"chars": 585,
"preview": "package cn.abel.exception;\n\n\nimport cn.abel.code.InfoCode;\n\n/**\n * 接口服务抛出的异常\n *\n */\npublic class AppRuntimeException ext"
},
{
"path": "abel-util/src/main/java/cn/abel/exception/HttpExeption.java",
"chars": 349,
"preview": "package cn.abel.exception;\n\npublic class HttpExeption extends Exception {\n\t\n\tprivate static final long serialVersionUID "
},
{
"path": "abel-util/src/main/java/cn/abel/exception/ServiceException.java",
"chars": 1196,
"preview": "package cn.abel.exception;\n\nimport cn.abel.code.*;\n\n/**\n * 服务异常类\n *\n */\n@SuppressWarnings(\"serial\")\npublic class Service"
},
{
"path": "abel-util/src/main/java/cn/abel/response/ResponseEntity.java",
"chars": 1590,
"preview": "package cn.abel.response;\n\n\nimport cn.abel.code.*;\n\nimport java.util.HashMap;\n\n/**\n * Created by guoshan on 2018/3/21.\n "
},
{
"path": "abel-util/src/main/java/cn/abel/utils/DateTimeUtils.java",
"chars": 7151,
"preview": "package cn.abel.utils;\n\nimport cn.abel.exception.ServiceException;\nimport org.apache.commons.lang3.StringUtils;\nimport o"
},
{
"path": "springWebSocket/pom.xml",
"chars": 2651,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springWebSocket/src/main/java/com/us/example/Application.java",
"chars": 640,
"preview": "package com.us.example;\n\n/**\n * Created by yangyibo on 16/12/29.\n */\nimport org.springframework.boot.autoconfigure.Sprin"
},
{
"path": "springWebSocket/src/main/java/com/us/example/bean/Message.java",
"chars": 202,
"preview": "package com.us.example.bean;\n\n/**\n * Created by yangyibo on 16/12/29.\n * 浏览器向服务器发送的消息使用此类接受\n */\npublic class Message {\n "
},
{
"path": "springWebSocket/src/main/java/com/us/example/bean/Response.java",
"chars": 447,
"preview": "package com.us.example.bean;\n\n/**\n * Created by yangyibo on 16/12/29.\n * 服务器向浏览器发送的此类消息。\n */\npublic class Response {\n "
},
{
"path": "springWebSocket/src/main/java/com/us/example/config/WebSecurityConfig.java",
"chars": 1755,
"preview": "package com.us.example.config;\r\n\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframewo"
},
{
"path": "springWebSocket/src/main/java/com/us/example/config/WebSocketConfig.java",
"chars": 1358,
"preview": "package com.us.example.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework."
},
{
"path": "springWebSocket/src/main/java/com/us/example/controller/WebSocketController.java",
"chars": 2770,
"preview": "package com.us.example.controller;\n\n\n\nimport com.us.example.bean.Message;\nimport com.us.example.bean.Response;\nimport co"
},
{
"path": "springWebSocket/src/main/java/com/us/example/service/WebSocketService.java",
"chars": 734,
"preview": "package com.us.example.service;\n\n/**\n * Created by yangyibo on 17/1/12.\n */\n\nimport com.us.example.bean.Response;\nimport"
},
{
"path": "springWebSocket/src/main/resources/application.properties",
"chars": 17,
"preview": "server.port=8090\n"
},
{
"path": "springWebSocket/src/main/resources/static/jquery.js",
"chars": 234995,
"preview": "/*!\n * jQuery JavaScript Library v1.6.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under th"
},
{
"path": "springWebSocket/src/main/resources/templates/chat.html",
"chars": 1427,
"preview": "<!DOCTYPE html>\r\n\r\n<html xmlns:th=\"http://www.thymeleaf.org\">\r\n<meta charset=\"UTF-8\" />\r\n<head>\r\n <title>Home</title>"
},
{
"path": "springWebSocket/src/main/resources/templates/login.html",
"chars": 624,
"preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:th=\"http://www.thymeleaf.org\"\r\n xmlns:sec=\"http:/"
},
{
"path": "springWebSocket/src/main/resources/templates/ws.html",
"chars": 2326,
"preview": "<!DOCTYPE html>\r\n<html xmlns:th=\"http://www.thymeleaf.org\">\r\n<head>\r\n <meta charset=\"UTF-8\" />\r\n <title>Spring Boo"
},
{
"path": "springboot-Cache/pom.xml",
"chars": 2574,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/Application.java",
"chars": 628,
"preview": "package com.us.example;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/bean/Person.java",
"chars": 1276,
"preview": "package com.us.example.bean;\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.pers"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/config/DBConfig.java",
"chars": 1214,
"preview": "package com.us.example.config;\n\n/**\n * Created by yangyibo on 17/1/13.\n */\nimport java.beans.PropertyVetoException;\n\nimp"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/config/JpaConfig.java",
"chars": 2197,
"preview": "package com.us.example.config;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.persistence.EntityManagerF"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/config/RedisConfig.java",
"chars": 3010,
"preview": "package com.us.example.config;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.bean"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/controller/CacheController.java",
"chars": 1085,
"preview": "package com.us.example.controller;\nimport com.us.example.bean.Person;\nimport com.us.example.service.DemoService;\nimport "
},
{
"path": "springboot-Cache/src/main/java/com/us/example/dao/PersonRepository.java",
"chars": 245,
"preview": "package com.us.example.dao;\n\nimport com.us.example.bean.Person;\nimport org.springframework.data.jpa.repository.JpaReposi"
},
{
"path": "springboot-Cache/src/main/java/com/us/example/service/DemoService.java",
"chars": 263,
"preview": "package com.us.example.service;\n\nimport com.us.example.bean.Person;\n\n/**\n * Created by yangyibo on 17/1/13.\n */\npublic "
},
{
"path": "springboot-Cache/src/main/java/com/us/example/service/Impl/DemoServiceImpl.java",
"chars": 1445,
"preview": "package com.us.example.service.Impl;\n\nimport com.us.example.bean.Person;\nimport com.us.example.dao.PersonRepository;\nimp"
},
{
"path": "springboot-Cache/src/main/resources/application.properties",
"chars": 446,
"preview": "ms.db.driverClassName=com.mysql.jdbc.Driver\r\nms.db.url=jdbc:mysql://localhost:3306/cache?prepStmtCacheSize=517&cachePrep"
},
{
"path": "springboot-Cache/src/main/resources/ehcache.xml",
"chars": 142,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<ehcache>\r\n <!--切换为ehcache 缓存时使用-->\r\n<cache name=\"people\" maxElementsInMemory"
},
{
"path": "springboot-Cache2/pom.xml",
"chars": 2178,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/Application.java",
"chars": 628,
"preview": "package com.us.example;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/bean/Person.java",
"chars": 1523,
"preview": "package com.us.example.bean;\n\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.per"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/config/CacheConfig.java",
"chars": 1614,
"preview": "package com.us.example.config;\n\nimport com.us.example.bean.Person;\nimport com.us.example.service.DemoService;\nimport org"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/config/DBConfig.java",
"chars": 1214,
"preview": "package com.us.example.config;\n\n/**\n * Created by yangyibo on 17/1/13.\n */\nimport java.beans.PropertyVetoException;\n\nimp"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/config/JpaConfig.java",
"chars": 2197,
"preview": "package com.us.example.config;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.persistence.EntityManagerF"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/controller/CacheController.java",
"chars": 791,
"preview": "package com.us.example.controller;\nimport com.us.example.bean.Person;\nimport com.us.example.service.PersonService;\nimpor"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/dao/PersonRepository.java",
"chars": 245,
"preview": "package com.us.example.dao;\n\nimport com.us.example.bean.Person;\nimport org.springframework.data.jpa.repository.JpaReposi"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/service/DemoService.java",
"chars": 478,
"preview": "package com.us.example.service;\n\nimport com.us.example.bean.Person;\nimport com.us.example.dao.PersonRepository;\nimport o"
},
{
"path": "springboot-Cache2/src/main/java/com/us/example/service/PersonService.java",
"chars": 1320,
"preview": "package com.us.example.service;\n\nimport com.us.example.bean.Person;\nimport com.us.example.dao.PersonRepository;\nimport o"
},
{
"path": "springboot-Cache2/src/main/resources/application.properties",
"chars": 291,
"preview": "ms.db.driverClassName=com.mysql.jdbc.Driver\r\nms.db.url=jdbc:mysql://localhost:3306/cache?prepStmtCacheSize=517&cachePrep"
},
{
"path": "springboot-Quartz/pom.xml",
"chars": 2653,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-Quartz/src/main/java/com/abel/quartz/Application.java",
"chars": 466,
"preview": "package com.abel.quartz;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigu"
},
{
"path": "springboot-Quartz/src/main/java/com/abel/quartz/config/InvokingJobDetailFactory.java",
"chars": 1494,
"preview": "package com.abel.quartz.config;\n\nimport org.quartz.JobExecutionContext;\nimport org.quartz.JobExecutionException;\nimport "
},
{
"path": "springboot-Quartz/src/main/java/com/abel/quartz/config/QuartzConfig.java",
"chars": 7771,
"preview": "package com.abel.quartz.config;\n\nimport java.beans.PropertyVetoException;\nimport java.io.IOException;\nimport java.util.H"
},
{
"path": "springboot-Quartz/src/main/java/com/abel/quartz/job/ExecuteJob.java",
"chars": 416,
"preview": "package com.abel.quartz.job;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereo"
},
{
"path": "springboot-Quartz/src/main/resources/application.properties",
"chars": 2935,
"preview": "## tomcat\\u914D\\u7F6E\nserver.port=8090\n#server.tomcat.maxHttpHeaderSize=8192\nserver.tomcat.uri-encoding=UTF-8\nspring.htt"
},
{
"path": "springboot-Quartz/src/main/resources/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-Quartz/src/main/resources/logback-spring.xml",
"chars": 1604,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>springboot-quartz</contextName>\n\n <!-- 控制台输入日"
},
{
"path": "springboot-SpringSecurity0/pom.xml",
"chars": 2681,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/Application.java",
"chars": 556,
"preview": "package com.us.example;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/DBconfig.java",
"chars": 1212,
"preview": "package com.us.example.config;\n\nimport java.beans.PropertyVetoException;\n\nimport org.springframework.beans.factory.annot"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/MyBatisConfig.java",
"chars": 1011,
"preview": "package com.us.example.config;\n\nimport org.mybatis.spring.SqlSessionFactoryBean;\nimport org.springframework.beans.factor"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/MyBatisScannerConfig.java",
"chars": 618,
"preview": "package com.us.example.config;\n\nimport org.mybatis.spring.mapper.MapperScannerConfigurer;\nimport org.springframework.con"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/TransactionConfig.java",
"chars": 878,
"preview": "package com.us.example.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframewor"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/WebMvcConfig.java",
"chars": 534,
"preview": "package com.us.example.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework."
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/config/WebSecurityConfig.java",
"chars": 2197,
"preview": "package com.us.example.config;\n\nimport com.us.example.security.CustomUserService;\nimport com.us.example.util.MD5Util;\nim"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/controller/HomeController.java",
"chars": 499,
"preview": "package com.us.example.controller;\n\nimport com.us.example.domain.Msg;\nimport org.springframework.stereotype.Controller;\n"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/dao/UserDao.java",
"chars": 150,
"preview": "package com.us.example.dao;\n\nimport com.us.example.domain.SysUser;\n\n\npublic interface UserDao {\n public SysUser findB"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/domain/Msg.java",
"chars": 911,
"preview": "package com.us.example.domain;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\n public class Msg {\n private Strin"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/domain/SysRole.java",
"chars": 400,
"preview": "package com.us.example.domain;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\npublic class SysRole {\n\n private Integer "
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/domain/SysUser.java",
"chars": 820,
"preview": "package com.us.example.domain;\n\nimport java.util.List;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\npublic class SysUser"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/security/CustomUserService.java",
"chars": 1507,
"preview": "package com.us.example.security;\n\nimport com.us.example.dao.UserDao;\nimport com.us.example.domain.SysRole;\nimport com.us"
},
{
"path": "springboot-SpringSecurity0/src/main/java/com/us/example/util/MD5Util.java",
"chars": 1180,
"preview": "package com.us.example.util;\n\n/**\n * Created by yangyibo on 17/2/7.\n */\nimport java.security.MessageDigest;\n/**\n * MD5加密"
},
{
"path": "springboot-SpringSecurity0/src/main/resources/application.properties",
"chars": 275,
"preview": "ms.db.driverClassName=com.mysql.jdbc.Driver\r\nms.db.url=jdbc:mysql://localhost:3306/cache?characterEncoding=utf-8&useSSL="
},
{
"path": "springboot-SpringSecurity0/src/main/resources/mapper/UserDaoMapper.xml",
"chars": 870,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
},
{
"path": "springboot-SpringSecurity0/src/main/resources/templates/home.html",
"chars": 1476,
"preview": "<!DOCTYPE html>\n<html xmlns:th=\"http://www.thymeleaf.org\" \n\t xmlns:sec=\"http://www.thymeleaf.org/thymeleaf-extras-sprin"
},
{
"path": "springboot-SpringSecurity0/src/main/resources/templates/login.html",
"chars": 1547,
"preview": "<!DOCTYPE html>\n<html xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n<meta content=\"text/html;charset=UTF-8\"/>\n<title>登录页面<"
},
{
"path": "springboot-SpringSecurity1/pom.xml",
"chars": 3227,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/Application.java",
"chars": 556,
"preview": "package com.us.example;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/config/DBconfig.java",
"chars": 1213,
"preview": "package com.us.example.config;\n\nimport java.beans.PropertyVetoException;\n\nimport org.springframework.beans.factory.annot"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/config/MyBatisConfig.java",
"chars": 1011,
"preview": "package com.us.example.config;\n\nimport org.mybatis.spring.SqlSessionFactoryBean;\nimport org.springframework.beans.factor"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/config/MyBatisScannerConfig.java",
"chars": 618,
"preview": "package com.us.example.config;\n\nimport org.mybatis.spring.mapper.MapperScannerConfigurer;\nimport org.springframework.con"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/config/TransactionConfig.java",
"chars": 878,
"preview": "package com.us.example.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframewor"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/config/WebSecurityConfig.java",
"chars": 1948,
"preview": "package com.us.example.config;\n\nimport com.us.example.service.CustomUserService;\nimport com.us.example.service.MyFilterS"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/controller/HomeController.java",
"chars": 776,
"preview": "package com.us.example.controller;\n\nimport com.us.example.domain.Msg;\nimport org.springframework.stereotype.Controller;\n"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/dao/PermissionDao.java",
"chars": 271,
"preview": "package com.us.example.dao;\n\nimport com.us.example.domain.Permission;\n\nimport java.util.List;\n\n/**\n * Created by yangyib"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/dao/UserDao.java",
"chars": 150,
"preview": "package com.us.example.dao;\n\nimport com.us.example.domain.SysUser;\n\n\npublic interface UserDao {\n public SysUser findB"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/domain/Msg.java",
"chars": 911,
"preview": "package com.us.example.domain;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\n public class Msg {\n private Strin"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/domain/Permission.java",
"chars": 932,
"preview": "package com.us.example.domain;\n\n/**\n * Created by yangyibo on 17/1/20.\n */\npublic class Permission {\n\n private int id"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/domain/SysRole.java",
"chars": 400,
"preview": "package com.us.example.domain;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\npublic class SysRole {\n\n private Integer "
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/domain/SysUser.java",
"chars": 820,
"preview": "package com.us.example.domain;\n\nimport java.util.List;\n\n/**\n * Created by yangyibo on 17/1/17.\n */\n\npublic class SysUser"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/service/CustomUserService.java",
"chars": 1877,
"preview": "package com.us.example.service;\n\nimport com.us.example.dao.PermissionDao;\nimport com.us.example.dao.UserDao;\nimport com."
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/service/MyAccessDecisionManager.java",
"chars": 1628,
"preview": "package com.us.example.service;\n\nimport org.springframework.security.access.AccessDecisionManager;\nimport org.springfram"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/service/MyFilterSecurityInterceptor.java",
"chars": 2314,
"preview": "package com.us.example.service;\n\nimport javax.servlet.Filter;\nimport javax.servlet.FilterChain;\nimport javax.servlet.Fil"
},
{
"path": "springboot-SpringSecurity1/src/main/java/com/us/example/service/MyInvocationSecurityMetadataSourceService.java",
"chars": 2234,
"preview": "package com.us.example.service;\n\nimport com.us.example.dao.PermissionDao;\nimport com.us.example.domain.Permission;\nimpor"
},
{
"path": "springboot-SpringSecurity1/src/main/resources/application.properties",
"chars": 261,
"preview": "ms.db.driverClassName=com.mysql.jdbc.Driver\r\nms.db.url=jdbc:mysql://localhost:3306/cache?characterEncoding=utf-8&useSSL="
},
{
"path": "springboot-SpringSecurity1/src/main/resources/mapper/PermissionDaoMapper.xml",
"chars": 739,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
},
{
"path": "springboot-SpringSecurity1/src/main/resources/mapper/UserDaoMapper.xml",
"chars": 870,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
},
{
"path": "springboot-SpringSecurity1/src/main/resources/templates/home.html",
"chars": 1607,
"preview": "<!DOCTYPE html>\n<html xmlns:th=\"http://www.thymeleaf.org\" \n\t xmlns:sec=\"http://www.thymeleaf.org/thymeleaf-extras-sprin"
},
{
"path": "springboot-SpringSecurity1/src/main/resources/templates/login.html",
"chars": 1623,
"preview": "<!DOCTYPE html>\n<html xmlns:th=\"http://www.thymeleaf.org\"\n xmlns:sec=\"http://www.thymeleaf.org/thymeleaf-extras-spr"
},
{
"path": "springboot-dubbo/README.md",
"chars": 242,
"preview": "##springboot-dubbo\n\n该项目是Springboot 和 dubbo 结合的例子,是provider 的示例,提供服务。简单的写了一些用户和权限的接口没有写的很完整,主要是为了提现dubbo 服务\nSpringboot-sh"
},
{
"path": "springboot-dubbo/abel-user-api/pom.xml",
"chars": 1627,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/Permission.java",
"chars": 1383,
"preview": "package cn.abel.user.models;\n\n\nimport java.io.Serializable;\n\npublic class Permission implements Serializable {\n\n priv"
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/Role.java",
"chars": 1131,
"preview": "package cn.abel.user.models;\n\n\nimport java.io.Serializable;\n\npublic class Role implements Serializable {\n\n private st"
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/models/User.java",
"chars": 1744,
"preview": "package cn.abel.user.models;\n\n\nimport com.fasterxml.jackson.annotation.JsonIgnore;\n\nimport java.io.Serializable;\nimport "
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/PermissionService.java",
"chars": 374,
"preview": "package cn.abel.user.service;\n\nimport cn.abel.user.models.Permission;\n\nimport java.util.List;\nimport java.util.Map;\n\npub"
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/RoleService.java",
"chars": 315,
"preview": "package cn.abel.user.service;\n\n\nimport cn.abel.user.models.Role;\n\nimport java.util.List;\nimport java.util.Map;\n\npublic i"
},
{
"path": "springboot-dubbo/abel-user-api/src/main/java/cn/abel/user/service/UserService.java",
"chars": 354,
"preview": "package cn.abel.user.service;\n\nimport cn.abel.user.models.User;\n\nimport java.util.List;\nimport java.util.Map;\n\npublic in"
},
{
"path": "springboot-dubbo/abel-user-provider/doc/user.sql",
"chars": 2720,
"preview": "/*\n Navicat Premium Data Transfer\n\n Source Server : localhost\n Source Server Type : MySQL\n Source Server Vers"
},
{
"path": "springboot-dubbo/abel-user-provider/pom.xml",
"chars": 5962,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/UserProviderApplication.java",
"chars": 442,
"preview": "package cn.abel.user;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure."
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/constants/Constants.java",
"chars": 83,
"preview": "package cn.abel.user.constants;\n\n/**\n * 公用的常量类。\n */\npublic interface Constants {\n}\n"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/PermissionDao.java",
"chars": 555,
"preview": "package cn.abel.user.dao;\n\n\nimport cn.abel.user.models.Permission;\nimport org.apache.ibatis.annotations.Mapper;\nimport o"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/RoleDao.java",
"chars": 403,
"preview": "package cn.abel.user.dao;\n\n\n\nimport cn.abel.user.models.Role;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.sp"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/dao/UserDao.java",
"chars": 440,
"preview": "package cn.abel.user.dao;\n\n\nimport cn.abel.user.models.User;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.spr"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/JsonExceptionMapper.java",
"chars": 900,
"preview": "package cn.abel.user.exception;\n\nimport javax.ws.rs.core.MediaType;\nimport javax.ws.rs.core.Response;\nimport javax.ws.rs"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ReaderExceptionMapper.java",
"chars": 882,
"preview": "package cn.abel.user.exception;\n\nimport javax.ws.rs.core.MediaType;\nimport javax.ws.rs.core.Response;\nimport javax.ws.rs"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/RestExceptionMapper.java",
"chars": 1138,
"preview": "package cn.abel.user.exception;\n\nimport javax.ws.rs.NotAllowedException;\nimport javax.ws.rs.NotFoundException;\nimport ja"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ServiceExceptionMapper.java",
"chars": 894,
"preview": "package cn.abel.user.exception;\n\nimport javax.ws.rs.core.MediaType;\nimport javax.ws.rs.core.Response;\nimport javax.ws.rs"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/exception/ValidationExceptionMapper.java",
"chars": 1402,
"preview": "package cn.abel.user.exception;\n\nimport javax.validation.ConstraintViolation;\nimport javax.validation.ConstraintViolatio"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/filter/RestFilter.java",
"chars": 2397,
"preview": "package cn.abel.user.filter;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.ann"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/filter/RestInterceptor.java",
"chars": 2719,
"preview": "package cn.abel.user.filter;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io."
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/PermissionServiceImpl.java",
"chars": 1122,
"preview": "package cn.abel.user.service.impl;\n\nimport cn.abel.user.dao.PermissionDao;\nimport cn.abel.user.models.Permission;\nimport"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/RoleServiceImpl.java",
"chars": 889,
"preview": "package cn.abel.user.service.impl;\n\n\nimport cn.abel.user.dao.RoleDao;\nimport cn.abel.user.models.Role;\nimport cn.abel.us"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/service/impl/UserServiceImpl.java",
"chars": 1096,
"preview": "package cn.abel.user.service.impl;\n\nimport cn.abel.user.dao.UserDao;\nimport cn.abel.user.models.User;\nimport cn.abel.use"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/java/cn/abel/user/utils/CommentUtils.java",
"chars": 551,
"preview": "package cn.abel.user.utils;\n\nimport com.alibaba.fastjson.JSON;\nimport org.apache.commons.collections4.CollectionUtils;\n\n"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/META-INF/spring/provider.xml",
"chars": 1700,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n xmlns:xsi=\"http"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/dev/application.properties",
"chars": 1709,
"preview": "#application\nspring.application.name=abel-user-provider\napplication.main=cn.abel.user.UserProviderApplication\nserver.por"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/dev/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/dev/logback-spring.xml",
"chars": 1554,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>abel_user</contextName>\n\n <!-- 控制台输入日志信息 -->\n"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/local/application.properties",
"chars": 1711,
"preview": "#application\nspring.application.name=abel-user-provider\napplication.main=cn.abel.user.UserProviderApplication\nserver.por"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/local/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/local/logback-spring.xml",
"chars": 1592,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>abel_user</contextName>\n\n <!-- 控制台输入日志信息 -->\n"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/mapper/PermissionDaoMapper.xml",
"chars": 2478,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/mapper/RoleDaoMapper.xml",
"chars": 1810,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.o"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/resources/mapper/UserDaoMapper.xml",
"chars": 2810,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.o"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/test/cn/abel/user/BaseTest.java",
"chars": 911,
"preview": "package cn.abel.user;\n\n/**\n * @author yyb\n * @time 2020/3/9\n */\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;"
},
{
"path": "springboot-dubbo/abel-user-provider/src/main/test/cn/abel/user/service/impl/PermissionServiceImplTest.java",
"chars": 1475,
"preview": "package cn.abel.user.service.impl;\n\nimport cn.abel.user.BaseTest;\nimport cn.abel.user.models.Permission;\nimport cn.abel."
},
{
"path": "springboot-dynamicDataSource/pom.xml",
"chars": 1984,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-dynamicDataSource/sql/news.sql",
"chars": 767,
"preview": "/*\n Navicat Premium Data Transfer\n\n Source Server : localhost\n Source Server Type : MySQL\n Source Server Vers"
},
{
"path": "springboot-dynamicDataSource/sql/user.sql",
"chars": 882,
"preview": "/*\n Navicat Premium Data Transfer\n\n Source Server : localhost\n Source Server Type : MySQL\n Source Server Vers"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/Application.java",
"chars": 341,
"preview": "package cn.abel;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.Sprin"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/bean/News.java",
"chars": 896,
"preview": "package cn.abel.bean;\n\n\npublic class News {\n private Integer id;\n private String title;\n private String content"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/bean/User.java",
"chars": 1224,
"preview": "package cn.abel.bean;\n\nimport java.util.Date;\n\n\npublic class User {\n private Integer id;\n private String name;\n "
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSource.java",
"chars": 351,
"preview": "package cn.abel.config;\n\nimport org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;\n\n/**\n * @author yy"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSourceConfig.java",
"chars": 3037,
"preview": "package cn.abel.config;\n\nimport cn.abel.enums.DatabaseTypeEnum;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimpo"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/config/DynamicDataSourceContextHolder.java",
"chars": 552,
"preview": "package cn.abel.config;\n\nimport cn.abel.enums.DatabaseTypeEnum;\n\n/**\n * @author yyb\n * @time 2019/3/27\n */\npublic class "
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/config/HikariConfig.java",
"chars": 2844,
"preview": "package cn.abel.config;\n\nimport com.zaxxer.hikari.HikariDataSource;\nimport org.springframework.beans.factory.annotation."
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/dao/NewsDao.java",
"chars": 409,
"preview": "package cn.abel.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport cn.abel.bean.News;\nimport org.apache.ibatis.a"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/dao/UserDao.java",
"chars": 409,
"preview": "package cn.abel.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport cn.abel.bean.User;\nimport org.apache.ibatis.a"
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/enums/DatabaseTypeEnum.java",
"chars": 653,
"preview": "package cn.abel.enums;\n\n/**\n * @author yyb\n * @time 2019/3/27\n */\npublic enum DatabaseTypeEnum {\n PRIMARY(\"1\"), USER("
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/service/NewsService.java",
"chars": 1204,
"preview": "package cn.abel.service;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport cn.abel.config.DynamicDataSource;\nimport "
},
{
"path": "springboot-dynamicDataSource/src/main/java/cn/abel/service/UserService.java",
"chars": 1156,
"preview": "package cn.abel.service;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport cn.abel.config.DynamicDataSourceContextHo"
},
{
"path": "springboot-dynamicDataSource/src/main/resources/local/application.properties",
"chars": 2320,
"preview": "## tomcat\\u914D\\u7F6E\nserver.port=8009\n#server.tomcat.maxHttpHeaderSize=8192\nserver.tomcat.uri-encoding=UTF-8\nspring.htt"
},
{
"path": "springboot-dynamicDataSource/src/main/resources/local/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-dynamicDataSource/src/main/resources/local/logback-spring.xml",
"chars": 1608,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>springboot-dataSource</contextName>\n\n <!-- 控制"
},
{
"path": "springboot-dynamicDataSource/src/main/resources/mapper/NewsDaoMapper.xml",
"chars": 1945,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.o"
},
{
"path": "springboot-dynamicDataSource/src/main/resources/mapper/UserDaoMapper.xml",
"chars": 2115,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.o"
},
{
"path": "springboot-dynamicDataSource/src/test/java/cn/abel/BaseTest.java",
"chars": 889,
"preview": "package cn.abel;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.S"
},
{
"path": "springboot-dynamicDataSource/src/test/java/cn/abel/service/ServiceTest.java",
"chars": 698,
"preview": "package cn.abel.service;\n\nimport cn.abel.BaseTest;\nimport cn.abel.bean.News;\nimport cn.abel.bean.User;\nimport org.junit."
},
{
"path": "springboot-elasticsearch/README.md",
"chars": 250,
"preview": "\n## springboot-elasticsearch\n \n* 本项目是speingboot结合es 的小李子。\n* 演示了同一个项目配置多个es 数据源\n* es操作是用es的rest api 进行操作,操作语句是 通过 JSONObj"
},
{
"path": "springboot-elasticsearch/pom.xml",
"chars": 2369,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/Application.java",
"chars": 341,
"preview": "package cn.abel;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.Sprin"
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/bean/User.java",
"chars": 1540,
"preview": "package cn.abel.bean;\n\nimport java.util.Date;\n\n\npublic class User {\n private Integer id;\n private String name;\n "
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/config/ESRestClient2Config.java",
"chars": 1863,
"preview": "package cn.abel.config;\n\nimport org.apache.http.HttpHost;\nimport org.apache.http.auth.AuthScope;\nimport org.apache.http."
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/config/ESRestClientConfig.java",
"chars": 1862,
"preview": "package cn.abel.config;\n\nimport org.apache.http.HttpHost;\nimport org.apache.http.auth.AuthScope;\nimport org.apache.http."
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/constants/Constants.java",
"chars": 655,
"preview": "package cn.abel.constants;\n\n/**\n * @author yangyibo\n * @time 2019/4/3\n */\npublic class Constants {\n\n /**\n * es 查询"
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/dao/UserDao.java",
"chars": 409,
"preview": "package cn.abel.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport cn.abel.bean.User;\nimport org.apache.ibatis.a"
},
{
"path": "springboot-elasticsearch/src/main/java/cn/abel/service/UserService.java",
"chars": 7815,
"preview": "package cn.abel.service;\n\nimport java.io.IOException;\nimport java.util.Collections;\nimport java.util.List;\nimport java.u"
},
{
"path": "springboot-elasticsearch/src/main/resources/local/application.properties",
"chars": 2498,
"preview": "## tomcat\\u914D\\u7F6E\nserver.port=8009\n#server.tomcat.maxHttpHeaderSize=8192\nserver.tomcat.uri-encoding=UTF-8\nspring.htt"
},
{
"path": "springboot-elasticsearch/src/main/resources/local/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-elasticsearch/src/main/resources/local/logback-spring.xml",
"chars": 1600,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>springboot-es</contextName>\n\n <!-- 控制台输入日志信息 "
},
{
"path": "springboot-elasticsearch/src/main/resources/mapper/UserDaoMapper.xml",
"chars": 2115,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.o"
},
{
"path": "springboot-elasticsearch/src/test/java/cn/abel/BaseTest.java",
"chars": 889,
"preview": "package cn.abel;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.S"
},
{
"path": "springboot-elasticsearch/src/test/java/cn/abel/service/ServiceTest.java",
"chars": 491,
"preview": "package cn.abel.service;\n\nimport cn.abel.BaseTest;\nimport cn.abel.bean.User;\nimport org.junit.Test;\nimport org.springfra"
},
{
"path": "springboot-jpa/pom.xml",
"chars": 1987,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/Application.java",
"chars": 629,
"preview": "package com.us.example;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/bean/User.java",
"chars": 3918,
"preview": "package com.us.example.bean;\n\nimport java.util.Date;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/config/DBConfig.java",
"chars": 1173,
"preview": "package com.us.example.config;\n\nimport java.beans.PropertyVetoException;\n\nimport org.springframework.beans.factory.annot"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/config/JpaConfig.java",
"chars": 2167,
"preview": "package com.us.example.config;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.persistence.EntityManagerF"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/controller/UserController.java",
"chars": 1345,
"preview": "package com.us.example.controller;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.Map;\n\nimport org.apac"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/dao/UserJpaDao.java",
"chars": 377,
"preview": "package com.us.example.dao;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\n\nimport com.us.example.bean.U"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/service/UserService.java",
"chars": 315,
"preview": "package com.us.example.service;\n\nimport java.util.Map;\n\nimport com.us.example.bean.User;\n\n/**\n * The Interface UserServi"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/serviceImpl/UserServiceImpl.java",
"chars": 623,
"preview": "package com.us.example.serviceImpl;\n\nimport java.util.Map;\n\nimport org.springframework.beans.factory.annotation.Autowire"
},
{
"path": "springboot-jpa/src/main/java/com/us/example/util/CommonUtil.java",
"chars": 1548,
"preview": "package com.us.example.util;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Set;\n\nimport javax.servle"
},
{
"path": "springboot-jpa/src/main/resources/application.properties",
"chars": 278,
"preview": "server.port=8099\r\n\r\nms.db.driverClassName=com.mysql.jdbc.Driver\r\nms.db.url=jdbc:mysql://localhost:3306/msm?prepStmtCache"
},
{
"path": "springboot-kafka/pom.xml",
"chars": 1678,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-kafka/src/main/java/cn/abel/Application.java",
"chars": 455,
"preview": "package cn.abel;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.Sprin"
},
{
"path": "springboot-kafka/src/main/java/cn/abel/config/KafkaConfig.java",
"chars": 3069,
"preview": "package cn.abel.config;\n\nimport org.apache.kafka.clients.consumer.ConsumerConfig;\nimport org.apache.kafka.common.seriali"
},
{
"path": "springboot-kafka/src/main/java/cn/abel/service/prehandle/KafkaConsumerService.java",
"chars": 795,
"preview": "package cn.abel.service.prehandle;\n\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.springframework."
},
{
"path": "springboot-kafka/src/main/java/cn/abel/service/prehandle/SplitService.java",
"chars": 597,
"preview": "package cn.abel.service.prehandle;\n\n\nimport com.alibaba.fastjson.JSONObject;\nimport lombok.extern.slf4j.Slf4j;\n\nimport o"
},
{
"path": "springboot-kafka/src/main/resources/local/application.properties",
"chars": 472,
"preview": "server.port=8090\nspring.kafka.bootstrap-servers=127.0.0.1:9092\nspring.kafka.consumer.group-id=springboot-kafka\nspring.ka"
},
{
"path": "springboot-kafka/src/main/resources/local/banner.txt",
"chars": 284,
"preview": "########################################################\n# #\n# "
},
{
"path": "springboot-kafka/src/main/resources/local/logback-spring.xml",
"chars": 1295,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <contextName>springboot-kafka</contextName>\n\n <!-- 控制台输入日志"
},
{
"path": "springboot-mybatis/docker-it.sh",
"chars": 2443,
"preview": "#!/bin/sh\n\n#########################\n# based on docker bin\n\npackageName=$1\nimageVersion=$2\ndockerDestFolder=$3\nenv=$4\npa"
},
{
"path": "springboot-mybatis/env/dev/application.properties",
"chars": 278,
"preview": "# EMBEDDED SERVER CONFIGURATION (ServerProperties) \r\nserver.port=8099\r\n\r\n\r\nms.db.driverClassName=com.mysql.jdbc.Driver\r\n"
},
{
"path": "springboot-mybatis/env/dev/env.properties",
"chars": 2708,
"preview": "#dev\n\n################\n##this property file is used to export shell session-scoped variables by command 'source *.proper"
},
{
"path": "springboot-mybatis/env/dev/log4j.properties",
"chars": 1083,
"preview": "# Output pattern : date [thread] priority category - message\r\nlog4j.rootLogger=INFO, Console, R\r\n\r\n#Console\r\nlog4j.appen"
},
{
"path": "springboot-mybatis/env/local/application.properties",
"chars": 278,
"preview": "# EMBEDDED SERVER CONFIGURATION (ServerProperties) \r\nserver.port=8099\r\n\r\n\r\nms.db.driverClassName=com.mysql.jdbc.Driver\r\n"
},
{
"path": "springboot-mybatis/env/local/env.properties",
"chars": 2649,
"preview": "#local\n\n################\n##this property file is used to export shell session-scoped variables by command 'source *.prop"
},
{
"path": "springboot-mybatis/env/local/log4j.properties",
"chars": 1083,
"preview": "# Output pattern : date [thread] priority category - message\r\nlog4j.rootLogger=INFO, Console, R\r\n\r\n#Console\r\nlog4j.appen"
},
{
"path": "springboot-mybatis/package.sh",
"chars": 2978,
"preview": "#!/bin/bash\n\n#####################\n# bash only\n# usage ./package.sh\n#####################\n\n#declare -a: define an array\n"
},
{
"path": "springboot-mybatis/pom.xml",
"chars": 8468,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "springboot-mybatis/scripts/docker/common/common-env.sh",
"chars": 2140,
"preview": "#ident \"%W%\"\n#!/bin/sh -x\n\n#SCRIPT_PATH must be defined firstly by calling script\necho \"[INFO] calling common-env.sh\"\ni"
}
]
// ... and 292 more files (download for full content)
About this extraction
This page contains the full source code of the 527515025/springBoot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 492 files (928.0 KB), approximately 261.3k tokens, and a symbol index with 1617 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.