diff options
| author | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2019-05-17 12:21:00 +0200 | 
|---|---|---|
| committer | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2019-05-17 12:21:00 +0200 | 
| commit | 75fe6d2b738245a3fbe6432b1e542beead5dcbf2 (patch) | |
| tree | ee5b6693fc6f8354cde28a9f4ee67e9f450e4c1e /eaaf_core_api | |
| parent | a9a7014cc6e06792d03890ad956d1222e245b8f1 (diff) | |
| download | EAAF-Components-75fe6d2b738245a3fbe6432b1e542beead5dcbf2.tar.gz EAAF-Components-75fe6d2b738245a3fbe6432b1e542beead5dcbf2.tar.bz2 EAAF-Components-75fe6d2b738245a3fbe6432b1e542beead5dcbf2.zip | |
refactor EAAF core to split API and Implementation
Diffstat (limited to 'eaaf_core_api')
72 files changed, 5758 insertions, 0 deletions
| diff --git a/eaaf_core_api/pom.xml b/eaaf_core_api/pom.xml new file mode 100644 index 00000000..76783159 --- /dev/null +++ b/eaaf_core_api/pom.xml @@ -0,0 +1,117 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +  <modelVersion>4.0.0</modelVersion> +  <parent> +    <groupId>at.gv.egiz</groupId> +    <artifactId>eaaf</artifactId> +    <version>1.x</version> +  </parent> +  <groupId>at.gv.egiz.eaaf</groupId> +  <artifactId>eaaf_core_api</artifactId> +  <version>${egiz.eaaf.version}</version> +  <name>API for EAAF core components</name> +  <description>Core components API for identity managment implementations</description> +   +  <licenses> +    <license> +      <name>European Union Public License, version 1.2 (EUPL-1.2)</name> +      <url>https://opensource.org/licenses/EUPL-1.2</url> +      <distribution>repo</distribution> +    </license> +  </licenses> + +  <developers> +    <developer> +      <name>Thomas Lenz</name> +      <email>thomas.lenz@egiz.gv.at</email> +      <organization>eGovernment Innovation Center (EGIZ)</organization> +      <organizationUrl>https://www.egiz.gv.at</organizationUrl> +    </developer> +  </developers> +   +  <properties> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> +  </properties> +   +  <dependencies> +  	<dependency> +  		<groupId>org.slf4j</groupId> +    	<artifactId>slf4j-api</artifactId> +  	</dependency> +  	<dependency> +    	<groupId>com.google.code.findbugs</groupId> +    	<artifactId>jsr305</artifactId> +	</dependency> +  	<dependency> +  		<groupId>javax.servlet</groupId> +		<artifactId>javax.servlet-api</artifactId> +		<scope>provided</scope> +  	</dependency>  	 +  	<dependency> +      <groupId>junit</groupId> +      <artifactId>junit</artifactId> +      <scope>test</scope> +    </dependency> +  </dependencies> +   +   <build>    +   	<finalName>eaaf_core_api</finalName> +	 +	<resources> +  		<resource> +  			<directory>src/main/resources</directory> +  		</resource> +  	</resources>    +        +    <plugins> +      <plugin> +        <groupId>org.apache.maven.plugins</groupId> +        <artifactId>maven-compiler-plugin</artifactId> +        <version>3.7.0</version> +        <configuration> +          <source>1.8</source> +          <target>1.8</target> +        </configuration> +        <executions> +        	<execution> +        		<goals> +        			<goal>compile</goal> +        			<goal>testCompile</goal> +        		</goals> +        	</execution> +        </executions> +      </plugin> +      <plugin> +    	<groupId>org.apache.maven.plugins</groupId> +    	<artifactId>maven-jar-plugin</artifactId> +    	<version>3.1.0</version> +    	<executions> +        	<execution> +            	<goals> +                	<goal>test-jar</goal> +            	</goals> +        	</execution> +    	</executions> +	  </plugin> +       +      <!-- enable co-existence of testng and junit --> +			<plugin> +				<artifactId>maven-surefire-plugin</artifactId> +				<version>${surefire.version}</version> +				<configuration> +					<threadCount>1</threadCount> +				</configuration> +				<dependencies> +					<dependency> +						<groupId>org.apache.maven.surefire</groupId> +						<artifactId>surefire-junit47</artifactId> +						<version>${surefire.version}</version> +					</dependency> +				</dependencies> +			</plugin> +       +    </plugins> +  </build> +   +</project> diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IGarbageCollectorProcessing.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IGarbageCollectorProcessing.java new file mode 100644 index 00000000..d7c81050 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IGarbageCollectorProcessing.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api; + +/** + * @author tlenz + * + */ +public interface IGarbageCollectorProcessing { + +	/** +	 * This method gets executed by the MOA garbage collector at regular intervals. +	 *  +	 */ +	public void runGarbageCollector(); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IPostStartupInitializable.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IPostStartupInitializable.java new file mode 100644 index 00000000..e0c2ebf7 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IPostStartupInitializable.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api; + + +/** + *  + * @author tlenz + * + * Interface initialize a Object when the MOA-ID-Auth start-up process is fully completed + * + */ +public interface IPostStartupInitializable { + +	/** +	 * This method is called once when MOA-ID-Auth start-up process is fully completed +	 *  +	 */ +	public void executeAfterStartup(); + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java new file mode 100644 index 00000000..77d718af --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java @@ -0,0 +1,257 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* +* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api; + +import java.util.Map; + +import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException; + +public interface IRequest { +		 +	/** +	 * Indicates the module, which implements this authentication protocol. +	 * The class, which is referenced, had to implement the 'IModulInfo' interface. +	 *  +	 * @return Full-qualified name of the class which implements this protocol +	 */ +	public String requestedModule(); +	 +	/** +	 * Indicates the protocol specific action, which should executed if the request is processed.  +	 * The class, which is referenced, had to implement the 'IAction' interface. +	 *  +	 * @return Full-qualified name of the class which implements the action   +	 */ +	public String requestedAction(); +	 +	/** +	 * Unique identifier, which indicates the service provider.  +	 *  +	 * @return Unique identifier for the service provider +	 */ +	public String getSPEntityId(); +	 +	/** +	 * Indicates the passive flag in authentication requests. +	 * If the passive flag is set, the identification and authentication process  +	 * failed if no active SSO session is found.  +	 *  +	 * @return true, if the is passive flag is set in authentication request, otherwise false +	 */ +	public boolean isPassiv(); +	 +	/** +	 * Indicates the force authentication flag in authentication request +	 * If this flag is set, a new identification and authentication process +	 * is carried out in any case. +	 *  +	 * @return true, if the force authentication flag is set, otherwise false +	 */ +	public boolean forceAuth(); +	 +	 +	/** +	 * Returns a generic request-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the request-data object +	 * @return The request-data object or null if no data is found with this key +	 */ +	public Object getRawData(String key); +	 +	/** +	 * Returns a generic request-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the request-data object +	 * @param clazz The class type which is stored with this key +	 * @return The request-data object or null if no data is found with this key +	 */ +	public <T> T getRawData(String key, final Class<T> clazz); +	 +	/**  +	 * Store a generic data-object into pending request with a specific identifier +	 *  +	 * @param key Identifier for this data-object +	 * @param object Generic data-object which should be stored. This data-object had to be implement the 'java.io.Serializable' interface +	 * @throws SessionDataStorageException Error message if the data-object can not stored to generic request-data storage +	 */ +	public void setRawDataToTransaction(String key, Object object) throws EAAFStorageException; + +	/**  +	 * Store generic data-objects into pending request with specific identifiers +	 *  +	 * @param map Map with Identifiers and values +	 * @throws SessionDataStorageException Error message if the data-object can not stored to generic request-data storage +	 */ +	public void setRawDataToTransaction(Map<String, Object> map) throws EAAFStorageException; +		 +	/** +	 * Wrap the internal dataStorage map into a DAO +	 *  +	 * @param wrapper DOA to access SessionData +	 * @return +	 */ +	public <T> T getSessionData(Class<T> wrapper); +	 +	/** +	 * Hold the identifier of this request object.  +	 * This identifier can be used to load the request from request storage  +	 *  +	 * @return Request identifier +	 */ +	public String getPendingRequestId(); +	 + +	/** +	 * Hold the identifier of the SSO-Session which is associated with this request +	 *  +	 * @return SSO session-identifier if a associated session exists, otherwise null +	 */ +	public String getInternalSSOSessionIdentifier(); + +	/** +	 * Set the in SSO session identifier, if an active SSO session exists +	 *  +	 * @param internalSSOSessionId +	 */ +	public void setInternalSSOSessionIdentifier(String internalSSOSessionId); +	 +	/** +	 * Holds a unique transaction identifier, which could be used for looging +	 * This transaction identifier is unique for a single identification and authentication process +	 *  +	 * @return Unique transaction identifier.  +	 */ +	public String getUniqueTransactionIdentifier(); +	 +	/** +	 * Holds a unique session identifier, which could be used for logging  +	 * This session identifier is unique for the full Single Sign-On session time +	 *  +	 * @return Unique session identifier +	 */ +	public String getUniqueSessionIdentifier(); +	 +	 +	/** +	 * Hold the identifier if the process instance, which is associated with this request  +	 *  +	 * @return ProcessInstanceID if this request is associated with a authentication process, otherwise null +	 */ +	public String getProcessInstanceId(); +	 +	 +	/** +	 * get the IDP URL PreFix, which was used for authentication request +	 *  +	 * @return IDP URL PreFix <String>. The URL prefix always ends without / +	 */ +	public String getAuthURL(); +	public String getAuthURLWithOutSlash(); +	 +	/** +	 * Indicates if this pending request needs authentication +	 *  +	 * @return true if this request needs authentication, otherwise false +	 */ +	public boolean isNeedAuthentication(); +	 +	/** +	 * Indicates, if this pending request needs Single Sign-On (SSO) functionality  +	 *  +	 * @return true if this request needs SSO, otherwise false +	 */ +	public boolean needSingleSignOnFunctionality(); +	public void setNeedSingleSignOnFunctionality(boolean needSSO); +	 +	 +	/** +	 * Indicates, if this pending request needs an additional user consent  +	 *  +	 * @return true if this request needs additional user consent, otherwise false +	 */ +	public boolean isNeedUserConsent(); +	public void setNeedUserConsent(boolean needConsent); +	 +	/** +	 * Indicates, if this pending request is already authenticated +	 *  +	 * @return true if this request is already authenticated, otherwise false +	 */ +	public boolean isAuthenticated(); +	public void setAuthenticated(boolean isAuthenticated); +	 +	/** +	 * Get get Service-Provider configuration which is associated with this request. +	 *  +	 * @return Service-Provider configuration +	 */ +	public ISPConfiguration getServiceProviderConfiguration(); + +	 +	/** +	 * Get get Service-Provider configuration which is associated with this request. +	 *  +	 * @return Service-Provider configuration as object +	 */ +	public <T> T getServiceProviderConfiguration(final Class<T> decorator); +	 +		 +	/** +	 * Indicates, if this pending-request is aborted by the user +	 *  +	 * @return true, if it is aborted, otherwise false +	 */ +	public boolean isAbortedByUser(); + +	/** +	 * Set the 'isAboredByUser' flag of this pending-request +	 *  +	 * @param b true, if the user has abort the authentication process, otherwise false +	 */ +	public void setAbortedByUser(boolean isAborted); +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequestStorage.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequestStorage.java new file mode 100644 index 00000000..56179d55 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequestStorage.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egiz.eaaf.core.api; + + +import at.gv.egiz.eaaf.core.exceptions.EAAFException; +import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; + +/** + * @author tlenz + * + */ +public interface IRequestStorage { + +	/** +	 * Get a pending-request from storage +	 *  +	 * @param pendingReqID Id of the pending request +	 * @return +	 * @throws PendingReqIdValidationException if the pendingRequestId was invalid +	 */ +	public IRequest getPendingRequest(String pendingReqID) throws PendingReqIdValidationException; +	 +	/** +	 * Store a pending-request in storage +	 *  +	 * @param pendingRequest +	 * @throws EAAFException +	 */ +	public void storePendingRequest(IRequest pendingRequest) throws EAAFException; +	 +	/** +	 * Remove a pending-request from storage +	 *  +	 * @param pendingReqId Id of the pending request +	 */ +	public void removePendingRequest(String pendingReqId); +	 +	/** +	 * change the pendingRequestId of a pending-request +	 *  +	 * @param pendingRequest current pending-reqeust +	 * @return new pending-requestId +	 * @throws EAAFException +	 */ +	public String changePendingRequestID(IRequest pendingRequest) throws EAAFException; +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IStatusMessenger.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IStatusMessenger.java new file mode 100644 index 00000000..fef65b28 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IStatusMessenger.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api; + +public interface IStatusMessenger { + +	//internal error codes defined in EAAFCore +	public static final String CODES_INTERNAL_ERROR_GENERIC = "internal.00";	 +	public static final String CODES_INTERNAL_ERROR_AUTH_NOSPCONFIG = "auth.00"; +	public static final String CODES_INTERNAL_ERROR_AUTH_NOPENDIGREQID = "auth.26"; +	public static final String CODES_INTERNAL_ERROR_AUTH_TIMEOUT = "auth.28"; +	public static final String CODES_INTERNAL_ERROR_AUTH_USERSTOP = "auth.21"; +	public static final String CODES_INTERNAL_ERROR_AUTH_REQUEST_INVALID = "auth.38"; +	 +	public static final String CODES_INTERNAL_ILLEGAL_STATE = "process.03"; +	 +	//external error codes defined in EAAFCore +	public static final String CODES_EXTERNAL_ERROR_GENERIC = "9199"; +	public static final String CODES_EXTERNAL_ERROR_PROCESSENGINE = "1099"; +	 +	 +	/** +	   * Get the message corresponding to a given message ID. +	   * +	   * @param messageId The ID of the message. +	   * @param parameters The parameters to fill in into the message arguments. +	   * @return The formatted message.  +	   */ +	public String getMessage(String messageId, Object[] parameters); +	 +	 +	/** +	 * Get external errorCode from from Exception  +	 *  +	 * @param throwable +	 * @return +	 */ +	public String getResponseErrorCode(Throwable throwable); +	 +	 +	/** +	 * Map internal to external errorCode +	 *  +	 * @param intErrorCode +	 * @return +	 */ +	public String mapInternalErrorToExternalError(String intErrorCode); +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConfigConstants.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConfigConstants.java new file mode 100644 index 00000000..b75f9eb3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConfigConstants.java @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + +public class EAAFConfigConstants { + +	public static final String SERVICE_UNIQUEIDENTIFIER = "uniqueID";   	//publicURLPrefix +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConstants.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConstants.java new file mode 100644 index 00000000..0a457825 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/EAAFConstants.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + + +public class EAAFConstants { + +	public static final String CONTENTTYPE_HTML_UTF8 = "text/html; charset=UTF-8"; +	 +	//http request parameters for process management +	public static final String PARAM_HTTP_TARGET_PENDINGREQUESTID = "pendingid";	 +	public static final String PARAM_HTTP_ERROR_CODE = "errorid"; +	  +	 +	public static final String EIDAS_LOA_PREFIX = "http://eidas.europa.eu/LoA/"; +	public static final String EIDAS_LOA_LOW = EIDAS_LOA_PREFIX + "low"; +	public static final String EIDAS_LOA_SUBSTANTIAL = EIDAS_LOA_PREFIX + "substantial"; +	public static final String EIDAS_LOA_HIGH = EIDAS_LOA_PREFIX + "high"; +	 +	public static final String EIDAS_LOA_MATCHING_MINIMUM = "minimum"; +	public static final String EIDAS_LOA_MATCHING_EXACT = "exact"; +	 +	//Austrian specific prefixes for pseudonyms of users  +	public static final String URN_PART_WBPK = "wbpk+"; +	public static final String URN_PART_EIDAS = "eidasid+"; +	 +	 +	public static final String URN_PREFIX = "urn:publicid:gv.at"; +	public static final String URN_PREFIX_BASEID = URN_PREFIX + ":baseid"; +	public static final String URN_PREFIX_CDID = URN_PREFIX + ":cdid+";	   +	public static final String URN_PREFIX_BPK = URN_PREFIX_CDID + "bpk";		   +	public static final String URN_PREFIX_WBPK = URN_PREFIX + ":" + URN_PART_WBPK; +	public static final String URN_PREFIX_EIDAS = URN_PREFIX + ":" +  URN_PART_EIDAS;	 +		 +	//Authentication process data_constants +	public static final String UNIQUESESSIONIDENTIFIER  = "eaaf_uniqueSessionIdentifier"; +	public static final String AUTH_DATA_CREATED 	    = "eaaf_authdata_created"; +	 +	 +	public static final String PROCESS_ENGINE_PREFIX = "PARAMS_"; +	public static final String PROCESS_ENGINE_PENDINGREQUESTID = PROCESS_ENGINE_PREFIX + PARAM_HTTP_TARGET_PENDINGREQUESTID; +	public static final String PROCESS_ENGINE_SERVICE_PROVIDER_ENTITYID = PROCESS_ENGINE_PREFIX + "uniqueSPId"; +	public static final String PROCESS_ENGINE_SSL_CLIENT_CERTIFICATE = PROCESS_ENGINE_PREFIX + "holderofkey_cert"; +	public static final String PROCESSCONTEXT_SP_CONFIG = PROCESS_ENGINE_PREFIX +  "spConfig"; +	public static final String PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT  +														= PROCESS_ENGINE_PREFIX + "requireNoPostAuthRedirect"; +	 +	public static final int ALLOWED_TIME_JITTER = 5; //minutes +	public static final String COUNTRYCODE_AUSTRIA = "AT"; + +	public static final String TESTCREDENTIALROOTOID = "1.2.40.0.10.2.4.1"; +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExceptionContainer.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExceptionContainer.java new file mode 100644 index 00000000..f3e8b65c --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExceptionContainer.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + +import java.io.Serializable; + +import at.gv.egiz.eaaf.core.api.IRequest; + +/** + * @author tlenz + * + */ +public class ExceptionContainer implements Serializable { + +	private static final long serialVersionUID = 5355860753609684995L; +	private Throwable exceptionThrown = null; +	private IRequest pendingReq = null; +	 +	 +	/** +	 *  +	 */ +	public ExceptionContainer(IRequest pendingReq, Throwable exception) { +		this.pendingReq = pendingReq;					 +		this.exceptionThrown = exception; +		 +	} +	 +	/** +	 * @return the exceptionThrown +	 */ +	public Throwable getExceptionThrown() { +		return this.exceptionThrown; +	} +	 +	public IRequest getPendingRequest() { +		return this.pendingReq; +		 +	} +	 +	/** +	 * @return the uniqueSessionID +	 */ +	public String getUniqueSessionID() { +		if (this.pendingReq != null) +			return this.pendingReq.getUniqueSessionIdentifier(); +		else +			return null; +	} +	/** +	 * @return the uniqueTransactionID +	 */ +	public String getUniqueTransactionID() { +		if (this.pendingReq != null) +			return this.pendingReq.getUniqueTransactionIdentifier(); +		else +			return null; +	} + +	/** +	 * @return the uniqueServiceProviderId +	 */ +	public String getUniqueServiceProviderId() { +		if (this.pendingReq != null &&  +				this.pendingReq.getServiceProviderConfiguration() != null) +			return this.pendingReq.getServiceProviderConfiguration().getUniqueIdentifier(); +		else +			return null; +	} +	 +	 +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExtendedPVPAttributeDefinitions.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExtendedPVPAttributeDefinitions.java new file mode 100644 index 00000000..62242799 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ExtendedPVPAttributeDefinitions.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + +public interface ExtendedPVPAttributeDefinitions extends PVPAttributeDefinitions { + +	public static final String SP_UNIQUEID_NAME = "http://eid.gv.at/eID/attributes/ServiceProviderUniqueId"; +	public static final String SP_UNIQUEID_FRIENDLY_NAME = "ServiceProvider-UniqueId"; +	 +	public static final String SP_FRIENDLYNAME_NAME = "http://eid.gv.at/eID/attributes/ServiceProviderFriendlyName"; +	public static final String SP_FRIENDLYNAME_FRIENDLY_NAME = "ServiceProvider-FriendlyName"; +	 +	public static final String SP_COUNTRYCODE_NAME = "http://eid.gv.at/eID/attributes/ServiceProviderCountryCode"; +	public static final String SP_COUNTRYCODE_FRIENDLY_NAME = "ServiceProvider-CountryCode"; +	 +	public static final String SP_USESMANDATES_NAME = "http://eid.gv.at/eID/attributes/ServiceProviderMandateProfiles"; +	public static final String SP_USESMANDATES_FRIENDLY_NAME = "ServiceProvider-MandateProfiles"; +	 +	/* Attributes for E-ID */		 +	public static final String EID_ENCRYPTED_SOURCEID_NAME = "http://eid.gv.at/eID/attributes/vsz/value"; +	public static final String EID_ENCRYPTED_SOURCEID_FRIENDLY_NAME = "vSZ"; +	 +	public static final String EID_ENCRYPTED_SOURCEID_TYPE_NAME = "http://eid.gv.at/eID/attributes/vsz/type"; +	public static final String EID_ENCRYPTED_SOURCEID_TYPE_FRIENDLY_NAME = "vSZ-Type"; +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ILoALevelMapper.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ILoALevelMapper.java new file mode 100644 index 00000000..ed79dc60 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/ILoALevelMapper.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + +public interface ILoALevelMapper { + +	/** +	 * Map an arbitrary QAA level to eIDAS LoA +	 *  +	 * @param qaa, but not null +	 * @return An eIDAS LoA if there is a mapping, otherwise null +	 */ +	public String mapToeIDASLoA(String qaa); +	 +	/** +	 * Map an arbitrary QAA level to PVP SecClass +	 *  +	 * @param qaa, but not null +	 * @return A PVP SecClass if there is a mapping, otherwise null +	 */ +	public String mapToSecClass(String qaa); + +	 +	/** +	 * Map an an arbitrary eIDAS LoA to STORK QAA Level +	 *  +	 * @param eidasqaaLevel +	 * @return A STORK QAA level +	 */ +	@Deprecated +	public String mapeIDASQAAToSTORKQAA(String eidasqaaLevel); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/PVPAttributeDefinitions.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/PVPAttributeDefinitions.java new file mode 100644 index 00000000..2a92e5f3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/PVPAttributeDefinitions.java @@ -0,0 +1,291 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.data; + +public interface PVPAttributeDefinitions { + +	public static final String URN_OID_PREFIX = "urn:oid:"; +	 +	public static final String PVP_VERSION_OID = "1.2.40.0.10.2.1.1.261.10"; +	public static final String PVP_VERSION_NAME = URN_OID_PREFIX + PVP_VERSION_OID; +	public static final String PVP_VERSION_FRIENDLY_NAME = "PVP-VERSION"; +	public static final String PVP_VERSION_2_1 = "2.2"; + +	 +	public static final String SECCLASS_OID = "1.2.40.0.10.2.1.1.261.110"; +	public static final String SECCLASS_FRIENDLY_NAME = "SECCLASS"; +	public static final String SECCLASS_NAME = URN_OID_PREFIX + SECCLASS_OID; +	public static final int SECCLASS_MAX_LENGTH = 128; +	 +	public static final String PRINCIPAL_NAME_OID = "1.2.40.0.10.2.1.1.261.20"; +	public static final String PRINCIPAL_NAME_NAME = URN_OID_PREFIX + PRINCIPAL_NAME_OID; +	public static final String PRINCIPAL_NAME_FRIENDLY_NAME = "PRINCIPAL-NAME"; +	public static final int PRINCIPAL_NAME_MAX_LENGTH = 128; +	 +	public static final String GIVEN_NAME_OID = "2.5.4.42"; +	public static final String GIVEN_NAME_NAME = URN_OID_PREFIX + GIVEN_NAME_OID; +	public static final String GIVEN_NAME_FRIENDLY_NAME = "GIVEN-NAME"; +	public static final int GIVEN_NAME_MAX_LENGTH = 128; +	 +	public static final String BIRTHDATE_OID = "1.2.40.0.10.2.1.1.55"; +	public static final String BIRTHDATE_NAME = URN_OID_PREFIX + BIRTHDATE_OID; +	public static final String BIRTHDATE_FRIENDLY_NAME = "BIRTHDATE"; +	public static final String BIRTHDATE_FORMAT_PATTERN = "yyyy-MM-dd"; +	 +	public static final String USERID_OID = "0.9.2342.19200300.100.1.1"; +	public static final String USERID_NAME = URN_OID_PREFIX + USERID_OID; +	public static final String USERID_FRIENDLY_NAME = "USERID"; +	public static final int USERID_MAX_LENGTH = 128; +	 +	public static final String GID_OID = "1.2.40.0.10.2.1.1.1"; +	public static final String GID_NAME = URN_OID_PREFIX + GID_OID; +	public static final String GID_FRIENDLY_NAME = "GID"; +	public static final int GID_MAX_LENGTH = 128; +	 +	public static final String BPK_OID = "1.2.40.0.10.2.1.1.149"; +	public static final String BPK_NAME = URN_OID_PREFIX + BPK_OID; +	public static final String BPK_FRIENDLY_NAME = "BPK"; +	public static final int BPK_MAX_LENGTH = 1024; +	public static final String BPK_R_PROFILE21_HEADER = "X-PVP-BPK"; +	 +	public static final String BPK_LIST_OID = "1.2.40.0.10.2.1.1.261.28"; +	public static final String BPK_LIST_NAME = URN_OID_PREFIX + BPK_LIST_OID; +	public static final String BPK_LIST_FRIENDLY_NAME = "BPK-LIST"; +	public static final int BPK_LIST_MAX_LENGTH = 32767; +	 +	public static final String ENC_BPK_LIST_OID = "1.2.40.0.10.2.1.1.261.22"; +	public static final String ENC_BPK_LIST_NAME = URN_OID_PREFIX+ENC_BPK_LIST_OID; +	public static final String ENC_BPK_LIST_FRIENDLY_NAME = "ENC-BPK-LIST"; +	public static final int ENC_BPK_LIST_MAX_LENGTH = 32767; +	 +	public static final String MAIL_OID = "0.9.2342.19200300.100.1.3"; +	public static final String MAIL_NAME = URN_OID_PREFIX + MAIL_OID; +	public static final String MAIL_FRIENDLY_NAME = "MAIL"; +	public static final int MAIL_MAX_LENGTH = 128; +	 +	public static final String TEL_OID = "2.5.4.20"; +	public static final String TEL_NAME = URN_OID_PREFIX + TEL_OID; +	public static final String TEL_FRIENDLY_NAME = "TEL"; +	public static final int TEL_MAX_LENGTH = 32; +	 +	public static final String PARTICIPANT_ID_OID = "1.2.40.0.10.2.1.1.71"; +	public static final String PARTICIPANT_ID_NAME = URN_OID_PREFIX + PARTICIPANT_ID_OID; +	public static final String PARTICIPANT_ID_FRIENDLY_NAME = "PARTICIPANT-ID"; +	public static final int PARTICIPANT_MAX_LENGTH = 39; +	 +	public static final String PARTICIPANT_OKZ_OID = "1.2.40.0.10.2.1.1.261.24"; +	public static final String PARTICIPANT_OKZ_NAME = URN_OID_PREFIX + PARTICIPANT_OKZ_OID; +	public static final String PARTICIPANT_OKZ_FRIENDLY_NAME = "PARTICIPANT-OKZ"; +	public static final int PARTICIPANT_OKZ_MAX_LENGTH = 32; +	 +	public static final String OU_OKZ_OID = "1.2.40.0.10.2.1.1.153"; +	public static final String OU_OKZ_NAME =  URN_OID_PREFIX + OU_OKZ_OID; +	public static final int OU_OKZ_MAX_LENGTH = 32; +	 +	public static final String OU_GV_OU_ID_OID = "1.2.40.0.10.2.1.1.3"; +	public static final String OU_GV_OU_ID_NAME = URN_OID_PREFIX + OU_GV_OU_ID_OID; +	public static final String OU_GV_OU_ID_FRIENDLY_NAME = "OU-GV-OU-ID"; +	public static final int OU_GV_OU_ID_MAX_LENGTH = 39; +	 +	public static final String OU_OID = "2.5.4.11"; +	public static final String OU_NAME = URN_OID_PREFIX + OU_OID; +	public static final String OU_FRIENDLY_NAME = "OU"; +	public static final int OU_MAX_LENGTH = 64; +	 +	public static final String FUNCTION_OID = "1.2.40.0.10.2.1.1.33"; +	public static final String FUNCTION_NAME = URN_OID_PREFIX + FUNCTION_OID; +	public static final String FUNCTION_FRIENDLY_NAME = "FUNCTION"; +	public static final int FUNCTION_MAX_LENGTH = 32; +	 +	public static final String ROLES_OID = "1.2.40.0.10.2.1.1.261.30"; +	public static final String ROLES_NAME = URN_OID_PREFIX + ROLES_OID; +	public static final String ROLES_FRIENDLY_NAME = "ROLES"; +	public static final int ROLES_MAX_LENGTH = 32767; +	 +	@Deprecated public static final String EID_CITIZEN_QAA_LEVEL_OID = "1.2.40.0.10.2.1.1.261.94";	 +	@Deprecated public static final String EID_CITIZEN_QAA_LEVEL_NAME = URN_OID_PREFIX + EID_CITIZEN_QAA_LEVEL_OID; +	@Deprecated public static final String EID_CITIZEN_QAA_LEVEL_FRIENDLY_NAME = "EID-CITIZEN-QAA-LEVEL"; +	 +	public static final String EID_CITIZEN_EIDAS_QAA_LEVEL_OID = "1.2.40.0.10.2.1.1.261.108";	 +	public static final String EID_CITIZEN_EIDAS_QAA_LEVEL_NAME = URN_OID_PREFIX + EID_CITIZEN_EIDAS_QAA_LEVEL_OID; +	public static final String EID_CITIZEN_EIDAS_QAA_LEVEL_FRIENDLY_NAME = "EID-CITIZEN-QAA-EIDAS-LEVEL"; +	 +	public static final String EID_ISSUING_NATION_OID = "1.2.40.0.10.2.1.1.261.32"; +	public static final String EID_ISSUING_NATION_NAME = URN_OID_PREFIX + EID_ISSUING_NATION_OID; +	public static final String EID_ISSUING_NATION_FRIENDLY_NAME = "EID-ISSUING-NATION"; +	public static final int EID_ISSUING_NATION_MAX_LENGTH = 2; +	 +	public static final String EID_SECTOR_FOR_IDENTIFIER_OID = "1.2.40.0.10.2.1.1.261.34"; +	public static final String EID_SECTOR_FOR_IDENTIFIER_NAME = URN_OID_PREFIX + EID_SECTOR_FOR_IDENTIFIER_OID; +	public static final String EID_SECTOR_FOR_IDENTIFIER_FRIENDLY_NAME = "EID-SECTOR-FOR-IDENTIFIER"; +	public static final int EID_SECTOR_FOR_IDENTIFIER_MAX_LENGTH = 255; +	 +	@Deprecated public static final String EID_SOURCE_PIN_OID = "1.2.40.0.10.2.1.1.261.36"; +	@Deprecated public static final String EID_SOURCE_PIN_NAME = URN_OID_PREFIX + EID_SOURCE_PIN_OID; +	@Deprecated public static final String EID_SOURCE_PIN_FRIENDLY_NAME = "EID-SOURCE-PIN"; +	@Deprecated public static final int EID_SOURCE_PIN_MAX_LENGTH = 128; +	 +	@Deprecated public static final String EID_SOURCE_PIN_TYPE_OID = "1.2.40.0.10.2.1.1.261.104"; +	@Deprecated public static final String EID_SOURCE_PIN_TYPE_NAME = URN_OID_PREFIX + EID_SOURCE_PIN_TYPE_OID; +	@Deprecated public static final String EID_SOURCE_PIN_TYPE_FRIENDLY_NAME = "EID-SOURCE-PIN-TYPE"; +	@Deprecated public static final int EID_SOURCE_PIN_TYPE_MAX_LENGTH = 128; +	 +	@Deprecated public static final String EID_IDENTITY_LINK_OID = "1.2.40.0.10.2.1.1.261.38"; +	@Deprecated public static final String EID_IDENTITY_LINK_NAME = URN_OID_PREFIX + EID_IDENTITY_LINK_OID; +	@Deprecated public static final String EID_IDENTITY_LINK_FRIENDLY_NAME = "EID-IDENTITY-LINK"; +	@Deprecated public static final int EID_IDENTITY_LINK_MAX_LENGTH = 32767; +	 +	public static final String EID_E_ID_TOKEN_OID = "1.2.40.0.10.2.1.1.261.39"; +	public static final String EID_E_ID_TOKEN_NAME = URN_OID_PREFIX + EID_E_ID_TOKEN_OID; +	public static final String EID_E_ID_TOKEN_FRIENDLY_NAME = "EID-E-ID-TOKEN"; +	public static final int EID_E_ID_TOKEN_MAX_LENGTH = 32767; +	 +	@Deprecated public static final String EID_AUTH_BLOCK_OID = "1.2.40.0.10.2.1.1.261.62"; +	@Deprecated public static final String EID_AUTH_BLOCK_NAME = URN_OID_PREFIX + EID_AUTH_BLOCK_OID; +	@Deprecated public static final String EID_AUTH_BLOCK_FRIENDLY_NAME = "EID-AUTH-BLOCK"; +	@Deprecated public static final int EID_AUTH_BLOCK_MAX_LENGTH = 32767; +	 +	public static final String EID_CCS_URL_OID = "1.2.40.0.10.2.1.1.261.64"; +	public static final String EID_CCS_URL_NAME = URN_OID_PREFIX + EID_CCS_URL_OID; +	public static final String EID_CCS_URL_FRIENDLY_NAME = "EID-CCS-URL"; +	public static final int EID_CCS_URL_MAX_LENGTH = 1024; +	 +	public static final String EID_SIGNER_CERTIFICATE_OID = "1.2.40.0.10.2.1.1.261.66"; +	public static final String EID_SIGNER_CERTIFICATE_NAME = URN_OID_PREFIX + EID_SIGNER_CERTIFICATE_OID; +	public static final String EID_SIGNER_CERTIFICATE_FRIENDLY_NAME = "EID-SIGNER-CERTIFICATE"; +	public static final int EID_SIGNER_CERTIFICATE_MAX_LENGTH = 32767; +	 +	@Deprecated public static final String EID_STORK_TOKEN_OID = "1.2.40.0.10.2.1.1.261.96"; +	@Deprecated public static final String EID_STORK_TOKEN_NAME = URN_OID_PREFIX + EID_STORK_TOKEN_OID; +	@Deprecated public static final String EID_STORK_TOKEN_FRIENDLY_NAME = "EID-STORK-TOKEN"; +	@Deprecated public static final int EID_STORK_TOKEN_MAX_LENGTH = 32767; +	 +	public static final String MANDATE_TYPE_OID = "1.2.40.0.10.2.1.1.261.68"; +	public static final String MANDATE_TYPE_NAME = URN_OID_PREFIX + MANDATE_TYPE_OID; +	public static final String MANDATE_TYPE_FRIENDLY_NAME = "MANDATE-TYPE"; +	public static final int MANDATE_TYPE_MAX_LENGTH = 256; +	 +	public static final String MANDATE_TYPE_OID_OID = "1.2.40.0.10.2.1.1.261.106"; +	public static final String MANDATE_TYPE_OID_NAME = URN_OID_PREFIX + MANDATE_TYPE_OID_OID; +	public static final String MANDATE_TYPE_OID_FRIENDLY_NAME = "MANDATE-TYPE-OID"; +	public static final int MANDATE_TYPE_OID_MAX_LENGTH = 256; +	 +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_OID = "1.2.40.0.10.2.1.1.261.70"; +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_SOURCE_PIN_OID; +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-SOURCE-PIN"; +	@Deprecated public static final int MANDATE_NAT_PER_SOURCE_PIN_MAX_LENGTH = 128; +	 +	public static final String MANDATE_LEG_PER_SOURCE_PIN_OID = "1.2.40.0.10.2.1.1.261.100"; +	public static final String MANDATE_LEG_PER_SOURCE_PIN_NAME = URN_OID_PREFIX + MANDATE_LEG_PER_SOURCE_PIN_OID; +	public static final String MANDATE_LEG_PER_SOURCE_PIN_FRIENDLY_NAME = "MANDATOR-LEGAL-PERSON-SOURCE-PIN"; +	public static final int MANDATE_LEG_PER_SOURCE_PIN_MAX_LENGTH = 128; +	 +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_TYPE_OID = "1.2.40.0.10.2.1.1.261.102"; +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_TYPE_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_SOURCE_PIN_TYPE_OID; +	@Deprecated public static final String MANDATE_NAT_PER_SOURCE_PIN_TYPE_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-SOURCE-PIN-TYPE"; +	@Deprecated public static final int MANDATE_NAT_PER_SOURCE_PIN_TYPE_MAX_LENGTH = 128; +	 +	public static final String MANDATE_LEG_PER_SOURCE_PIN_TYPE_OID = "1.2.40.0.10.2.1.1.261.76"; +	public static final String MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME = URN_OID_PREFIX + MANDATE_LEG_PER_SOURCE_PIN_TYPE_OID; +	public static final String MANDATE_LEG_PER_SOURCE_PIN_TYPE_FRIENDLY_NAME = "MANDATOR-LEGAL-PERSON-SOURCE-PIN-TYPE"; +	public static final int MANDATE_LEG_PER_SOURCE_PIN_TYPE_MAX_LENGTH = 128; +	 +	public static final String MANDATE_NAT_PER_BPK_OID = "1.2.40.0.10.2.1.1.261.98"; +	public static final String MANDATE_NAT_PER_BPK_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_BPK_OID; +	public static final String MANDATE_NAT_PER_BPK_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-BPK"; +	public static final int MANDATE_NAT_PER_BPK_MAX_LENGTH = 1024; +	 +	public static final String MANDATE_NAT_PER_BPK_LIST_OID = "1.2.40.0.10.2.1.1.261.73"; +	public static final String MANDATE_NAT_PER_BPK_LIST_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_BPK_LIST_OID; +	public static final String MANDATE_NAT_PER_BPK_LIST_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-BPK-LIST"; +	public static final int MANDATE_NAT_PER_ENC_LIST_MAX_LENGTH = 32767; +	 +	public static final String MANDATE_NAT_PER_ENC_BPK_LIST_OID = "1.2.40.0.10.2.1.1.261.72"; +	public static final String MANDATE_NAT_PER_ENC_BPK_LIST_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_ENC_BPK_LIST_OID; +	public static final String MANDATE_NAT_PER_ENC_BPK_LIST_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-ENC-BPK-LIST"; +	public static final int MANDATE_NAT_PER_ENC_BPK_LIST_MAX_LENGTH = 32767; +	 +	public static final String MANDATE_NAT_PER_GIVEN_NAME_OID = "1.2.40.0.10.2.1.1.261.78"; +	public static final String MANDATE_NAT_PER_GIVEN_NAME_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_GIVEN_NAME_OID; +	public static final String MANDATE_NAT_PER_GIVEN_NAME_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-GIVEN-NAME"; +	public static final int MANDATE_NAT_PER_GIVEN_NAME_MAX_LENGTH = 128; +	 +	public static final String MANDATE_NAT_PER_FAMILY_NAME_OID = "1.2.40.0.10.2.1.1.261.80"; +	public static final String MANDATE_NAT_PER_FAMILY_NAME_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_FAMILY_NAME_OID; +	public static final String MANDATE_NAT_PER_FAMILY_NAME_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-FAMILY-NAME"; +	public static final int MANDATE_NAT_PER_FAMILY_NAME_MAX_LENGTH = 128; +	 +	public static final String MANDATE_NAT_PER_BIRTHDATE_OID = "1.2.40.0.10.2.1.1.261.82"; +	public static final String MANDATE_NAT_PER_BIRTHDATE_NAME = URN_OID_PREFIX + MANDATE_NAT_PER_BIRTHDATE_OID; +	public static final String MANDATE_NAT_PER_BIRTHDATE_FRIENDLY_NAME = "MANDATOR-NATURAL-PERSON-BIRTHDATE"; +	public static final String MANDATE_NAT_PER_BIRTHDATE_FORMAT_PATTERN = BIRTHDATE_FORMAT_PATTERN; +	 +	public static final String MANDATE_LEG_PER_FULL_NAME_OID = "1.2.40.0.10.2.1.1.261.84"; +	public static final String MANDATE_LEG_PER_FULL_NAME_NAME = URN_OID_PREFIX + MANDATE_LEG_PER_FULL_NAME_OID; +	public static final String MANDATE_LEG_PER_FULL_NAME_FRIENDLY_NAME = "MANDATOR-LEGAL-PERSON-FULL-NAME"; +	public static final int MANDATE_LEG_PER_FULL_NAME_MAX_LENGTH = 256; +	 +	public static final String MANDATE_PROF_REP_OID_OID = "1.2.40.0.10.2.1.1.261.86"; +	public static final String MANDATE_PROF_REP_OID_NAME = URN_OID_PREFIX + MANDATE_PROF_REP_OID_OID; +	public static final String MANDATE_PROF_REP_OID_FRIENDLY_NAME = "MANDATE-PROF-REP-OID"; +	public static final int MANDATE_PROF_REP_OID_MAX_LENGTH = 256; +	 +	public static final String MANDATE_PROF_REP_DESC_OID = "1.2.40.0.10.2.1.1.261.88"; +	public static final String MANDATE_PROF_REP_DESC_NAME = URN_OID_PREFIX + MANDATE_PROF_REP_DESC_OID; +	public static final String MANDATE_PROF_REP_DESC_FRIENDLY_NAME = "MANDATE-PROF-REP-DESCRIPTION"; +	public static final int MANDATE_PROF_REP_DESC_MAX_LENGTH = 1024; +	 +	public static final String MANDATE_REFERENCE_VALUE_OID = "1.2.40.0.10.2.1.1.261.90"; +	public static final String MANDATE_REFERENCE_VALUE_NAME = URN_OID_PREFIX + MANDATE_REFERENCE_VALUE_OID; +	public static final String MANDATE_REFERENCE_VALUE_FRIENDLY_NAME = "MANDATE-REFERENCE-VALUE"; +	public static final int MANDATE_REFERENCE_VALUE_MAX_LENGTH = 100; +	 +	@Deprecated public static final String MANDATE_FULL_MANDATE_OID = "1.2.40.0.10.2.1.1.261.92"; +	@Deprecated public static final String MANDATE_FULL_MANDATE_NAME = URN_OID_PREFIX + MANDATE_FULL_MANDATE_OID; +	@Deprecated public static final String MANDATE_FULL_MANDATE_FRIENDLY_NAME = "MANDATE-FULL-MANDATE"; +	@Deprecated public static final int MANDATE_FULL_MANDATE_MAX_LENGTH = 32767; +	 +	public static final String INVOICE_RECPT_ID_OID = "1.2.40.0.10.2.1.1.261.40"; +	public static final String INVOICE_RECPT_ID_NAME = URN_OID_PREFIX + INVOICE_RECPT_ID_OID; +	public static final String INVOICE_RECPT_ID_FRIENDLY_NAME = "INVOICE-RECPT-ID"; +	public static final int INVOICE_RECPT_ID_MAX_LENGTH = 64; +	 +	public static final String COST_CENTER_ID_OID = "1.2.40.0.10.2.1.1.261.50"; +	public static final String COST_CENTER_ID_NAME = URN_OID_PREFIX + COST_CENTER_ID_OID; +	public static final String COST_CENTER_ID_FRIENDLY_NAME = "COST-CENTER-ID"; +	public static final int COST_CENTER_ID_MAX_LENGTH = 32767; +	 +	public static final String CHARGE_CODE_OID = "1.2.40.0.10.2.1.1.261.60"; +	public static final String CHARGE_CODE_NAME = URN_OID_PREFIX + CHARGE_CODE_OID; +	public static final String CHARGE_CODE_FRIENDLY_NAME = "CHARGE-CODE"; +	public static final int CHARGE_CODE_MAX_LENGTH = 32767; +	 +	public static final String PVP_HOLDEROFKEY_OID = "1.2.40.0.10.2.1.1.261.xx.xx"; +	public static final String PVP_HOLDEROFKEY_NAME = URN_OID_PREFIX + PVP_HOLDEROFKEY_OID; +	public static final String PVP_HOLDEROFKEY_FRIENDLY_NAME = "HOLDER-OF-KEY-CERTIFICATE"; + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/XMLNamespaceConstants.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/XMLNamespaceConstants.java new file mode 100644 index 00000000..1a569ae9 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/data/XMLNamespaceConstants.java @@ -0,0 +1,498 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ + + +package at.gv.egiz.eaaf.core.api.data; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + + +/** + * Contains various constants used throughout the system. + + */ +public interface XMLNamespaceConstants { +  /** Root location of the schema files. */ +  public static final String SCHEMA_ROOT = "/schemas/"; + +  /** URI of the Widerrufregister XML namespace. */ +  public static final String WRR_NS_URI = +    "http://reference.e-government.gv.at/namespace/moavv/20041223"; + +  /** Prefix used for the Widerrufregister XML namespace */ +  public static final String WRR_PREFIX = "wrr"; + +  /** URI of the StandardTextBlock XML namespace. */ +  public static final String STB_NS_URI = +    "http://reference.e-government.gv.at/namespace/standardtextblock/20041105#"; + +  /** Prefix used for the standard text block XML namespace */ +  public static final String STB_PREFIX = "stb"; + +  /** URI of the MOA XML namespace. */ +  public static final String MOA_NS_URI = +    "http://reference.e-government.gv.at/namespace/moa/20020822#"; + +  /** Name of the mandates infobox */ +  public static final String INFOBOXIDENTIFIER_MANDATES = "Mandates"; + +  /** Prefix used for the Mandate XML namespace */ +  public static final String MD_PREFIX = "md"; + +  /** URI of the Mandate XML namespace. */ +  public static final String MD_NS_URI = +    "http://reference.e-government.gv.at/namespace/mandates/20040701#"; + +  /** Prefix used for the Mandate XML namespace */ +  public static final String MVV_PREFIX = "mvv"; + +  /** URI of the Mandate XML namespace. */ +  public static final String MVV_NS_URI = +    "http://reference.e-government.gv.at/namespace/moavv/app2mvv/20041125"; + +  /** Prefix used for the MandateCheckProfile XML namespace */ +  public static final String MDP_PREFIX = "mdp"; + +  /** URI of the Mandate XML namespace. */ +  public static final String MDP_NS_URI = +    "http://reference.e-government.gv.at/namespace/mandateprofile/20041105#"; + +  /** Prefix used for the MOA XML namespace */ +  public static final String MOA_PREFIX = "moa"; + +  /** Local location of the MOA XML schema definition. */ +  public static final String MOA_SCHEMA_LOCATION = +    SCHEMA_ROOT + "MOA-SPSS-2.0.0.xsd"; + +  /** URI of the MOA configuration XML namespace. */ +  public static final String MOA_CONFIG_NS_URI = +    "http://reference.e-government.gv.at/namespace/moaconfig/20021122#"; + +  /** URI of the MOA ID configuration XML namespace. */ +  public static final String MOA_ID_CONFIG_NS_URI = +    "http://www.buergerkarte.at/namespaces/moaconfig#"; + +  /** Prefix used for the MOA configuration XML namespace */ +  public static final String MOA_CONFIG_PREFIX = "conf"; + +  /** Prefix used for the MOA configuration XML namespace */ +  public static final String MOA_ID_CONFIG_PREFIX = "confID"; + +  /** Local location of the MOA configuration XML schema definition. */ +  public static final String MOA_CONFIG_SCHEMA_LOCATION = +    SCHEMA_ROOT + "MOA-SPSS-config-2.0.0.xsd"; + +  /** Local location of the MOA ID configuration XML schema definition. */ +  public static final String MOA_ID_CONFIG_SCHEMA_LOCATION = +    SCHEMA_ROOT + "MOA-ID-Configuration-1.5.2.xsd"; + +  /** URI of the Security Layer 1.0 namespace. */ +  public static final String SL10_NS_URI = +    "http://www.buergerkarte.at/namespaces/securitylayer/20020225#"; + +  /** Prefix used for the Security Layer 1.0 XML namespace */ +  public static final String SL10_PREFIX = "sl10"; + +  /** Local location of the Security Layer 1.0 XML schema definition */ +  public static final String SL10_SCHEMA_LOCATION = +    SCHEMA_ROOT + "Core.20020225.xsd"; + +  /** URI of the Security Layer 1.1 XML namespace */ +  public static final String SL11_NS_URI = +    "http://www.buergerkarte.at/namespaces/securitylayer/20020831#"; + +  /** Prefix used for the Security Layer 1.1 XML namespace */ +  public static final String SL11_PREFIX = "sl11"; + +  /** Local location of the Security Layer 1.1 XML schema definition */ +  public static final String SL11_SCHEMA_LOCATION = +    SCHEMA_ROOT + "Core.20020831.xsd"; +   +  /** URI of the Security Layer 1.2 XML namespace */ +  public static final String SL12_NS_URI = +    "http://www.buergerkarte.at/namespaces/securitylayer/1.2#"; + +  /** Prefix used for the Security Layer 1.2 XML namespace */ +  public static final String SL12_PREFIX = "sl"; + +  /** Local location of the Security Layer 1.2 XML schema definition */ +  public static final String SL12_SCHEMA_LOCATION = +    SCHEMA_ROOT + "Core-1.2.xsd"; +   +  /** URI of the ECDSA XML namespace */ +  public static final String ECDSA_NS_URI = +    "http://www.w3.org/2001/04/xmldsig-more#"; +   +  /** Prefix used for ECDSA namespace */ +  public static final String ECDSA_PREFIX = "ecdsa"; + +  /** Local location of ECDSA XML schema definition */ +  public static final String ECDSA_SCHEMA_LOCATION = +    SCHEMA_ROOT + "ECDSAKeyValue.xsd"; + +  /** URI of the PersonData XML namespace. */ +  public static final String PD_NS_URI = +    "http://reference.e-government.gv.at/namespace/persondata/20020228#"; + +  /** Prefix used for the PersonData XML namespace */ +  public static final String PD_PREFIX = "pr"; + +//  /** Local location of the PersonData XML schema definition */ +//  public static final String PD_SCHEMA_LOCATION = +//    SCHEMA_ROOT + "PersonData.xsd"; +   +  /** Local location of the PersonData XML schema definition */ +  public static final String PD_SCHEMA_LOCATION = +    SCHEMA_ROOT + "PersonData_20_en_moaWID.xsd"; + +  /** URI of the SAML namespace. */ +  public static final String SAML_NS_URI = +    "urn:oasis:names:tc:SAML:1.0:assertion"; + +  /** Prefix used for the SAML XML namespace */ +  public static final String SAML_PREFIX = "saml"; + +  /** Local location of the SAML XML schema definition. */ +  public static final String SAML_SCHEMA_LOCATION = +    SCHEMA_ROOT + "cs-sstc-schema-assertion-01.xsd"; + +  /** URI of the SAML request-response protocol namespace. */ +  public static final String SAMLP_NS_URI = +    "urn:oasis:names:tc:SAML:1.0:protocol"; + +  /** Prefix used for the SAML request-response protocol namespace */ +  public static final String SAMLP_PREFIX = "samlp"; + +  /** Local location of the SAML request-response protocol schema definition. */ +  public static final String SAMLP_SCHEMA_LOCATION = +    SCHEMA_ROOT + "cs-sstc-schema-protocol-01.xsd"; + +  /** URI of the XML namespace. */ +  public static final String XML_NS_URI = +    "http://www.w3.org/XML/1998/namespace"; + +  /** Prefix used for the XML namespace */ +  public static final String XML_PREFIX = "xml"; + +  /** Local location of the XML schema definition. */ +  public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd"; + +  /** URI of the XMLNS namespace */ +  public static final String XMLNS_NS_URI = "http://www.w3.org/2000/xmlns/"; + +  /** Prefix used for the XSI namespace */ +  public static final String XSI_PREFIX = "xsi"; + +  /** Local location of the XSI schema definition. */ +  public static final String XSI_SCHEMA_LOCATION = +    SCHEMA_ROOT + "XMLSchema-instance.xsd"; + +  /** URI of the XSI XMLNS namespace */ +  public static final String XSI_NS_URI = +    "http://www.w3.org/2001/XMLSchema-instance"; + +  /** URI of the XSLT XML namespace */ +  public static final String XSLT_NS_URI = +    "http://www.w3.org/1999/XSL/Transform"; + +  /** Prefix used for the XSLT XML namespace */ +  public static final String XSLT_PREFIX = "xsl"; + +  /** URI of the XMLDSig XML namespace. */ +  public static final String DSIG_NS_URI = "http://www.w3.org/2000/09/xmldsig#"; + +  /** Prefix used for the XMLDSig XML namespace */ +  public static final String DSIG_PREFIX = "dsig"; + +  /** Local location of the XMLDSig XML schema. */ +  public static final String DSIG_SCHEMA_LOCATION = +    SCHEMA_ROOT + "xmldsig-core-schema.xsd"; + +  /** URI of the XMLDSig XPath Filter XML namespace. */ +  public static final String DSIG_FILTER2_NS_URI = +    "http://www.w3.org/2002/06/xmldsig-filter2"; + +  /** Prefix used for the XMLDSig XPath Filter XML namespace */ +  public static final String DSIG_FILTER2_PREFIX = "dsig-filter2"; + +  /** Local location of the XMLDSig XPath Filter XML schema definition. */ +  public static final String DSIG_FILTER2_SCHEMA_LOCATION = +    SCHEMA_ROOT + "xmldsig-filter2.xsd"; + +  /** URI of the Exclusive Canonicalization XML namespace */ +  public static final String DSIG_EC_NS_URI = +    "http://www.w3.org/2001/10/xml-exc-c14n#"; +     +  /** Prefix used for the Exclusive Canonicalization XML namespace */ +  public static final String DSIG_EC_PREFIX = "ec"; + +  /** Local location of the Exclusive Canonicalizaion XML schema definition */ +  public static final String DSIG_EC_SCHEMA_LOCATION = +    SCHEMA_ROOT + "exclusive-canonicalization.xsd"; + +	/** URI of the XMLLoginParameterResolver Configuration XML namespace */ +	public static final String XMLLPR_NS_URI="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814"; + +	/** Local location of the XMLLoginParameterResolver Configuration XML schema definition */ +	public static final String XMLLPR_SCHEMA_LOCATION = +		SCHEMA_ROOT + "MOAIdentities.xsd"; +	 +  /** Local location of the XAdES v1.1.1 schema definition */  +  public static final String XADES_1_1_1_SCHEMA_LOCATION = +	SCHEMA_ROOT + "XAdES-1.1.1.xsd"; + +  /** URI of the XAdES v1.1.1 namespace */ +  public static final String XADES_1_1_1_NS_URI = "http://uri.etsi.org/01903/v1.1.1#"; +   +  public static final String XADES_1_1_1_NS_PREFIX = "xades111"; +   +  /** Local location of the XAdES v1.2.2 schema definition */  +  public static final String XADES_1_2_2_SCHEMA_LOCATION = +	SCHEMA_ROOT + "XAdES-1.2.2.xsd"; + +  /** URI of the XAdES v1.2.2 namespace */ +  public static final String XADES_1_2_2_NS_URI = "http://uri.etsi.org/01903/v1.2.2#"; +   +  public static final String XADES_1_2_2_NS_PREFIX = "xades122"; + +  /** Local location of the XAdES v1.1.1 schema definition */  +  public static final String XADES_1_3_2_SCHEMA_LOCATION = +	SCHEMA_ROOT + "XAdES-1.3.2.xsd"; + +  /** URI of the XAdES v1.3.2 namespace */ +  public static final String XADES_1_3_2_NS_URI = "http://uri.etsi.org/01903/v1.3.2#"; +   +  public static final String XADES_1_3_2_NS_PREFIX = "xades132"; + +  /** Local location of the XAdES v1.4.1 schema definition */  +  public static final String XADES_1_4_1_SCHEMA_LOCATION = +	SCHEMA_ROOT + "XAdES-1.4.1.xsd"; + +  /** URI of the XAdES v1.4.1 namespace */ +  public static final String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#"; +   +  public static final String XADES_1_4_1_NS_PREFIX = "xades141"; +  /** URI of the SAML 2.0 namespace. */ +  public static final String SAML2_NS_URI = +    "urn:oasis:names:tc:SAML:2.0:assertion"; + +  /** Prefix used for the SAML 2.0 XML namespace */ +  public static final String SAML2_PREFIX = "saml2"; + +  /** Local location of the SAML 2.0 XML schema definition. */ +  public static final String SAML2_SCHEMA_LOCATION = +    SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd"; +   +  /** URI of the SAML 2.0 protocol namespace. */ +  public static final String SAML2P_NS_URI = +    "urn:oasis:names:tc:SAML:2.0:protocol"; + +  /** Prefix used for the SAML 2.0 protocol XML namespace */ +  public static final String SAML2P_PREFIX = "saml2p"; + +  /** Local location of the SAML 2.0 protocol XML schema definition. */ +  public static final String SAML2P_SCHEMA_LOCATION = +    SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd"; +   +  /** URI of the STORK namespace. */ +  public static final String STORK_NS_URI = +    "urn:eu:stork:names:tc:STORK:1.0:assertion"; + +  /** Prefix used for the STORK XML namespace */ +  public static final String STORK_PREFIX = "stork"; + +  /** Local location of the STORK XML schema definition. */ +  public static final String STORK_SCHEMA_LOCATION = +    SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd"; +   +  /** URI of the STORK protocol namespace. */ +  public static final String STORKP_NS_URI = +    "urn:eu:stork:names:tc:STORK:1.0:protocol"; + +  /** Prefix used for the STORK protocol XML namespace */ +  public static final String STORKP_PREFIX = "storkp"; + +  /** Local location of the STORK protocol XML schema definition. */ +  public static final String STORKP_SCHEMA_LOCATION = +    SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd"; +   +  /** URI of the TSL namespace. */ +  public static final String TSL_NS_URI = +    "http://uri.etsi.org/02231/v2#"; + +  /** Prefix used for the TSL namespace */ +  public static final String TSL_PREFIX = "tsl1"; + +  /** Local location of the TSL schema definition. */ +  public static final String TSL_SCHEMA_LOCATION = +    SCHEMA_ROOT + "ts_119612v010201_xsd.xsd";	 + +  /** URI of the TSL SIE namespace. */ +  public static final String TSL_SIE_NS_URI = +    "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#"; + +  /** Prefix used for the TSL SIE namespace */ +  public static final String TSL_SIE_PREFIX = "tslsie"; + +  /** Local location of the TSL SIE schema definition. */ +  public static final String TSL_SIE_SCHEMA_LOCATION = +    SCHEMA_ROOT + "ts_119612v010201_sie_xsd.xsd"; +   +  /** URI of the TSL additional types namespace. */ +  public static final String TSL_ADDTYPES_NS_URI = +    "http://uri.etsi.org/02231/v2/additionaltypes#"; + +  /** Prefix used for the TSL additional types namespace */ +  public static final String TSL_ADDTYPES_PREFIX = "tsltype"; + +  /** Local location of the TSL additional types schema definition. */ +  public static final String TSL_ADDTYPES_SCHEMA_LOCATION = +    SCHEMA_ROOT + "ts_ts_119612v010201_additionaltypes_xsd.xsd"; +   +  /** URI of the XML Encryption namespace. */ +  public static final String XENC_NS_URI = +    "http://www.w3.org/2001/04/xmlenc#"; + +  /** Prefix used for the XML Encryption XML namespace */ +  public static final String XENC_PREFIX = "xenc"; + +  /** Local location of the XML Encryption XML schema definition. */ +  public static final String XENC_SCHEMA_LOCATION = +    SCHEMA_ROOT + "xenc-schema.xsd"; + +  /** Prefix used for the XML Encryption XML namespace */ +  public static final String SAML2_METADATA_PREFIX = "md"; +   +  /** Prefix used for the XML Encryption XML namespace */ +  public static final String SAML2_METADATA_URI = "urn:oasis:names:tc:SAML:2.0:metadata"; + +  /** Local location of the XML Encryption XML schema definition. */ +  public static final String SAML2_METADATA_SCHEMA_LOCATION = +    SCHEMA_ROOT + "saml-schema-metadata-2.0.xsd"; +   +   +  /* Prefix and Schema definition for eIDAS specific SAML2 extensions*/ +  public static final String SAML2_eIDAS_EXTENSIONS_PREFIX = "eidas"; +  public static final String SAML2_eIDAS_EXTENSIONS = "http://eidas.europa.eu/saml-extensions"; +  public static final String SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "eIDAS_saml_extensions.xsd"; +   +   +  /* Prefix and Schema for SAML2 Entity Attributes */ +  public static final String SAML2_MDATTR_EXTENSIONS_PREFIX = "mdattr"; +  public static final String SAML2_MDATTR_EXTENSIONS = "urn:oasis:names:tc:SAML:metadata:attribute"; +  public static final String SAML2_MDATTR_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "sstc-metadata-attr.xsd"; +   +  /** +   * Contains all namespaces and local schema locations for XML schema +   * definitions relevant for MOA. For use in validating XML parsers. +   */ +  public static final String ALL_SCHEMA_LOCATIONS = +    (MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " ") +      + (MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " ") +      + (MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " ") +      + (SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " ") +      + (SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " ") +      + (SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " ") +      + (ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " ") +      + (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ") +      + (SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " ") +      + (SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " ") +      + (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ") +      + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ") +      + (DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " ") +      + (DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " ") +      + (DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " ") +      + (XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " ") +      + (XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " ") +      + (XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " ") +      + (XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " ") +      + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " ") +      + (TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " ") +      + (TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " ") +      + (TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " ") +      + (SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " ") +      + (SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " ") +      + (STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " ") +      + (STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " ") +      + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ") +      + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " ") +      + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " ") +  	  + (SAML2_MDATTR_EXTENSIONS + " " + SAML2_MDATTR_EXTENSIONS_SCHEMA_LOCATION); + +   +  /** Security Layer manifest type URI. */ +  public static final String SL_MANIFEST_TYPE_URI = +    "http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest"; + +  /** URI of the SHA1 digest algorithm */ +  public static final String SHA1_URI = +    "http://www.w3.org/2000/09/xmldsig#sha1"; +   +  /** URI of the SHA1 digest algorithm */ +  public static final String SHA256_URI = +    "http://www.w3.org/2000/09/xmldsig#sha256"; +   +  /** URI of the SHA1 digest algorithm */ +  public static final String SHA384_URI = +    "http://www.w3.org/2000/09/xmldsig#sha384"; +   +  /** URI of the SHA1 digest algorithm */ +  public static final String SHA512_URI = +    "http://www.w3.org/2000/09/xmldsig#sha512"; +   +  /** URI of the Canonical XML algorithm */ +  public static final String C14N_URI = +    "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; + +  /** URI of the Canoncial XML with comments algorithm */ +  public static final String C14N_WITH_COMMENTS_URI = +    "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"; + +  /** URI of the Exclusive Canonical XML algorithm */ +  public static final String EXC_C14N_URI = +    "http://www.w3.org/2001/10/xml-exc-c14n#"; +   +  /** URI of the Exclusive Canonical XML with commments algorithm */ +  public static final String EXC_C14N_WITH_COMMENTS_URI = +    "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"; +     +    /**  +   * A map used to map namespace prefixes to namespace URIs  +   */  +  public static final Map<String, String> nSMap = Collections.unmodifiableMap(new HashMap<String, String>(){ +	private static final long serialVersionUID = 3845384324295136490L; +	  { +	  put(XMLNamespaceConstants.SAML_PREFIX, XMLNamespaceConstants.SAML_NS_URI); +	  put(XMLNamespaceConstants.ECDSA_PREFIX, "http://www.w3.org/2001/04/xmldsig-more#"); +	  put(XMLNamespaceConstants.DSIG_PREFIX, XMLNamespaceConstants.DSIG_NS_URI); +  	} +  }); + +    +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java new file mode 100644 index 00000000..82d82a3a --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.gui; + +import java.util.Map; + +/** + * @author tlenz + * + */ +public interface IGUIBuilderConfiguration { +	 +	 +	/** +	 * Define the name of the template (with suffix) which should be used +	 *  +	 * @return templatename, but never null +	 */ +	public String getViewName(); +	 +	/** +	 * Define the parameters, which should be evaluated in the template +	 *  +	 * @return Map of parameters, which should be added to template +	 */ +	public Map<String, Object> getViewParameters(); +	 +	/** +	 * Get the contentType, which should be set in HTTP response +	 * <br><br> +	 * <b>DefaultValue:</b> text/html;charset=UTF-8 +	 *  +	 * @return ContentType, or null if default ContentType should be used. +	 */ +	public String getDefaultContentType(); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java new file mode 100644 index 00000000..1776a630 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.gui; + +import java.net.MalformedURLException; +import java.net.URI; + +import at.gv.egiz.eaaf.core.api.IRequest; + +public interface IGUIBuilderConfigurationFactory { + +	/** +	 * Get a DefaultGuiBuilderConfiguration to render an error message  +	 *  +	 * @param authURL PublicURLPrefix of the IDP but never null +	 * @return +	 */ +	public IGUIBuilderConfiguration getDefaultErrorGUI(String authURL); +	 +	/** +	 * @param Current processed pending-request but never null +	 * @param viewName Name of the default template (with suffix) but never null  +	 * @param configRootContextDir Path to configuration root directory +	 * @return +	 * @throws MalformedURLException If configRootContextDir is not a valid URI +	 */ +	public IVelocityGUIBuilderConfiguration getSPSpecificSAML2PostConfiguration(IRequest pendingReq, String viewName, URI configRootContextDir) +			throws MalformedURLException; +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java new file mode 100644 index 00000000..7730e516 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java @@ -0,0 +1,74 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.gui; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.exceptions.GUIBuildException; + +/** + * @author tlenz + * + */ +public interface IGUIFormBuilder { + +	 +	 +	/** +	 * Parse a GUI template, with parameters into a http servlet-response  +	 * and use the default http-response content-type. +	 * <br><br> +	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.  +	 *  +     * @param httpReq http-request object +	 * @param httpResp http-response object +     * @param config Configuration object +	 * @param loggerName String, which should be used from logger +	 *  +	 * @throws GUIBuildException +	 */ +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException; + +	/** +	 * Parse a GUI template, with parameters into a http servlet-response. +	 * <br><br> +	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.  +	 *  +	 * @param httpReq http-request object +	 * @param httpResp http-response object +	 * @param config Configuration object +	 * @param contentType http-response content-type, which should be set +	 * @param loggerName String, which should be used from logger +	 *  +	 * @throws GUIBuildException +	 */ +	void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, String contentType, +			String loggerName) throws GUIBuildException; +	 + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java new file mode 100644 index 00000000..e759b253 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java @@ -0,0 +1,5 @@ +package at.gv.egiz.eaaf.core.api.gui; + +public interface ISpringMVCGUIFormBuilder extends IGUIFormBuilder{ + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java new file mode 100644 index 00000000..e56bf1af --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java @@ -0,0 +1,22 @@ +package at.gv.egiz.eaaf.core.api.gui; + +import java.io.InputStream; + +public interface IVelocityGUIBuilderConfiguration extends IGUIBuilderConfiguration { +	/** +	 * Get a specific classpath template-directory prefix, which is used  +	 *  to load a template from classpath by using <code>ClassLoader.getResourceAsStream(...)</code>   +	 *  +	 * @return Classpath directory, or null if the default directory should be used +	 */ +	public String getClasspathTemplateDir(); +		 +	/**  +	 * Get the GUI template with a specific name +	 *  +	 * @param viewName Name of the template +	 * @return Tempate as <code>InputStream</code>, or null if default getTemplate method should be used   +	 */ +	public InputStream getTemplate(String viewName); +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ModifyableGuiBuilderConfiguration.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ModifyableGuiBuilderConfiguration.java new file mode 100644 index 00000000..19fe9a12 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/ModifyableGuiBuilderConfiguration.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.gui; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public interface ModifyableGuiBuilderConfiguration { + +	/** +	 * Add a key/value pair into Velocity context.<br> +	 * <b>IMPORTANT:</b> external HTML escapetion is required, because it is NOT done internally +	 *  +	 * @param group Group element of the key parameter, or null if root element should be set +	 * @param key velocity context key +	 * @param value of this key +	 */ +	void putCustomParameterWithOutEscaption(@Nullable String group, @Nonnull String key, @Nonnull Object value); + +	/** +	 * Add a key/value pair into Velocity context.<br> +	 * All parameters get escaped internally +	 *  +	 * @param group Group element of the key parameter, or null if root element should be set +	 * @param key velocity context key +	 * @param value of this key +	 */ +	void putCustomParameter(@Nullable String group, @Nonnull String key, @Nonnull String value); + +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/EAAFAuthProcessDataConstants.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/EAAFAuthProcessDataConstants.java new file mode 100644 index 00000000..7ce24cf4 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/EAAFAuthProcessDataConstants.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +public interface EAAFAuthProcessDataConstants { + +	public static final String GENERIC_PREFIX 					= "generic_"; +	 +	public static final String VALUE_ISSUEINSTANT 				= "direct_issueInstant"; +	 +	public static final String FLAG_IS_AUTHENTICATED 			= "direct_flagIsAuth"; +	public static final String FLAG_IS_FOREIGNER 				= "direct_flagIsForeigner";	 +	public static final String FLAG_USE_MANDATE 				= "direct_flagUseMandate"; +	public static final String FLAG_IS_ORGANWALTER 				= "direct_flagOrganwalter"; +	public static final String FLAG_IS_NEW_EID_PROCESS			= "direct_flagIsNewEID"; +	 +	@Deprecated public static final String VALUE_IDENTITYLINK 	= "direct_idl"; +	public static final String VALUE_QAALEVEL 					= "direct_qaaLevel";	 +	@Deprecated public static final String VALUE_MISMANDATE 	= "direct_MIS_Mandate"; +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAction.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAction.java new file mode 100644 index 00000000..a40394b3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAction.java @@ -0,0 +1,67 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.slo.SLOInformationInterface; +import at.gv.egiz.eaaf.core.exceptions.EAAFException; + + +/** + * Basic interface of a specific operation that is requested by an authentication protocol implementation + *  + * @author tlenz + * + */ +public interface IAction { +	public SLOInformationInterface processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, IAuthData authData)  +			throws EAAFException; +	public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp); +	 +	public String getDefaultActionName(); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeBuilder.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeBuilder.java new file mode 100644 index 00000000..902aabbe --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeBuilder.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; + +public interface IAttributeBuilder { +	public String getName(); +	 +	public <ATT> ATT build(final ISPConfiguration oaParam, final IAuthData authData, +			final IAttributeGenerator<ATT> g) throws AttributeBuilderException; +	 +	public <ATT> ATT buildEmpty(final IAttributeGenerator<ATT> g); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeGenerator.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeGenerator.java new file mode 100644 index 00000000..3591e313 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAttributeGenerator.java @@ -0,0 +1,63 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +public interface IAttributeGenerator<ATT> { +	/** +	 *  +	 * @param friendlyName FriendlyName +	 * @param name	Name +	 * @param value value +	 * @return +	 */ +	public abstract ATT buildStringAttribute(final String friendlyName, final String name, final String value); +	 +	public abstract ATT buildIntegerAttribute(final String friendlyName, final String name, final int value); +	 +	public abstract ATT buildLongAttribute(final String friendlyName, final String name, final long value); +	 +	public abstract ATT buildEmptyAttribute(final String friendlyName, final String name); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthData.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthData.java new file mode 100644 index 00000000..e9d86efa --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthData.java @@ -0,0 +1,251 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/** + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egiz.eaaf.core.api.idp; + +import java.util.Date; +import java.util.List; + +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.impl.data.Pair; + +/** + * @author tlenz + * + */ +public interface IAuthData { + +	/** +	 * BaseId transfer policy +	 *  +	 * @return true if baseID transfer to service provider is allowed, otherwise false +	 */ +	boolean isBaseIDTransferRestrication(); + +	/** +	 * Identifier of the IDP that authenicates the user +	 *  +	 * @return +	 */ +	String getAuthenticationIssuer(); +	 +	/** +	 * Timestamp of the authentication process +	 *  +	 * @return +	 */ +	Date getAuthenticationIssueInstant(); +	 +	/** +	 * Get string formated timestamp of the authentication process +	 *  +	 * @return +	 */ +	String getAuthenticationIssueInstantString(); +	 + +	/** +	 * Familyname of the user +	 *  +	 * @return +	 */ +	String getFamilyName(); +	 +	/** +	 * Givenname of the user +	 *  +	 * @return +	 */ +	String getGivenName(); +	 +	/** +	 * Date of birth of the user +	 *  +	 * @return date of birth or null no data of birth is available +	 */ +	Date getDateOfBirth(); +	 +	/** +	 * String formated date of birth of the user with pattern yyyy-MM-dd  +	 *  +	 *  +	 * @return date of birth or '2999-12-31' if no data of birth is available +	 */ +	String getFormatedDateOfBirth(); + +	/** +	 * Get the encrypted SourceId (vSZ) from new E-ID scheme +	 *  +	 * @return +	 */ +	String getEncryptedSourceId(); +	 +	/** +	 * Get the type identifier of encrypted SourceId +	 *  +	 * @return +	 */ +	String getEncryptedSourceIdType(); +		 +	 /** +	  * Return LoA for this user authentication +	  *   +	  * @return eIDAS LoA URI  +	  */ +	 public String getEIDASQAALevel(); + +	 +	 /** +	  * Indicates that the user is a foreigner  +	  *  +	  * @return true if the user is foreigner, otherwise false +	  */ +	 boolean isForeigner(); +	  +	 /** +	  * Code of the citizen country of the authenticated user  +	  *  +	  * @return +	  */ +	 String getCiticenCountryCode(); + + +	 /** +	  * Indicate that the authentication was done by using an active single sign-on session  +	  *  +	  * @return true if it an SSO session was used, otherwise false +	  */ +	 boolean isSsoSession(); +	  +	 /** +	  * Date, up to which the SSO that was used for authentication is valid to +	  *  +	  * @return +	  */ + 	 Date getSsoSessionValidTo(); + +	 	  + 	 /** + 	  * SessionIndex, if it was an reauthentication on a service provider by using the same SSO session   + 	  *  + 	  * @return + 	  */ +	 String getSessionIndex(); +	  +	 /** +	  * SAML2 NameID for the user  +	  *  +	  * @return +	  */ +	 String getNameID();  +	  +	 /** +	  * Format of the SAML2 NameID  +	  *  +	  * @return +	  */ +	 String getNameIDFormat(); +	  +	 	 	  +	 /** +	  * Get generic information for this authenticated user +	  *  +	  * @param key Identifier for the generic data +	  * @param clazz Type of the generic data +	  * @return return the generic data of specific type, otherwise null +	  */ +	 public <T> T getGenericData(String key, final Class<T> clazz); + +	  + 	/** +	 * Get bPK of the user +	 *  +	 * @return +	 */ +	@Deprecated +	String getBPK(); +	 +	/** +	 * Get sector for user's bPK +	 *  +	 *  +	 * @return Sector identifier with prefix +	 */ +	@Deprecated +	String getBPKType(); + +	 +	/** +	 * Get List of bPK/bPKType tuples for this service provider   +	 * @return List of Pairs<bPK, bPKType> +	 */ +	@Deprecated +	List<Pair<String, String>> getAdditionalbPKs(); +	 +	/** +	 * Get baseId of this user +	 *  +	 * @return +	 */ +	@Deprecated +	String getIdentificationValue(); +	 +	/** +	 * Get type identifier of the baseId +	 * By default, this type is urn:publicid:gv.at:baseid +	 *  +	 * @return +	 */ +	@Deprecated +	String getIdentificationType(); +	  + +	/** +	 * Get the identityLink for the authenticated user +	 *  +	 * @return IDL, or NULL if no IDL is available +	 */ +	@Deprecated +	IIdentityLink getIdentityLink(); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthenticationDataBuilder.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthenticationDataBuilder.java new file mode 100644 index 00000000..2e67f2a8 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IAuthenticationDataBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.exceptions.EAAFAuthenticationException; + +public interface IAuthenticationDataBuilder { + +	IAuthData buildAuthenticationData(IRequest pendingReq) throws EAAFAuthenticationException; + +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IConfiguration.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IConfiguration.java new file mode 100644 index 00000000..7615f2d5 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IConfiguration.java @@ -0,0 +1,136 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import java.net.URI; +import java.net.URL; +import java.util.Map; +import java.util.Properties; + +import javax.annotation.Nullable; + +import at.gv.egiz.eaaf.core.exceptions.EAAFConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EAAFException; + +public interface IConfiguration { +	 +	public static final String CONFIG_PROPS_AUTH_DEFAULT_COUNTRYCODE = "configuration.auth.default.countrycode"; +	 +	/** +	 * Get a configuration value from file based configuration +	 *  +	 * @param key configuration key  +	 * @return configuration value or null if it is not found +	 */ +	public String getBasicConfiguration(final String key); +	 +	 +	/** +	 * Get a configuration value from file based configuration +	 *  +	 * @param key configuration key  +	 * @param defaultValue Default value if no value with this key is found +	 * @return configuration value  +	 */ +	public String getBasicConfiguration(final String key, final String defaultValue); +	 +	/** +	 * Get a set of configuration values from file based configuration that starts with this prefix +	 * <br><br> +	 * <b>Important:</b> The configuration values must be of type String!  +	 *  +	 * @param prefix Prefix of the configuration key +	 * @return Map<String, String> without prefix, but never null +	 */ +	public Map<String, String> getBasicMOAIDConfigurationWithPrefix(final String prefix); +	 +	 +	/** +	 * Get a boolean value from basic MOA-ID configuration file +	 *  +	 * @param key Configuration key +	 * @param defaultValue Default result +	 * @return returns the value of the configuration key, or the default value if the key is not set +	 */ +	public boolean getBasicMOAIDConfigurationBoolean(String key, boolean defaultValue); +	 +	/** +	 * Get a configuration entry for a specific Service Provider  +	 *  +	 * @param uniqueID Unique identifier of the Service Provider +	 * @return {@link ISPConfiguration} or <code>null</code> if no SP configuration was found  +	 * @throws EAAFConfigurationException  +	 */ +	@Nullable +	public ISPConfiguration getServiceProviderConfiguration(final String uniqueID) throws EAAFConfigurationException;  +	 +	 +	/** +	 * Get a configuration entry for a specific Service Provider that is decorated by a Object +	 *  +	 * @param spIdentifier EntityID of a Service Provider  +	 * @param decorator Decorator that should be used to decorate the result.  +  	 *                  This decorator has to be implement or extend the {@link ISPConfiguration} interface +	 * @return <code>T</code> or <code>null</code> if no SP configuration was found  +	 * @throws EAAFConfigurationException +	 */ +	@Nullable +    public <T> T getServiceProviderConfiguration(String spIdentifier, final Class<T> decorator) throws EAAFConfigurationException; +	 +	/** +	 * Get the full configuration properties object +	 *  +	 * @return  +	 */ +	public Properties getFullConfigurationProperties(); +	 +	/** +	 * Get the root directory of the configuration folder +	 *  +	 * @return  +	 */ +	public URI getConfigurationRootDirectory(); +	 +		 +	/** +	 * Get the path to EAAFCore configuration that is internally used +	 *  +	 * @return +	 */ +	public URI getConfigurationFilePath(); + + +	/** +	 * Validate a URL if it it is allowed by configuration. +	 *  +	 * @param authReqUrl URL for validation +	 * @return URL of the application context if the authReqUrl was valid, otherwise null  +	 */ +	public String validateIDPURL(URL authReqUrl) throws EAAFException; +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IModulInfo.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IModulInfo.java new file mode 100644 index 00000000..06aed047 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IModulInfo.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.api.IRequest; + +/** + * Basic interface of an authentication protocol implementation on IDP side + *  + * @author tlenz + * + */ +public interface IModulInfo { +	 +	/** +	 * Name of this IDP authentication module +	 *  +	 * @return +	 */ +	public String getName(); +	 +	/** +	 * Authentication protocol identifier for this module +	 *  +	 * @return +	 */ +	public String getAuthProtocolIdentifier(); +	 +	/** +	 * Generates a protocol specific error message +	 *  +	 *  +	 * @param e Exception that contains the error message +	 * @param request httpRequest object from servlet container +	 * @param response httpResponse object from servlet container +	 * @param protocolRequest incoming protocol request +	 * @return return <i>true</i> if a protocol specific error message was generated, otherwise <i>false</i> +	 * @throws Throwable +	 */ +	public boolean generateErrorMessage(Throwable e, +			HttpServletRequest request, HttpServletResponse response, +			IRequest protocolRequest) throws Throwable; +	 +	/** +	 * additional validation of a incoming authentication request  +	 *  +	 * @param request httpRequest object from servlet container +	 * @param response httpResponse object from servlet container +	 * @param pending incoming protocol request +	 * @return return <i>true</i> if the incoming request is valid, otherwise <i>false</i> +	 */ +	public boolean validate(HttpServletRequest request,  +			HttpServletResponse response, IRequest pending); +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IPVPAttributeBuilder.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IPVPAttributeBuilder.java new file mode 100644 index 00000000..eab7af9b --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/IPVPAttributeBuilder.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import at.gv.egiz.eaaf.core.api.data.PVPAttributeDefinitions; + +public interface IPVPAttributeBuilder extends PVPAttributeDefinitions, IAttributeBuilder { +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/ISPConfiguration.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/ISPConfiguration.java new file mode 100644 index 00000000..9d92b713 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/ISPConfiguration.java @@ -0,0 +1,168 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import at.gv.egiz.eaaf.core.api.data.EAAFConstants; + +public interface ISPConfiguration extends Serializable { + +	public static final String CONFIG_KEY_RESTRICTIONS_BASEID_INTERNAL = "configuration.restrictions.baseID.idpProcessing"; +	public static final String CONFIG_KEY_RESTRICTIONS_BASEID_TRANSMISSION = "configuration.restrictions.baseID.spTransmission"; +	 +	public static final String CONFIG_KEY_RESTRICTIONS_EID_DEMO_MODE = "configuration.restrictions.eIDTestMode"; +	 +	/** +	 * Get the full key/value configuration for this Service Provider +	 *  +	 * @return an unmodifiable map of key/value pairs +	 */ +	public Map<String, String> getFullConfiguration(); +	 +	  /** +	   * Get a configuration value from Service Provider key/value configuration +	   *  +	   * @param key The key identifier of a configuration value  +	   * @return The configuration value {String} or null if the key does not exist +	   */   +	public String getConfigurationValue(String key); + +	  /** +	   * Get a configuration value from Service Provider key/value configuration +	   *  +	   * @param key The key identifier of a configuration value  +	   * @param defaultValue Default value if key does not exist +	   * @return The configuration value {String} or defaultValue if the key does not exist +	   */   +	public String getConfigurationValue(String key, String defaultValue); +	 +	/** +	 * Get a boolean configuration value from Service Provider key/value configuration +	 *  +	 * @param key The key identifier of a configuration value  +	 * @return true / false, or null if the key does not exist +	 */ +	public Boolean isConfigurationValue(String key); +	 +	 +	/** +	 * Get a boolean configuration value from Service Provider key/value configuration +	 *  +	 * @param key The key identifier of a configuration value  +	 * @param defaultValue Default value if key does not exist +	 * @return true / false, or defaultValue if the key does not exist +	 */ +	public boolean isConfigurationValue(String key, boolean defaultValue); +	 +	/** +	 * Check if a configuration key is available in this Service Provider configuration  +	 *  +	 * @param key The key identifier of a configuration value +	 * @return true if the configuration key exists, otherwise false +	 */ +	boolean containsConfigurationKey(String key); +	 +	/** +	 * Return the unique identifier of this Service Provider +	 *  +	 * @return +	 */ +	public String getUniqueIdentifier(); +	 +	/** +	 * Return the unique identifier of this Service Provider +	 *  +	 * @return +	 */ +	public String getFriendlyName(); +	 +	/** +	 * Indicates if this service provider has private area restrictions that disallow baseId processing in general +	 * 	 *  +	 * @return true if there is a restriction, otherwise false +	 */ +	public boolean hasBaseIdInternalProcessingRestriction(); +	 +	 +	/** +	 * Indicates if this service provider has private area restrictions that disallow baseId transfer to SP +	 *   +	 * @return true if there is a restriction, otherwise false +	 */ +	public boolean hasBaseIdTransferRestriction(); +	 +	/** +	 * Get the {@link List} of identifier's that indicates no baseID processing restriction exists.<br>   +	 * This list can be configured by key: "configuration.restrictions.baseID.idpProcessing" +	 *  +	 * @return +	 */ +	public List<String> getTargetsWithNoBaseIdInternalProcessingRestriction(); +	 +	/** +	 * Get the {@link List} of identifier's that indicates no baseID transfer restriction exists.<br>   +	 * This list can be configured by key: "configuration.restrictions.baseID.spTransmission" +	 *  +	 * @return +	 */ +	public List<String> getTargetsWithNoBaseIdTransferRestriction(); +	 +	/** +	 * Get the List eIDAS LoA that are required by this service provider +	 *  +	 * {@link EAAFConstants.EIDAS_LOA_LOW} +	 * {@link EAAFConstants.EIDAS_LOA_SUBSTANTIAL} +	 * {@link EAAFConstants.EIDAS_LOA_HIGH} +	 * or any other non-notified LoA scheme +	 *  +	 * @return return List of eIDAS LoAs +	 */ +	public List<String> getRequiredLoA(); +	 +	/** +	 * Get required matching mode for LoAs +	 * {@link EIDAS_LOA_MATCHING_MINIMUM} +	 * {@link EIDAS_LOA_MATCHING_EXACT} +	 *  +	 * @return +	 */ +	public String getLoAMatchingMode(); +	 +	 +	/** +	 * Get the full area-identifier for this service provider to calculate the  +	 * area-specific unique person identifier (bPK, wbPK, eIDAS unique identifier, ...).  +	 * This identifier always contains the full prefix  +	 *  +	 * @return area identifier with prefix   +	 */ +	public String getAreaSpecificTargetIdentifier(); + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/IAuthenticationManager.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/IAuthenticationManager.java new file mode 100644 index 00000000..4381211d --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/IAuthenticationManager.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.slo.ISLOInformationContainer; +import at.gv.egiz.eaaf.core.exceptions.EAAFException; + +public interface IAuthenticationManager { +	 +	public static int EVENT_AUTHENTICATION_PROCESS_FOR_SP = 4003; +	public static int EVENT_AUTHENTICATION_PROCESS_STARTED = 4000; +	public static int EVENT_AUTHENTICATION_PROCESS_FINISHED = 4001; +	public static int EVENT_AUTHENTICATION_PROCESS_ERROR = 4002; +	 +		 +	/** +	 * Add a request parameter to whitelist. All parameters that are part of the white list are added into {@link ExecutionContext}  +	 *  +	 * @param httpReqParam http parameter name, but never null +	 */ +	void addParameterNameToWhiteList(String httpReqParam); + +	/** +	 * Add a request header to whitelist. All parameters that are part of the white list are added into {@link ExecutionContext}  +	 *  +	 * @param httpReqParam http header name, but never null +	 */ +	void addHeaderNameToWhiteList(String httpReqParam); +	 + +	/** +	 * Starts an authentication process for a specific pending request +	 *  +	 * @param httpReq http servlet request +	 * @param httpResp http servlet response +	 * @param pendingReq Pending request for that an authentication is required +	 * @return true if the pending request is already authenticated, otherwise false +	 * @throws EAAFException +	 */ +	boolean doAuthentication(HttpServletRequest httpReq, HttpServletResponse httpResp, +			IRequest pendingReq) throws EAAFException; +	 +	/** +	 * Close an active authenticated session on IDP side +	 *  +	 * @param request http servlet request +	 * @param response http servlet response +	 * @param pendingReq ReqPending request for that an authentication session should be closed +	 */ +	void performOnlyIDPLogOut(HttpServletRequest request, HttpServletResponse response, IRequest pendingReq); +	 +		 +	/** +	 * Close an active authenticated session on IDP side and get a list authenticated service providers +	 *  +	 * @param request http servlet request +	 * @param response http servlet response +	 * @param pendingReq ReqPending request for that an authentication session should be closed +	 * @param internalSSOId internal SSO session identifier  +	 * @return A container that contains all active SP sessions +	 * @throws EAAFException +	 */ +	ISLOInformationContainer performSingleLogOut(HttpServletRequest httpReq, HttpServletResponse httpResp, IRequest pendingReq, String internalSSOId) throws EAAFException; + +	 +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/ISSOManager.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/ISSOManager.java new file mode 100644 index 00000000..5481fd52 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/ISSOManager.java @@ -0,0 +1,130 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.slo.SLOInformationInterface; +import at.gv.egiz.eaaf.core.exceptions.EAAFSSOException; + +public interface ISSOManager { +	 +	//TODO +	public static int EVENT_SSO_SESSION_INVALID = -1; +	public static int EVENT_SSO_SESSION_VALID = -1; +	 +	 +	public static final String PROCESS_ENGINE_SSO_CONSENTS_EVALUATION = "ssoconsentsevaluation"; +	public static final String AUTH_DATA_SSO_SESSIONID	= "eaaf_authdata_sso_sessionId"; +	 +	 +	/** +	 * Check if there is an active and valid SSO session for the current pending request. +	 * <br> +	 * If there is an active SSO session, the pending request will be populated with eID information from SSO session  +	 *  +	 * @param pendingReq Current incoming pending request +	 * @param httpReq http Servlet request +	 * @param httpResp http Servlet response +	 * @return true if there is a valid SSO session, otherwise false +	 * @throws EAAFSSOException +	 */ +	public boolean checkAndValidateSSOSession(IRequest pendingReq, HttpServletRequest httpReq, HttpServletResponse httpResp) throws EAAFSSOException; +	 +	/** +	 * Populate service provider specific SSO settings +	 *  +	 * Check if Single Sign-On is allowed for the current pending request and the requested service provider +	 * Set IRequest.needSingleSignOnFunctionality() to true if SSO is allowed   +	 *  +	 * @param pendingReq Current incoming pending request +	 * @param httpReq http Servlet request +	 */ +	public void isSSOAllowedForSP(IRequest pendingReq, HttpServletRequest httpReq); +	 +	 +	/** +	 * Populate the current pending request with eID information from an existing SSO session  +	 *  +	 * @param pendingReq pending request that should be populated by SSO session +	 * @throws EAAFSSOException if pending request contains no SSO information or population failed +	 */ +	public void populatePendingRequestWithSSOInformation(IRequest pendingReq) throws EAAFSSOException; +	 +	 +	/** +	 * Destroy an active SSO session on IDP site only +	 *  +	 * @param httpReq http servlet request +	 * @param httpResp http servlet response +	 * @param pendingReq  +	 * @return true if a SSO session was closed successfully, otherwise false +	 * @throws EAAFSSOException in case of an internal processing error +	 */ +	public boolean destroySSOSessionOnIDPOnly(HttpServletRequest httpReq, HttpServletResponse httpResp, IRequest pendingReq) throws EAAFSSOException; +	 +	 +	 +	/** +	 * Create a new SSO session-cookie for a specific pendingRequest and add it into http response +	 *  +	 * @param req http Request +	 * @param resp http Response +	 * @param pendingReq Current open PendingRequest  +	 * @return new created SSO identifier +	 * @throws EAAFSSOException +	 */ +	public String createNewSSOSessionCookie(HttpServletRequest req, HttpServletResponse resp, IRequest pendingReq)  throws EAAFSSOException; + +	 +	/** +	 * Create a new SSO session in database +	 *  +	 * @param pendingReq +	 * @param newSSOSessionId +	 * @throws EAAFSSOException +	 */ +	public void createNewSSOSession(IRequest pendingReq, String newSSOSessionId) throws EAAFSSOException; + + +	/** +	 * Updateing an existing SSO session in database +	 *  +	 * @param pendingReq +	 * @param newSSOSessionId +	 * @param sloInformation +	 * @throws EAAFSSOException +	 */ +	public void updateSSOSession(IRequest pendingReq, String newSSOSessionId, SLOInformationInterface sloInformation)  throws EAAFSSOException; + + + + + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IAuthProcessDataContainer.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IAuthProcessDataContainer.java new file mode 100644 index 00000000..17ec6445 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IAuthProcessDataContainer.java @@ -0,0 +1,185 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth.data; + +import java.util.Date; +import java.util.Map; + +import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException; + +public interface IAuthProcessDataContainer { + +	/** +	 * Returns the issuing time of the AUTH-Block SAML assertion. +	 *  +	 * @return The issuing time of the AUTH-Block SAML assertion. +	 */ +	String getIssueInstant(); + +	/** +	 * Sets the issuing time of the AUTH-Block SAML assertion. +	 *  +	 * @param issueInstant +	 *            The issueInstant to set. +	 */ +	void setIssueInstant(String issueInstant); +	 +	/** +	 * Indicate if the authentication process is finished +	 *  +	 * @return +	 */ +	boolean isAuthenticated(); + +	/** +	 * Mark the authentication as authenticated, which means that the authenication process is completed +	 *  +	 * @param authenticated +	 */ +	void setAuthenticated(boolean authenticated); +	 +	/** +	 * Returns the identityLink. +	 *  +	 * @return IdentityLink +	 */ +	@Deprecated +	IIdentityLink getIdentityLink(); +	 +	/** +	 * Sets the identityLink. +	 *  +	 * @param identityLink +	 *            The identityLink to set +	 */ +	@Deprecated +	void setIdentityLink(IIdentityLink identityLink); +	 +	 +	/** +	 * Flag marks the authentication process as new E-ID process  +	 *  +	 * @return true if E-ID process, otherwise false +	 */ +	boolean isEIDProcess(); +	 +	 +	/** +	 * Set the flag to make the process as new E-ID process  +	 *  +	 * @param value true if new E-ID process, otherwise false +	 */ +	void setEIDProcess(boolean value); +	 +	/** +	 * Indicate that mandates was used in this auth. process +	 *  +	 * @return +	 */ +	boolean isMandateUsed(); +	 +	/** +	 * Mark that mandates was used in this auth. process +	 *  +	 * @param useMandates +	 */ +	void setUseMandates(boolean useMandates); + +	/** +	 * Indicate that the auth. process was performed by a foreigner +	 *  +	 * @return +	 */ +	boolean isForeigner(); + +	/** +	 * Mark that the auth. process was done by a foreigner +	 *  +	 * @param isForeigner +	 */ +	void setForeigner(boolean isForeigner); +	 +	/** +	 * Indicate that the auth. process was performed by an official representatives  +	 *  +	 * @return is official representatives  +	 */ +	boolean isOW(); + +	/** +	 * Mark that the auth. process was done by an official representatives  +	 *             +	 */ +	void setOW(boolean isOW); +	 +	/** +	 * eIDAS QAA level +	 *  +	 * @return the qAALevel +	 */ +	String getQAALevel(); + +	/** +	 * set QAA level in eIDAS form +	 *  +	 * @param qAALevel the qAALevel to set +	 */ +	void setQAALevel(String qAALevel); + +	/** +	 * @return the sessionCreated +	 */ +	Date getSessionCreated(); + +	Map<String, Object> getGenericSessionDataStorage(); + +	/** +	 * Returns a generic session-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the session-data object +	 * @return The session-data object or null if no data is found with this key +	 */ +	Object getGenericDataFromSession(String key); + +	/** +	 * Returns a generic session-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the session-data object +	 * @param clazz The class type which is stored with this key +	 * @return The session-data object or null if no data is found with this key +	 */ +	<T> T getGenericDataFromSession(String key, Class<T> clazz); + +	/** +	 * Store a generic data-object to session with a specific identifier +	 *  +	 * @param key Identifier for this data-object +	 * @param object Generic data-object which should be stored. This data-object had to be implement the 'java.io.Serializable' interface +	 * @throws EAAFStorageException Error message if the data-object can not stored to generic session-data storage +	 */ +	void setGenericDataToSession(String key, Object object) throws EAAFStorageException; +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IIdentityLink.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IIdentityLink.java new file mode 100644 index 00000000..df71b30a --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/data/IIdentityLink.java @@ -0,0 +1,182 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth.data; + +import java.io.IOException; +import java.security.PublicKey; + +import javax.xml.transform.TransformerException; + +import org.w3c.dom.Element; + +/** + * @author tlenz + * + */ +public interface IIdentityLink { + +	/** +	   * Returns the dateOfBirth. +	   * @return Calendar +	   */ +	String getDateOfBirth(); + +	/** +	   * Returns the familyName. +	   * @return String +	   */ +	String getFamilyName(); + +	/** +	   * Returns the givenName. +	   * @return String +	   */ +	String getGivenName(); + +	/** +	 * Return  the name as 'givenName + " " + familyName'<br> +	 * This method should be used any more. Use getFamilyName() and getGivenName() separately. +	 *  +	 * @return The name. +	*/ +	@Deprecated +	String getName(); + +	/** +	   * Returns the identificationValue. +		 * <code>"identificationValue"</code> is the translation of <code>"Stammzahl"</code>. +	   * @return String +	   */ +	String getIdentificationValue(); + +	/** +	 * Returns the identificationType. +	 * <code>"identificationType"</code> type of the identificationValue in the IdentityLink. +	 * @return String +	 */ +	String getIdentificationType(); + +	/** +	   * Sets the dateOfBirth. +	   * @param dateOfBirth The dateOfBirth to set +	   */ +	void setDateOfBirth(String dateOfBirth); + +	/** +	   * Sets the familyName. +	   * @param familyName The familyName to set +	   */ +	void setFamilyName(String familyName); + +	/** +	   * Sets the givenName. +	   * @param givenName The givenName to set +	   */ +	void setGivenName(String givenName); + +	/** +	   * Sets the identificationValue. +		 * <code>"identificationValue"</code> is the translation of <code>"Stammzahl"</code>. +	   * @param identificationValue The identificationValue to set +	   */ +	void setIdentificationValue(String identificationValue); + +	/** +	 * Sets the Type of the identificationValue. +	 * @param identificationType The type of identificationValue to set +	 */ +	void setIdentificationType(String identificationType); + +	/** +	   * Returns the samlAssertion. +	   * @return Element +	   */ +	Element getSamlAssertion(); + +	/** +	   * Returns the samlAssertion. +	   * @return Element +	   */ +	String getSerializedSamlAssertion(); + +	/** +	   * Sets the samlAssertion and the serializedSamlAssertion. +	   * @param samlAssertion The samlAssertion to set +	   */ +	void setSamlAssertion(Element samlAssertion) throws TransformerException, IOException; + +	/** +	   * Returns the dsigReferenceTransforms. +	   * @return Element[] +	   */ +	Element[] getDsigReferenceTransforms(); + +	/** +	   * Sets the dsigReferenceTransforms. +	   * @param dsigReferenceTransforms The dsigReferenceTransforms to set +	   */ +	void setDsigReferenceTransforms(Element[] dsigReferenceTransforms); + +	/** +	   * Returns the publicKey. +	   * @return PublicKey[] +	   */ +	PublicKey[] getPublicKey(); + +	/** +	   * Sets the publicKey. +	   * @param publicKey The publicKey to set +	   */ +	void setPublicKey(PublicKey[] publicKey); + +	/** +	   * Returns the prPerson. +	   * @return Element +	   */ +	Element getPrPerson(); + +	/** +	   * Sets the prPerson. +	   * @param prPerson The prPerson to set +	   */ +	void setPrPerson(Element prPerson); + +	/** +	   * Returns the issuing time of the identity link SAML assertion. +	   * +	   * @return The issuing time of the identity link SAML assertion. +	   */ +	String getIssueInstant(); + +	/** +	   * Sets the issuing time of the identity link SAML assertion. +	   * +	   * @param issueInstant The issueInstant to set. +	   */ +	void setIssueInstant(String issueInstant); + +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/modules/AuthModule.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/modules/AuthModule.java new file mode 100644 index 00000000..16df7231 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/modules/AuthModule.java @@ -0,0 +1,67 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth.modules; + +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; + +/** + * Provides metadata of a certain module. Uses for module discovery and process selection. + */ +public interface AuthModule { + +	/** +	 * Returns the priority of the module. The priority defines the order of the respective module within the chain of +	 * discovered modules. Higher priorized modules are asked before lower priorized modules for a process that they can +	 * handle. +	 * <p/> +	 * Internal default modules are priorized neutral ({@code 0}. Use a higher priority ({@code 1...Integer.MAX_VALUE}) +	 * in order to have your module(s) priorized or a lower priority ({@code Integer.MIN_VALUE...-1}) in order to put +	 * your modules behind default modules. +	 *  +	 * @return the priority of the module. +	 */ +	int getPriority(); + +	/** +	 * Selects a process (description), referenced by its unique id, which is able to perform authentication with the +	 * given {@link ExecutionContext}. Returns {@code null} if no appropriate process (description) was available within +	 * this module. +	 *  +	 * @param context +	 *            an ExecutionContext for a process. +	 * @return the process-ID of a process which is able to work with the given ExecutionContext, or {@code null}. +	 */ +	String selectProcess(ExecutionContext context); + +	/** +	 * Returns the an Array of {@link ProcessDefinition}s of the processes included in this module. +	 *  +	 * @return an array of resource uris of the processes included in this module. +	 */ +	String[] getProcessDefinitions(); + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java new file mode 100644 index 00000000..de5eb036 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.auth.services; + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.logging.IStatisticLogger; +import at.gv.egiz.eaaf.core.exceptions.EAAFException; + +public interface IProtocolAuthenticationService { + +	public String PARAM_GUI_ERROMSG = "errorMsg"; +	public String PARAM_GUI_ERRORCODE = "errorCode"; +	public String PARAM_GUI_ERRORCODEPARAMS = "errorParams"; +	public String PARAM_GUI_ERRORSTACKTRACE = "stacktrace"; +	 +	 +	/** +	 * Initialize an authentication process for this protocol request +	 *  +	 * @param httpReq HttpServletRequest	 +	 * @param httpResp HttpServletResponse +	 * @param protocolRequest Authentication request which is actually in process +	 * @throws IOException  +	 * @throws EAAFException  +	 */ +	void performAuthentication(HttpServletRequest req, HttpServletResponse resp, IRequest pendingReq) +			throws IOException, EAAFException; + +	/** +	 * Finalize the requested protocol operation +	 *  +	 * @param httpReq HttpServletRequest	 +	 * @param httpResp HttpServletResponse +	 * @param protocolRequest Authentication request which is actually in process +	 * @throws IOException If response can not be written into {@link HttpServletResponse} +	 * @throws EAAFException If an internal error occur  +	 */ +	void finalizeAuthentication(HttpServletRequest req, HttpServletResponse resp, IRequest pendingReq) throws EAAFException, IOException; + +	/** +	 * @param throwable Exception that should be handled +	 * @param req Current open http request as {@link HttpServletRequest} +	 * @param resp Current open http response as {@link HttpServletResponse} +	 * @param pendingReq Authentication request which is actually in process +	 * @throws IOException If response can not be written into {@link HttpServletResponse} +	 * @throws EAAFException If an internal error occur +	 */ +	void buildProtocolSpecificErrorResponse(Throwable throwable, HttpServletRequest req, HttpServletResponse resp, +			IRequest pendingReq) throws IOException, EAAFException; + +	/** +	 * Handles all exceptions with no pending request. +	 * Therefore, the error is written to the users browser +	 *  +	 * @param throwable Exception that should be handled +	 * @param req Current open http request as {@link HttpServletRequest} +	 * @param resp Current open http response as {@link HttpServletResponse} +	 * @param writeExceptionToStatisticLog if <code>true</code>, the exception get logged into {@link IStatisticLogger} +	 * @throws IOException If response can not be written into {@link HttpServletResponse} +	 * @throws EAAFException If an internal error occure +	 */ +	void handleErrorNoRedirect(Throwable throwable, HttpServletRequest req, HttpServletResponse resp, boolean writeExceptionToStatisticLog) throws IOException, EAAFException; + +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/process/ExecutionContext.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/process/ExecutionContext.java new file mode 100644 index 00000000..38a66d4c --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/process/ExecutionContext.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.idp.process; + +import java.io.Serializable; +import java.util.Set; + +/** + * Encapsulates data needed for or provided by task execution. + *  + * @author tknall + *  + */ +public interface ExecutionContext extends Serializable { + +	/** +	 * Returns the identifier of underlying process instance. +	 *  +	 * @return The identifier of the process instance. +	 */ +	String getProcessInstanceId(); + +	/** +	 * Sets the identifier of underlying process instance. +	 *  +	 * @param processInstanceId +	 *            The identifier of the process instance. +	 */ +	void setProcessInstanceId(String processInstanceId); + +	/** +	 * Stores a serializable object using {@code key}. +	 *  +	 * @param key +	 *            The key under that the {@code object} should be stored. +	 * @param object The object to be stored. +	 */ +	void put(String key, Serializable object); + +	/** +	 * Returns an serializable object stored within this process context using {@code key}. +	 *  +	 * @param key +	 *            The key that has been used to store the serializable object (may be {@code null}). +	 * @return The object or {@code null} in case the key does not relate to a stored object or the stored object itself +	 *         was {@code null}. +	 */ +	Serializable get(String key); +	 +	/** +	 * Removes the object stored using {@code key}. +	 * @param key +	 *            The key that has been used to store the serializable object (may be {@code null}). +	 * @return The object that has been removed or {@code null} there was no object stored using {@code key}. +	 */ +	Serializable remove(String key); + +	/** +	 * Returns an unmodifiable set containing the stored keys. +	 *  +	 * @return The keyset (never {@code null}). +	 */ +	Set<String> keySet(); + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/ISLOInformationContainer.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/ISLOInformationContainer.java new file mode 100644 index 00000000..419765c4 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/ISLOInformationContainer.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/** + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egiz.eaaf.core.api.idp.slo; + +import java.io.Serializable; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import at.gv.egiz.eaaf.core.api.IRequest; + +/** + * @author tlenz + * + */ +public interface ISLOInformationContainer extends Serializable { + +	boolean hasFrontChannelOA(); + +	Set<Entry<String, SLOInformationInterface>> getFrontChannelOASessionDescriptions(); + +	void removeFrontChannelOA(String oaID); + +	Iterator<String> getNextBackChannelOA(); + +	SLOInformationInterface getBackChannelOASessionDescripten(String oaID); + +	void removeBackChannelOA(String oaID); + +	/** +	 * @return the sloRequest +	 */ +	IRequest getSloRequest(); + +	/** +	 * @param sloRequest the sloRequest to set +	 */ +	void setSloRequest(IRequest sloRequest); + +	/** +	 * @return the sloFailedOAs +	 */ +	List<String> getSloFailedOAs(); + +	void putFailedOA(String oaID); +	 +	public String getTransactionID(); +	 +	public String getSessionID(); +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/SLOInformationInterface.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/SLOInformationInterface.java new file mode 100644 index 00000000..f17745f3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/slo/SLOInformationInterface.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/** + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egiz.eaaf.core.api.idp.slo; + +/** + * @author tlenz + * + */ +public interface SLOInformationInterface{ +	 + +	/** +	 * get AssertionID which was used for Service Provider Single LogOut request  +	 *  +	 * @return +	 * SessionID (SessionIndex in case of SAML2) +	 */ +	public String getSessionIndex(); +	 +	/** +	 * get user identifier which was used +	 *  +	 * @return +	 * bPK / wbPK (nameID in case of SAML2) +	 */ +	public String getUserNameIdentifier(); +	 +	 +	/** +	 * get protocol type which was used for authentication +	 *  +	 * @return +	 * return authentication protocol type +	 */ +	public String getProtocolType(); + +	/** +	 * @return +	 */ +	public String getUserNameIDFormat(); +	 +	/** +	 * Get the unique entityID of this Service-Provider +	 *  +	 * @return unique identifier, but never null +	 */ +	public String getSpEntityID(); +	 +	public String getAuthURL(); +	 +	public String getServiceURL(); +	 +	public String getBinding(); +	 +	public void setUserNameIdentifier(String subjectNameId); +	 +	public void setNameIDFormat(String format); +	 +	public void setSessionIndex(String sessionIndex); +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IRevisionLogger.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IRevisionLogger.java new file mode 100644 index 00000000..9ef17684 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IRevisionLogger.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.logging; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; + +public interface IRevisionLogger { +	 +	 +	//TODO: +	public static final int AUTHPROTOCOL_TYPE = 3000; +	 +	void logEvent(ISPConfiguration oaConfig, int eventCode, String message); + +	void logEvent(IRequest pendingRequest, int eventCode); + +	void logEvent(IRequest pendingRequest, int eventCode, String message); + +	/** +	 * @param sessionCreated +	 * @param uniqueSessionIdentifier +	 */ +	void logEvent(int eventCode, String message); + +	/** +	 * @param sessionCreated +	 * @param uniqueSessionIdentifier +	 */ +	void logEvent(String sessionID, String transactionID, int eventCode, String message); + +	/** +	 * @param sessionCreated +	 * @param uniqueSessionIdentifier +	 */ +	void logEvent(String sessionID, String transactionID, int eventCode); + +}
\ No newline at end of file diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IStatisticLogger.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IStatisticLogger.java new file mode 100644 index 00000000..dfafe091 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/logging/IStatisticLogger.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.logging; + +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.IAuthData; + + + +public interface IStatisticLogger { +		 +	public void logSuccessOperation(IRequest protocolRequest, IAuthData authData, boolean isSSOSession); +	 +	public void logErrorOperation(Throwable throwable); +	 +	public void logErrorOperation(Throwable throwable, IRequest errorRequest); +	 +	public void internalTesting() throws Exception; +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/storage/ITransactionStorage.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/storage/ITransactionStorage.java new file mode 100644 index 00000000..ad424329 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/storage/ITransactionStorage.java @@ -0,0 +1,138 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.api.storage; + +import java.util.Date; +import java.util.List; + +import at.gv.egiz.eaaf.core.exceptions.EAAFException; +import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException; + +/** + * @author tlenz + * + */ +public interface ITransactionStorage { + +	/** +	 * Check if transaction storage contains a data object with a specific key +	 *  +	 * @param key Key, which identifies a data object +	 * @return true if key is found, otherwise false +	 */ +	public boolean containsKey(String key); +	 +	/** +	 * Store a data object with a key to transaction storage +	 *  +	 * @param key Id which identifiers the data object +	 * @param value Data object which should be stored.  +	 *              This data must implement the <code>java.io.Serializable</code> interface +	 * @param timeout_ms Defines the period of time a data object is kept within the storage +	 * @throws EAAFStorageException In case of store operation failed +	 */ +	public void put(String key, Object value, int timeout_ms) throws EAAFException; +	 +	/** +	 * Get a data object from transaction storage +	 *  +	 * @param key key Id which identifiers the data object +	 * @return The transaction-data object, or null +	 * @throws EAAFStorageException In case of load operation failed +	 */ +	public Object get(String key) throws EAAFException; +	 +	/** +	 * Get a data object from transaction storage +	 *  +	 * @param key Id which identifiers the data object +	 * @param clazz The class type which is stored with this key +	 * @return The transaction-data object from type class, or null +	 * @throws EAAFStorageException In case of load operation failed +	 */ +	public <T> T get(String key, final Class<T> clazz) throws EAAFException; +	 +	/** +	 * Get a data object from transaction storage +	 *  +	 * @param key Id which identifiers the data object +	 * @param clazz The class type which is stored with this key +	 * @param Data-object timeout in [ms] +	 * @return The transaction-data object from type class, or null +	 * @throws EAAFStorageException In case of load operation failed +	 */ +	public <T> T get(String key, final Class<T> clazz, long dataTimeOut) throws EAAFException; +	 +	 +	/** +	 * Change the key of a data object and store it under the new key +	 *  +	 * @param oldKey Old key of the data object +	 * @param newKey New key, which should be used to store the data object +	 * @param value Data object which should be stored +	 * @throws EAAFStorageException In case of store operation failed +	 */ +	public void changeKey(String oldKey, String newKey, Object value) throws EAAFException;  +	 +	/** +	 * Remove a data object from transaction storage +	 *  +	 * @param key Id which identifiers the data object +	 */ +	public void remove(String key); +	 +	/** +	 * Get all entries for Clean-up the transaction storage +	 *  +	 * @param now Current time +	 * @param dataTimeOut Data-object timeout in [ms] +	 * @return List of entry-keys which as a timeout +	 */ +	public List<String> clean(Date now, long dataTimeOut); +	 +	 +	/** +	 * Get a raw object from storage by using this key +	 *  +	 * @param key +	 * @return +	 * @throws EAAFException +	 */ +	public Object getRaw(String key) throws EAAFException; +	 +	 +	/** +	 * Set a raw object to storage  +	 *  +	 * @param key +	 * @param element +	 * @throws EAAFException +	 */ +	public void putRaw(String key, Object element) throws EAAFException; +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/utils/IPendingRequestIdGenerationStrategy.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/utils/IPendingRequestIdGenerationStrategy.java new file mode 100644 index 00000000..5fe3fea6 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/utils/IPendingRequestIdGenerationStrategy.java @@ -0,0 +1,41 @@ +package at.gv.egiz.eaaf.core.api.utils; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import at.gv.egiz.eaaf.core.exceptions.EAAFException; +import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; + +public interface IPendingRequestIdGenerationStrategy { + +	/** +	 * Generate a new external pending-request id +	 *  +	 * @return  +	 * @throws EAAFException +	 */ +	@Nonnull +	public String generateExternalPendingRequestId() throws EAAFException; +	 +	/** +	 * Validate a pendingRequestId according to implemented strategy  +	 *  +	 * @param pendingReqId pending-request Id that should be validated +	 * @return internalPendingRequestId +	 * @throws PendingReqIdValidationException +	 */ +	@Nonnull +	public String validateAndGetPendingRequestId(@Nullable String pendingReqId) throws PendingReqIdValidationException; + +	/** +	 * Get the internal pendingReqId without any validation  +	 *  +	 * @param pendingReqId pending-request Id that should be validated +	 * @return internalPendingRequestId +	 * @throws PendingReqIdValidationException +	 */ +	@Nonnull +	public String getPendingRequestIdWithOutChecks(@Nullable String externalPendingReqId) throws PendingReqIdValidationException; + + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributeBuilderException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributeBuilderException.java new file mode 100644 index 00000000..efeecbe5 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributeBuilderException.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class AttributeBuilderException extends EAAFIDPException { + +	private static final long serialVersionUID = 1L; + +	public AttributeBuilderException(String msg) { +		super(msg); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributePolicyException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributePolicyException.java new file mode 100644 index 00000000..4a0e2fc1 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AttributePolicyException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class AttributePolicyException extends AttributeBuilderException { +	 +	private static final long serialVersionUID = 1L; +	 +	private String attributeName; +	 +	public AttributePolicyException(String attributeName) { +		super("Attribute " + attributeName + " is restricted by IDP policy."); +		this.attributeName = attributeName; +	} +	 +	public String getAttributeName() { +		return attributeName; +	} +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AuthnRequestValidatorException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AuthnRequestValidatorException.java new file mode 100644 index 00000000..30db0b09 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/AuthnRequestValidatorException.java @@ -0,0 +1,84 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +import at.gv.egiz.eaaf.core.api.IRequest; + +/** + * @author tlenz + * + */ +public class AuthnRequestValidatorException extends EAAFProtocolException { + +	private IRequest errorRequest = null; +	protected String statusCodeValue; +	 +	/** +	 *  +	 */ +	private static final long serialVersionUID = 4939651000658508576L; + +	/** +	 * @param messageId +	 * @param parameters +	 */ +	public AuthnRequestValidatorException(String internalMsgId, Object[] params) { +		super(internalMsgId, params); +		 +	} +	 +	public AuthnRequestValidatorException(String internalMsgId, Object[] params, Throwable e) { +		super(internalMsgId, params,e); +		 +	} +	 +	public AuthnRequestValidatorException(String internalMsgId, Object[] params, IRequest errorRequest) { +		super(internalMsgId, params); +		this.errorRequest = errorRequest; +		 +	} +	 +	public AuthnRequestValidatorException(String internalMsgId, Object[] params, IRequest errorRequest, Throwable e) { +		super(internalMsgId, params, e); +		this.errorRequest = errorRequest; +		 +	} + +	/** +	 * @return the errorRequest +	 */ +	public IRequest getErrorRequest() { +		return errorRequest; +	} + +	public String getStatusCodeValue() { +		return statusCodeValue; +	} +	 +	 + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFAuthenticationException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFAuthenticationException.java new file mode 100644 index 00000000..e6bdb804 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFAuthenticationException.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFAuthenticationException extends EAAFException { + +	 + +	private static final long serialVersionUID = -4793625336456467005L; + +	public EAAFAuthenticationException(String internalMsgId, Object[] params) { +		super(internalMsgId, params); +		 +	} +	 +	public EAAFAuthenticationException(String internalMsgId, Object[] params, Throwable e) { +		super(internalMsgId, params, e); +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFBuilderException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFBuilderException.java new file mode 100644 index 00000000..dc2b61f7 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFBuilderException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFBuilderException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1L; + +	public EAAFBuilderException(String errorId, Object[] params, String msg) { +		super(errorId, params); +	} + +	public EAAFBuilderException(String errorId, Object[] objects, String message, Throwable ex) { +		super(errorId, objects, ex); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFConfigurationException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFConfigurationException.java new file mode 100644 index 00000000..71f46cb5 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFConfigurationException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFConfigurationException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1L; + +	public EAAFConfigurationException(String msg, Object[] params) { +		super(msg, params); +	} + +	public EAAFConfigurationException(String msg, Object[] params, Throwable e) { +		super(msg, params, e); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFException.java new file mode 100644 index 00000000..affd1dab --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFException.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory; + +public class EAAFException extends Exception { + +	private static final long serialVersionUID = 1L; + +	private String errorId = null; +	private Object[] params = null; +	 +	public EAAFException(String errorId) { +		super(LogMessageProviderFactory.getMessager().getMessage(errorId, null)); +		this.errorId = errorId; +	} +	 +	public EAAFException(String errorId, Object[] params) { +		super(LogMessageProviderFactory.getMessager().getMessage(errorId, params)); +		this.errorId = errorId; +		this.params = params; +		 +	} +	 +	public EAAFException(String errorId, Object[] params, Throwable e) { +		super(LogMessageProviderFactory.getMessager().getMessage(errorId, params), e); +		this.errorId = errorId; +		this.params = params; +		 +	} +	 +	public String getErrorId() { +		return this.errorId; +		 +	} +	 +	public Object[] getParams() { +		return this.params; +		 +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIDPException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIDPException.java new file mode 100644 index 00000000..8af806d0 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIDPException.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFIDPException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1L; + +	public EAAFIDPException(String msg) { +		super(msg, null); +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java new file mode 100644 index 00000000..95688260 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +import at.gv.egiz.eaaf.core.api.IStatusMessenger; + +public class EAAFIllegalStateException extends EAAFException { +	private static final long serialVersionUID = 261484121729891927L; + +	public EAAFIllegalStateException(Object[] params) { +		super(IStatusMessenger.CODES_INTERNAL_ILLEGAL_STATE, params); +		 +	} +	 +	public EAAFIllegalStateException(Object[] params, Throwable e) { +		super(IStatusMessenger.CODES_INTERNAL_ILLEGAL_STATE, params, e); +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFParserException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFParserException.java new file mode 100644 index 00000000..07987f92 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFParserException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFParserException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1L; + +	public EAAFParserException(String errorId, Object[] params) { +		super(errorId, params); +	} + +	public EAAFParserException(String errorId, Object[] objects, Throwable ex) { +		super(errorId, objects, ex); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFProtocolException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFProtocolException.java new file mode 100644 index 00000000..da529c29 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFProtocolException.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFProtocolException extends EAAFException { + +	private static final long serialVersionUID = 7982298114399440473L; + +	public EAAFProtocolException(String errorId, Object[] params) { +		super(errorId, params); + +	} +	 +	public EAAFProtocolException(String errorId, Object[] params, Throwable e) { +		super(errorId, params, e); +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFSSOException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFSSOException.java new file mode 100644 index 00000000..27afcd4a --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFSSOException.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFSSOException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = -5942886204347860148L; + +	public EAAFSSOException(String errorId, Object[] params, Throwable e) { +		super(errorId, params, e); + +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFServiceException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFServiceException.java new file mode 100644 index 00000000..7094c270 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFServiceException.java @@ -0,0 +1,30 @@ +package at.gv.egiz.eaaf.core.exceptions; + +import javax.annotation.Nonnull; + +public abstract class EAAFServiceException extends EAAFException { + +	private static final long serialVersionUID = -867758153828290337L; +	 +	public EAAFServiceException(String errorId, Object[] params) { +		super(errorId, params); +		 +	} +	 +	public EAAFServiceException(String errorId, Object[] params, Throwable e) { +		super(errorId, params, e); +		 +	} + +	/** +	 * Get a textual identifier of the service that throws this exception +	 *  +	 * @return +	 */ +	@Nonnull +	protected abstract String getServiceIdentifier(); +	 +	 +	 + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFStorageException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFStorageException.java new file mode 100644 index 00000000..b99472c3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFStorageException.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class EAAFStorageException extends EAAFException { + +	private static final long serialVersionUID = 1L; + +	public EAAFStorageException(String msg) { +		super("internal.02", new Object[] {msg}); +	} +	 +	public EAAFStorageException(String msg, Throwable e) { +		super("internal.02", new Object[] {msg}, e); +	} +	 + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/GUIBuildException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/GUIBuildException.java new file mode 100644 index 00000000..011488f7 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/GUIBuildException.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +/** + * @author tlenz + * + */ +public class GUIBuildException extends Exception { + +	private static final long serialVersionUID = -278663750102498205L; +	 +	/** +	 * @param string +	 */ +	public GUIBuildException(String msg) { +		super(msg); +		 +	} +	 +	public GUIBuildException(String msg, Throwable e) { +		super(msg, e); +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidDateFormatAttributeException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidDateFormatAttributeException.java new file mode 100644 index 00000000..5d35ac84 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidDateFormatAttributeException.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class InvalidDateFormatAttributeException extends AttributeBuilderException { + +	private static final long serialVersionUID = 1L; +	 +	public InvalidDateFormatAttributeException() { +		super("Date format is invalid."); +	} + +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidProtocolRequestException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidProtocolRequestException.java new file mode 100644 index 00000000..8ed09525 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/InvalidProtocolRequestException.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +/** + * @author tlenz + * + */ +public class InvalidProtocolRequestException extends EAAFProtocolException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = -7866198705324084601L; + +	public InvalidProtocolRequestException(String internalMsgId, Object[] params) { +		super(internalMsgId, params); +	} + +	public InvalidProtocolRequestException(String internalMsgId, Object[] params, Throwable e) { +		super(internalMsgId, params, e); +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/NoPassivAuthenticationException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/NoPassivAuthenticationException.java new file mode 100644 index 00000000..495d61bc --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/NoPassivAuthenticationException.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +import at.gv.egiz.eaaf.core.api.IStatusMessenger; + +public class NoPassivAuthenticationException extends EAAFAuthenticationException { + +	public NoPassivAuthenticationException() { +		super(IStatusMessenger.CODES_INTERNAL_ERROR_AUTH_REQUEST_INVALID, null); +	} + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 596920452166197688L; + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/PendingReqIdValidationException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/PendingReqIdValidationException.java new file mode 100644 index 00000000..e558c3cb --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/PendingReqIdValidationException.java @@ -0,0 +1,60 @@ +package at.gv.egiz.eaaf.core.exceptions; + + +import javax.annotation.Nonnull; + +import at.gv.egiz.eaaf.core.api.IRequest; + +public class PendingReqIdValidationException extends EAAFException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = -6886402432880791308L; + +	private final String invalidInternalPendingReqId; +	private IRequest invalidPendingReq; +	 +	/** +	 *  +	 * @param pendingReqId +	 * @param reason +	 */ +	public PendingReqIdValidationException(String internalPendingReqId, @Nonnull String reason) { +		super("process.99", new Object[] {internalPendingReqId, reason}); +		this.invalidInternalPendingReqId = internalPendingReqId; +		 +	} + +	public PendingReqIdValidationException(String internalPendingReqId, @Nonnull String reason, Throwable e) { +		super("process.99", new Object[] {internalPendingReqId, reason}, e ); +		this.invalidInternalPendingReqId = internalPendingReqId; +	} + +	/** +	 * Get the invalid pending-request +	 *  +	 * @return +	 */ +	public IRequest getInvalidPendingReq() { +		return invalidPendingReq; +	} +	 +	 +	/** +	 * Get the internal invalid pending-request id +	 *  +	 * @return +	 */ +	public String getInvalidInternalPendingReqId() { +		return invalidInternalPendingReqId; +	} + +	public void setInvalidPendingReq(IRequest invalidPendingReq) { +		this.invalidPendingReq = invalidPendingReq; +		 +	} +	 +	 + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProcessExecutionException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProcessExecutionException.java new file mode 100644 index 00000000..b72237b2 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProcessExecutionException.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +/** + * Indicates a problem when executing a process. + *  + * @author tknall + *  + */ +public class ProcessExecutionException extends Exception { + +	private static final long serialVersionUID = 1L; + +	/** +	 * Creates a new process execution exception providing a {@code message} describing the reason and the respective +	 * {@code cause}. +	 *  +	 * @param message +	 *            The message. +	 * @param cause +	 *            The cause. +	 */ +	public ProcessExecutionException(String message, Throwable cause) { +		super(message, cause); +	} + +	/** +	 * Creates a new process execution exception providing a {@code message} describing the reason. +	 *  +	 * @param message +	 *            The message. +	 */ +	public ProcessExecutionException(String message) { +		super(message); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolNotActiveException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolNotActiveException.java new file mode 100644 index 00000000..79c94c7b --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolNotActiveException.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +/** + * @author tlenz + * + */ +public class ProtocolNotActiveException extends EAAFProtocolException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1832697083163940710L; + +	public ProtocolNotActiveException(String internalMsgId, Object[] params) { +		super(internalMsgId, params); +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolResponseExceptions.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolResponseExceptions.java new file mode 100644 index 00000000..194505d3 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/ProtocolResponseExceptions.java @@ -0,0 +1,14 @@ +package at.gv.egiz.eaaf.core.exceptions; + +public class ProtocolResponseExceptions extends EAAFProtocolException { + +	private static final long serialVersionUID = -7866198705324084601L; + +	public ProtocolResponseExceptions(String internalMsgId, Object[] params) { +		super(internalMsgId, params); +	} + +	public ProtocolResponseExceptions(String internalMsgId, Object[] params, Throwable e) { +		super(internalMsgId, params, e); +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/SLOException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/SLOException.java new file mode 100644 index 00000000..4a52e7a2 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/SLOException.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +/** + * @author tlenz + * + */ +public class SLOException extends EAAFException { +	private static final long serialVersionUID = -5284624715788385022L; + +	/** +	 * @param messageId +	 * @param parameters +	 */ +	public SLOException(String messageId, Object[] parameters) { +		super(messageId, parameters); +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/TaskExecutionException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/TaskExecutionException.java new file mode 100644 index 00000000..773cbc4a --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/TaskExecutionException.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +import at.gv.egiz.eaaf.core.api.IRequest; + +/** + * @author tlenz + * + */ +public class TaskExecutionException extends ProcessExecutionException { + +	private static final long serialVersionUID = 1L; +	Throwable originalException = null; +	String pendingRequestID = null; +	 +	/** +	 * @param message +	 * @param cause +	 */ +	public TaskExecutionException(IRequest pendingReq, String message, Throwable cause) { +		super(message, cause); +		this.originalException = cause; +		 +		if (pendingReq.getPendingRequestId() != null && !pendingReq.getPendingRequestId().isEmpty()) +			this.pendingRequestID = pendingReq.getPendingRequestId(); +		 +	} + +	/** +	 * Get the original internal exception from task +	 *  +	 * @return the originalException +	 */ +	public Throwable getOriginalException() { +		return originalException; +		 +	} + +	/** +	 * Get the pending-request ID of that request, which was processed when the exception occurs  +	 *  +	 * @return the pendingRequestID +	 */ +	public String getPendingRequestID() { +		return pendingRequestID; +	} +	 +	 +	 +	 +	 +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/UnavailableAttributeException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/UnavailableAttributeException.java new file mode 100644 index 00000000..d87af4d1 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/UnavailableAttributeException.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.exceptions; + +public class UnavailableAttributeException extends AttributeBuilderException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = -1114323185905118432L; + +	private String attributeName; +	 +	public UnavailableAttributeException(String attributeName) { +		super("Attribute " + attributeName + " is not available."); +		this.attributeName = attributeName; +	} + +	public String getAttributeName() { +		return attributeName; +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/XPathException.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/XPathException.java new file mode 100644 index 00000000..fe3a96e6 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/exceptions/XPathException.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ + + +package at.gv.egiz.eaaf.core.exceptions; + +import java.io.PrintStream; +import java.io.PrintWriter; + +/** + * An exception occurred evaluating an XPath. + *  + */ +public class XPathException extends RuntimeException { +  /** +	 *  +	 */ +	private static final long serialVersionUID = 1736311265333034392L; +/** The wrapped exception. */ +  private Throwable wrapped; +   +  /** +   * Create a <code>XPathException</code>. +   *  +   * @param message The exception message. +   * @param wrapped The exception being the likely cause of this exception. +   */ +  public XPathException(String message, Throwable wrapped) { +    super(message); +    this.wrapped = wrapped;  +  } +   +  public XPathException(String string) { +	  super(string); +} + +/** +   * Return the wrapped exception. +   *  +   * @return The wrapped exception being the likely cause of this exception. +   */ +  public Throwable getWrapped() { +    return wrapped; +  } + +  /** +   * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) +   */ +  public void printStackTrace(PrintStream s) { +    super.printStackTrace(s); +    if (getWrapped() != null) { +      s.print("Caused by: "); +      getWrapped().printStackTrace(s); +    } +  } + +  /** +   * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) +   */ +  public void printStackTrace(PrintWriter s) { +    super.printStackTrace(s); +    if (getWrapped() != null) { +      s.print("Caused by: "); +      getWrapped().printStackTrace(s); +    } +  } +  +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Pair.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Pair.java new file mode 100644 index 00000000..1e2f6994 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Pair.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.impl.data; + +public class Pair<P1, P2> { +	private final P1 first; +	private final P2 second; +	 +	private Pair(final P1 newFirst, final P2 newSecond) { +		this.first = newFirst; +		this.second = newSecond; +	} +	 +	public P1 getFirst() { +		return this.first; +	} +	 +	public P2 getSecond() { +		return this.second; +	} +	 +	public static <P1, P2> Pair<P1, P2> newInstance(final P1 newFirst, final P2 newSecond) { +		return new Pair<P1, P2>(newFirst, newSecond); +	} +	 +	@Override +	public String toString() { +		return "[bPK-Value: " + getFirst() + " bPK-Type: " + getSecond() + "]"; +		 +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Trible.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Trible.java new file mode 100644 index 00000000..1aa61a87 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/data/Trible.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.impl.data; + +public class Trible<P1, P2, P3> { +	private final P1 first; +	private final P2 second; +	private final P3 third; +	 +	private Trible(final P1 newFirst, final P2 newSecond, final P3 newThird) { +		this.first = newFirst; +		this.second = newSecond; +		this.third = newThird; +	} +	 +	public P1 getFirst() { +		return this.first; +	} +	 +	public P2 getSecond() { +		return this.second; +	} +	 +	public P3 getThird() { +		return this.third; +	} +	 +	public static <P1, P2, P3> Trible<P1, P2, P3> newInstance(final P1 newFirst, final P2 newSecond, final P3 newThird) { +		return new Trible<P1, P2, P3>(newFirst, newSecond, newThird); +	} +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/DummyStatusMessager.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/DummyStatusMessager.java new file mode 100644 index 00000000..8862a2a5 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/DummyStatusMessager.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.impl.logging; + +import at.gv.egiz.eaaf.core.api.IStatusMessenger; + +public class DummyStatusMessager implements IStatusMessenger { + +	@Override +	public String getMessage(String messageId, Object[] parameters) { +		return "No StatusMessager-Backend available! " +				+ "StatusCode:" + messageId  +				+ " Params:" + parameters; +		 +	} + +	@Override +	public String getResponseErrorCode(Throwable throwable) { +		return "No StatusMessager-Backend available!"; +		 +	} + +	@Override +	public String mapInternalErrorToExternalError(String intErrorCode) { +		return "No StatusCode Mapper available! StatusCode:" + intErrorCode; +		 +	} + +} diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/LogMessageProviderFactory.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/LogMessageProviderFactory.java new file mode 100644 index 00000000..574ac071 --- /dev/null +++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/impl/logging/LogMessageProviderFactory.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright 2017 Graz University of Technology + * EAAF-Core Components has been developed in a cooperation between EGIZ,   + * A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *   + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + *******************************************************************************/ +/******************************************************************************* + *******************************************************************************/ +package at.gv.egiz.eaaf.core.impl.logging; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.eaaf.core.api.IStatusMessenger; + +public class LogMessageProviderFactory { +	private static final Logger log = LoggerFactory.getLogger(LogMessageProviderFactory.class); +	private static IStatusMessenger internalMessager = new DummyStatusMessager(); +	 +	/** +	 * Get the implementation specific StatusCode messager +	 *  +	 * @return +	 */ +	public static IStatusMessenger getMessager() { +		return internalMessager; +				 +	} +	 +	/** +	 * Set the implementation specific status messanger. +	 * <br><br> +	 * <b>This method can ONLY used ONCE!</b> +	 *  +	 * @param messanger +	 */ +	public static void setStatusMessager(IStatusMessenger messanger) { +		if (internalMessager instanceof DummyStatusMessager) { +			internalMessager = messanger; +			log.info("Set StatusMessanger to '" + messanger.getClass().getName() + "'"); +			 +		} else { +			log.error("StatusMessanger CAN ONLY BE SET ONCE!!!!"); +			throw new RuntimeException("StatusMessanger CAN ONLY BE SET ONCE!!!!"); +			 +		} +					 +	} +} | 
