You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by jm...@apache.org on 2020/03/06 15:29:46 UTC
svn commit: r1874903 [1/5] - in
/manifoldcf/branches/CONNECTORS-1637/connectors: ./ confluence-v6/
confluence-v6/src/ confluence-v6/src/main/ confluence-v6/src/main/java/
confluence-v6/src/main/java/org/ confluence-v6/src/main/java/org/apache/
confluen...
Author: jmssiera
Date: Fri Mar 6 15:29:45 2020
New Revision: 1874903
URL: http://svn.apache.org/viewvc?rev=1874903&view=rev
Log:
add confluence v6 connector
Added:
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/ (with props)
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/.gitignore
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/build.xml
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml (with props)
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/ConfluenceAuthorityConnector.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/Messages.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceConfiguration.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceRepositoryConnector.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/Messages.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/client/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/client/ConfluenceClient.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/exception/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/exception/ConfluenceException.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/exception/PageNotFoundException.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Attachment.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/ConfluenceResource.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/ConfluenceResponse.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/ConfluenceRestrictionsResponse.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/ConfluenceUser.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Group.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Label.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/MutableAttachment.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/MutablePage.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Page.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/PageType.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Restrictions.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/Space.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/User.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/builder/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/model/builder/ConfluenceResourceBuilder.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/util/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/util/ConfluenceUtil.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/v6/common_en_US.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/v6/common_es_ES.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/v6/common_fr_FR.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/confluence/v6/common_ja_JP.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/v6/common_en_US.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/v6/common_es_ES.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/v6/common_fr_FR.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/confluence/v6/common_ja_JP.properties
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/v6/editConfiguration_conf.js
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/v6/editConfiguration_conf_cache.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/v6/editConfiguration_conf_server.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/authorities/authorities/confluence/v6/viewConfiguration_conf.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editConfiguration_conf.js
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editConfiguration_conf_server.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editSpecification_conf.js
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editSpecification_confPages.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editSpecification_confSecurity.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/editSpecification_confSpaces.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/viewConfiguration_conf.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/resources/org/apache/manifoldcf/crawler/connectors/confluence/v6/viewSpecification_conf.html
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/authorities/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/authorities/confluence/tests/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/authorities/confluence/tests/ConfluenceAuthorityTest.java
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/crawler/connectors/confluence/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/crawler/connectors/confluence/tests/
manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/test/java/org/apache/manifoldcf/crawler/connectors/confluence/tests/ConfluenceConnectorTest.java
Modified:
manifoldcf/branches/CONNECTORS-1637/connectors/pom.xml
Propchange: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Mar 6 15:29:45 2020
@@ -0,0 +1,10 @@
+build
+dist
+doc
+target
+test-output
+test-derby-output
+test-postgresql-output
+test-HSQLDB-output
+test-HSQLDBext-output
+test-mysql-output
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/.gitignore
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/.gitignore?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/.gitignore (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/.gitignore Fri Mar 6 15:29:45 2020
@@ -0,0 +1,4 @@
+/target/
+/.settings/
+/.classpath
+/.project
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/build.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/build.xml?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/build.xml (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/build.xml Fri Mar 6 15:29:45 2020
@@ -0,0 +1,52 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project name="confluence v6" default="all">
+
+ <property environment="env" />
+ <condition property="mcf-dist" value="${env.MCFDISTPATH}">
+ <isset property="env.MCFDISTPATH" />
+ </condition>
+ <property name="abs-dist" location="../../dist" />
+ <condition property="mcf-dist" value="${abs-dist}">
+ <not>
+ <isset property="env.MCFDISTPATH" />
+ </not>
+ </condition>
+
+ <import file="${mcf-dist}/connector-build.xml" />
+
+ <path id="connector-classpath">
+ <path refid="mcf-connector-build.connector-classpath" />
+ <fileset dir="../../lib">
+ <include name="httpcore*.jar" />
+ <include name="httpclient*.jar" />
+ </fileset>
+ </path>
+
+ <target name="deliver-connector" depends="mcf-connector-build.deliver-connector">
+ <antcall target="general-add-repository-connector">
+ <param name="connector-label" value="Confluence v6+" />
+ <param name="connector-class" value="org.apache.manifoldcf.crawler.connectors.confluence.v6.ConfluenceRepositoryConnector" />
+ </antcall>
+ <antcall target="general-add-authority-connector">
+ <param name="connector-label" value="Confluence v6+" />
+ <param name="connector-class" value="org.apache.manifoldcf.authorities.authorities.confluence.v6.ConfluenceAuthorityConnector" />
+ </antcall>
+ </target>
+
+</project>
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml Fri Mar 6 15:29:45 2020
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<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/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.apache.manifoldcf</groupId>
+ <artifactId>mcf-connectors</artifactId>
+ <version>2.16-SNAPSHOT</version>
+ </parent>
+
+ <name>ManifoldCF - Connectors - Confluence v6 Connector</name>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>mcf-confluence-v6-connector</artifactId>
+ <packaging>jar</packaging>
+
+ <url>http://maven.apache.org</url>
+
+ <developers>
+ <developer>
+ <name>Antonio David Perez Morales</name>
+ <email>adperezmorales@gmail.com</email>
+ </developer>
+ <developer>
+ <name>Julien Massiera</name>
+ </developer>
+ </developers>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ </properties>
+
+ <build>
+ <defaultGoal>integration-test</defaultGoal>
+ <sourceDirectory>${basedir}/connector/src/main/java</sourceDirectory>
+ <testSourceDirectory>${basedir}/connector/src/test/java</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}/connector/src/main/native2ascii</directory>
+ <includes>
+ <include>**/*.properties</include>
+ </includes>
+ </resource>
+ <resource>
+ <directory>${basedir}/connector/src/main/resources</directory>
+ <includes>
+ <include>**/*.html</include>
+ <include>**/*.js</include>
+ </includes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>${basedir}/connector/src/test/resources</directory>
+ </testResource>
+ </testResources>
+
+
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>native2ascii-maven-plugin</artifactId>
+ <version>1.0-beta-1</version>
+ <configuration>
+ <workDir>target/classes</workDir>
+ </configuration>
+ <executions>
+ <execution>
+ <id>native2ascii-utf8</id>
+ <goals>
+ <goal>native2ascii</goal>
+ </goals>
+ <configuration>
+ <encoding>UTF8</encoding>
+ <includes>
+ <include>**/*.properties</include>
+ </includes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Test plugin configuration -->
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-war</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>target/dependency</outputDirectory>
+ <artifactItems>
+ <artifactItem>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-api-service</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ <overWrite>false</overWrite>
+ <destFileName>mcf-api-service.war</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-authority-service</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ <overWrite>false</overWrite>
+ <destFileName>mcf-authority-service.war</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-crawler-ui</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ <overWrite>false</overWrite>
+ <destFileName>mcf-crawler-ui.war</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>**/*Postgresql*.java</exclude>
+ <exclude>**/*MySQL*.java</exclude>
+ </excludes>
+ <forkCount>1</forkCount>
+ <reuseForks>false</reuseForks>
+ <workingDirectory>target/test-output</workingDirectory>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.18.1</version>
+ <configuration>
+ <skipTests>${skipITs}</skipTests>
+ <systemPropertyVariables>
+ <crawlerWarPath>../dependency/mcf-crawler-ui.war</crawlerWarPath>
+ <authorityserviceWarPath>../dependency/mcf-authority-service.war</authorityserviceWarPath>
+ <apiWarPath>../dependency/mcf-api-service.war</apiWarPath>
+ </systemPropertyVariables>
+ <excludes>
+ <exclude>**/*Postgresql*.java</exclude>
+ <exclude>**/*MySQL*.java</exclude>
+ </excludes>
+ <forkCount>1</forkCount>
+ <reuseForks>false</reuseForks>
+ <workingDirectory>target/test-output</workingDirectory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>integration-test</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>verify</id>
+ <goals>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-dependency-plugin
+ </artifactId>
+ <versionRange>
+ [2.8,)
+ </versionRange>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.codehaus.mojo
+ </groupId>
+ <artifactId>
+ native2ascii-maven-plugin
+ </artifactId>
+ <versionRange>
+ [1.0-beta-1,)
+ </versionRange>
+ <goals>
+ <goal>native2ascii</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-remote-resources-plugin
+ </artifactId>
+ <versionRange>
+ [1.5,)
+ </versionRange>
+ <goals>
+ <goal>process</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-connector-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-pull-agent</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-agents</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-ui-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>${commons-lang.version}</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>15.0</version>
+ </dependency>
+
+ <!-- Testing dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>${mockito.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.tomakehurst</groupId>
+ <artifactId>wiremock</artifactId>
+ <version>${wiremock.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mcf-core</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+
+ </dependencies>
+
+</project>
Propchange: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/pom.xml
------------------------------------------------------------------------------
svn:executable = *
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/ConfluenceAuthorityConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/ConfluenceAuthorityConnector.java?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/ConfluenceAuthorityConnector.java (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/ConfluenceAuthorityConnector.java Fri Mar 6 15:29:45 2020
@@ -0,0 +1,734 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.manifoldcf.authorities.authorities.confluence.v6;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
+import org.apache.manifoldcf.authorities.authorities.BaseAuthorityConnector;
+import org.apache.manifoldcf.authorities.interfaces.AuthorizationResponse;
+import org.apache.manifoldcf.core.interfaces.CacheManagerFactory;
+import org.apache.manifoldcf.core.interfaces.ConfigParams;
+import org.apache.manifoldcf.core.interfaces.ICacheCreateHandle;
+import org.apache.manifoldcf.core.interfaces.ICacheDescription;
+import org.apache.manifoldcf.core.interfaces.ICacheHandle;
+import org.apache.manifoldcf.core.interfaces.ICacheManager;
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.IPasswordMapperActivity;
+import org.apache.manifoldcf.core.interfaces.IPostParameters;
+import org.apache.manifoldcf.core.interfaces.IThreadContext;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.core.interfaces.StringSet;
+import org.apache.manifoldcf.crawler.connectors.confluence.v6.ConfluenceConfiguration;
+import org.apache.manifoldcf.crawler.connectors.confluence.v6.client.ConfluenceClient;
+import org.apache.manifoldcf.crawler.connectors.confluence.v6.model.ConfluenceUser;
+import org.apache.manifoldcf.authorities.system.Logging;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * <p>
+ * Confluence Authority Connector class
+ * </p>
+ * <p>
+ * ManifoldCF Authority connector to deal with Confluence documents
+ * </p>
+ *
+ * @author Antonio David Perez Morales <adperezmorales@gmail.com>
+ *
+ */
+public class ConfluenceAuthorityConnector extends BaseAuthorityConnector {
+
+ /*
+ * Prefix for Confluence configuration and specification parameters
+ */
+ private static final String PARAMETER_PREFIX = "confluence_";
+
+ /* Configuration tabs */
+ private static final String CONF_SERVER_TAB_PROPERTY = "ConfluenceAuthorityConnector.Server";
+
+ private static final String CONF_CACHE_TAB_PROPERTY = "ConfluenceAuthorityConnector.Cache";
+
+ // pages & js
+ // Template names for Confluence configuration
+ /**
+ * Forward to the javascript to check the configuration parameters
+ */
+ private static final String EDIT_CONFIG_HEADER_FORWARD = "editConfiguration_conf.js";
+ /**
+ * Cache tab template
+ */
+ private static final String EDIT_CONFIG_FORWARD_CACHE = "editConfiguration_conf_cache.html";
+ /**
+ * Server tab template
+ */
+ private static final String EDIT_CONFIG_FORWARD_SERVER = "editConfiguration_conf_server.html";
+
+ /**
+ * Forward to the HTML template to view the configuration parameters
+ */
+ private static final String VIEW_CONFIG_FORWARD = "viewConfiguration_conf.html";
+
+
+ private Logger logger = LoggerFactory
+ .getLogger(ConfluenceAuthorityConnector.class);
+
+ /* Confluence instance parameters */
+ protected String protocol = null;
+ protected String host = null;
+ protected String port = null;
+ protected String path = null;
+ protected String username = null;
+ protected String password = null;
+ protected String socketTimeout = null;
+ protected String connectionTimeout = null;
+ private String cacheLifetime = null;
+ private String cacheLRUsize = null;
+ private final long responseLifetime = 60000L;
+ private final int LRUsize = 1000;
+
+ /** Cache manager. */
+ private ICacheManager cacheManager = null;
+
+ protected ConfluenceClient confluenceClient = null;
+
+ /**
+ * <p>
+ * Default constructor
+ * </p>
+ */
+ public ConfluenceAuthorityConnector() {
+ super();
+ }
+
+ /**
+ * Used Mainly for testing
+ *
+ * @param client Injected Confluence Client
+ */
+ public void setCacheManager(ICacheManager cm){
+ this.cacheManager = cm;
+ }
+
+ /**
+ * Used Mainly for testing
+ *
+ * @param client Injected Confluence Client
+ */
+ public void setConfluenceClient(ConfluenceClient client){
+ this.confluenceClient = client;
+ }
+
+ /**
+ * Set thread context.
+ */
+ @Override
+ public void setThreadContext(final IThreadContext tc) throws ManifoldCFException {
+ super.setThreadContext(tc);
+ cacheManager = CacheManagerFactory.make(tc);
+ }
+
+ /**
+ * Clear thread context.
+ */
+ @Override
+ public void clearThreadContext() {
+ super.clearThreadContext();
+ cacheManager = null;
+ }
+
+
+
+ /**
+ * Close the connection. Call this before discarding the connection.
+ */
+ @Override
+ public void disconnect() throws ManifoldCFException {
+ if (confluenceClient != null) {
+ confluenceClient = null;
+ }
+
+ protocol = null;
+ host = null;
+ port = null;
+ path = null;
+ username = null;
+ password = null;
+ socketTimeout = null;
+ connectionTimeout = null;
+ cacheLifetime = null;
+ cacheLRUsize = null;
+
+ }
+
+ /**
+ * Makes connection to server
+ *
+ *
+ */
+ @Override
+ public void connect(ConfigParams configParams) {
+ super.connect(configParams);
+
+ protocol = params.getParameter(ConfluenceConfiguration.Server.PROTOCOL);
+ host = params.getParameter(ConfluenceConfiguration.Server.HOST);
+ port = params.getParameter(ConfluenceConfiguration.Server.PORT);
+ path = params.getParameter(ConfluenceConfiguration.Server.PATH);
+ username = params.getParameter(ConfluenceConfiguration.Server.USERNAME);
+ password = params
+ .getObfuscatedParameter(ConfluenceConfiguration.Server.PASSWORD);
+ socketTimeout = params.getParameter(ConfluenceConfiguration.Server.SOCKET_TIMEOUT);
+ connectionTimeout = params.getParameter(ConfluenceConfiguration.Server.CONNECTION_TIMEOUT);
+
+ cacheLifetime = params.getParameter(ConfluenceConfiguration.Authority.CACHE_LIFETIME);
+ if (cacheLifetime == null) {
+ cacheLifetime = "1";
+ }
+ cacheLRUsize = params.getParameter(ConfluenceConfiguration.Authority.CACHE_LRU_SIZE);
+ if (cacheLRUsize == null) {
+ cacheLRUsize = "1000";
+ }
+
+ try {
+ initConfluenceClient();
+ } catch (ManifoldCFException e) {
+ logger.debug(
+ "Not possible to initialize Confluence client. Reason: {}",
+ e.getMessage());
+ }
+ }
+
+ /**
+ * Checks if connection is available
+ */
+ @Override
+ public String check() throws ManifoldCFException {
+ try {
+ if (!isConnected()) {
+ initConfluenceClient();
+ }
+ Boolean result = confluenceClient.checkAuth();
+ if (result)
+ return super.check();
+ else
+ throw new ManifoldCFException(
+ "Confluence instance could not be reached");
+ } catch (ServiceInterruption e) {
+ return "Connection temporarily failed: " + e.getMessage();
+ } catch (ManifoldCFException e) {
+ return "Connection failed: " + e.getMessage();
+ } catch (Exception e) {
+ return "Connection failed: " + e.getMessage();
+ }
+ }
+
+ /**
+ * <p>
+ * Initialize Confluence client using the configured parameters
+ *
+ * @throws ManifoldCFException
+ */
+ protected void initConfluenceClient() throws ManifoldCFException {
+ if (confluenceClient == null) {
+
+ if (StringUtils.isEmpty(protocol)) {
+ throw new ManifoldCFException("Parameter "
+ + ConfluenceConfiguration.Server.PROTOCOL
+ + " required but not set");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence protocol = '" + protocol
+ + "'");
+ }
+
+ if (StringUtils.isEmpty(host)) {
+ throw new ManifoldCFException("Parameter "
+ + ConfluenceConfiguration.Server.HOST
+ + " required but not set");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence host = '" + host + "'");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence port = '" + port + "'");
+ }
+
+ if (StringUtils.isEmpty(path)) {
+ throw new ManifoldCFException("Parameter "
+ + ConfluenceConfiguration.Server.PATH
+ + " required but not set");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence path = '" + path + "'");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence username = '" + username
+ + "'");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors
+ .debug("Confluence password '" + password != null ? "set"
+ : "not set" + "'");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence socket timeout = '" + socketTimeout
+ + "'");
+ }
+
+ if (Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Confluence connection timeout = '" + connectionTimeout
+ + "'");
+ }
+
+ int portInt;
+ if (port != null && port.length() > 0) {
+ try {
+ portInt = Integer.parseInt(port);
+ } catch (NumberFormatException e) {
+ throw new ManifoldCFException("Bad number: "
+ + e.getMessage(), e);
+ }
+ } else {
+ if (protocol.toLowerCase(Locale.ROOT).equals("http"))
+ portInt = 80;
+ else
+ portInt = 443;
+ }
+
+ int socketTimeoutInt;
+ if (socketTimeout != null && socketTimeout.length() > 0) {
+ try {
+ socketTimeoutInt = Integer.parseInt(socketTimeout);
+ } catch (NumberFormatException e) {
+ throw new ManifoldCFException("Bad number: "
+ + e.getMessage(), e);
+ }
+ } else {
+ socketTimeoutInt = 900000;
+ }
+
+ int connectionTimeoutInt;
+ if (connectionTimeout != null && connectionTimeout.length() > 0) {
+ try {
+ connectionTimeoutInt = Integer.parseInt(connectionTimeout);
+ } catch (NumberFormatException e) {
+ throw new ManifoldCFException("Bad number: "
+ + e.getMessage(), e);
+ }
+ } else {
+ connectionTimeoutInt = 60000;
+ }
+
+ /* Generating a client to perform Confluence requests */
+ confluenceClient = new ConfluenceClient(protocol, host, portInt,
+ path, username, password, socketTimeoutInt, connectionTimeoutInt);
+ }
+
+ }
+
+ /**
+ * This method is called to assess whether to count this connector instance
+ * should actually be counted as being connected.
+ *
+ * @return true if the connector instance is actually connected.
+ */
+ @Override
+ public boolean isConnected() {
+ return confluenceClient != null;
+ }
+
+ private void fillInCacheTab(final Map<String, String> velocityContext, final IPasswordMapperActivity mapper, final ConfigParams parameters) {
+ String cacheLifetime = parameters.getParameter(ConfluenceConfiguration.Authority.CACHE_LIFETIME);
+ if (cacheLifetime == null) {
+ cacheLifetime = "1";
+ }
+ velocityContext.put("CACHE_LIFETIME", cacheLifetime);
+ String cacheLRUsize = parameters.getParameter(ConfluenceConfiguration.Authority.CACHE_LRU_SIZE);
+ if (cacheLRUsize == null) {
+ cacheLRUsize = "1000";
+ }
+ velocityContext.put("CACHE_LRU_SIZE", cacheLRUsize);
+ }
+
+
+ private void fillInServerConfigurationMap(Map<String, String> serverMap,
+ IPasswordMapperActivity mapper, ConfigParams parameters) {
+ String confluenceProtocol = parameters
+ .getParameter(ConfluenceConfiguration.Server.PROTOCOL);
+ String confluenceHost = parameters
+ .getParameter(ConfluenceConfiguration.Server.HOST);
+ String confluencePort = parameters
+ .getParameter(ConfluenceConfiguration.Server.PORT);
+ String confluencePath = parameters
+ .getParameter(ConfluenceConfiguration.Server.PATH);
+ String confluenceUsername = parameters
+ .getParameter(ConfluenceConfiguration.Server.USERNAME);
+ String confluencePassword = parameters
+ .getObfuscatedParameter(ConfluenceConfiguration.Server.PASSWORD);
+ String confluenceSocketTimeout = parameters
+ .getParameter(ConfluenceConfiguration.Server.SOCKET_TIMEOUT);
+ String confluenceConnectionTimeout = parameters
+ .getParameter(ConfluenceConfiguration.Server.CONNECTION_TIMEOUT);
+
+ if (confluenceProtocol == null)
+ confluenceProtocol = ConfluenceConfiguration.Server.PROTOCOL_DEFAULT_VALUE;
+ if (confluenceHost == null)
+ confluenceHost = ConfluenceConfiguration.Server.HOST_DEFAULT_VALUE;
+ if (confluencePort == null)
+ confluencePort = ConfluenceConfiguration.Server.PORT_DEFAULT_VALUE;
+ if (confluencePath == null)
+ confluencePath = ConfluenceConfiguration.Server.PATH_DEFAULT_VALUE;
+
+ if (confluenceUsername == null)
+ confluenceUsername = ConfluenceConfiguration.Server.USERNAME_DEFAULT_VALUE;
+ if (confluencePassword == null)
+ confluencePassword = ConfluenceConfiguration.Server.PASSWORD_DEFAULT_VALUE;
+ else
+ confluencePassword = mapper.mapPasswordToKey(confluencePassword);
+
+ if(confluenceSocketTimeout == null) {
+ confluenceSocketTimeout = ConfluenceConfiguration.Server.SOCKET_TIMEOUT_DEFAULT_VALUE;
+ }
+ if(confluenceConnectionTimeout == null) {
+ confluenceConnectionTimeout = ConfluenceConfiguration.Server.CONNECTION_TIMEOUT_DEFAULT_VALUE;
+ }
+
+ serverMap.put(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PROTOCOL, confluenceProtocol);
+ serverMap.put(PARAMETER_PREFIX + ConfluenceConfiguration.Server.HOST,
+ confluenceHost);
+ serverMap.put(PARAMETER_PREFIX + ConfluenceConfiguration.Server.PORT,
+ confluencePort);
+ serverMap.put(PARAMETER_PREFIX + ConfluenceConfiguration.Server.PATH,
+ confluencePath);
+ serverMap.put(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.USERNAME, confluenceUsername);
+ serverMap.put(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PASSWORD, confluencePassword);
+ serverMap.put(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.SOCKET_TIMEOUT, confluenceSocketTimeout);
+ serverMap.put(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.CONNECTION_TIMEOUT, confluenceConnectionTimeout);
+ }
+
+ @Override
+ public void viewConfiguration(IThreadContext threadContext,
+ IHTTPOutput out, Locale locale, ConfigParams parameters)
+ throws ManifoldCFException, IOException {
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ /* Fill server configuration parameters */
+ fillInServerConfigurationMap(paramMap, out, parameters);
+ fillInCacheTab(paramMap, out, parameters);
+
+ Messages.outputResourceWithVelocity(out, locale, VIEW_CONFIG_FORWARD,
+ paramMap, true);
+ }
+
+ @Override
+ public void outputConfigurationHeader(IThreadContext threadContext,
+ IHTTPOutput out, Locale locale, ConfigParams parameters,
+ List<String> tabsArray) throws ManifoldCFException, IOException {
+ // Add the Server tab
+ tabsArray.add(Messages.getString(locale, CONF_SERVER_TAB_PROPERTY));
+ tabsArray.add(Messages.getString(locale, CONF_CACHE_TAB_PROPERTY));
+ // Map the parameters
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ /* Fill server configuration parameters */
+ fillInServerConfigurationMap(paramMap, out, parameters);
+ /* Fill cache configuration parameters */
+ fillInCacheTab(paramMap, out, parameters);
+
+ // Output the Javascript - only one Velocity template for all tabs
+ Messages.outputResourceWithVelocity(out, locale,
+ EDIT_CONFIG_HEADER_FORWARD, paramMap, true);
+ }
+
+ @Override
+ public void outputConfigurationBody(IThreadContext threadContext,
+ IHTTPOutput out, Locale locale, ConfigParams parameters,
+ String tabName) throws ManifoldCFException, IOException {
+
+ // Call the Velocity templates for each tab
+ Map<String, String> paramMap = new HashMap<String, String>();
+ // Set the tab name
+ paramMap.put("TabName", tabName);
+
+ // Fill in the parameters
+ fillInServerConfigurationMap(paramMap, out, parameters);
+ fillInCacheTab(paramMap, out, parameters);
+
+ // Server tab
+ Messages.outputResourceWithVelocity(out, locale,
+ EDIT_CONFIG_FORWARD_SERVER, paramMap, true);
+
+ // Cache tab
+ Messages.outputResourceWithVelocity(out, locale,
+ EDIT_CONFIG_FORWARD_CACHE, paramMap, true);
+
+ }
+
+ /*
+ * Repository specification post handle, (server and proxy & client secret
+ * etc)
+ *
+ * @see
+ * org.apache.manifoldcf.core.connector.BaseConnector#processConfigurationPost
+ * (org.apache.manifoldcf.core.interfaces.IThreadContext,
+ * org.apache.manifoldcf.core.interfaces.IPostParameters,
+ * org.apache.manifoldcf.core.interfaces.ConfigParams)
+ */
+ @Override
+ public String processConfigurationPost(IThreadContext threadContext,
+ IPostParameters variableContext, ConfigParams parameters)
+ throws ManifoldCFException {
+
+ // Cache parameters
+ final String cacheLifetime = variableContext.getParameter(ConfluenceConfiguration.Authority.CACHE_LIFETIME);
+ if (cacheLifetime != null) {
+ parameters.setParameter(ConfluenceConfiguration.Authority.CACHE_LIFETIME, cacheLifetime);
+ }
+ final String cacheLRUsize = variableContext.getParameter(ConfluenceConfiguration.Authority.CACHE_LRU_SIZE);
+ if (cacheLRUsize != null) {
+ parameters.setParameter(ConfluenceConfiguration.Authority.CACHE_LRU_SIZE, cacheLRUsize);
+ }
+
+ String confluenceProtocol = variableContext
+ .getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PROTOCOL);
+ if (confluenceProtocol != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.PROTOCOL,
+ confluenceProtocol);
+
+ String confluenceHost = variableContext.getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.HOST);
+ if (confluenceHost != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.HOST,
+ confluenceHost);
+
+ String confluencePort = variableContext.getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PORT);
+ if (confluencePort != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.PORT,
+ confluencePort);
+
+ String confluencePath = variableContext.getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PATH);
+ if (confluencePath != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.PATH,
+ confluencePath);
+
+ String confluenceUsername = variableContext
+ .getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.USERNAME);
+ if (confluenceUsername != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.USERNAME,
+ confluenceUsername);
+
+ String confluencePassword = variableContext
+ .getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.PASSWORD);
+ if (confluencePassword != null)
+ parameters.setObfuscatedParameter(
+ ConfluenceConfiguration.Server.PASSWORD,
+ variableContext.mapKeyToPassword(confluencePassword));
+
+ String confluenceSocketTimeout = variableContext
+ .getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.SOCKET_TIMEOUT);
+ if (confluenceSocketTimeout != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.SOCKET_TIMEOUT,
+ confluenceSocketTimeout);
+
+ String confluenceConnectionTimeout = variableContext
+ .getParameter(PARAMETER_PREFIX
+ + ConfluenceConfiguration.Server.CONNECTION_TIMEOUT);
+ if (confluenceConnectionTimeout != null)
+ parameters.setParameter(ConfluenceConfiguration.Server.CONNECTION_TIMEOUT,
+ confluenceConnectionTimeout);
+
+ /* null means process configuration has been successful */
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.manifoldcf.authorities.authorities.BaseAuthorityConnector#getDefaultAuthorizationResponse(java.lang.String)
+ */
+ @Override
+ public AuthorizationResponse getDefaultAuthorizationResponse(String userName) {
+ return RESPONSE_UNREACHABLE;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.manifoldcf.authorities.authorities.BaseAuthorityConnector#getAuthorizationResponse(java.lang.String)
+ */
+ @Override
+ public AuthorizationResponse getAuthorizationResponse(String userName)
+ throws ManifoldCFException {
+
+ String finalUsername = userName;
+ // If the username contains the domain, must clean it
+ if(finalUsername.indexOf("@") != -1) {
+ finalUsername = finalUsername.substring(0, finalUsername.indexOf("@"));
+ }
+
+ if (Logging.authorityConnectors != null && Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Get Confluence autorizations for user '" + finalUsername + "'");
+ }
+
+ if(cacheManager != null) {
+
+ // Construct a cache description object
+ final ICacheDescription objectDescription = new AuthorizationResponseDescription(finalUsername, this.responseLifetime, this.LRUsize);
+
+ // Enter the cache
+ final ICacheHandle ch = cacheManager.enterCache(new ICacheDescription[] { objectDescription }, null, null);
+ try {
+ final ICacheCreateHandle createHandle = cacheManager.enterCreateSection(ch);
+ try {
+ // Lookup the object
+ AuthorizationResponse response = (AuthorizationResponse) cacheManager.lookupObject(createHandle, objectDescription);
+ if (response != null) {
+ if (Logging.authorityConnectors != null && Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Found cached Confluence autorizations for user '" + finalUsername + "'");
+ }
+ return response;
+ }
+ // Create the object.
+ response = getAuthorizationResponseUncached(finalUsername);
+ // Save it in the cache
+ cacheManager.saveObject(createHandle, objectDescription, response);
+ // And return it...
+ return response;
+ } finally {
+ cacheManager.leaveCreateSection(createHandle);
+ }
+ } finally {
+ cacheManager.leaveCache(ch);
+ }
+ } else {
+ return getAuthorizationResponseUncached(finalUsername);
+ }
+ }
+
+ private AuthorizationResponse getAuthorizationResponseUncached(final String userName) throws ManifoldCFException {
+ if (Logging.authorityConnectors != null && Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Get uncached Confluence autorizations for user '" + userName + "'");
+ }
+ try {
+ ConfluenceUser confluenceUser = confluenceClient.getUserAuthorities(userName);
+ if (confluenceUser.getUsername() == null
+ || confluenceUser.getUsername().isEmpty()
+ || confluenceUser.getAuthorities().isEmpty()) {
+ if (Logging.authorityConnectors != null && Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("No Confluence user found for user '" + userName + "'");
+ }
+ return RESPONSE_USERNOTFOUND;
+ } else {
+ if (Logging.authorityConnectors != null && Logging.authorityConnectors.isDebugEnabled()) {
+ Logging.authorityConnectors.debug("Found Confluence corresponding user for user '" + userName + "'");
+ }
+ return new AuthorizationResponse(
+ confluenceUser.getAuthorities().toArray(new String[confluenceUser.getAuthorities().size()]),
+ AuthorizationResponse.RESPONSE_OK);
+ }
+ } catch (Exception e) {
+ return RESPONSE_UNREACHABLE;
+ }
+
+ }
+
+ protected static StringSet emptyStringSet = new StringSet();
+
+ /**
+ * This is the cache object descriptor for cached access tokens from this connector.
+ */
+ protected static class AuthorizationResponseDescription extends org.apache.manifoldcf.core.cachemanager.BaseDescription {
+ /** The user name */
+ protected String userName;
+ /** The response lifetime */
+ protected long responseLifetime;
+ /** The expiration time */
+ protected long expirationTime = -1;
+
+ /** Constructor. */
+ public AuthorizationResponseDescription(final String userName, final long responseLifetime, final int LRUsize) {
+ super("SharePointADAuthority", LRUsize);
+ this.userName = userName;
+ this.responseLifetime = responseLifetime;
+ }
+
+ /** Return the invalidation keys for this object. */
+ @Override
+ public StringSet getObjectKeys() {
+ return emptyStringSet;
+ }
+
+ /** Get the critical section name, used for synchronizing the creation of the object */
+ @Override
+ public String getCriticalSectionName() {
+ final StringBuilder sb = new StringBuilder(getClass().getName());
+ sb.append("-").append(userName);
+ return sb.toString();
+ }
+
+ /** Return the object expiration interval */
+ @Override
+ public long getObjectExpirationTime(final long currentTime) {
+ if (expirationTime == -1) {
+ expirationTime = currentTime + responseLifetime;
+ }
+ return expirationTime;
+ }
+
+ @Override
+ public int hashCode() {
+ final int rval = userName.hashCode();
+ return rval;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (!(o instanceof AuthorizationResponseDescription)) {
+ return false;
+ }
+ final AuthorizationResponseDescription ard = (AuthorizationResponseDescription) o;
+ if (!ard.userName.equals(userName)) {
+ return false;
+ }
+ return true;
+ }
+
+ }
+
+}
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/Messages.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/Messages.java?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/Messages.java (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/authorities/authorities/confluence/v6/Messages.java Fri Mar 6 15:29:45 2020
@@ -0,0 +1,128 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.manifoldcf.authorities.authorities.confluence.v6;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
+/**
+ * <p>
+ * Messages class
+ * </p>
+ * <p>
+ * Class used to render templates along with specific values
+ * </p>
+ * <p>
+ * Also used to get messages for specific Locales
+ * </p>
+ *
+ * @author Antonio David Perez Morales <adperezmorales@gmail.com>
+ *
+ */
+public class Messages extends org.apache.manifoldcf.ui.i18n.Messages {
+ public static final String DEFAULT_BUNDLE_NAME = "org.apache.manifoldcf.authorities.authorities.confluence.v6.common";
+ public static final String DEFAULT_PATH_NAME = "org.apache.manifoldcf.authorities.authorities.confluence.v6";
+
+ /**
+ * Constructor - do no instantiate
+ */
+ protected Messages() {
+ }
+
+ public static String getString(final Locale locale, final String messageKey) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getAttributeString(final Locale locale, final String messageKey) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getBodyString(final Locale locale, final String messageKey) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getAttributeJavascriptString(final Locale locale, final String messageKey) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getBodyJavascriptString(final Locale locale, final String messageKey) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getString(final Locale locale, final String messageKey, final Object[] args) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getAttributeString(final Locale locale, final String messageKey, final Object[] args) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getBodyString(final Locale locale, final String messageKey, final Object[] args) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getAttributeJavascriptString(final Locale locale, final String messageKey, final Object[] args) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(final Locale locale, final String messageKey, final Object[] args) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ // More general methods which allow bundlenames and class loaders to be specified.
+
+ public static String getString(final String bundleName, final Locale locale, final String messageKey, final Object[] args) {
+ return getString(Messages.class, bundleName, locale, messageKey, args);
+ }
+
+ public static String getAttributeString(final String bundleName, final Locale locale, final String messageKey, final Object[] args) {
+ return getAttributeString(Messages.class, bundleName, locale, messageKey, args);
+ }
+
+ public static String getBodyString(final String bundleName, final Locale locale, final String messageKey, final Object[] args) {
+ return getBodyString(Messages.class, bundleName, locale, messageKey, args);
+ }
+
+ public static String getAttributeJavascriptString(final String bundleName, final Locale locale, final String messageKey, final Object[] args) {
+ return getAttributeJavascriptString(Messages.class, bundleName, locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(final String bundleName, final Locale locale, final String messageKey, final Object[] args) {
+ return getBodyJavascriptString(Messages.class, bundleName, locale, messageKey, args);
+ }
+
+ // Resource output
+
+ public static void outputResource(final IHTTPOutput output, final Locale locale, final String resourceKey, final Map<String, String> substitutionParameters, final boolean mapToUpperCase)
+ throws ManifoldCFException {
+ outputResource(output, Messages.class, DEFAULT_PATH_NAME, locale, resourceKey, substitutionParameters, mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(final IHTTPOutput output, final Locale locale, final String resourceKey, final Map<String, String> substitutionParameters, final boolean mapToUpperCase)
+ throws ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class, DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey, substitutionParameters, mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(final IHTTPOutput output, final Locale locale, final String resourceKey, final Map<String, Object> contextObjects) throws ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class, DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey, contextObjects);
+ }
+
+}
Added: manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceConfiguration.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceConfiguration.java?rev=1874903&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceConfiguration.java (added)
+++ manifoldcf/branches/CONNECTORS-1637/connectors/confluence-v6/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/v6/ConfluenceConfiguration.java Fri Mar 6 15:29:45 2020
@@ -0,0 +1,70 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.manifoldcf.crawler.connectors.confluence.v6;
+
+/**
+ * <p>
+ * ConfluenceConfiguration class
+ * </p>
+ * <p>
+ * Class used to keep configuration parameters for Confluence repository connection
+ * </p>
+ *
+ * @author Julien Massiera & Antonio David Perez Morales
+ *
+ */
+public class ConfluenceConfiguration {
+
+ public static interface Server {
+ public static final String USERNAME = "username";
+ public static final String PASSWORD = "password";
+ public static final String PROTOCOL = "protocol";
+ public static final String HOST = "host";
+ public static final String PORT = "port";
+ public static final String PATH = "path";
+ public static final String SOCKET_TIMEOUT = "socket_timeout";
+ public static final String CONNECTION_TIMEOUT = "connection_timeout";
+
+ public static final String PROTOCOL_DEFAULT_VALUE = "http";
+ public static final String HOST_DEFAULT_VALUE = "";
+ public static final String PORT_DEFAULT_VALUE = "8090";
+ public static final String PATH_DEFAULT_VALUE = "/confluence";
+ public static final String USERNAME_DEFAULT_VALUE = "";
+ public static final String PASSWORD_DEFAULT_VALUE = "";
+ public static final String SOCKET_TIMEOUT_DEFAULT_VALUE = "900000";
+ public static final String CONNECTION_TIMEOUT_DEFAULT_VALUE = "60000";
+ }
+
+ public static interface Authority {
+ public static final String CACHE_LIFETIME = "cache_lifetime";
+ public static final String CACHE_LRU_SIZE = "cache_lru_size";
+ }
+
+ public static interface Specification {
+ public static final String SPACES = "spaces";
+ public static final String SPACE = "space";
+ public static final String SPACE_KEY_ATTRIBUTE = "key";
+ public static final String PAGES = "pages";
+ public static final String SECURITY = "security";
+ public static final String ACTIVATE_SECURITY_ATTRIBUTE_KEY = "activate_security";
+ public static final String PROCESS_ATTACHMENTS_ATTRIBUTE_KEY = "process_attachments";
+ public static final String PAGETYPE = "pagetype";
+
+ }
+
+}