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 &lt;adperezmorales@gmail.com&gt;
+ *
+ */
+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 &lt;adperezmorales@gmail.com&gt;
+ *
+ */
+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";
+
+  }
+
+}