groups) {
+
+ this.groups = groups;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int hashCode() {
+
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((this.groups == null) ? 0 : this.groups.hashCode());
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean equals(Object obj) {
+
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ AccessControlSchema other = (AccessControlSchema) obj;
+ if (!Objects.equals(this.groups, other.groups)) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/api/accesscontrol/PrincipalAccessControlProvider.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/api/accesscontrol/PrincipalAccessControlProvider.java
new file mode 100644
index 000000000..2f4b0b403
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/api/accesscontrol/PrincipalAccessControlProvider.java
@@ -0,0 +1,22 @@
+package io.oasp.module.security.common.api.accesscontrol;
+
+import java.security.Principal;
+import java.util.Collection;
+
+/**
+ * This is the interface for a provide that allows to {@link #getAccessControlIds(Principal) get the permission groups} for a
+ * {@link Principal}.
+ *
+ * @param is the generic type of the {@link Principal} representing the user or subject.
+ *
+ * @author hohwille
+ */
+public interface PrincipalAccessControlProvider
{
+
+ /**
+ * @param principal is the {@link Principal} (user).
+ * @return the {@link Collection} of {@link AccessControl#getId() IDs} with the groups of the given {@link Principal}.
+ */
+ Collection getAccessControlIds(P principal);
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/api/exception/InvalidConfigurationException.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/api/exception/InvalidConfigurationException.java
new file mode 100644
index 000000000..0e6a07f8d
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/api/exception/InvalidConfigurationException.java
@@ -0,0 +1,36 @@
+package io.oasp.module.security.common.api.exception;
+
+/**
+ * Signals an exception during reading the security configuration
+ *
+ * @author mbrunnli
+ */
+public class InvalidConfigurationException extends RuntimeException {
+
+ /**
+ * Default serial version UID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new {@link InvalidConfigurationException} with the given message
+ *
+ * @param message error message
+ */
+ public InvalidConfigurationException(String message) {
+
+ super(message);
+ }
+
+ /**
+ * Creates a new {@link InvalidConfigurationException} with the given message and the given cause
+ *
+ * @param message error message
+ * @param ex cause of the created exception
+ */
+ public InvalidConfigurationException(String message, Throwable ex) {
+
+ super(message, ex);
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlBasedAuthenticationProvider.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlBasedAuthenticationProvider.java
new file mode 100644
index 000000000..c86009305
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlBasedAuthenticationProvider.java
@@ -0,0 +1,163 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControl;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlProvider;
+import io.oasp.module.security.common.api.accesscontrol.PrincipalAccessControlProvider;
+
+import java.security.Principal;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+/**
+ * This is an implementation of {@link AbstractUserDetailsAuthenticationProvider} based on
+ * {@link PrincipalAccessControlProvider} and {@link AccessControlProvider}.
+ *
+ * @param is the generic type of the {@link UserDetails} implementation used to bridge with spring-security.
+ * @param is the generic type of the {@link Principal} for internal user representation to bridge with
+ * {@link PrincipalAccessControlProvider}.
+ *
+ * @author hohwille
+ */
+public abstract class AbstractAccessControlBasedAuthenticationProvider
+ extends AbstractUserDetailsAuthenticationProvider {
+
+ /** The {@link Logger} instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractAccessControlBasedAuthenticationProvider.class);
+
+ private PrincipalAccessControlProvider
principalAccessControlProvider;
+
+ private AccessControlProvider accessControlProvider;
+
+ /**
+ * The constructor.
+ */
+ public AbstractAccessControlBasedAuthenticationProvider() {
+
+ }
+
+ /**
+ * @param principalAccessControlProvider the {@link PrincipalAccessControlProvider} to {@link Inject}.
+ */
+ @Inject
+ public void setPrincipalAccessControlProvider(PrincipalAccessControlProvider
principalAccessControlProvider) {
+
+ this.principalAccessControlProvider = principalAccessControlProvider;
+ }
+
+ /**
+ * @param accessControlProvider the {@link AccessControlProvider} to {@link Inject}.
+ */
+ @Inject
+ public void setAccessControlProvider(AccessControlProvider accessControlProvider) {
+
+ this.accessControlProvider = accessControlProvider;
+ }
+
+ /**
+ * Here the actual authentication has to be implemented.
+ *
+ *
+ * {@inheritDoc}
+ */
+ @Override
+ protected void additionalAuthenticationChecks(UserDetails userDetails,
+ UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
+
+ // default implementation authentications via servlet API (container managed)
+ ServletRequestAttributes currentRequestAttributes =
+ (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
+
+ HttpServletRequest request = currentRequestAttributes.getRequest();
+ String login = authentication.getName();
+ String password = null;
+ Object credentials = authentication.getCredentials();
+ if (credentials != null) {
+ password = credentials.toString();
+ }
+ try {
+ request.login(login, password);
+ } catch (ServletException e) {
+ LOG.warn("Authentication failed: {}", e.toString());
+ throw new BadCredentialsException("Authentication failed.", e);
+ }
+ authentication.setDetails(userDetails);
+ }
+
+ /**
+ * Creates an instance of {@link UserDetails} that represent the user with the given username
.
+ *
+ * @param username is the login of the user to create.
+ * @param password the password of the user.
+ * @param principal is the internal {@link Principal} that has been provided by
+ * {@link #retrievePrincipal(String, UsernamePasswordAuthenticationToken)}.
+ * @param authorities are the {@link GrantedAuthority granted authorities} or in other words the permissions of the
+ * user.
+ * @return the new user object.
+ */
+ protected abstract U createUser(String username, String password, P principal, Set authorities);
+
+ /**
+ * Retrieves the internal {@link Principal} object representing the user. This can be any object implementing
+ * {@link Principal} and can contain additional user details such as profile data. This object is used to
+ * {@link PrincipalAccessControlProvider#getAccessControlIds(Principal) retrieve} the (top-level)
+ * {@link AccessControl}s that have been granted to the user.
+ *
+ * @param username is the login of the user.
+ * @param authentication is the {@link UsernamePasswordAuthenticationToken}.
+ * @return the {@link Principal}.
+ */
+ protected abstract P retrievePrincipal(String username, UsernamePasswordAuthenticationToken authentication);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)
+ throws AuthenticationException {
+
+ P principal = retrievePrincipal(username, authentication);
+ if (principal == null) {
+ LOG.warn("Failed to retrieve user for login {}.", username);
+ throw new UsernameNotFoundException(username);
+ }
+
+ // determine granted authorities for spring-security...
+ Set authorities = new HashSet<>();
+ Collection accessControlIds = this.principalAccessControlProvider.getAccessControlIds(principal);
+ Set accessControlSet = new HashSet<>();
+ for (String id : accessControlIds) {
+ boolean success = this.accessControlProvider.collectAccessControls(id, accessControlSet);
+ if (!success) {
+ LOG.warn("Undefined access control {}.", id);
+ // authorities.add(new SimpleGrantedAuthority(id));
+ }
+ }
+ for (AccessControl accessControl : accessControlSet) {
+ authorities.add(new AccessControlGrantedAuthority(accessControl));
+ }
+
+ String password = null;
+ Object credentials = authentication.getCredentials();
+ if (credentials != null) {
+ password = credentials.toString();
+ }
+ return createUser(username, password, principal, authorities);
+ }
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlProvider.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlProvider.java
new file mode 100644
index 000000000..79bb036f2
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AbstractAccessControlProvider.java
@@ -0,0 +1,206 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControl;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlGroup;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlPermission;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlProvider;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This is the abstract base implementation of {@link AccessControlProvider}.
+ * ATTENTION:
+ * You need to call {@link #initialize(AccessControlSchema)} from the derived implementation.
+ *
+ * @author hohwille
+ */
+public abstract class AbstractAccessControlProvider implements AccessControlProvider {
+
+ /** Logger instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractAccessControlProvider.class);
+
+ /** @see #getAccessControl(String) */
+ private final Map id2nodeMap;
+
+ /**
+ * The constructor.
+ */
+ public AbstractAccessControlProvider() {
+
+ super();
+ this.id2nodeMap = new HashMap<>();
+ }
+
+ /**
+ * Performs the required initialization of this class.
+ *
+ * @param config is the {@link AccessControlSchema}.
+ */
+ protected void initialize(AccessControlSchema config) {
+
+ LOG.debug("Initializing.");
+ List groups = config.getGroups();
+ if (groups.size() == 0) {
+ throw new IllegalStateException("AccessControlSchema is empty - please configure at least one group!");
+ }
+ Set toplevelGroups = new HashSet<>(groups);
+ for (AccessControlGroup group : groups) {
+ collectAccessControls(group, toplevelGroups);
+ checkForCyclicDependencies(group, new HashSet());
+ }
+ }
+
+ /**
+ * Checks that the given {@link AccessControlGroup} has no cyclic {@link AccessControlGroup#getInherits() inheritance
+ * graph}.
+ *
+ * @param group is the {@link AccessControlGroup} to check.
+ * @param visitedGroups is where the {@link AccessControlGroup} are collected to detect cycles.
+ */
+ protected void checkForCyclicDependencies(AccessControlGroup group, Set visitedGroups) {
+
+ boolean added = visitedGroups.add(group);
+ if (!added) {
+ // mmm NodeCycleException would be very helpful here...
+ throw new IllegalStateException("Cyclic inheritance of access control groups detected for " + group);
+ }
+ for (AccessControlGroup inheritedGroup : group.getInherits()) {
+ checkForCyclicDependencies(inheritedGroup, visitedGroups);
+ }
+ }
+
+ /**
+ * Called from {@link #initialize(AccessControlSchema)} to collect all {@link AccessControl}s recursively.
+ *
+ * @param group the {@link AccessControlGroup} to traverse.
+ * @param toplevelGroups is the {@link Set} of all {@link AccessControlGroup}s from
+ * {@link AccessControlSchema#getGroups()}.
+ */
+ protected void collectAccessControls(AccessControlGroup group, Set toplevelGroups) {
+
+ // TODO hohwille Java HashMap buggy???
+ // if (!toplevelGroups.contains(group)) {
+ // throw new IllegalStateException("Invalid group not declared as top-level group in schema: " + group);
+ // }
+ AccessControl old = this.id2nodeMap.put(group.getId(), group);
+ if (old != null) {
+ LOG.debug("Already visited access control group {}", group);
+ if (old != group) {
+ throw new IllegalStateException("Invalid security configuration: duplicate groups with id " + group.getId()
+ + "!");
+ }
+ // group has already been visited, stop recursion...
+ return;
+ } else {
+ LOG.debug("Registered access control group {}", group);
+ }
+ for (AccessControlPermission permission : group.getPermissions()) {
+ old = this.id2nodeMap.put(permission.getId(), permission);
+ if (old != null) {
+ // throw new IllegalStateException("Invalid security configuration: duplicate permission with id "
+ // + permission.getId() + "!");
+ LOG.warn("Security configuration contains duplicate permission with id {}.", permission.getId());
+ } else {
+ LOG.debug("Registered access control permission {}", permission);
+ }
+ }
+ for (AccessControlGroup inheritedGroup : group.getInherits()) {
+ collectAccessControls(inheritedGroup, toplevelGroups);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AccessControl getAccessControl(String nodeId) {
+
+ return this.id2nodeMap.get(nodeId);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean collectAccessControlIds(String groupId, Set permissions) {
+
+ AccessControl node = getAccessControl(groupId);
+ if (node instanceof AccessControlGroup) {
+ collectPermissionIds((AccessControlGroup) node, permissions);
+ } else {
+ // node does not exist or is a flat AccessControlPermission
+ permissions.add(groupId);
+ }
+ return (node != null);
+ }
+
+ /**
+ * Recursive implementation of {@link #collectAccessControlIds(String, Set)} for {@link AccessControlGroup}s.
+ *
+ * @param group is the {@link AccessControlGroup} to traverse.
+ * @param permissions is the {@link Set} used to collect.
+ */
+ public void collectPermissionIds(AccessControlGroup group, Set permissions) {
+
+ boolean added = permissions.add(group.getId());
+ if (!added) {
+ // we have already visited this node, stop recursion...
+ return;
+ }
+ for (AccessControlPermission permission : group.getPermissions()) {
+ permissions.add(permission.getId());
+ }
+ for (AccessControlGroup inheritedGroup : group.getInherits()) {
+ collectPermissionIds(inheritedGroup, permissions);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean collectAccessControls(String groupId, Set permissions) {
+
+ AccessControl node = getAccessControl(groupId);
+ if (node == null) {
+ return false;
+ }
+ if (node instanceof AccessControlGroup) {
+ collectPermissionNodes((AccessControlGroup) node, permissions);
+ } else {
+ // node is a flat AccessControlPermission
+ permissions.add(node);
+ }
+ return true;
+ }
+
+ /**
+ * Recursive implementation of {@link #collectAccessControls(String, Set)} for {@link AccessControlGroup}s.
+ *
+ * @param group is the {@link AccessControlGroup} to traverse.
+ * @param permissions is the {@link Set} used to collect.
+ */
+ public void collectPermissionNodes(AccessControlGroup group, Set permissions) {
+
+ boolean added = permissions.add(group);
+ if (!added) {
+ // we have already visited this node, stop recursion...
+ return;
+ }
+ for (AccessControlPermission permission : group.getPermissions()) {
+ permissions.add(permission);
+ }
+ for (AccessControlGroup inheritedGroup : group.getInherits()) {
+ collectPermissionNodes(inheritedGroup, permissions);
+ }
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlGrantedAuthority.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlGrantedAuthority.java
new file mode 100644
index 000000000..a39e89f3a
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlGrantedAuthority.java
@@ -0,0 +1,59 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControl;
+
+import java.util.Objects;
+
+import org.springframework.security.core.GrantedAuthority;
+
+/**
+ * Implementation of {@link GrantedAuthority} for a {@link AccessControl}.
+ *
+ * @author hohwille
+ */
+public class AccessControlGrantedAuthority implements GrantedAuthority {
+
+ /** UID for serialization. */
+ private static final long serialVersionUID = 1L;
+
+ private final AccessControl accessControl;
+
+ /**
+ * The constructor.
+ *
+ * @param accessControl the {@link #getAccessControl() access control}.
+ */
+ public AccessControlGrantedAuthority(AccessControl accessControl) {
+
+ super();
+ Objects.requireNonNull(accessControl, AccessControl.class.getSimpleName());
+ this.accessControl = accessControl;
+ }
+
+ /**
+ * @return the contained {@link AccessControl}.
+ */
+ public AccessControl getAccessControl() {
+
+ return this.accessControl;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getAuthority() {
+
+ return this.accessControl.getId();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String toString() {
+
+ return getAuthority();
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaMapper.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaMapper.java
new file mode 100644
index 000000000..5b545d199
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaMapper.java
@@ -0,0 +1,34 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * This is the interface to {@link #read(InputStream)} and {@link #write(AccessControlSchema, OutputStream)} the
+ * {@link AccessControlSchema}.
+ *
+ * @author hohwille
+ */
+public interface AccessControlSchemaMapper {
+
+ /**
+ * Reads the {@link AccessControlSchema} from the given {@link InputStream}.
+ *
+ * @param in is the {@link InputStream} with {@link AccessControlSchema} to read. Has to be
+ * {@link InputStream#close() closed} by the caller of this method who created the stream.
+ * @return the {@link AccessControlSchema} represented by the given input.
+ */
+ AccessControlSchema read(InputStream in);
+
+ /**
+ * Writes the given {@link AccessControlSchema} to the given {@link OutputStream}.
+ *
+ * @param conf is the {@link AccessControlSchema} to write.
+ * @param out is the {@link OutputStream} where to write the {@link AccessControlSchema} to. Has to be
+ * {@link OutputStream#close() closed} by the caller of this method who created the stream.
+ */
+ void write(AccessControlSchema conf, OutputStream out);
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaProvider.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaProvider.java
new file mode 100644
index 000000000..f4f276a1b
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/AccessControlSchemaProvider.java
@@ -0,0 +1,19 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+
+/**
+ * This is the interface to {@link #loadSchema() load} the {@link AccessControlSchema} from an arbitrary source. The
+ * default implementation will load it from an XML file. You could create your own implementation to read from database
+ * or wherever if default is not suitable.
+ *
+ * @author hohwille
+ */
+public interface AccessControlSchemaProvider {
+
+ /**
+ * @return the loaded {@link AccessControlSchema}. May not be null
.
+ */
+ AccessControlSchema loadSchema();
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/PrincipalGroupProviderGroupImpl.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/PrincipalGroupProviderGroupImpl.java
new file mode 100644
index 000000000..4bdeb9f1a
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/PrincipalGroupProviderGroupImpl.java
@@ -0,0 +1,58 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.PrincipalAccessControlProvider;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * This is an implementation of {@link PrincipalAccessControlProvider} based on {@link Group}. Due to the confusing API of
+ * {@link Group} that mixes a {@link Principal} with permissions and permission groups it is not commonly used even
+ * though it is available in the Java standard edition.
+ *
+ * @author hohwille
+ */
+public class PrincipalGroupProviderGroupImpl implements PrincipalAccessControlProvider {
+
+ /**
+ * The constructor.
+ */
+ public PrincipalGroupProviderGroupImpl() {
+
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Collection getAccessControlIds(Group principal) {
+
+ Set groupSet = new HashSet<>();
+ collectGroups(principal, groupSet);
+ return groupSet;
+ }
+
+ /**
+ * Called from {@link #getAccessControlIds(Group)} to recursively collect the groups.
+ *
+ * @param group is the {@link Group} to traverse.
+ * @param groupSet is the {@link Set} where to add the principal names.
+ */
+ protected void collectGroups(Group group, Set groupSet) {
+
+ Enumeration extends Principal> members = group.members();
+ while (members.hasMoreElements()) {
+ Principal member = members.nextElement();
+ String name = member.getName();
+ boolean added = groupSet.add(name);
+ if (added && (member instanceof Group)) {
+ collectGroups((Group) member, groupSet);
+ }
+ }
+ }
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/SimpleAccessControlBasedAuthenticationProvider.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/SimpleAccessControlBasedAuthenticationProvider.java
new file mode 100644
index 000000000..389ec3a79
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/base/accesscontrol/SimpleAccessControlBasedAuthenticationProvider.java
@@ -0,0 +1,45 @@
+package io.oasp.module.security.common.base.accesscontrol;
+
+import java.security.Principal;
+import java.util.Set;
+
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+
+/**
+ * This is a simple implementation of {@link AbstractAccessControlBasedAuthenticationProvider}.
+ *
+ * @author hohwille
+ */
+public class SimpleAccessControlBasedAuthenticationProvider extends
+ AbstractAccessControlBasedAuthenticationProvider {
+
+ /**
+ * The constructor.
+ */
+ public SimpleAccessControlBasedAuthenticationProvider() {
+
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected User createUser(String username, String password, Principal principal, Set authorities) {
+
+ User user = new User(username, password, authorities);
+ return user;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected Principal retrievePrincipal(String username, UsernamePasswordAuthenticationToken authentication) {
+
+ return authentication;
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlProviderImpl.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlProviderImpl.java
new file mode 100644
index 000000000..119184dd6
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlProviderImpl.java
@@ -0,0 +1,55 @@
+package io.oasp.module.security.common.impl.accesscontrol;
+
+import io.oasp.module.security.common.base.accesscontrol.AbstractAccessControlProvider;
+import io.oasp.module.security.common.base.accesscontrol.AccessControlSchemaProvider;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+/**
+ * This is the default implementation of {@link io.oasp.module.security.common.api.accesscontrol.AccessControlProvider}.
+ *
+ * @author hohwille
+ */
+public class AccessControlProviderImpl extends AbstractAccessControlProvider {
+
+ private AccessControlSchemaProvider accessControlSchemaProvider;
+
+ /**
+ * The constructor.
+ */
+ public AccessControlProviderImpl() {
+
+ super();
+ }
+
+ /**
+ * Initializes this class.
+ */
+ @PostConstruct
+ public void initialize() {
+
+ if (this.accessControlSchemaProvider == null) {
+ this.accessControlSchemaProvider = new AccessControlSchemaProviderImpl();
+ }
+ initialize(this.accessControlSchemaProvider.loadSchema());
+ }
+
+ /**
+ * @return accessControlSchemaProvider
+ */
+ public AccessControlSchemaProvider getAccessControlSchemaProvider() {
+
+ return this.accessControlSchemaProvider;
+ }
+
+ /**
+ * @param accessControlSchemaProvider the {@link AccessControlSchemaProvider} to {@link Inject}.
+ */
+ @Inject
+ public void setAccessControlSchemaProvider(AccessControlSchemaProvider accessControlSchemaProvider) {
+
+ this.accessControlSchemaProvider = accessControlSchemaProvider;
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaProviderImpl.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaProviderImpl.java
new file mode 100644
index 000000000..8d518ef7e
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaProviderImpl.java
@@ -0,0 +1,111 @@
+package io.oasp.module.security.common.impl.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+import io.oasp.module.security.common.base.accesscontrol.AccessControlSchemaMapper;
+import io.oasp.module.security.common.base.accesscontrol.AccessControlSchemaProvider;
+
+import java.io.InputStream;
+
+import javax.annotation.PostConstruct;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+/**
+ * This is the default implementation of {@link AccessControlSchemaProvider}.
+ *
+ * @author hohwille
+ */
+public class AccessControlSchemaProviderImpl implements AccessControlSchemaProvider {
+
+ /** Logger instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(AccessControlSchemaProviderImpl.class);
+
+ private Resource accessControlSchema;
+
+ private AccessControlSchemaMapper accessControlSchemaMapper;
+
+ private boolean initialized;
+
+ /**
+ * The constructor.
+ */
+ public AccessControlSchemaProviderImpl() {
+
+ super();
+ this.initialized = false;
+ }
+
+ /**
+ * Initializes this class.
+ */
+ @PostConstruct
+ public void initialize() {
+
+ if (this.initialized) {
+ return;
+ }
+ LOG.debug("Initializing.");
+ if (this.accessControlSchemaMapper == null) {
+ this.accessControlSchemaMapper = new AccessControlSchemaXmlMapper();
+ }
+ if (this.accessControlSchema == null) {
+ // this.accessControlSchema = new
+ // ClassPathResource(ApplicationConfigurationConstants.SECURITY_ACCESS_CONTROL_SCHEMA);
+ this.accessControlSchema = new ClassPathResource("config/app/security/access-control-schema.xml");
+ }
+ this.initialized = true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AccessControlSchema loadSchema() {
+
+ initialize();
+ LOG.debug("Reading access control schema from {}", this.accessControlSchema);
+ try (InputStream inputStream = this.accessControlSchema.getInputStream()) {
+ AccessControlSchema schema = this.accessControlSchemaMapper.read(inputStream);
+ LOG.debug("Reading access control schema completed successfully.");
+ return schema;
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to load access control schema from " + this.accessControlSchema, e);
+ }
+ }
+
+ /**
+ * @return the {@link AccessControlSchemaMapper}.
+ */
+ public AccessControlSchemaMapper getAccessControlSchemaMapper() {
+
+ return this.accessControlSchemaMapper;
+ }
+
+ /**
+ * @param accessControlSchemaMapper the {@link AccessControlSchemaMapper} to use.
+ */
+ public void setAccessControlSchemaMapper(AccessControlSchemaMapper accessControlSchemaMapper) {
+
+ this.accessControlSchemaMapper = accessControlSchemaMapper;
+ }
+
+ /**
+ * @return accessControlSchema
+ */
+ public Resource getAccessControlSchema() {
+
+ return this.accessControlSchema;
+ }
+
+ /**
+ * @param accessControlSchema the {@link Resource} pointing to the XML configuration of the access control schema.
+ */
+ public void setAccessControlSchema(Resource accessControlSchema) {
+
+ this.accessControlSchema = accessControlSchema;
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXmlMapper.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXmlMapper.java
new file mode 100644
index 000000000..47b99a489
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXmlMapper.java
@@ -0,0 +1,165 @@
+package io.oasp.module.security.common.impl.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+import io.oasp.module.security.common.base.accesscontrol.AccessControlSchemaMapper;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+import javax.xml.transform.Result;
+import javax.xml.transform.stream.StreamResult;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class is a simple wrapper for {@link #read(InputStream) reading} and
+ * {@link #write(AccessControlSchema, OutputStream) writing} the {@link AccessControlSchema} from/to XML.
+ *
+ * @author hohwille
+ */
+public class AccessControlSchemaXmlMapper implements AccessControlSchemaMapper {
+
+ /** Logger instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(AccessControlSchemaXmlMapper.class);
+
+ private JAXBContext jaxbContext;
+
+ /**
+ * The constructor.
+ */
+ public AccessControlSchemaXmlMapper() {
+
+ super();
+ try {
+ this.jaxbContext = JAXBContext.newInstance(AccessControlSchema.class);
+ } catch (JAXBException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void write(AccessControlSchema conf, OutputStream out) {
+
+ try {
+ Marshaller marshaller = this.jaxbContext.createMarshaller();
+ marshaller.marshal(conf, out);
+ } catch (JAXBException e) {
+ throw new IllegalStateException("Marshalling XML failed!", e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AccessControlSchema read(InputStream in) {
+
+ try {
+ Unmarshaller unmarshaller = this.jaxbContext.createUnmarshaller();
+ ValidationEventHandler handler = new ValidationEventHandlerImpl();
+ unmarshaller.setEventHandler(handler);
+ return (AccessControlSchema) unmarshaller.unmarshal(in);
+ } catch (JAXBException e) {
+ throw new IllegalStateException("Unmarshalling XML failed!", e);
+ }
+ }
+
+ /**
+ * Generates the XSD (XML Schema Definition) to the given {@link File}.
+ *
+ * @param outFile is the {@link File} to write to.
+ */
+ public void writeXsd(File outFile) {
+
+ File folder = outFile.getParentFile();
+ if (!folder.isDirectory()) {
+ boolean success = folder.mkdirs();
+ if (!success) {
+ throw new IllegalStateException("Failed to create folder " + folder);
+ }
+ }
+ try (FileOutputStream fos = new FileOutputStream(outFile)) {
+ writeXsd(fos);
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to generate and write the XSD schema to " + outFile + "!", e);
+ }
+ }
+
+ /**
+ * Generates the XSD (XML Schema Definition) to the given {@link OutputStream}.
+ *
+ * @param out is the {@link OutputStream} to write to.
+ */
+ public void writeXsd(final OutputStream out) {
+
+ SchemaOutputResolver sor = new SchemaOutputResolver() {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
+
+ StreamResult streamResult = new StreamResult(out);
+ streamResult.setSystemId(suggestedFileName);
+ return streamResult;
+ }
+
+ };
+ try {
+ this.jaxbContext.generateSchema(sor);
+ } catch (IOException e) {
+ throw new IllegalStateException("Failed to generate and write the XSD schema!", e);
+ }
+ }
+
+ /**
+ * Custom implementation of {@link ValidationEventHandler}.
+ */
+ protected static class ValidationEventHandlerImpl implements ValidationEventHandler {
+
+ /**
+ * The constructor.
+ */
+ public ValidationEventHandlerImpl() {
+
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean handleEvent(ValidationEvent event) {
+
+ if (event != null) {
+ switch (event.getSeverity()) {
+ case ValidationEvent.ERROR:
+ case ValidationEvent.FATAL_ERROR:
+ throw new IllegalArgumentException(event.toString());
+ case ValidationEvent.WARNING:
+ LOG.warn(event.toString());
+ break;
+ default:
+ LOG.debug(event.toString());
+ }
+ }
+ return true;
+ }
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXsdWriter.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXsdWriter.java
new file mode 100644
index 000000000..a2079d335
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaXsdWriter.java
@@ -0,0 +1,32 @@
+package io.oasp.module.security.common.impl.accesscontrol;
+
+import java.io.File;
+
+/**
+ * This is a simple programm to generate (create or update) the XSD for the
+ * {@link io.oasp.module.security.common.api.accesscontrol.AccessControlSchema}.
+ *
+ * @author hohwille
+ */
+public class AccessControlSchemaXsdWriter extends AccessControlSchemaXmlMapper {
+
+ /**
+ * The constructor.
+ */
+ public AccessControlSchemaXsdWriter() {
+
+ super();
+ }
+
+ /**
+ * The main method to launch this program.
+ *
+ * @param args the command-line arguments (will be ignored).
+ */
+ public static void main(String[] args) {
+
+ AccessControlSchemaXmlMapper mapper = new AccessControlSchemaXmlMapper();
+ mapper.writeXsd(new File("src/main/resources/io/oasp/module/security/access-control-schema.xsd"));
+ }
+
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/AuthenticationSuccessHandlerSendingOkHttpStatusCode.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/AuthenticationSuccessHandlerSendingOkHttpStatusCode.java
new file mode 100644
index 000000000..a6c9a626a
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/AuthenticationSuccessHandlerSendingOkHttpStatusCode.java
@@ -0,0 +1,36 @@
+package io.oasp.module.security.common.impl.rest;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.WebAttributes;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+/**
+ * Sends the OK status code upon successful authentication.
+ *
+ * @see JsonUsernamePasswordAuthenticationFilter
+ * @author Marek Matczak
+ */
+public class AuthenticationSuccessHandlerSendingOkHttpStatusCode implements AuthenticationSuccessHandler {
+ @Override
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+ if (response.isCommitted()) {
+ return;
+ }
+ clearAuthenticationAttributes(request);
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+
+ private void clearAuthenticationAttributes(HttpServletRequest request) {
+ HttpSession session = request.getSession(false);
+ if (session == null) {
+ return;
+ }
+ session.removeAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);
+ }
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/JsonUsernamePasswordAuthenticationFilter.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/JsonUsernamePasswordAuthenticationFilter.java
new file mode 100644
index 000000000..86346ae71
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/JsonUsernamePasswordAuthenticationFilter.java
@@ -0,0 +1,191 @@
+package io.oasp.module.security.common.impl.rest;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.http.server.ServletServerHttpRequest;
+import org.springframework.security.authentication.AuthenticationServiceException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+import org.springframework.security.web.util.matcher.RequestMatcher;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ *
+ * Processes authentication where credentials are sent as a JSON object.
+ *
+ *
+ * The JSON object must contain two properties: a username and a password. The default properties' names to use are
+ * contained in the static fields {@link UsernamePasswordAuthenticationFilter#SPRING_SECURITY_FORM_USERNAME_KEY} and
+ * {@link UsernamePasswordAuthenticationFilter#SPRING_SECURITY_FORM_PASSWORD_KEY}. The JSON object properties' names can
+ * also be changed by setting the {@code usernameParameter} and {@code passwordParameter} properties. Assuming the
+ * default properties' names were not changed, if the credentials user
/pass
are to be sent, the
+ * following JSON object is expected:
+ *
+ * {
+ * "j_username": "user",
+ * "j_password": "pass",
+ * }
+ *
+ *
+ *
+ * The URL this filter responds to is passed as a constructor parameter.
+ *
+ *
+ * This authentication filter is intended for One Page Applications which handle a login page/dialog/pop-up on their
+ * own. This filter combined with:
+ *
+ * - {@link AuthenticationSuccessHandlerSendingOkHttpStatusCode}
+ * - {@link org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler} created using
+ * the default constructor (thus leaving the {@code defaultFailureUrl} unset)
+ * - {@link LogoutSuccessHandlerReturningOkHttpStatusCode}
+ *
+ * makes the login/logout API fully RESTful.
+ *
+ *
+ * @author Marek Matczak
+ */
+public class JsonUsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
+ private String usernameParameter = UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY;
+
+ private String passwordParameter = UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY;
+
+ private boolean postOnly = true;
+
+ // REVIEW may-bee (hohwille) We have a centralized and custom-configured object mapper as spring bean. IMHO we should
+ // inject that instance here.
+ private ObjectMapper objectMapper = new ObjectMapper();
+
+ public JsonUsernamePasswordAuthenticationFilter(RequestMatcher requiresAuthenticationRequestMatcher) {
+
+ super(requiresAuthenticationRequestMatcher);
+ }
+
+ @Override
+ public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
+ throws AuthenticationException, IOException, ServletException {
+
+ if (this.postOnly && !request.getMethod().equals("POST")) {
+ throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
+ }
+
+ final UsernameAndPasswordParser usernameAndPasswordParser = new UsernameAndPasswordParser(request);
+ usernameAndPasswordParser.parse();
+ UsernamePasswordAuthenticationToken authRequest =
+ new UsernamePasswordAuthenticationToken(usernameAndPasswordParser.getTrimmedUsername(),
+ usernameAndPasswordParser.getPassword());
+ // authRequest.setDetails(this.authenticationDetailsSource.buildDetails(request));
+ return getAuthenticationManager().authenticate(authRequest);
+ }
+
+ public String getUsernameParameter() {
+
+ return this.usernameParameter;
+ }
+
+ public void setUsernameParameter(String usernameParameter) {
+
+ this.usernameParameter = usernameParameter;
+ }
+
+ public String getPasswordParameter() {
+
+ return this.passwordParameter;
+ }
+
+ public void setPasswordParameter(String passwordParameter) {
+
+ this.passwordParameter = passwordParameter;
+ }
+
+ public boolean isPostOnly() {
+
+ return this.postOnly;
+ }
+
+ public void setPostOnly(boolean postOnly) {
+
+ this.postOnly = postOnly;
+ }
+
+ private class UsernameAndPasswordParser {
+ private String username;
+
+ private String password;
+
+ private final HttpServletRequest request;
+
+ private JsonNode credentialsNode;
+
+ private UsernameAndPasswordParser(HttpServletRequest request) {
+
+ this.request = request;
+ }
+
+ public void parse() {
+
+ parseJsonFromRequestBody();
+ if (jsonParsedSuccessfully()) {
+ extractUsername();
+ extractPassword();
+ }
+ }
+
+ private void extractPassword() {
+
+ this.password = extractValueByName(JsonUsernamePasswordAuthenticationFilter.this.passwordParameter);
+ }
+
+ private void extractUsername() {
+
+ this.username = extractValueByName(JsonUsernamePasswordAuthenticationFilter.this.usernameParameter);
+ }
+
+ private String extractValueByName(String name) {
+
+ String value = null;
+ if (this.credentialsNode.has(name)) {
+ JsonNode node = this.credentialsNode.get(name);
+ if (node != null) {
+ value = node.asText();
+ }
+ }
+ return value;
+ }
+
+ private boolean jsonParsedSuccessfully() {
+
+ return this.credentialsNode != null;
+ }
+
+ private void parseJsonFromRequestBody() {
+
+ try {
+ final ServletServerHttpRequest servletServerHttpRequest = new ServletServerHttpRequest(this.request);
+ this.credentialsNode =
+ JsonUsernamePasswordAuthenticationFilter.this.objectMapper.readTree(servletServerHttpRequest.getBody());
+ } catch (IOException e) {
+ // ignoring
+ }
+ }
+
+ private String getTrimmedUsername() {
+
+ return this.username == null ? "" : this.username.trim();
+ }
+
+ private String getPassword() {
+
+ return this.password == null ? "" : this.password;
+ }
+
+ }
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/LogoutSuccessHandlerReturningOkHttpStatusCode.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/LogoutSuccessHandlerReturningOkHttpStatusCode.java
new file mode 100644
index 000000000..e43077e3f
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/rest/LogoutSuccessHandlerReturningOkHttpStatusCode.java
@@ -0,0 +1,25 @@
+package io.oasp.module.security.common.impl.rest;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Sends the OK status code upon successful logout.
+ *
+ * @see JsonUsernamePasswordAuthenticationFilter
+ * @author Marek Matczak
+ */
+public class LogoutSuccessHandlerReturningOkHttpStatusCode implements LogoutSuccessHandler {
+ @Override
+ public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+ if (response.isCommitted()) {
+ return;
+ }
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+}
diff --git a/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/web/RetainAnchorFilter.java b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/web/RetainAnchorFilter.java
new file mode 100644
index 000000000..f1dd8ab52
--- /dev/null
+++ b/oasp4j-security/src/main/java/io/oasp/module/security/common/impl/web/RetainAnchorFilter.java
@@ -0,0 +1,193 @@
+package io.oasp.module.security.common.impl.web;
+
+import java.io.IOException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+import org.springframework.web.filter.GenericFilterBean;
+
+/**
+ * Spring Security filter that preserves the URL anchor if the authentication process contains redirects (e.g. if the
+ * login is performed via CAS or form login).
+ *
+ * With standard redirects (default Spring Security behavior), Internet Explorer (6.0 and 8.0) discard the anchor part
+ * of the URL such that e.g. bookmarking does not work properly. Firefox re-appends the anchor part.
+ *
+ * This filter replaces redirects to URLs that match a certain pattern (storeUrlPattern
) with a Javascript
+ * page that stores the URL anchor in a cookie, and replaces redirects to URLs that match another pattern (
+ * restoreUrlPattern
) with a Javascript page that restores the URL anchor from that cookie. The cookie name
+ * can be set via the attribute cookieName
.
+ *
+ * @author mbrunnli (contributed by guidow08 & mpickell)
+ * @see Forum post of guidow08
+ * @see Forum post of mpickell
+ */
+public class RetainAnchorFilter extends GenericFilterBean {
+
+ private String storeUrlPattern;
+
+ private String restoreUrlPattern;
+
+ private String cookieName;
+
+ /**
+ * Sets the url pattern for storing anchors.
+ *
+ * @param storeUrlPattern url regular expression
+ */
+ public void setStoreUrlPattern(String storeUrlPattern) {
+
+ this.storeUrlPattern = storeUrlPattern;
+ }
+
+ /**
+ * Sets the url pattern for restoring anchors.
+ *
+ * @param restoreUrlPattern url regular expression
+ */
+ public void setRestoreUrlPattern(String restoreUrlPattern) {
+
+ this.restoreUrlPattern = restoreUrlPattern;
+ }
+
+ /**
+ * Sets the cookie name in which the anchor data should be saved.
+ *
+ * @param cookieName name of the cookie
+ */
+ public void setCookieName(String cookieName) {
+
+ this.cookieName = cookieName;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
+ ServletException {
+
+ ServletResponse wrappedResponse = response;
+ if (response instanceof HttpServletResponse) {
+ wrappedResponse = new RedirectResponseWrapper((HttpServletResponse) response);
+ }
+
+ chain.doFilter(request, wrappedResponse);
+ }
+
+ /**
+ * HttpServletResponseWrapper that replaces the redirect by appropriate Javascript code.
+ */
+ private class RedirectResponseWrapper extends HttpServletResponseWrapper {
+
+ public RedirectResponseWrapper(HttpServletResponse response) {
+
+ super(response);
+ }
+
+ @Override
+ public void sendRedirect(String location) throws IOException {
+
+ HttpServletResponse response = (HttpServletResponse) getResponse();
+ String redirectPageHtml = "";
+ if (location.matches(RetainAnchorFilter.this.storeUrlPattern)) {
+ redirectPageHtml = generateStoreAnchorRedirectPageHtml(location);
+ } else if (location.matches(RetainAnchorFilter.this.restoreUrlPattern)) {
+ redirectPageHtml = generateRestoreAnchorRedirectPageHtml(location);
+ } else {
+ super.sendRedirect(location);
+ return;
+ }
+ response.setContentType("text/html;charset=UTF-8");
+ response.setContentLength(redirectPageHtml.length());
+ response.getWriter().write(redirectPageHtml);
+ }
+
+ private String generateStoreAnchorRedirectPageHtml(String location) {
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Redirect Page\n");
+ sb.append("\n\n");
+ sb.append("Redirect Page (Store Anchor)
\n");
+ sb.append("Should redirect to " + location + "\n");
+ sb.append("\n");
+
+ return sb.toString();
+ }
+
+ /**
+ * @author mbrunnli (Bugfix of mpickell)
+ * @see Forum
+ * post
+ */
+ private String generateRestoreAnchorRedirectPageHtml(String location) {
+
+ StringBuilder sb = new StringBuilder();
+
+ // open html
+ sb.append("Redirect Page");
+ sb.append("");
+ sb.append("");
+ sb.append("");
+ sb.append("Redirect Page (Restore Anchor)
");
+ sb.append("Should redirect to " + location + "
");
+ sb.append("");
+ sb.append("");
+
+ return sb.toString();
+ }
+
+ }
+}
diff --git a/oasp4j-security/src/main/resources/io/oasp/module/security/access-control-schema.xsd b/oasp4j-security/src/main/resources/io/oasp/module/security/access-control-schema.xsd
new file mode 100644
index 000000000..4b256afbf
--- /dev/null
+++ b/oasp4j-security/src/main/resources/io/oasp/module/security/access-control-schema.xsd
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oasp4j-security/src/test/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaTest.java b/oasp4j-security/src/test/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaTest.java
new file mode 100644
index 000000000..b1d8cd5c2
--- /dev/null
+++ b/oasp4j-security/src/test/java/io/oasp/module/security/common/impl/accesscontrol/AccessControlSchemaTest.java
@@ -0,0 +1,247 @@
+package io.oasp.module.security.common.impl.accesscontrol;
+
+import io.oasp.module.security.common.api.accesscontrol.AccessControl;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlGroup;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlPermission;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlProvider;
+import io.oasp.module.security.common.api.accesscontrol.AccessControlSchema;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+
+/**
+ * This is the test-case for {@link AccessControlSchema} and {@link AccessControlSchemaXmlMapper}.
+ *
+ * @author hohwille
+ */
+public class AccessControlSchemaTest extends Assert {
+
+ /** The location of the reference configuration for regression tests. */
+ private static final String SCHEMA_XML = "config/app/security/access-control-schema.xml";
+
+ /** The location of the reference configuration with group type declaration */
+ private static final String SCHEMA_XML_GROUP_TYPES = "config/app/security/access-control-schema_groupTypes.xml";
+
+ /** The location of the configuration with a cyclic dependency. */
+ private static final String SCHEMA_XML_CYCLIC = "config/app/security/access-control-schema_cyclic.xml";
+
+ /** The location of the configuration that is syntactically corrupted (invalid group reference). */
+ private static final String SCHEMA_XML_CORRUPTED = "config/app/security/access-control-schema_corrupted.xml";
+
+ /** The location of the configuration that is syntactically corrupted (invalid group reference). */
+ private static final String SCHEMA_XML_ILLEGAL = "config/app/security/access-control-schema_illegal.xml";
+
+ /**
+ * The constructor.
+ */
+ public AccessControlSchemaTest() {
+
+ super();
+ }
+
+ /**
+ * Regression test for {@link AccessControlSchemaXmlMapper#write(AccessControlSchema, java.io.OutputStream)}.
+ *
+ * @throws Exception if something goes wrong.
+ */
+ @Test
+ public void testWriteXml() throws Exception {
+
+ // given
+ AccessControlSchema conf = createSecurityConfiguration();
+ String expectedXml = readSecurityConfigurationXmlFile();
+ // when
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new AccessControlSchemaXmlMapper().write(conf, baos);
+ String actualXml = baos.toString();
+ // then
+ assertEquals(expectedXml.replaceAll("\\r *|\\n *", ""), actualXml);
+ }
+
+ /**
+ * Regression test for {@link AccessControlSchemaXmlMapper#read(InputStream)}.
+ *
+ * @throws Exception if something goes wrong.
+ */
+ @Test
+ public void testReadXml() throws Exception {
+
+ // given
+ AccessControlSchema expectedConf = createSecurityConfiguration();
+ // when
+ ClassPathResource resource = new ClassPathResource(SCHEMA_XML);
+ AccessControlSchema actualConf;
+ try (InputStream in = resource.getInputStream()) {
+ actualConf = new AccessControlSchemaXmlMapper().read(in);
+ }
+ // then
+ assertEquals(expectedConf, actualConf);
+ }
+
+ /**
+ * Tests that {@link AccessControlProviderImpl} properly detects cyclic inheritance of {@link AccessControlGroup}s.
+ */
+ @Test
+ public void testProviderCyclic() {
+
+ try {
+ createProvider(SCHEMA_XML_CYCLIC);
+ fail("Exception expected!");
+ } catch (IllegalStateException e) {
+ assertTrue(e.getMessage().startsWith("Cyclic inheritance "));
+ }
+ }
+
+ /**
+ * Tests that {@link AccessControlProviderImpl} with corrupted XML (not well-formed).
+ */
+ @Test
+ public void testProviderCorrupted() {
+
+ try {
+ createProvider(SCHEMA_XML_CORRUPTED);
+ fail("Exception expected!");
+ } catch (IllegalStateException e) {
+ String message = e.getMessage();
+ assertTrue(message, message.contains(SCHEMA_XML_CORRUPTED.toString()));
+ String causeMessage = e.getCause().getMessage();
+ assertEquals("Unmarshalling XML failed!", causeMessage);
+ }
+ }
+
+ /**
+ * Tests that {@link AccessControlProviderImpl} with illegal XML (undefined group reference).
+ */
+ @Test
+ public void testProviderIllegal() {
+
+ try {
+ createProvider(SCHEMA_XML_ILLEGAL);
+ fail("Exception expected!");
+ } catch (IllegalStateException e) {
+ String message = e.getMessage();
+ assertTrue(message, message.contains(SCHEMA_XML_ILLEGAL.toString()));
+ String causeMessage = e.getCause().getMessage();
+ assertTrue(causeMessage, causeMessage.contains("Undefined ID \"Waiter\""));
+ }
+ }
+
+ /**
+ * Tests that {@link AccessControlProviderImpl} properly detects cyclic inheritance of {@link AccessControlGroup}s.
+ */
+ public void testProvider() {
+
+ AccessControlProvider provider = createProvider(SCHEMA_XML);
+ Set permissions = new HashSet<>();
+ boolean success;
+ success = provider.collectAccessControls("", permissions);
+ assertFalse(success);
+ assertEquals(0, permissions.size());
+ success = provider.collectAccessControls("Admin", permissions);
+ assertTrue(success);
+ assertTrue(permissions.contains(provider.getAccessControl("Customer_ReadCustomer")));
+ assertTrue(permissions.contains(provider.getAccessControl("Customer_CreateCustomer")));
+ assertTrue(permissions.contains(provider.getAccessControl("Customer_DeleteCustomer")));
+ assertEquals(24, permissions.size());
+ success = provider.collectAccessControls("ReadOnly", permissions);
+ assertTrue(success);
+ assertTrue(permissions.contains(provider.getAccessControl("Contract_ReadContractAsset")));
+ assertTrue(permissions.contains(provider.getAccessControl("Contract_UpdateContractAsset")));
+ assertFalse(permissions.contains(provider.getAccessControl("System_DeleteUser")));
+ assertEquals(5, permissions.size());
+
+ }
+
+ /**
+ * Tests the correct extraction of group types
+ */
+ @Test
+ public void testGroupTypes() {
+
+ ClassPathResource resource = new ClassPathResource(SCHEMA_XML_GROUP_TYPES);
+ AccessControlSchemaProviderImpl accessControlSchemaProvider = new AccessControlSchemaProviderImpl();
+ accessControlSchemaProvider.setAccessControlSchema(resource);
+ AccessControlSchema accessControlSchema = accessControlSchemaProvider.loadSchema();
+ List groups = accessControlSchema.getGroups();
+
+ Assert.assertNotNull(groups);
+ Assert.assertEquals(3, groups.size());
+
+ for (AccessControlGroup group : groups) {
+ if (group.getId().equals("Admin")) {
+ Assert.assertEquals("role", group.getType());
+ } else if (group.getId().equals("ReadOnly") || group.getId().equals("ReadWrite")) {
+ Assert.assertEquals("group", group.getType());
+ }
+ }
+ }
+
+ private AccessControlProvider createProvider(String location) {
+
+ ClassPathResource resource = new ClassPathResource(location);
+ AccessControlProviderImpl accessControlProvider = new AccessControlProviderImpl();
+ AccessControlSchemaProviderImpl accessControlSchemaProvider = new AccessControlSchemaProviderImpl();
+ accessControlSchemaProvider.setAccessControlSchema(resource);
+ accessControlProvider.setAccessControlSchemaProvider(accessControlSchemaProvider);
+ accessControlProvider.initialize();
+ return accessControlProvider;
+ }
+
+ private String readSecurityConfigurationXmlFile() throws IOException, UnsupportedEncodingException {
+
+ ClassPathResource resource = new ClassPathResource(SCHEMA_XML);
+ byte[] data = Files.readAllBytes(Paths.get(resource.getURI()));
+ String expectedXml = new String(data, "UTF-8");
+ return expectedXml;
+ }
+
+ private AccessControlSchema createSecurityConfiguration() {
+
+ AccessControlSchema conf = new AccessControlSchema();
+ AccessControlGroup readOnly = new AccessControlGroup("ReadOnly");
+ readOnly.getPermissions().add(new AccessControlPermission("Customer_ReadCustomer"));
+ readOnly.getPermissions().add(new AccessControlPermission("Customer_ReadProfile"));
+ readOnly.getPermissions().add(new AccessControlPermission("Customer_ReadAddress"));
+ readOnly.getPermissions().add(new AccessControlPermission("Contract_ReadContract"));
+ readOnly.getPermissions().add(new AccessControlPermission("Contract_ReadContractAsset"));
+ AccessControlGroup readWrite = new AccessControlGroup("ReadWrite");
+ readWrite.getInherits().add(readOnly);
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_CreateCustomer"));
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_CreateProfile"));
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_CreateAddress"));
+ readWrite.getPermissions().add(new AccessControlPermission("Contract_CreateContract"));
+ readWrite.getPermissions().add(new AccessControlPermission("Contract_CreateContractAsset"));
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_UpdateCustomer"));
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_UpdateProfile"));
+ readWrite.getPermissions().add(new AccessControlPermission("Customer_UpdateAddress"));
+ readWrite.getPermissions().add(new AccessControlPermission("Contract_UpdateContract"));
+ readWrite.getPermissions().add(new AccessControlPermission("Contract_UpdateContractAsset"));
+ AccessControlGroup admin = new AccessControlGroup("Admin");
+ admin.getInherits().add(readWrite);
+ admin.getPermissions().add(new AccessControlPermission("Customer_DeleteCustomer"));
+ admin.getPermissions().add(new AccessControlPermission("Customer_DeleteProfile"));
+ admin.getPermissions().add(new AccessControlPermission("Customer_DeleteAddress"));
+ admin.getPermissions().add(new AccessControlPermission("Contract_DeleteContract"));
+ admin.getPermissions().add(new AccessControlPermission("Contract_DeleteContractAsset"));
+ admin.getPermissions().add(new AccessControlPermission("System_ReadUser"));
+ admin.getPermissions().add(new AccessControlPermission("System_CreateUser"));
+ admin.getPermissions().add(new AccessControlPermission("System_UpdateUser"));
+ admin.getPermissions().add(new AccessControlPermission("System_DeleteUser"));
+ conf.getGroups().add(readOnly);
+ conf.getGroups().add(readWrite);
+ conf.getGroups().add(admin);
+ return conf;
+ }
+
+}
diff --git a/oasp4j-security/src/test/resources/config/app/security/access-control-schema.xml b/oasp4j-security/src/test/resources/config/app/security/access-control-schema.xml
new file mode 100644
index 000000000..6c2cdec6e
--- /dev/null
+++ b/oasp4j-security/src/test/resources/config/app/security/access-control-schema.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ReadOnly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ReadWrite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/oasp4j-security/src/test/resources/config/app/security/access-control-schema_corrupted.xml b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_corrupted.xml
new file mode 100644
index 000000000..63b25fe56
--- /dev/null
+++ b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_corrupted.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oasp4j-security/src/test/resources/config/app/security/access-control-schema_cyclic.xml b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_cyclic.xml
new file mode 100644
index 000000000..562287fb4
--- /dev/null
+++ b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_cyclic.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+ Chief
+
+
+
+
+ Barkeeper
+
+
+
+
+ Waiter
+ Barkeeper
+ Cook
+
+
+
+
+
+
+
diff --git a/oasp4j-security/src/test/resources/config/app/security/access-control-schema_groupTypes.xml b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_groupTypes.xml
new file mode 100644
index 000000000..7dfd6f707
--- /dev/null
+++ b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_groupTypes.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+ ReadOnly
+
+
+
+
+
+
+
+ ReadWrite
+
+
+
+
+
+
\ No newline at end of file
diff --git a/oasp4j-security/src/test/resources/config/app/security/access-control-schema_illegal.xml b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_illegal.xml
new file mode 100644
index 000000000..fd4a6a9fe
--- /dev/null
+++ b/oasp4j-security/src/test/resources/config/app/security/access-control-schema_illegal.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ Waiter
+
+
+
diff --git a/oasp4j-security/src/test/resources/logback.xml b/oasp4j-security/src/test/resources/logback.xml
new file mode 100644
index 000000000..bebe76302
--- /dev/null
+++ b/oasp4j-security/src/test/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+ ${logPattern}
+
+
+ DEBUG
+
+
+
+
+
+
+
diff --git a/oasp4j-web/pom.xml b/oasp4j-web/pom.xml
new file mode 100644
index 000000000..e98e5efed
--- /dev/null
+++ b/oasp4j-web/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ io.oasp.java
+ oasp4j-parent
+ dev-SNAPSHOT
+ ../oasp4j-parent/pom.xml
+
+ oasp4j-web
+ ${oasp4j.version}
+ ${project.artifactId}
+ Module for reusable web and servlet related code of the Open Application Standard Platform for Java (OASP4J).
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+ org.springframework
+ spring-web
+
+
+ net.sf.m-m-m
+ mmm-util-core
+
+
+
+
\ No newline at end of file
diff --git a/oasp4j-web/src/main/java/io/oasp/module/web/common/base/PropertiesWebApplicationContextInitializer.java b/oasp4j-web/src/main/java/io/oasp/module/web/common/base/PropertiesWebApplicationContextInitializer.java
new file mode 100644
index 000000000..2f6b1fcd4
--- /dev/null
+++ b/oasp4j-web/src/main/java/io/oasp/module/web/common/base/PropertiesWebApplicationContextInitializer.java
@@ -0,0 +1,60 @@
+package io.oasp.module.web.common.base;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import net.sf.mmm.util.io.api.RuntimeIoException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContextInitializer;
+import org.springframework.core.env.CompositePropertySource;
+import org.springframework.core.io.support.ResourcePropertySource;
+import org.springframework.web.WebApplicationInitializer;
+import org.springframework.web.context.ConfigurableWebApplicationContext;
+
+/**
+ * Registers new {@link WebApplicationInitializer} which allows setting spring profiles in application properties.
+ *
+ * @author sspielma
+ */
+public class PropertiesWebApplicationContextInitializer implements
+ ApplicationContextInitializer {
+
+ /** Logger instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(PropertiesWebApplicationContextInitializer.class);
+
+ /**
+ * List of application property resource names.
+ */
+ private String[] applicationPropertyResources = { "classpath:/config/app/application-default.properties",
+ "classpath:/config/env/application.properties" };
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void initialize(ConfigurableWebApplicationContext applicationContext) {
+
+ CompositePropertySource compositePropertySource = new CompositePropertySource("application properties");
+ for (String propertyName : Arrays.asList(this.applicationPropertyResources)) {
+ try {
+ LOG.debug("Registering " + propertyName + " as property source.");
+ compositePropertySource.addPropertySource(new ResourcePropertySource(propertyName));
+ applicationContext.getEnvironment().getPropertySources().addFirst(compositePropertySource);
+ } catch (IOException e) {
+ throw new RuntimeIoException(e);
+ }
+ }
+ }
+
+ /**
+ * Overwrites default application property resources.
+ *
+ * @param applicationPropertyResources the applicationPropertyResources to set
+ */
+ public void setApplicationPropertyResources(String... applicationPropertyResources) {
+
+ this.applicationPropertyResources = applicationPropertyResources;
+ }
+}
diff --git a/oasp4j-web/src/main/java/io/oasp/module/web/common/base/ToggleFilterWrapper.java b/oasp4j-web/src/main/java/io/oasp/module/web/common/base/ToggleFilterWrapper.java
new file mode 100644
index 000000000..0cc9668c3
--- /dev/null
+++ b/oasp4j-web/src/main/java/io/oasp/module/web/common/base/ToggleFilterWrapper.java
@@ -0,0 +1,126 @@
+package io.oasp.module.web.common.base;
+
+import java.io.IOException;
+
+import javax.annotation.PostConstruct;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class is responsible for wrapping a {@link Filter} and allows to be {@link #setDisabled(Boolean) disabled} e.g.
+ * for development tests (e.g. via some {@link System#getProperty(String) system property}. In case the filter gets
+ * {@link #setDisabled(Boolean) disabled} a WARNING log message is produced and also written to {@link System#err}.
+ *
+ * Here is an example spring XML config from our sample application that allows to disable the CsrfFilter
+ * via a {@link System#getProperties() system property} (-DCsrfDisabled=true
):
+ *
+ *
+ * <bean id="CsrfFilterWrapper" class="io.oasp.gastronomy.restaurant.general.service.impl.rest.ToggleFilterWrapper">
+ * <property name="delegateFilter" ref="CsrfFilter"/>
+ * <property name="disabledString" value="#{systemProperties['CsrfDisabled']}"/>
+ * </bean>
+ *
+ *
+ * @author hohwille
+ */
+public class ToggleFilterWrapper implements Filter {
+
+ /** Logger instance. */
+ private static final Logger LOG = LoggerFactory.getLogger(ToggleFilterWrapper.class);
+
+ /**
+ * The delegated Filter.
+ */
+ private Filter delegateFilter;
+
+ /**
+ * Is set if this filter is disabled.
+ */
+ private Boolean disabled;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ }
+
+ /**
+ *
+ */
+ @PostConstruct
+ public void initialize() {
+
+ if (this.disabled) {
+ String message =
+ "****** FILTER " + this.delegateFilter
+ + " HAS BEEN DISABLED! THIS FEATURE SHOULD ONLY BE USED IN DEVELOPMENT MODE ******";
+ LOG.warn(message);
+ // CHECKSTYLE:OFF (for development only)
+ System.err.println(message);
+ // CHECKSTYLE:ON
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
+ ServletException {
+
+ if (!this.disabled) {
+ this.delegateFilter.doFilter(request, response, chain);
+ } else {
+ chain.doFilter(request, response);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void destroy() {
+
+ }
+
+ /**
+ * @param delegateFilter the filter to delegate to
+ */
+ public void setDelegateFilter(Filter delegateFilter) {
+
+ this.delegateFilter = delegateFilter;
+ }
+
+ /**
+ * @param disabled indicates if this filter is disabled
+ */
+ public void setDisabled(Boolean disabled) {
+
+ this.disabled = disabled;
+ }
+
+ /**
+ * @param disabledString the String to be parsed to a boolean
+ */
+ public void setDisabledString(String disabledString) {
+
+ setDisabled(Boolean.parseBoolean(disabledString));
+ }
+
+ /**
+ * @return disabled
+ */
+ public Boolean isDisabled() {
+
+ return this.disabled;
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 000000000..a1369ac96
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,253 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-dependencies
+ 1.1.9.RELEASE
+
+ io.oasp.java
+ oasp4j-dependencies
+ 1.0.0-SNAPSHOT
+ pom
+ ${project.artifactId}
+ Dependencies of the Open Application Standard Platform for Java (OASP4J) based on spring boot.
+ http://oasp.io/oasp4j/
+ 2014
+
+
+ UTF-8
+ UTF-8
+
+ 1.7
+ 3.0.2
+ 1.0.0-SNAPSHOT
+
+
+
+ oasp4j-parent
+
+
+
+
+
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
+
+
+ javax.annotation
+ jsr250-api
+ 1.0
+
+
+
+ javax.inject
+ javax.inject
+ 1
+
+
+
+ javax.annotation
+ javax.annotation-api
+ 1.2
+
+
+
+ com.google.guava
+ guava
+ 17.0
+
+
+
+ net.sf.m-m-m
+ mmm-util-core
+ 6.0.0
+
+
+
+ org.apache.commons
+ commons-collections4
+ 4.0
+
+
+
+ org.javamoney
+ moneta
+ 0.8
+
+
+
+ org.hibernate.javax.persistence
+ hibernate-jpa-2.1-api
+ 1.0.0.Final
+
+
+ cglib
+ cglib
+ 3.1
+
+
+
+ com.mysema.querydsl
+ querydsl-jpa
+ 3.4.3
+
+
+
+ org.apache.commons
+ commons-dbcp2
+ 2.0.1
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.7
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+
+
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ 2.0
+
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxrs
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-transports-local
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-rs-client
+ ${cxf.version}
+
+
+
+ com.fasterxml.jackson.jaxrs
+ jackson-jaxrs-json-provider
+ 2.4.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.3.3
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.3.3
+
+
+
+ net.sf.dozer
+ dozer
+ 5.5.1
+
+
+
+ javax.validation
+ validation-api
+ 1.1.0.Final
+
+
+
+ org.mockito
+ mockito-core
+ 1.9.5
+
+
+
+
+ io.oasp.java
+ oasp4j-monitoring
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-logging
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-beanmapping
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-configuration
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-security
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-rest
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-jpa
+ ${oasp4j.version}
+
+
+ io.oasp.java
+ oasp4j-web
+ ${oasp4j.version}
+
+
+
+
+
+
+ oasp.releases
+ OASP Releases
+ http://oasp-ci.cloudapp.net/nexus/content/repositories/releases/
+
+
+ oasp.snapshots
+ OASP Snapshots
+ http://oasp-ci.cloudapp.net/nexus/content/repositories/snapshots/
+
+
+ oasp-site
+ file://${user.dir}/target/oasp4j/maven
+
+
+
+
diff --git a/settings/checkstyle/checkstyle.xml b/settings/checkstyle/checkstyle.xml
new file mode 100644
index 000000000..ac244a1b3
--- /dev/null
+++ b/settings/checkstyle/checkstyle.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings/clientpe-properties.bat b/settings/clientpe-properties.bat
new file mode 100644
index 000000000..a690a2ca4
--- /dev/null
+++ b/settings/clientpe-properties.bat
@@ -0,0 +1,6 @@
+@echo off
+rem ****************************************
+rem Architect
+
+rem Variable replacement config
+set REPLACEMENT_PATTERNS_PATH=%SETTINGS_PATH%\eclipse\workspace\replacement-patterns.properties
\ No newline at end of file
diff --git a/settings/eclipse/codetemplates.xml b/settings/eclipse/codetemplates.xml
new file mode 100644
index 000000000..6ec5534cb
--- /dev/null
+++ b/settings/eclipse/codetemplates.xml
@@ -0,0 +1,30 @@
+
\ No newline at end of file
diff --git a/settings/eclipse/formatter.xml b/settings/eclipse/formatter.xml
new file mode 100644
index 000000000..8a8c716c1
--- /dev/null
+++ b/settings/eclipse/formatter.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings/eclipse/project.dictionary b/settings/eclipse/project.dictionary
new file mode 100644
index 000000000..71dcae451
--- /dev/null
+++ b/settings/eclipse/project.dictionary
@@ -0,0 +1,17 @@
+plugins
+plugin
+seamlessly
+polymorphic
+deserialize
+deserialized
+iterable
+hibernate
+barkeeper
+deserializer
+servlet
+multi
+salesmanagement
+offermanagement
+staffmanagement
+tablemanagement
+usecsae
diff --git a/settings/eclipse/project.dictionary.readme.txt b/settings/eclipse/project.dictionary.readme.txt
new file mode 100644
index 000000000..626fc6a30
--- /dev/null
+++ b/settings/eclipse/project.dictionary.readme.txt
@@ -0,0 +1,6 @@
+In Eclipse ist ein Spell-Checker eingebaut:
+Preferences > Editors > Text Editors > Spelling
+Dort aktivieren und ein ASCII Dictionary einbinden.
+Korrekturvorschläge mit [Ctrl.][1]
+Für weitere Details siehe hier:
+http://sww.sdm.de/app/snuggets/bin/view/Technik/Eclipse#Rechtschreibpr%FCfung
diff --git a/settings/eclipse/workspace/replacement-patterns.properties b/settings/eclipse/workspace/replacement-patterns.properties
new file mode 100644
index 000000000..e69de29bb
diff --git a/settings/eclipse/workspace/setup/.metadata/.mylyn/repositories.xml.zip b/settings/eclipse/workspace/setup/.metadata/.mylyn/repositories.xml.zip
new file mode 100644
index 000000000..e749daa61
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.mylyn/repositories.xml.zip differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.indexes/properties.index b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.indexes/properties.index
new file mode 100644
index 000000000..1e099f3bf
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.indexes/properties.index differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/org.eclipse.egit.core/GitProjectData.properties b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/org.eclipse.egit.core/GitProjectData.properties
new file mode 100644
index 000000000..a964be4b9
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/org.eclipse.egit.core/GitProjectData.properties
@@ -0,0 +1,3 @@
+#GitProjectData
+#Wed Apr 23 14:32:47 CEST 2014
+.gitdir=../.git
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index
new file mode 100644
index 000000000..1e099f3bf
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.syncinfo b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.syncinfo
new file mode 100644
index 000000000..5de15984c
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.syncinfo differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties
new file mode 100644
index 000000000..22485feb2
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties
@@ -0,0 +1,3 @@
+#GitProjectData
+#Wed Apr 23 14:33:15 CEST 2014
+.gitdir=../.git
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 000000000..25cb955ba
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
new file mode 100644
index 000000000..af32e4316
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 000000000..6b2aaa764
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
new file mode 100644
index 000000000..fe000829f
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 000000000..c28d86b6c
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs
new file mode 100644
index 000000000..ef52540a5
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+themeid=org.eclipse.e4.ui.css.theme.e4_classic
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 000000000..603daaa9a
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,6 @@
+PROBLEMS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+org.eclipse.ui.internal.views.markers.CachedMarkerBuilderorg.eclipse.ui.views.ProblemView=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
+platformState=1360165333794
+quickStart=false
+tipsAndTricks=true
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 000000000..9a2179c64
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,6 @@
+#Thu Mar 15 15:24:24 CET 2012
+PLUGINS_NOT_ACTIVATED_ON_STARTUP=org.eclipse.m2e.discovery;
+eclipse.preferences.version=1
+//org.eclipse.ui.commands/state/org.eclipse.wst.xml.views.XPathView.processor.xpathprocessor/org.eclipse.ui.commands.radioState=xpath10
+ENABLED_DECORATORS=org.eclipse.jst.ws.jaxws.dom.integration.navigator.WebServiceDecorator\:true,org.eclipse.wst.server.ui.decorator\:false,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.DependencyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ColumnDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ForeignKeyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.IndexTriggerDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.bookmarkDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.FilterNodeDecoration\:true,org.eclipse.datatools.connectivity.ui.decorator.contentextension\:false,org.eclipse.datatools.enablement.ingres.ui.providers.decorators.SynonymDecorationService\:true,org.eclipse.datatools.enablement.ingres.internal.ui.providers.decorators.ParameterDecorationService\:true,org.eclipse.datatools.enablement.sybase.asa.proxytabledecorator\:true,org.eclipse.datatools.enablement.sybase.ase.webservicetabledecorator\:true,org.eclipse.datatools.enablement.sybase.systemtabledecorator\:true,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:true,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_ejb\:true,org.eclipse.jst.j2ee.navigator.internal.J2EEProjectDecorator\:true,org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanDecorator\:true,org.eclipse.jst.jee.navigator.internal.JEEProjectDecorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_servlet\:true,org.eclipse.jst.servlet.ui.Decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.pde.ui.binaryProjectDecorator\:false,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,org.eclipse.wst.jsdt.ui.override.decorator\:true,org.eclipse.wst.server.ui.navigatorDecorator\:true,
+org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n\r\n
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.sonar.ide.eclipse.core.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.sonar.ide.eclipse.core.prefs
new file mode 100644
index 000000000..6cb2801b0
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.sonar.ide.eclipse.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+servers/http\:\\2f\\2foasp-ci.cloudapp.net\\2fsonarqube/auth=false
+servers/initialized=true
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.commons.ui.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.commons.ui.prefs
new file mode 100644
index 000000000..3545b9225
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.commons.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+show.tip=false
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.dashboard.ui.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.dashboard.ui.prefs
new file mode 100644
index 000000000..13fae2580
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.springsource.ide.eclipse.dashboard.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.springsource.ide.eclipse.dashboard.uidashboard.startup=false
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.tools.usage.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.tools.usage.prefs
new file mode 100644
index 000000000..110bc6950
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.tools.usage.prefs
@@ -0,0 +1,2 @@
+ask_user_for_usage_report_preference=false
+eclipse.preferences.version=1
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.ui.prefs b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.ui.prefs
new file mode 100644
index 000000000..6b0a71e3f
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.tigris.subversion.subclipse.ui.prefs
@@ -0,0 +1,4 @@
+#Sat Mar 17 00:14:33 CET 2012
+eclipse.preferences.version=1
+pref_use_quickdiffannotate=always
+pref_merge_provider=CollabNet Desktop
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.datatools.connectivity/ServerProfiles.dat b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.datatools.connectivity/ServerProfiles.dat
new file mode 100644
index 000000000..a32c83c57
Binary files /dev/null and b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.datatools.connectivity/ServerProfiles.dat differ
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.mylyn.builds.ui/builds.xmi b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.mylyn.builds.ui/builds.xmi
new file mode 100644
index 000000000..0a22f4ca9
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.mylyn.builds.ui/builds.xmi
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
new file mode 100644
index 000000000..4950215db
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
@@ -0,0 +1,8 @@
+
+
diff --git a/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml
new file mode 100644
index 000000000..1d3030ecd
--- /dev/null
+++ b/settings/eclipse/workspace/setup/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/settings/eclipse/workspace/setup/Servers/.project b/settings/eclipse/workspace/setup/Servers/.project
new file mode 100644
index 000000000..0fa764d92
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/.project
@@ -0,0 +1,11 @@
+
+
+ Servers
+
+
+
+
+
+
+
+
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.policy b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.policy
new file mode 100644
index 000000000..96b387afa
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.policy
@@ -0,0 +1,242 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// ============================================================================
+// catalina.policy - Security Policy Permissions for Tomcat 7
+//
+// This file contains a default set of security policies to be enforced (by the
+// JVM) when Catalina is executed with the "-security" option. In addition
+// to the permissions granted here, the following additional permissions are
+// granted to each web application:
+//
+// * Read access to the web application's document root directory
+// * Read, write and delete access to the web application's working directory
+//
+// $Id: catalina.policy 1189147 2011-10-26 11:57:37Z kkolinko $
+// ============================================================================
+
+
+// ========== SYSTEM CODE PERMISSIONS =========================================
+
+
+// These permissions apply to javac
+grant codeBase "file:${java.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions
+grant codeBase "file:${java.home}/jre/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/../lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions when
+// ${java.home} points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+
+// ========== CATALINA CODE PERMISSIONS =======================================
+
+
+// These permissions apply to the daemon code
+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the logging API
+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
+// update this section accordingly.
+// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
+grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
+ permission java.io.FilePermission
+ "${java.home}${file.separator}lib${file.separator}logging.properties", "read";
+
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs", "read, write";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs${file.separator}*", "read, write";
+
+ permission java.lang.RuntimePermission "shutdownHooks";
+ permission java.lang.RuntimePermission "getClassLoader";
+ permission java.lang.RuntimePermission "setContextClassLoader";
+
+ permission java.util.logging.LoggingPermission "control";
+
+ permission java.util.PropertyPermission "java.util.logging.config.class", "read";
+ permission java.util.PropertyPermission "java.util.logging.config.file", "read";
+ permission java.util.PropertyPermission "catalina.base", "read";
+
+ // Note: To enable per context logging configuration, permit read access to
+ // the appropriate file. Be sure that the logging configuration is
+ // secure before enabling such access.
+ // E.g. for the examples web application (uncomment and unwrap
+ // the following to be on a single line):
+ // permission java.io.FilePermission "${catalina.base}${file.separator}
+ // webapps${file.separator}examples${file.separator}WEB-INF
+ // ${file.separator}classes${file.separator}logging.properties", "read";
+};
+
+// These permissions apply to the server startup code
+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the servlet API classes
+// and those that are shared across all class loaders
+// located in the "lib" directory
+grant codeBase "file:${catalina.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+
+// If using a per instance lib directory, i.e. ${catalina.base}/lib,
+// then the following permission will need to be uncommented
+// grant codeBase "file:${catalina.base}/lib/-" {
+// permission java.security.AllPermission;
+// };
+
+
+// ========== WEB APPLICATION PERMISSIONS =====================================
+
+
+// These permissions are granted by default to all web applications
+// In addition, a web application will be given a read FilePermission
+// and JndiPermission for all files and directories in its document root.
+grant {
+ // Required for JNDI lookup of named JDBC DataSource's and
+ // javamail named MimePart DataSource used to send mail
+ permission java.util.PropertyPermission "java.home", "read";
+ permission java.util.PropertyPermission "java.naming.*", "read";
+ permission java.util.PropertyPermission "javax.sql.*", "read";
+
+ // OS Specific properties to allow read access
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
+
+ // JVM properties to allow read access
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
+
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
+
+ // Required for OpenJMX
+ permission java.lang.RuntimePermission "getAttribute";
+
+ // Allow read of JAXP compliant XML parser debug
+ permission java.util.PropertyPermission "jaxp.debug", "read";
+
+ // All JSPs need to be able to read this package
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";
+
+ // Precompiled JSPs need access to these packages.
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
+ permission java.lang.RuntimePermission
+ "accessClassInPackage.org.apache.jasper.runtime.*";
+
+ // Precompiled JSPs need access to these system properties.
+ permission java.util.PropertyPermission
+ "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
+ permission java.util.PropertyPermission
+ "org.apache.el.parser.COERCE_TO_ZERO", "read";
+
+ // The cookie code needs these.
+ permission java.util.PropertyPermission
+ "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";
+ permission java.util.PropertyPermission
+ "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";
+ permission java.util.PropertyPermission
+ "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";
+
+ // Applications using Comet need to be able to access this package
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";
+};
+
+
+// The Manager application needs access to the following packages to support the
+// session display functionality. These settings support the following
+// configurations:
+// - default CATALINA_HOME == CATALINA_BASE
+// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE
+// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME
+grant codeBase "file:${catalina.base}/webapps/manager/-" {
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
+};
+grant codeBase "file:${catalina.home}/webapps/manager/-" {
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
+};
+
+// You can assign additional permissions to particular web applications by
+// adding additional "grant" entries here, based on the code base for that
+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
+//
+// Different permissions can be granted to JSP pages, classes loaded from
+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
+//
+// For instance, assume that the standard "examples" application
+// included a JDBC driver that needed to establish a network connection to the
+// corresponding database and used the scrape taglib to get the weather from
+// the NOAA web server. You might create a "grant" entries like this:
+//
+// The permissions granted to the context root directory apply to JSP pages.
+// grant codeBase "file:${catalina.base}/webapps/examples/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+//
+// The permissions granted to the context WEB-INF/classes directory
+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
+// };
+//
+// The permission granted to your JDBC driver
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// };
+// The permission granted to the scrape taglib
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.properties b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.properties
new file mode 100644
index 000000000..652a57c32
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/catalina.properties
@@ -0,0 +1,119 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
+
+#
+#
+# List of comma-separated paths defining the contents of the "common"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank,the JVM system loader will be used as Catalina's "common"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
+
+#
+# List of comma-separated paths defining the contents of the "server"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank, the "common" loader will be used as Catalina's "server"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+server.loader=
+
+#
+# List of comma-separated paths defining the contents of the "shared"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
+# the "common" loader will be used as Catalina's "shared" loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+# Please note that for single jars, e.g. bar.jar, you need the URL form
+# starting with file:.
+shared.loader=
+
+# List of JAR files that should not be scanned for configuration information
+# such as web fragments, TLD files etc. It must be a comma separated list of
+# JAR file names.
+# The JARs listed below include:
+# - Tomcat Bootstrap JARs
+# - Tomcat API JARs
+# - Catalina JARs
+# - Jasper JARs
+# - Tomcat JARs
+# - Common non-Tomcat JARs
+# - Sun JDK JARs
+# - Apple JDK JARs
+tomcat.util.scan.DefaultJarScanner.jarsToSkip=\
+bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\
+annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,\
+catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,\
+jasper.jar,jasper-el.jar,ecj-*.jar,\
+tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,\
+tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\
+tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\
+tomcat-jdbc.jar,\
+commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\
+commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\
+commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\
+commons-math*.jar,commons-pool*.jar,\
+jstl.jar,\
+geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\
+ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\
+jmx-tools.jar,jta*.jar,log4j*.jar,mail*.jar,slf4j*.jar,\
+xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\
+dnsns.jar,ldapsec.jar,localedata.jar,sunjce_provider.jar,sunmscapi.jar,\
+sunpkcs11.jar,jhall.jar,tools.jar,\
+sunec.jar,zipfs.jar,\
+apple_provider.jar,AppleScriptEngine.jar,CoreAudio.jar,dns_sd.jar,\
+j3daudio.jar,j3dcore.jar,j3dutils.jar,jai_core.jar,jai_codec.jar,\
+mlibwrapper_jai.jar,MRJToolkit.jar,vecmath.jar,\
+junit.jar,junit-*.jar,ant-launcher.jar
+
+#
+# String cache configuration.
+tomcat.util.buf.StringCache.byte.enabled=true
+#tomcat.util.buf.StringCache.char.enabled=true
+#tomcat.util.buf.StringCache.trainThreshold=500000
+#tomcat.util.buf.StringCache.cacheSize=5000
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/context.xml b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/context.xml
new file mode 100644
index 000000000..b8f4ff945
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/context.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ WEB-INF/web.xml
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/server.xml b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/server.xml
new file mode 100644
index 000000000..30e116360
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/server.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/tomcat-users.xml b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/tomcat-users.xml
new file mode 100644
index 000000000..bdc239568
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/tomcat-users.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/setup/Servers/Tomcat7-config/web.xml b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/web.xml
new file mode 100644
index 000000000..ca2d153f7
--- /dev/null
+++ b/settings/eclipse/workspace/setup/Servers/Tomcat7-config/web.xml
@@ -0,0 +1,4192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ default
+ org.apache.catalina.servlets.DefaultServlet
+
+ debug
+ 0
+
+
+ listings
+ false
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jsp
+ org.apache.jasper.servlet.JspServlet
+
+ fork
+ false
+
+
+ xpoweredBy
+ false
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ default
+ /
+
+
+
+
+ jsp
+ *.jsp
+ *.jspx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+ 123
+ application/vnd.lotus-1-2-3
+
+
+ 3dml
+ text/vnd.in3d.3dml
+
+
+ 3g2
+ video/3gpp2
+
+
+ 3gp
+ video/3gpp
+
+
+ 7z
+ application/x-7z-compressed
+
+
+ aab
+ application/x-authorware-bin
+
+
+ aac
+ audio/x-aac
+
+
+ aam
+ application/x-authorware-map
+
+
+ aas
+ application/x-authorware-seg
+
+
+ abs
+ audio/x-mpeg
+
+
+ abw
+ application/x-abiword
+
+
+ ac
+ application/pkix-attr-cert
+
+
+ acc
+ application/vnd.americandynamics.acc
+
+
+ ace
+ application/x-ace-compressed
+
+
+ acu
+ application/vnd.acucobol
+
+
+ acutc
+ application/vnd.acucorp
+
+
+ adp
+ audio/adpcm
+
+
+ aep
+ application/vnd.audiograph
+
+
+ afm
+ application/x-font-type1
+
+
+ afp
+ application/vnd.ibm.modcap
+
+
+ ahead
+ application/vnd.ahead.space
+
+
+ ai
+ application/postscript
+
+
+ aif
+ audio/x-aiff
+
+
+ aifc
+ audio/x-aiff
+
+
+ aiff
+ audio/x-aiff
+
+
+ aim
+ application/x-aim
+
+
+ air
+ application/vnd.adobe.air-application-installer-package+zip
+
+
+ ait
+ application/vnd.dvb.ait
+
+
+ ami
+ application/vnd.amiga.ami
+
+
+ anx
+ application/annodex
+
+
+ apk
+ application/vnd.android.package-archive
+
+
+ application
+ application/x-ms-application
+
+
+ apr
+ application/vnd.lotus-approach
+
+
+ art
+ image/x-jg
+
+
+ asc
+ application/pgp-signature
+
+
+ asf
+ video/x-ms-asf
+
+
+ asm
+ text/x-asm
+
+
+ aso
+ application/vnd.accpac.simply.aso
+
+
+ asx
+ video/x-ms-asf
+
+
+ atc
+ application/vnd.acucorp
+
+
+ atom
+ application/atom+xml
+
+
+ atomcat
+ application/atomcat+xml
+
+
+ atomsvc
+ application/atomsvc+xml
+
+
+ atx
+ application/vnd.antix.game-component
+
+
+ au
+ audio/basic
+
+
+ avi
+ video/x-msvideo
+
+
+ avx
+ video/x-rad-screenplay
+
+
+ aw
+ application/applixware
+
+
+ axa
+ audio/annodex
+
+
+ axv
+ video/annodex
+
+
+ azf
+ application/vnd.airzip.filesecure.azf
+
+
+ azs
+ application/vnd.airzip.filesecure.azs
+
+
+ azw
+ application/vnd.amazon.ebook
+
+
+ bat
+ application/x-msdownload
+
+
+ bcpio
+ application/x-bcpio
+
+
+ bdf
+ application/x-font-bdf
+
+
+ bdm
+ application/vnd.syncml.dm+wbxml
+
+
+ bed
+ application/vnd.realvnc.bed
+
+
+ bh2
+ application/vnd.fujitsu.oasysprs
+
+
+ bin
+ application/octet-stream
+
+
+ bmi
+ application/vnd.bmi
+
+
+ bmp
+ image/bmp
+
+
+ body
+ text/html
+
+
+ book
+ application/vnd.framemaker
+
+
+ box
+ application/vnd.previewsystems.box
+
+
+ boz
+ application/x-bzip2
+
+
+ bpk
+ application/octet-stream
+
+
+ btif
+ image/prs.btif
+
+
+ bz
+ application/x-bzip
+
+
+ bz2
+ application/x-bzip2
+
+
+ c
+ text/x-c
+
+
+ c11amc
+ application/vnd.cluetrust.cartomobile-config
+
+
+ c11amz
+ application/vnd.cluetrust.cartomobile-config-pkg
+
+
+ c4d
+ application/vnd.clonk.c4group
+
+
+ c4f
+ application/vnd.clonk.c4group
+
+
+ c4g
+ application/vnd.clonk.c4group
+
+
+ c4p
+ application/vnd.clonk.c4group
+
+
+ c4u
+ application/vnd.clonk.c4group
+
+
+ cab
+ application/vnd.ms-cab-compressed
+
+
+ car
+ application/vnd.curl.car
+
+
+ cat
+ application/vnd.ms-pki.seccat
+
+
+ cc
+ text/x-c
+
+
+ cct
+ application/x-director
+
+
+ ccxml
+ application/ccxml+xml
+
+
+ cdbcmsg
+ application/vnd.contact.cmsg
+
+
+ cdf
+ application/x-cdf
+
+
+ cdkey
+ application/vnd.mediastation.cdkey
+
+
+ cdmia
+ application/cdmi-capability
+
+
+ cdmic
+ application/cdmi-container
+
+
+ cdmid
+ application/cdmi-domain
+
+
+ cdmio
+ application/cdmi-object
+
+
+ cdmiq
+ application/cdmi-queue
+
+
+ cdx
+ chemical/x-cdx
+
+
+ cdxml
+ application/vnd.chemdraw+xml
+
+
+ cdy
+ application/vnd.cinderella
+
+
+ cer
+ application/pkix-cert
+
+
+ cgm
+ image/cgm
+
+
+ chat
+ application/x-chat
+
+
+ chm
+ application/vnd.ms-htmlhelp
+
+
+ chrt
+ application/vnd.kde.kchart
+
+
+ cif
+ chemical/x-cif
+
+
+ cii
+ application/vnd.anser-web-certificate-issue-initiation
+
+
+ cil
+ application/vnd.ms-artgalry
+
+
+ cla
+ application/vnd.claymore
+
+
+ class
+ application/java
+
+
+ clkk
+ application/vnd.crick.clicker.keyboard
+
+
+ clkp
+ application/vnd.crick.clicker.palette
+
+
+ clkt
+ application/vnd.crick.clicker.template
+
+
+ clkw
+ application/vnd.crick.clicker.wordbank
+
+
+ clkx
+ application/vnd.crick.clicker
+
+
+ clp
+ application/x-msclip
+
+
+ cmc
+ application/vnd.cosmocaller
+
+
+ cmdf
+ chemical/x-cmdf
+
+
+ cml
+ chemical/x-cml
+
+
+ cmp
+ application/vnd.yellowriver-custom-menu
+
+
+ cmx
+ image/x-cmx
+
+
+ cod
+ application/vnd.rim.cod
+
+
+ com
+ application/x-msdownload
+
+
+ conf
+ text/plain
+
+
+ cpio
+ application/x-cpio
+
+
+ cpp
+ text/x-c
+
+
+ cpt
+ application/mac-compactpro
+
+
+ crd
+ application/x-mscardfile
+
+
+ crl
+ application/pkix-crl
+
+
+ crt
+ application/x-x509-ca-cert
+
+
+ cryptonote
+ application/vnd.rig.cryptonote
+
+
+ csh
+ application/x-csh
+
+
+ csml
+ chemical/x-csml
+
+
+ csp
+ application/vnd.commonspace
+
+
+ css
+ text/css
+
+
+ cst
+ application/x-director
+
+
+ csv
+ text/csv
+
+
+ cu
+ application/cu-seeme
+
+
+ curl
+ text/vnd.curl
+
+
+ cww
+ application/prs.cww
+
+
+ cxt
+ application/x-director
+
+
+ cxx
+ text/x-c
+
+
+ dae
+ model/vnd.collada+xml
+
+
+ daf
+ application/vnd.mobius.daf
+
+
+ dataless
+ application/vnd.fdsn.seed
+
+
+ davmount
+ application/davmount+xml
+
+
+ dcr
+ application/x-director
+
+
+ dcurl
+ text/vnd.curl.dcurl
+
+
+ dd2
+ application/vnd.oma.dd2+xml
+
+
+ ddd
+ application/vnd.fujixerox.ddd
+
+
+ deb
+ application/x-debian-package
+
+
+ def
+ text/plain
+
+
+ deploy
+ application/octet-stream
+
+
+ der
+ application/x-x509-ca-cert
+
+
+ dfac
+ application/vnd.dreamfactory
+
+
+ dib
+ image/bmp
+
+
+ dic
+ text/x-c
+
+
+ dir
+ application/x-director
+
+
+ dis
+ application/vnd.mobius.dis
+
+
+ dist
+ application/octet-stream
+
+
+ distz
+ application/octet-stream
+
+
+ djv
+ image/vnd.djvu
+
+
+ djvu
+ image/vnd.djvu
+
+
+ dll
+ application/x-msdownload
+
+
+ dmg
+ application/octet-stream
+
+
+ dms
+ application/octet-stream
+
+
+ dna
+ application/vnd.dna
+
+
+ doc
+ application/msword
+
+
+ docm
+ application/vnd.ms-word.document.macroenabled.12
+
+
+ docx
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document
+
+
+ dot
+ application/msword
+
+
+ dotm
+ application/vnd.ms-word.template.macroenabled.12
+
+
+ dotx
+ application/vnd.openxmlformats-officedocument.wordprocessingml.template
+
+
+ dp
+ application/vnd.osgi.dp
+
+
+ dpg
+ application/vnd.dpgraph
+
+
+ dra
+ audio/vnd.dra
+
+
+ dsc
+ text/prs.lines.tag
+
+
+ dssc
+ application/dssc+der
+
+
+ dtb
+ application/x-dtbook+xml
+
+
+ dtd
+ application/xml-dtd
+
+
+ dts
+ audio/vnd.dts
+
+
+ dtshd
+ audio/vnd.dts.hd
+
+
+ dump
+ application/octet-stream
+
+
+ dv
+ video/x-dv
+
+
+ dvi
+ application/x-dvi
+
+
+ dwf
+ model/vnd.dwf
+
+
+ dwg
+ image/vnd.dwg
+
+
+ dxf
+ image/vnd.dxf
+
+
+ dxp
+ application/vnd.spotfire.dxp
+
+
+ dxr
+ application/x-director
+
+
+ ecelp4800
+ audio/vnd.nuera.ecelp4800
+
+
+ ecelp7470
+ audio/vnd.nuera.ecelp7470
+
+
+ ecelp9600
+ audio/vnd.nuera.ecelp9600
+
+
+ ecma
+ application/ecmascript
+
+
+ edm
+ application/vnd.novadigm.edm
+
+
+ edx
+ application/vnd.novadigm.edx
+
+
+ efif
+ application/vnd.picsel
+
+
+ ei6
+ application/vnd.pg.osasli
+
+
+ elc
+ application/octet-stream
+
+
+ eml
+ message/rfc822
+
+
+ emma
+ application/emma+xml
+
+
+ eol
+ audio/vnd.digital-winds
+
+
+ eot
+ application/vnd.ms-fontobject
+
+
+ eps
+ application/postscript
+
+
+ epub
+ application/epub+zip
+
+
+ es3
+ application/vnd.eszigno3+xml
+
+
+ esf
+ application/vnd.epson.esf
+
+
+ et3
+ application/vnd.eszigno3+xml
+
+
+ etx
+ text/x-setext
+
+
+ exe
+ application/octet-stream
+
+
+ exi
+ application/exi
+
+
+ ext
+ application/vnd.novadigm.ext
+
+
+ ez
+ application/andrew-inset
+
+
+ ez2
+ application/vnd.ezpix-album
+
+
+ ez3
+ application/vnd.ezpix-package
+
+
+ f
+ text/x-fortran
+
+
+ f4v
+ video/x-f4v
+
+
+ f77
+ text/x-fortran
+
+
+ f90
+ text/x-fortran
+
+
+ fbs
+ image/vnd.fastbidsheet
+
+
+ fcs
+ application/vnd.isac.fcs
+
+
+ fdf
+ application/vnd.fdf
+
+
+ fe_launch
+ application/vnd.denovo.fcselayout-link
+
+
+ fg5
+ application/vnd.fujitsu.oasysgp
+
+
+ fgd
+ application/x-director
+
+
+ fh
+ image/x-freehand
+
+
+ fh4
+ image/x-freehand
+
+
+ fh5
+ image/x-freehand
+
+
+ fh7
+ image/x-freehand
+
+
+ fhc
+ image/x-freehand
+
+
+ fig
+ application/x-xfig
+
+
+ flac
+ audio/flac
+
+
+ fli
+ video/x-fli
+
+
+ flo
+ application/vnd.micrografx.flo
+
+
+ flv
+ video/x-flv
+
+
+ flw
+ application/vnd.kde.kivio
+
+
+ flx
+ text/vnd.fmi.flexstor
+
+
+ fly
+ text/vnd.fly
+
+
+ fm
+ application/vnd.framemaker
+
+
+ fnc
+ application/vnd.frogans.fnc
+
+
+ for
+ text/x-fortran
+
+
+ fpx
+ image/vnd.fpx
+
+
+ frame
+ application/vnd.framemaker
+
+
+ fsc
+ application/vnd.fsc.weblaunch
+
+
+ fst
+ image/vnd.fst
+
+
+ ftc
+ application/vnd.fluxtime.clip
+
+
+ fti
+ application/vnd.anser-web-funds-transfer-initiation
+
+
+ fvt
+ video/vnd.fvt
+
+
+ fxp
+ application/vnd.adobe.fxp
+
+
+ fxpl
+ application/vnd.adobe.fxp
+
+
+ fzs
+ application/vnd.fuzzysheet
+
+
+ g2w
+ application/vnd.geoplan
+
+
+ g3
+ image/g3fax
+
+
+ g3w
+ application/vnd.geospace
+
+
+ gac
+ application/vnd.groove-account
+
+
+ gdl
+ model/vnd.gdl
+
+
+ geo
+ application/vnd.dynageo
+
+
+ gex
+ application/vnd.geometry-explorer
+
+
+ ggb
+ application/vnd.geogebra.file
+
+
+ ggt
+ application/vnd.geogebra.tool
+
+
+ ghf
+ application/vnd.groove-help
+
+
+ gif
+ image/gif
+
+
+ gim
+ application/vnd.groove-identity-message
+
+
+ gmx
+ application/vnd.gmx
+
+
+ gnumeric
+ application/x-gnumeric
+
+
+ gph
+ application/vnd.flographit
+
+
+ gqf
+ application/vnd.grafeq
+
+
+ gqs
+ application/vnd.grafeq
+
+
+ gram
+ application/srgs
+
+
+ gre
+ application/vnd.geometry-explorer
+
+
+ grv
+ application/vnd.groove-injector
+
+
+ grxml
+ application/srgs+xml
+
+
+ gsf
+ application/x-font-ghostscript
+
+
+ gtar
+ application/x-gtar
+
+
+ gtm
+ application/vnd.groove-tool-message
+
+
+ gtw
+ model/vnd.gtw
+
+
+ gv
+ text/vnd.graphviz
+
+
+ gxt
+ application/vnd.geonext
+
+
+ gz
+ application/x-gzip
+
+
+ h
+ text/x-c
+
+
+ h261
+ video/h261
+
+
+ h263
+ video/h263
+
+
+ h264
+ video/h264
+
+
+ hal
+ application/vnd.hal+xml
+
+
+ hbci
+ application/vnd.hbci
+
+
+ hdf
+ application/x-hdf
+
+
+ hh
+ text/x-c
+
+
+ hlp
+ application/winhlp
+
+
+ hpgl
+ application/vnd.hp-hpgl
+
+
+ hpid
+ application/vnd.hp-hpid
+
+
+ hps
+ application/vnd.hp-hps
+
+
+ hqx
+ application/mac-binhex40
+
+
+ htc
+ text/x-component
+
+
+ htke
+ application/vnd.kenameaapp
+
+
+ htm
+ text/html
+
+
+ html
+ text/html
+
+
+ hvd
+ application/vnd.yamaha.hv-dic
+
+
+ hvp
+ application/vnd.yamaha.hv-voice
+
+
+ hvs
+ application/vnd.yamaha.hv-script
+
+
+ i2g
+ application/vnd.intergeo
+
+
+ icc
+ application/vnd.iccprofile
+
+
+ ice
+ x-conference/x-cooltalk
+
+
+ icm
+ application/vnd.iccprofile
+
+
+ ico
+ image/x-icon
+
+
+ ics
+ text/calendar
+
+
+ ief
+ image/ief
+
+
+ ifb
+ text/calendar
+
+
+ ifm
+ application/vnd.shana.informed.formdata
+
+
+ iges
+ model/iges
+
+
+ igl
+ application/vnd.igloader
+
+
+ igm
+ application/vnd.insors.igm
+
+
+ igs
+ model/iges
+
+
+ igx
+ application/vnd.micrografx.igx
+
+
+ iif
+ application/vnd.shana.informed.interchange
+
+
+ imp
+ application/vnd.accpac.simply.imp
+
+
+ ims
+ application/vnd.ms-ims
+
+
+ in
+ text/plain
+
+
+ ipfix
+ application/ipfix
+
+
+ ipk
+ application/vnd.shana.informed.package
+
+
+ irm
+ application/vnd.ibm.rights-management
+
+
+ irp
+ application/vnd.irepository.package+xml
+
+
+ iso
+ application/octet-stream
+
+
+ itp
+ application/vnd.shana.informed.formtemplate
+
+
+ ivp
+ application/vnd.immervision-ivp
+
+
+ ivu
+ application/vnd.immervision-ivu
+
+
+ jad
+ text/vnd.sun.j2me.app-descriptor
+
+
+ jam
+ application/vnd.jam
+
+
+ jar
+ application/java-archive
+
+
+ java
+ text/x-java-source
+
+
+ jisp
+ application/vnd.jisp
+
+
+ jlt
+ application/vnd.hp-jlyt
+
+
+ jnlp
+ application/x-java-jnlp-file
+
+
+ joda
+ application/vnd.joost.joda-archive
+
+
+ jpe
+ image/jpeg
+
+
+ jpeg
+ image/jpeg
+
+
+ jpg
+ image/jpeg
+
+
+ jpgm
+ video/jpm
+
+
+ jpgv
+ video/jpeg
+
+
+ jpm
+ video/jpm
+
+
+ js
+ application/javascript
+
+
+ jsf
+ text/plain
+
+
+ json
+ application/json
+
+
+ jspf
+ text/plain
+
+
+ kar
+ audio/midi
+
+
+ karbon
+ application/vnd.kde.karbon
+
+
+ kfo
+ application/vnd.kde.kformula
+
+
+ kia
+ application/vnd.kidspiration
+
+
+ kml
+ application/vnd.google-earth.kml+xml
+
+
+ kmz
+ application/vnd.google-earth.kmz
+
+
+ kne
+ application/vnd.kinar
+
+
+ knp
+ application/vnd.kinar
+
+
+ kon
+ application/vnd.kde.kontour
+
+
+ kpr
+ application/vnd.kde.kpresenter
+
+
+ kpt
+ application/vnd.kde.kpresenter
+
+
+ ksp
+ application/vnd.kde.kspread
+
+
+ ktr
+ application/vnd.kahootz
+
+
+ ktx
+ image/ktx
+
+
+ ktz
+ application/vnd.kahootz
+
+
+ kwd
+ application/vnd.kde.kword
+
+
+ kwt
+ application/vnd.kde.kword
+
+
+ lasxml
+ application/vnd.las.las+xml
+
+
+ latex
+ application/x-latex
+
+
+ lbd
+ application/vnd.llamagraphics.life-balance.desktop
+
+
+ lbe
+ application/vnd.llamagraphics.life-balance.exchange+xml
+
+
+ les
+ application/vnd.hhe.lesson-player
+
+
+ lha
+ application/octet-stream
+
+
+ link66
+ application/vnd.route66.link66+xml
+
+
+ list
+ text/plain
+
+
+ list3820
+ application/vnd.ibm.modcap
+
+
+ listafp
+ application/vnd.ibm.modcap
+
+
+ log
+ text/plain
+
+
+ lostxml
+ application/lost+xml
+
+
+ lrf
+ application/octet-stream
+
+
+ lrm
+ application/vnd.ms-lrm
+
+
+ ltf
+ application/vnd.frogans.ltf
+
+
+ lvp
+ audio/vnd.lucent.voice
+
+
+ lwp
+ application/vnd.lotus-wordpro
+
+
+ lzh
+ application/octet-stream
+
+
+ m13
+ application/x-msmediaview
+
+
+ m14
+ application/x-msmediaview
+
+
+ m1v
+ video/mpeg
+
+
+ m21
+ application/mp21
+
+
+ m2a
+ audio/mpeg
+
+
+ m2v
+ video/mpeg
+
+
+ m3a
+ audio/mpeg
+
+
+ m3u
+ audio/x-mpegurl
+
+
+ m3u8
+ application/vnd.apple.mpegurl
+
+
+ m4a
+ audio/mp4
+
+
+ m4b
+ audio/mp4
+
+
+ m4r
+ audio/mp4
+
+
+ m4u
+ video/vnd.mpegurl
+
+
+ m4v
+ video/mp4
+
+
+ ma
+ application/mathematica
+
+
+ mac
+ image/x-macpaint
+
+
+ mads
+ application/mads+xml
+
+
+ mag
+ application/vnd.ecowin.chart
+
+
+ maker
+ application/vnd.framemaker
+
+
+ man
+ text/troff
+
+
+ mathml
+ application/mathml+xml
+
+
+ mb
+ application/mathematica
+
+
+ mbk
+ application/vnd.mobius.mbk
+
+
+ mbox
+ application/mbox
+
+
+ mc1
+ application/vnd.medcalcdata
+
+
+ mcd
+ application/vnd.mcd
+
+
+ mcurl
+ text/vnd.curl.mcurl
+
+
+ mdb
+ application/x-msaccess
+
+
+ mdi
+ image/vnd.ms-modi
+
+
+ me
+ text/troff
+
+
+ mesh
+ model/mesh
+
+
+ meta4
+ application/metalink4+xml
+
+
+ mets
+ application/mets+xml
+
+
+ mfm
+ application/vnd.mfmp
+
+
+ mgp
+ application/vnd.osgeo.mapguide.package
+
+
+ mgz
+ application/vnd.proteus.magazine
+
+
+ mid
+ audio/midi
+
+
+ midi
+ audio/midi
+
+
+ mif
+ application/x-mif
+
+
+ mime
+ message/rfc822
+
+
+ mj2
+ video/mj2
+
+
+ mjp2
+ video/mj2
+
+
+ mlp
+ application/vnd.dolby.mlp
+
+
+ mmd
+ application/vnd.chipnuts.karaoke-mmd
+
+
+ mmf
+ application/vnd.smaf
+
+
+ mmr
+ image/vnd.fujixerox.edmics-mmr
+
+
+ mny
+ application/x-msmoney
+
+
+ mobi
+ application/x-mobipocket-ebook
+
+
+ mods
+ application/mods+xml
+
+
+ mov
+ video/quicktime
+
+
+ movie
+ video/x-sgi-movie
+
+
+ mp1
+ audio/mpeg
+
+
+ mp2
+ audio/mpeg
+
+
+ mp21
+ application/mp21
+
+
+ mp2a
+ audio/mpeg
+
+
+ mp3
+ audio/mpeg
+
+
+ mp4
+ video/mp4
+
+
+ mp4a
+ audio/mp4
+
+
+ mp4s
+ application/mp4
+
+
+ mp4v
+ video/mp4
+
+
+ mpa
+ audio/mpeg
+
+
+ mpc
+ application/vnd.mophun.certificate
+
+
+ mpe
+ video/mpeg
+
+
+ mpeg
+ video/mpeg
+
+
+ mpega
+ audio/x-mpeg
+
+
+ mpg
+ video/mpeg
+
+
+ mpg4
+ video/mp4
+
+
+ mpga
+ audio/mpeg
+
+
+ mpkg
+ application/vnd.apple.installer+xml
+
+
+ mpm
+ application/vnd.blueice.multipass
+
+
+ mpn
+ application/vnd.mophun.application
+
+
+ mpp
+ application/vnd.ms-project
+
+
+ mpt
+ application/vnd.ms-project
+
+
+ mpv2
+ video/mpeg2
+
+
+ mpy
+ application/vnd.ibm.minipay
+
+
+ mqy
+ application/vnd.mobius.mqy
+
+
+ mrc
+ application/marc
+
+
+ mrcx
+ application/marcxml+xml
+
+
+ ms
+ text/troff
+
+
+ mscml
+ application/mediaservercontrol+xml
+
+
+ mseed
+ application/vnd.fdsn.mseed
+
+
+ mseq
+ application/vnd.mseq
+
+
+ msf
+ application/vnd.epson.msf
+
+
+ msh
+ model/mesh
+
+
+ msi
+ application/x-msdownload
+
+
+ msl
+ application/vnd.mobius.msl
+
+
+ msty
+ application/vnd.muvee.style
+
+
+ mts
+ model/vnd.mts
+
+
+ mus
+ application/vnd.musician
+
+
+ musicxml
+ application/vnd.recordare.musicxml+xml
+
+
+ mvb
+ application/x-msmediaview
+
+
+ mwf
+ application/vnd.mfer
+
+
+ mxf
+ application/mxf
+
+
+ mxl
+ application/vnd.recordare.musicxml
+
+
+ mxml
+ application/xv+xml
+
+
+ mxs
+ application/vnd.triscape.mxs
+
+
+ mxu
+ video/vnd.mpegurl
+
+
+ n-gage
+ application/vnd.nokia.n-gage.symbian.install
+
+
+ n3
+ text/n3
+
+
+ nb
+ application/mathematica
+
+
+ nbp
+ application/vnd.wolfram.player
+
+
+ nc
+ application/x-netcdf
+
+
+ ncx
+ application/x-dtbncx+xml
+
+
+ ngdat
+ application/vnd.nokia.n-gage.data
+
+
+ nlu
+ application/vnd.neurolanguage.nlu
+
+
+ nml
+ application/vnd.enliven
+
+
+ nnd
+ application/vnd.noblenet-directory
+
+
+ nns
+ application/vnd.noblenet-sealer
+
+
+ nnw
+ application/vnd.noblenet-web
+
+
+ npx
+ image/vnd.net-fpx
+
+
+ nsf
+ application/vnd.lotus-notes
+
+
+ oa2
+ application/vnd.fujitsu.oasys2
+
+
+ oa3
+ application/vnd.fujitsu.oasys3
+
+
+ oas
+ application/vnd.fujitsu.oasys
+
+
+ obd
+ application/x-msbinder
+
+
+ oda
+ application/oda
+
+
+
+ odb
+ application/vnd.oasis.opendocument.database
+
+
+
+ odc
+ application/vnd.oasis.opendocument.chart
+
+
+
+ odf
+ application/vnd.oasis.opendocument.formula
+
+
+ odft
+ application/vnd.oasis.opendocument.formula-template
+
+
+
+ odg
+ application/vnd.oasis.opendocument.graphics
+
+
+
+ odi
+ application/vnd.oasis.opendocument.image
+
+
+
+ odm
+ application/vnd.oasis.opendocument.text-master
+
+
+
+ odp
+ application/vnd.oasis.opendocument.presentation
+
+
+
+ ods
+ application/vnd.oasis.opendocument.spreadsheet
+
+
+
+ odt
+ application/vnd.oasis.opendocument.text
+
+
+ oga
+ audio/ogg
+
+
+ ogg
+ audio/ogg
+
+
+ ogv
+ video/ogg
+
+
+
+ ogx
+ application/ogg
+
+
+ onepkg
+ application/onenote
+
+
+ onetmp
+ application/onenote
+
+
+ onetoc
+ application/onenote
+
+
+ onetoc2
+ application/onenote
+
+
+ opf
+ application/oebps-package+xml
+
+
+ oprc
+ application/vnd.palm
+
+
+ org
+ application/vnd.lotus-organizer
+
+
+ osf
+ application/vnd.yamaha.openscoreformat
+
+
+ osfpvg
+ application/vnd.yamaha.openscoreformat.osfpvg+xml
+
+
+ otc
+ application/vnd.oasis.opendocument.chart-template
+
+
+ otf
+ application/x-font-otf
+
+
+
+ otg
+ application/vnd.oasis.opendocument.graphics-template
+
+
+
+ oth
+ application/vnd.oasis.opendocument.text-web
+
+
+ oti
+ application/vnd.oasis.opendocument.image-template
+
+
+
+ otp
+ application/vnd.oasis.opendocument.presentation-template
+
+
+
+ ots
+ application/vnd.oasis.opendocument.spreadsheet-template
+
+
+
+ ott
+ application/vnd.oasis.opendocument.text-template
+
+
+ oxt
+ application/vnd.openofficeorg.extension
+
+
+ p
+ text/x-pascal
+
+
+ p10
+ application/pkcs10
+
+
+ p12
+ application/x-pkcs12
+
+
+ p7b
+ application/x-pkcs7-certificates
+
+
+ p7c
+ application/pkcs7-mime
+
+
+ p7m
+ application/pkcs7-mime
+
+
+ p7r
+ application/x-pkcs7-certreqresp
+
+
+ p7s
+ application/pkcs7-signature
+
+
+ p8
+ application/pkcs8
+
+
+ pas
+ text/x-pascal
+
+
+ paw
+ application/vnd.pawaafile
+
+
+ pbd
+ application/vnd.powerbuilder6
+
+
+ pbm
+ image/x-portable-bitmap
+
+
+ pcf
+ application/x-font-pcf
+
+
+ pcl
+ application/vnd.hp-pcl
+
+
+ pclxl
+ application/vnd.hp-pclxl
+
+
+ pct
+ image/pict
+
+
+ pcurl
+ application/vnd.curl.pcurl
+
+
+ pcx
+ image/x-pcx
+
+
+ pdb
+ application/vnd.palm
+
+
+ pdf
+ application/pdf
+
+
+ pfa
+ application/x-font-type1
+
+
+ pfb
+ application/x-font-type1
+
+
+ pfm
+ application/x-font-type1
+
+
+ pfr
+ application/font-tdpfr
+
+
+ pfx
+ application/x-pkcs12
+
+
+ pgm
+ image/x-portable-graymap
+
+
+ pgn
+ application/x-chess-pgn
+
+
+ pgp
+ application/pgp-encrypted
+
+
+ pic
+ image/pict
+
+
+ pict
+ image/pict
+
+
+ pkg
+ application/octet-stream
+
+
+ pki
+ application/pkixcmp
+
+
+ pkipath
+ application/pkix-pkipath
+
+
+ plb
+ application/vnd.3gpp.pic-bw-large
+
+
+ plc
+ application/vnd.mobius.plc
+
+
+ plf
+ application/vnd.pocketlearn
+
+
+ pls
+ audio/x-scpls
+
+
+ pml
+ application/vnd.ctc-posml
+
+
+ png
+ image/png
+
+
+ pnm
+ image/x-portable-anymap
+
+
+ pnt
+ image/x-macpaint
+
+
+ portpkg
+ application/vnd.macports.portpkg
+
+
+ pot
+ application/vnd.ms-powerpoint
+
+
+ potm
+ application/vnd.ms-powerpoint.template.macroenabled.12
+
+
+ potx
+ application/vnd.openxmlformats-officedocument.presentationml.template
+
+
+ ppam
+ application/vnd.ms-powerpoint.addin.macroenabled.12
+
+
+ ppd
+ application/vnd.cups-ppd
+
+
+ ppm
+ image/x-portable-pixmap
+
+
+ pps
+ application/vnd.ms-powerpoint
+
+
+ ppsm
+ application/vnd.ms-powerpoint.slideshow.macroenabled.12
+
+
+ ppsx
+ application/vnd.openxmlformats-officedocument.presentationml.slideshow
+
+
+ ppt
+ application/vnd.ms-powerpoint
+
+
+ pptm
+ application/vnd.ms-powerpoint.presentation.macroenabled.12
+
+
+ pptx
+ application/vnd.openxmlformats-officedocument.presentationml.presentation
+
+
+ pqa
+ application/vnd.palm
+
+
+ prc
+ application/x-mobipocket-ebook
+
+
+ pre
+ application/vnd.lotus-freelance
+
+
+ prf
+ application/pics-rules
+
+
+ ps
+ application/postscript
+
+
+ psb
+ application/vnd.3gpp.pic-bw-small
+
+
+ psd
+ image/vnd.adobe.photoshop
+
+
+ psf
+ application/x-font-linux-psf
+
+
+ pskcxml
+ application/pskc+xml
+
+
+ ptid
+ application/vnd.pvi.ptid1
+
+
+ pub
+ application/x-mspublisher
+
+
+ pvb
+ application/vnd.3gpp.pic-bw-var
+
+
+ pwn
+ application/vnd.3m.post-it-notes
+
+
+ pya
+ audio/vnd.ms-playready.media.pya
+
+
+ pyv
+ video/vnd.ms-playready.media.pyv
+
+
+ qam
+ application/vnd.epson.quickanime
+
+
+ qbo
+ application/vnd.intu.qbo
+
+
+ qfx
+ application/vnd.intu.qfx
+
+
+ qps
+ application/vnd.publishare-delta-tree
+
+
+ qt
+ video/quicktime
+
+
+ qti
+ image/x-quicktime
+
+
+ qtif
+ image/x-quicktime
+
+
+ qwd
+ application/vnd.quark.quarkxpress
+
+
+ qwt
+ application/vnd.quark.quarkxpress
+
+
+ qxb
+ application/vnd.quark.quarkxpress
+
+
+ qxd
+ application/vnd.quark.quarkxpress
+
+
+ qxl
+ application/vnd.quark.quarkxpress
+
+
+ qxt
+ application/vnd.quark.quarkxpress
+
+
+ ra
+ audio/x-pn-realaudio
+
+
+ ram
+ audio/x-pn-realaudio
+
+
+ rar
+ application/x-rar-compressed
+
+
+ ras
+ image/x-cmu-raster
+
+
+ rcprofile
+ application/vnd.ipunplugged.rcprofile
+
+
+ rdf
+ application/rdf+xml
+
+
+ rdz
+ application/vnd.data-vision.rdz
+
+
+ rep
+ application/vnd.businessobjects
+
+
+ res
+ application/x-dtbresource+xml
+
+
+ rgb
+ image/x-rgb
+
+
+ rif
+ application/reginfo+xml
+
+
+ rip
+ audio/vnd.rip
+
+
+ rl
+ application/resource-lists+xml
+
+
+ rlc
+ image/vnd.fujixerox.edmics-rlc
+
+
+ rld
+ application/resource-lists-diff+xml
+
+
+ rm
+ application/vnd.rn-realmedia
+
+
+ rmi
+ audio/midi
+
+
+ rmp
+ audio/x-pn-realaudio-plugin
+
+
+ rms
+ application/vnd.jcp.javame.midlet-rms
+
+
+ rnc
+ application/relax-ng-compact-syntax
+
+
+ roff
+ text/troff
+
+
+ rp9
+ application/vnd.cloanto.rp9
+
+
+ rpss
+ application/vnd.nokia.radio-presets
+
+
+ rpst
+ application/vnd.nokia.radio-preset
+
+
+ rq
+ application/sparql-query
+
+
+ rs
+ application/rls-services+xml
+
+
+ rsd
+ application/rsd+xml
+
+
+ rss
+ application/rss+xml
+
+
+ rtf
+ application/rtf
+
+
+ rtx
+ text/richtext
+
+
+ s
+ text/x-asm
+
+
+ saf
+ application/vnd.yamaha.smaf-audio
+
+
+ sbml
+ application/sbml+xml
+
+
+ sc
+ application/vnd.ibm.secure-container
+
+
+ scd
+ application/x-msschedule
+
+
+ scm
+ application/vnd.lotus-screencam
+
+
+ scq
+ application/scvp-cv-request
+
+
+ scs
+ application/scvp-cv-response
+
+
+ scurl
+ text/vnd.curl.scurl
+
+
+ sda
+ application/vnd.stardivision.draw
+
+
+ sdc
+ application/vnd.stardivision.calc
+
+
+ sdd
+ application/vnd.stardivision.impress
+
+
+ sdkd
+ application/vnd.solent.sdkm+xml
+
+
+ sdkm
+ application/vnd.solent.sdkm+xml
+
+
+ sdp
+ application/sdp
+
+
+ sdw
+ application/vnd.stardivision.writer
+
+
+ see
+ application/vnd.seemail
+
+
+ seed
+ application/vnd.fdsn.seed
+
+
+ sema
+ application/vnd.sema
+
+
+ semd
+ application/vnd.semd
+
+
+ semf
+ application/vnd.semf
+
+
+ ser
+ application/java-serialized-object
+
+
+ setpay
+ application/set-payment-initiation
+
+
+ setreg
+ application/set-registration-initiation
+
+
+ sfd-hdstx
+ application/vnd.hydrostatix.sof-data
+
+
+ sfs
+ application/vnd.spotfire.sfs
+
+
+ sgl
+ application/vnd.stardivision.writer-global
+
+
+ sgm
+ text/sgml
+
+
+ sgml
+ text/sgml
+
+
+ sh
+ application/x-sh
+
+
+ shar
+ application/x-shar
+
+
+ shf
+ application/shf+xml
+
+
+
+ sig
+ application/pgp-signature
+
+
+ silo
+ model/mesh
+
+
+ sis
+ application/vnd.symbian.install
+
+
+ sisx
+ application/vnd.symbian.install
+
+
+ sit
+ application/x-stuffit
+
+
+ sitx
+ application/x-stuffitx
+
+
+ skd
+ application/vnd.koan
+
+
+ skm
+ application/vnd.koan
+
+
+ skp
+ application/vnd.koan
+
+
+ skt
+ application/vnd.koan
+
+
+ sldm
+ application/vnd.ms-powerpoint.slide.macroenabled.12
+
+
+ sldx
+ application/vnd.openxmlformats-officedocument.presentationml.slide
+
+
+ slt
+ application/vnd.epson.salt
+
+
+ sm
+ application/vnd.stepmania.stepchart
+
+
+ smf
+ application/vnd.stardivision.math
+
+
+ smi
+ application/smil+xml
+
+
+ smil
+ application/smil+xml
+
+
+ snd
+ audio/basic
+
+
+ snf
+ application/x-font-snf
+
+
+ so
+ application/octet-stream
+
+
+ spc
+ application/x-pkcs7-certificates
+
+
+ spf
+ application/vnd.yamaha.smaf-phrase
+
+
+ spl
+ application/x-futuresplash
+
+
+ spot
+ text/vnd.in3d.spot
+
+
+ spp
+ application/scvp-vp-response
+
+
+ spq
+ application/scvp-vp-request
+
+
+ spx
+ audio/ogg
+
+
+ src
+ application/x-wais-source
+
+
+ sru
+ application/sru+xml
+
+
+ srx
+ application/sparql-results+xml
+
+
+ sse
+ application/vnd.kodak-descriptor
+
+
+ ssf
+ application/vnd.epson.ssf
+
+
+ ssml
+ application/ssml+xml
+
+
+ st
+ application/vnd.sailingtracker.track
+
+
+ stc
+ application/vnd.sun.xml.calc.template
+
+
+ std
+ application/vnd.sun.xml.draw.template
+
+
+ stf
+ application/vnd.wt.stf
+
+
+ sti
+ application/vnd.sun.xml.impress.template
+
+
+ stk
+ application/hyperstudio
+
+
+ stl
+ application/vnd.ms-pki.stl
+
+
+ str
+ application/vnd.pg.format
+
+
+ stw
+ application/vnd.sun.xml.writer.template
+
+
+ sub
+ image/vnd.dvb.subtitle
+
+
+ sus
+ application/vnd.sus-calendar
+
+
+ susp
+ application/vnd.sus-calendar
+
+
+ sv4cpio
+ application/x-sv4cpio
+
+
+ sv4crc
+ application/x-sv4crc
+
+
+ svc
+ application/vnd.dvb.service
+
+
+ svd
+ application/vnd.svd
+
+
+ svg
+ image/svg+xml
+
+
+ svgz
+ image/svg+xml
+
+
+ swa
+ application/x-director
+
+
+ swf
+ application/x-shockwave-flash
+
+
+ swi
+ application/vnd.aristanetworks.swi
+
+
+ sxc
+ application/vnd.sun.xml.calc
+
+
+ sxd
+ application/vnd.sun.xml.draw
+
+
+ sxg
+ application/vnd.sun.xml.writer.global
+
+
+ sxi
+ application/vnd.sun.xml.impress
+
+
+ sxm
+ application/vnd.sun.xml.math
+
+
+ sxw
+ application/vnd.sun.xml.writer
+
+
+ t
+ text/troff
+
+
+ tao
+ application/vnd.tao.intent-module-archive
+
+
+ tar
+ application/x-tar
+
+
+ tcap
+ application/vnd.3gpp2.tcap
+
+
+ tcl
+ application/x-tcl
+
+
+ teacher
+ application/vnd.smart.teacher
+
+
+ tei
+ application/tei+xml
+
+
+ teicorpus
+ application/tei+xml
+
+
+ tex
+ application/x-tex
+
+
+ texi
+ application/x-texinfo
+
+
+ texinfo
+ application/x-texinfo
+
+
+ text
+ text/plain
+
+
+ tfi
+ application/thraud+xml
+
+
+ tfm
+ application/x-tex-tfm
+
+
+ thmx
+ application/vnd.ms-officetheme
+
+
+ tif
+ image/tiff
+
+
+ tiff
+ image/tiff
+
+
+ tmo
+ application/vnd.tmobile-livetv
+
+
+ torrent
+ application/x-bittorrent
+
+
+ tpl
+ application/vnd.groove-tool-template
+
+
+ tpt
+ application/vnd.trid.tpt
+
+
+ tr
+ text/troff
+
+
+ tra
+ application/vnd.trueapp
+
+
+ trm
+ application/x-msterminal
+
+
+ tsd
+ application/timestamped-data
+
+
+ tsv
+ text/tab-separated-values
+
+
+ ttc
+ application/x-font-ttf
+
+
+ ttf
+ application/x-font-ttf
+
+
+ ttl
+ text/turtle
+
+
+ twd
+ application/vnd.simtech-mindmapper
+
+
+ twds
+ application/vnd.simtech-mindmapper
+
+
+ txd
+ application/vnd.genomatix.tuxedo
+
+
+ txf
+ application/vnd.mobius.txf
+
+
+ txt
+ text/plain
+
+
+ u32
+ application/x-authorware-bin
+
+
+ udeb
+ application/x-debian-package
+
+
+ ufd
+ application/vnd.ufdl
+
+
+ ufdl
+ application/vnd.ufdl
+
+
+ ulw
+ audio/basic
+
+
+ umj
+ application/vnd.umajin
+
+
+ unityweb
+ application/vnd.unity
+
+
+ uoml
+ application/vnd.uoml+xml
+
+
+ uri
+ text/uri-list
+
+
+ uris
+ text/uri-list
+
+
+ urls
+ text/uri-list
+
+
+ ustar
+ application/x-ustar
+
+
+ utz
+ application/vnd.uiq.theme
+
+
+ uu
+ text/x-uuencode
+
+
+ uva
+ audio/vnd.dece.audio
+
+
+ uvd
+ application/vnd.dece.data
+
+
+ uvf
+ application/vnd.dece.data
+
+
+ uvg
+ image/vnd.dece.graphic
+
+
+ uvh
+ video/vnd.dece.hd
+
+
+ uvi
+ image/vnd.dece.graphic
+
+
+ uvm
+ video/vnd.dece.mobile
+
+
+ uvp
+ video/vnd.dece.pd
+
+
+ uvs
+ video/vnd.dece.sd
+
+
+ uvt
+ application/vnd.dece.ttml+xml
+
+
+ uvu
+ video/vnd.uvvu.mp4
+
+
+ uvv
+ video/vnd.dece.video
+
+
+ uvva
+ audio/vnd.dece.audio
+
+
+ uvvd
+ application/vnd.dece.data
+
+
+ uvvf
+ application/vnd.dece.data
+
+
+ uvvg
+ image/vnd.dece.graphic
+
+
+ uvvh
+ video/vnd.dece.hd
+
+
+ uvvi
+ image/vnd.dece.graphic
+
+
+ uvvm
+ video/vnd.dece.mobile
+
+
+ uvvp
+ video/vnd.dece.pd
+
+
+ uvvs
+ video/vnd.dece.sd
+
+
+ uvvt
+ application/vnd.dece.ttml+xml
+
+
+ uvvu
+ video/vnd.uvvu.mp4
+
+
+ uvvv
+ video/vnd.dece.video
+
+
+ uvvx
+ application/vnd.dece.unspecified
+
+
+ uvx
+ application/vnd.dece.unspecified
+
+
+ vcd
+ application/x-cdlink
+
+
+ vcf
+ text/x-vcard
+
+
+ vcg
+ application/vnd.groove-vcard
+
+
+ vcs
+ text/x-vcalendar
+
+
+ vcx
+ application/vnd.vcx
+
+
+ vis
+ application/vnd.visionary
+
+
+ viv
+ video/vnd.vivo
+
+
+ vor
+ application/vnd.stardivision.writer
+
+
+ vox
+ application/x-authorware-bin
+
+
+ vrml
+ model/vrml
+
+
+ vsd
+ application/vnd.visio
+
+
+ vsf
+ application/vnd.vsf
+
+
+ vss
+ application/vnd.visio
+
+
+ vst
+ application/vnd.visio
+
+
+ vsw
+ application/vnd.visio
+
+
+ vtu
+ model/vnd.vtu
+
+
+ vxml
+ application/voicexml+xml
+
+
+ w3d
+ application/x-director
+
+
+ wad
+ application/x-doom
+
+
+ wav
+ audio/x-wav
+
+
+ wax
+ audio/x-ms-wax
+
+
+
+ wbmp
+ image/vnd.wap.wbmp
+
+
+ wbs
+ application/vnd.criticaltools.wbs+xml
+
+
+ wbxml
+ application/vnd.wap.wbxml
+
+
+ wcm
+ application/vnd.ms-works
+
+
+ wdb
+ application/vnd.ms-works
+
+
+ weba
+ audio/webm
+
+
+ webm
+ video/webm
+
+
+ webp
+ image/webp
+
+
+ wg
+ application/vnd.pmi.widget
+
+
+ wgt
+ application/widget
+
+
+ wks
+ application/vnd.ms-works
+
+
+ wm
+ video/x-ms-wm
+
+
+ wma
+ audio/x-ms-wma
+
+
+ wmd
+ application/x-ms-wmd
+
+
+ wmf
+ application/x-msmetafile
+
+
+
+ wml
+ text/vnd.wap.wml
+
+
+
+ wmlc
+ application/vnd.wap.wmlc
+
+
+
+ wmls
+ text/vnd.wap.wmlscript
+
+
+
+ wmlsc
+ application/vnd.wap.wmlscriptc
+
+
+ wmv
+ video/x-ms-wmv
+
+
+ wmx
+ video/x-ms-wmx
+
+
+ wmz
+ application/x-ms-wmz
+
+
+ woff
+ application/x-font-woff
+
+
+ wpd
+ application/vnd.wordperfect
+
+
+ wpl
+ application/vnd.ms-wpl
+
+
+ wps
+ application/vnd.ms-works
+
+
+ wqd
+ application/vnd.wqd
+
+
+ wri
+ application/x-mswrite
+
+
+ wrl
+ model/vrml
+
+
+ wsdl
+ application/wsdl+xml
+
+
+ wspolicy
+ application/wspolicy+xml
+
+
+ wtb
+ application/vnd.webturbo
+
+
+ wvx
+ video/x-ms-wvx
+
+
+ x32
+ application/x-authorware-bin
+
+
+ x3d
+ application/vnd.hzn-3d-crossword
+
+
+ xap
+ application/x-silverlight-app
+
+
+ xar
+ application/vnd.xara
+
+
+ xbap
+ application/x-ms-xbap
+
+
+ xbd
+ application/vnd.fujixerox.docuworks.binder
+
+
+ xbm
+ image/x-xbitmap
+
+
+ xdf
+ application/xcap-diff+xml
+
+
+ xdm
+ application/vnd.syncml.dm+xml
+
+
+ xdp
+ application/vnd.adobe.xdp+xml
+
+
+ xdssc
+ application/dssc+xml
+
+
+ xdw
+ application/vnd.fujixerox.docuworks
+
+
+ xenc
+ application/xenc+xml
+
+
+ xer
+ application/patch-ops-error+xml
+
+
+ xfdf
+ application/vnd.adobe.xfdf
+
+
+ xfdl
+ application/vnd.xfdl
+
+
+ xht
+ application/xhtml+xml
+
+
+ xhtml
+ application/xhtml+xml
+
+
+ xhvml
+ application/xv+xml
+
+
+ xif
+ image/vnd.xiff
+
+
+ xla
+ application/vnd.ms-excel
+
+
+ xlam
+ application/vnd.ms-excel.addin.macroenabled.12
+
+
+ xlc
+ application/vnd.ms-excel
+
+
+ xlm
+ application/vnd.ms-excel
+
+
+ xls
+ application/vnd.ms-excel
+
+
+ xlsb
+ application/vnd.ms-excel.sheet.binary.macroenabled.12
+
+
+ xlsm
+ application/vnd.ms-excel.sheet.macroenabled.12
+
+
+ xlsx
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+
+
+ xlt
+ application/vnd.ms-excel
+
+
+ xltm
+ application/vnd.ms-excel.template.macroenabled.12
+
+
+ xltx
+ application/vnd.openxmlformats-officedocument.spreadsheetml.template
+
+
+ xlw
+ application/vnd.ms-excel
+
+
+ xml
+ application/xml
+
+
+ xo
+ application/vnd.olpc-sugar
+
+
+ xop
+ application/xop+xml
+
+
+ xpi
+ application/x-xpinstall
+
+
+ xpm
+ image/x-xpixmap
+
+
+ xpr
+ application/vnd.is-xpr
+
+
+ xps
+ application/vnd.ms-xpsdocument
+
+
+ xpw
+ application/vnd.intercon.formnet
+
+
+ xpx
+ application/vnd.intercon.formnet
+
+
+ xsl
+ application/xml
+
+
+ xslt
+ application/xslt+xml
+
+
+ xsm
+ application/vnd.syncml+xml
+
+
+ xspf
+ application/xspf+xml
+
+
+ xul
+ application/vnd.mozilla.xul+xml
+
+
+ xvm
+ application/xv+xml
+
+
+ xvml
+ application/xv+xml
+
+
+ xwd
+ image/x-xwindowdump
+
+
+ xyz
+ chemical/x-xyz
+
+
+ yang
+ application/yang
+
+
+ yin
+ application/yin+xml
+
+
+ z
+ application/x-compress
+
+
+ Z
+ application/x-compress
+
+
+ zaz
+ application/vnd.zzazz.deck+xml
+
+
+ zip
+ application/zip
+
+
+ zir
+ application/vnd.zul
+
+
+ zirz
+ application/vnd.zul
+
+
+ zmm
+ application/vnd.handheld-entertainment+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ index.html
+ index.htm
+ index.jsp
+
+
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml b/settings/eclipse/workspace/update/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml
new file mode 100644
index 000000000..fe975d618
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ant.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ant.core.prefs
new file mode 100644
index 000000000..bbd95a0ab
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ant.core.prefs
@@ -0,0 +1,3 @@
+#Thu Mar 15 11:21:23 CET 2012
+ant_home_entries=${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-antlr.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-bcel.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-bsf.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-log4j.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-oro.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-regexp.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-resolver.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-apache-xalan2.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-commons-logging.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-commons-net.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-jai.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-javamail.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-jdepend.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-jmf.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-jsch.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-junit.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-junit4.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-launcher.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-netrexx.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-swing.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-testutil.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant.jar,${client.env.home}\\software\\eclipse\\plugins\\org.apache.ant_1.8.2.v20110505-1300\\lib\\ant-contrib-1.0b3.jar,
+eclipse.preferences.version=1
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.compare.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.compare.prefs
new file mode 100644
index 000000000..979a15455
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.compare.prefs
@@ -0,0 +1,3 @@
+#Tue Nov 10 10:18:44 CET 2009
+eclipse.preferences.version=1
+org.eclipse.compare.IgnoreWhitespace=true
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..7f492f870
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+version=1
+eclipse.preferences.version=1
+encoding=UTF-8
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
new file mode 100644
index 000000000..bdcc41212
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.debug.core.USE_STEP_FILTERS=false
+org.eclipse.debug.core.PREF_DELETE_CONFIGS_ON_PROJECT_DELETE=false
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..7d29fc29d
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,336 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.classpathVariable.ECLIPSE_HOME=${client.env.home}/software/eclipse/
+org.eclipse.jdt.core.classpathVariable.JRE_LIB=${client.env.home}/software/java/jre/lib/rt.jar
+org.eclipse.jdt.core.classpathVariable.JRE_SRC=${client.env.home}/software/java/src.zip
+org.eclipse.jdt.core.classpathVariable.JRE_SRCROOT=
+org.eclipse.jdt.core.classpathVariable.M2_REPO=${M2_REPO}
+org.eclipse.jdt.core.classpathVariable.MAVEN_REPO=${M2_REPO}
+org.eclipse.jdt.core.codeComplete.camelCaseMatch=enabled
+org.eclipse.jdt.core.codeComplete.deprecationCheck=disabled
+org.eclipse.jdt.core.codeComplete.suggestStaticImports=enabled
+org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,REVIEW
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=0
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=1
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.timeoutForParameterNameFromAttachedJavadoc=50
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs
new file mode 100644
index 000000000..6830a8509
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs
@@ -0,0 +1,5 @@
+#Fri Feb 03 19:17:14 CET 2012
+org.eclipse.jdt.debug.ui.javaDebug.SuspendOnUncaughtExceptions=false
+org.eclipse.debug.ui.VariableView.org.eclipse.jdt.debug.ui.show_null_entries=true
+eclipse.preferences.version=1
+org.eclipse.jdt.debug.ui.prompt_unable_to_install_breakpoint=false
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..224784fb6
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,152 @@
+#Tue Nov 10 10:37:31 CET 2009
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=false
+cleanup.remove_trailing_whitespaces_ignore_empty=true
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_clientpe
+cleanup_settings_version=2
+content_assist_proposals_background=255,255,255
+content_assist_proposals_foreground=0,0,0
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+fontPropagated=true
+formatter_profile=_clientpe
+formatter_settings_version=12
+org.eclipse.jdt.internal.ui.navigator.layout=2
+org.eclipse.jdt.ui.cleanupprofiles.version=2
+org.eclipse.jdt.ui.cleanupprofiles=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
+org.eclipse.jdt.ui.editor.tab.width=
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.formatterprofiles.version=12
+org.eclipse.jdt.ui.formatterprofiles=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;net;org;com;de;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.javadoclocations.migrated=true
+org.eclipse.jdt.ui.keywordthis=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.code_templates_migrated=true
+org.eclipse.jdt.ui.text.custom_code_templates=/**\r\n * @return ${bare_field_name}\r\n *//**\r\n * @param ${param} the ${bare_field_name} to set\r\n *//**\r\n * The constructor.\r\n * ${tags}\r\n *//**\r\n * TODO ${user} This type ...\r\n *\r\n * @author ${user}\r\n *//**\r\n * {@inheritDoc}\r\n */${body_statement}
+org.eclipse.jdt.ui.text.custom_templates=TODO ${user} <what> /** UID for serialization. */&\#13;\r\n private static final long serialVersionUID \= 1L;&\#13;\r\nFIXME ${user} ${date} <what>REVIEW <who> (${user}) <what><br/>&\#13;* <b>CAVEAT\:</b><br/>&\#13;\r\n* ${cursor}/** Logger instance. */&\#13;\r\nprivate static final Logger LOG \= LoggerFactory.getLogger(${enclosing_type}.class);
+org.eclipse.jdt.ui.text.templates_migrated=true
+org.eclipse.jface.textfont=1|Consolas|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Consolas;
+proposalOrderMigrated=true
+semanticHighlighting.autoboxing.color=128,0,128
+semanticHighlighting.autoboxing.enabled=true
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=true
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+spelling_ignore_ampersand_in_properties=true
+spelling_ignore_digits=true
+spelling_ignore_java_strings=true
+spelling_ignore_mixed=true
+spelling_ignore_non_letters=true
+spelling_ignore_sentence=true
+spelling_ignore_single_letters=true
+spelling_ignore_upper=true
+spelling_ignore_urls=true
+spelling_locale_initialized=true
+spelling_user_dictionary=${client.env.home}\\${SETTINGS_PATH}\\eclipse\\project.dictionary
+spelling_user_dictionary_encoding=UTF-8
+tabWidthPropagated=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
\ No newline at end of file
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs
new file mode 100644
index 000000000..8db193fc9
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+outputCodeset=UTF-8
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.server.tomcat.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.server.tomcat.core.prefs
new file mode 100644
index 000000000..d6c345a5d
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.server.tomcat.core.prefs
@@ -0,0 +1,3 @@
+#Mon Jan 30 09:12:56 CET 2012
+eclipse.preferences.version=1
+locationorg.eclipse.jst.server.tomcat.runtime.70=${client.env.home}/software/tomcat
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 000000000..20b836341
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,7 @@
+#Mon Dec 12 17:15:49 CET 2011
+eclipse.m2.defaultPomEditorPage=true
+eclipse.m2.downloadSources=true
+eclipse.m2.offline=false
+eclipse.m2.updateIndexes=false
+eclipse.m2.userSettingsFile=${client.env.home}/conf/.m2/settings.xml
+eclipse.preferences.version=1
\ No newline at end of file
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.team.ui.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 000000000..824e2a8ea
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Mar 15 16:30:47 CET 2012
+org.eclipse.mylyn.team.commit.template=\#${task.key} - ${task.description} \r\nTODO
+eclipse.preferences.version=1
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.core.prefs
new file mode 100644
index 000000000..92fc3f789
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.core.prefs
@@ -0,0 +1,2 @@
+file_types=bat\n1\ncat\n1\ncheckstyle\n1\ncmd\n1\nexp\n1\ngenignore\n1\nini\n1\njelly\n1\njsp\n1\nmdl\n1\npackage\n1\npl\n1\npm\n1\npool\n1\nprefs\n1\npsf\n1\nrc\n1\nsh\n1\nsql\n1\ntest-restriction\n1\ntype\n1\nvm\n1\nxsd\n1\nxslt\n1\n
+ignore_files=*$\nfalse\n*.swp\ntrue\ntarget\ntrue\n
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
new file mode 100644
index 000000000..0259653e3
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+lineNumberRuler=true
+net.sf.eclipsecs.warning.color=255,255,0
+net.sf.eclipsecs.warning.text.style=NONE
+warningIndicationColor=255,255,0
+spellingEnabled=true
+printMargin=true
+spacesForTabs=true
+tabWidth=2
+eclipse.preferences.version=1
+printMarginColumn=120
+overviewRuler_migration=migrated_3.1
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 000000000..df9940ae0
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,3 @@
+SHOW_MEMORY_MONITOR=true
+eclipse.preferences.version=1
+showIntro=false
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.css.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.css.core.prefs
new file mode 100644
index 000000000..8db193fc9
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.css.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+outputCodeset=UTF-8
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.html.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.html.core.prefs
new file mode 100644
index 000000000..8db193fc9
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.html.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+outputCodeset=UTF-8
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.server.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.server.core.prefs
new file mode 100644
index 000000000..981f32537
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.server.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+runtimes=\r\n\r\n \r\n\r\n
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.validation.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 000000000..63ac63b8e
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,27 @@
+#Thu Mar 15 12:59:29 CET 2012
+DELEGATES_PREFERENCE=delegateValidatorList
+USER_BUILD_PREFERENCE=enabledBuildValidatorList
+USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
+USER_PREFERENCE=saveAutomaticallyfalseprojectsCanOverridetruedisableAllValidationfalseversion1.2.303.v201202090300
+confirmDialog=true
+eclipse.preferences.version=1
+override=true
+saveAuto=false
+stateTS=0
+suspend=false
+vals/org.eclipse.jpt.jaxb.core.jaxbValidator/global=TF01
+vals/org.eclipse.jpt.jpa.core.jpaValidator/global=TF01
+vals/org.eclipse.jst.jee.ejb3.validator/global=FF01
+vals/org.eclipse.jst.jsf.facelet.ui.FaceletHTMLValidator/global=FF01
+vals/org.eclipse.jst.jsf.ui.JSFAppConfigValidator/global=FF01
+vals/org.eclipse.jst.jsf.ui.JSFNonELAttributeValueValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.JSPBatchValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.JSPContentValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.TLDValidator/global=FF01
+vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01
+vals/org.eclipse.wst.html.ui.HTMLValidator/global=FF01
+vals/org.eclipse.wst.wsdl.validation.wsdl/global=FF02158org.eclipse.wst.wsdl.validation.internal.eclipse.Validator
+vals/org.eclipse.wst.xml.core.xml/global=FF03
+vals/org.eclipse.wst.xsd.core.xsd/global=FF02162org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator
+vals/org.eclipse.wst.xsl.core.xsl/global=FF02
+vf.version=3
\ No newline at end of file
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.core.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.core.prefs
new file mode 100644
index 000000000..976e9e611
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.core.prefs
@@ -0,0 +1,7 @@
+#Wed Feb 22 22:34:26 CET 2012
+lineWidth=120
+spaceBeforeEmptyCloseTag=false
+formatCommentJoinLines=false
+eclipse.preferences.version=1
+indentationChar=space
+indentationSize=2
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs
new file mode 100644
index 000000000..9105fe346
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs
@@ -0,0 +1,3 @@
+#Mon Jan 30 08:48:41 CET 2012
+eclipse.preferences.version=1
+org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart.lastActivePage=1
diff --git a/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.datatools.connectivity/driverStorage.xml b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.datatools.connectivity/driverStorage.xml
new file mode 100644
index 000000000..1831ba612
--- /dev/null
+++ b/settings/eclipse/workspace/update/.metadata/.plugins/org.eclipse.datatools.connectivity/driverStorage.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/settings/findbugs/findbugs-exclude.xml b/settings/findbugs/findbugs-exclude.xml
new file mode 100644
index 000000000..1412c0881
--- /dev/null
+++ b/settings/findbugs/findbugs-exclude.xml
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/findbugs/findbugs-include.xml b/settings/findbugs/findbugs-include.xml
new file mode 100644
index 000000000..9efeda45d
--- /dev/null
+++ b/settings/findbugs/findbugs-include.xml
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/ide-properties.bat b/settings/ide-properties.bat
new file mode 100644
index 000000000..a690a2ca4
--- /dev/null
+++ b/settings/ide-properties.bat
@@ -0,0 +1,6 @@
+@echo off
+rem ****************************************
+rem Architect
+
+rem Variable replacement config
+set REPLACEMENT_PATTERNS_PATH=%SETTINGS_PATH%\eclipse\workspace\replacement-patterns.properties
\ No newline at end of file
diff --git a/settings/maven/settings.xml b/settings/maven/settings.xml
new file mode 100644
index 000000000..3f179bdcf
--- /dev/null
+++ b/settings/maven/settings.xml
@@ -0,0 +1,129 @@
+
+
+
+
+ ${M2_REPO}
+
+
+
+
+ nexus.central
+ ${OASP_NEXUS_USER}
+ ${OASP_NEXUS_PASSWD}
+
+
+ public
+ ${OASP_NEXUS_USER}
+ ${OASP_NEXUS_PASSWD}
+
+
+ 3rd.party
+ ${OASP_NEXUS_USER}
+ ${OASP_NEXUS_PASSWD}
+
+
+ oasp.releases
+ ${OASP_NEXUS_USER}
+ ${OASP_NEXUS_PASSWD}
+
+
+ oasp.snapshots
+ ${OASP_NEXUS_USER}
+ ${OASP_NEXUS_PASSWD}
+
+
+
+
+
+
+
+ oasp.nexus
+
+
+ public
+ Public Repositories
+ http://oasp-ci.cloudapp.net/nexus/content/groups/public/
+
+ true
+ always
+
+
+ true
+ always
+
+
+
+ 3rd.party
+ 3rd party
+ http://oasp-ci.cloudapp.net/nexus/content/repositories/thirdparty
+
+ true
+ always
+
+
+ false
+ always
+
+
+
+ oasp.releases
+ OASP Releases
+ http://oasp-ci.cloudapp.net/nexus/content/repositories/releases
+
+ true
+ always
+
+
+ false
+ always
+
+
+
+ oasp.snapshots
+ OASP Snapshots
+ http://oasp-ci.cloudapp.net/nexus/content/repositories/snapshots
+
+ false
+ always
+
+
+ true
+ always
+
+
+
+
+
+ public
+ Public Repositories
+ http://oasp-ci.cloudapp.net/nexus/content/groups/public/
+
+ true
+ always
+
+
+ true
+ always
+
+
+
+
+
+
+
+
+
diff --git a/settings/pmd/pmd-ruleset.xml b/settings/pmd/pmd-ruleset.xml
new file mode 100644
index 000000000..5b02004fa
--- /dev/null
+++ b/settings/pmd/pmd-ruleset.xml
@@ -0,0 +1,93 @@
+
+
+
+
+ This ruleset checks the code for correctness and bad practice issues. It is thought to
+ be a ready-to-use default configuration for PMD, projects can start with.
+ It defines a set of rules, where violations shouldn't be tolerated. So it tries to pick
+ the obvious rules that indicate "smelly code" and tries to leave out those rules that
+ will most of the time produce violations which are not really important or are false
+ positives.
+ However, these rules are not set in stone. Projects may adapt or extends them by their needs.
+
+ @version 2009-03-26
+ @author Markus Grossmann, Capgemini sd&m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings/sonarqube/sonarqube_oasp_java.xml b/settings/sonarqube/sonarqube_oasp_java.xml
new file mode 100644
index 000000000..fd7ba5013
--- /dev/null
+++ b/settings/sonarqube/sonarqube_oasp_java.xml
@@ -0,0 +1 @@
+oasp4jjavacheckstylecom.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.javadoc.JavadocStyleCheckMINORtokensINTERFACE_DEF,CLASS_DEF,METHOD_DEF,CTOR_DEFcheckHtmlfalsecheckstylecom.puppycrawl.tools.checkstyle.checks.naming.ConstantNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.LocalFinalVariableNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.MethodNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.PackageNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.StaticVariableNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.TypeNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.imports.IllegalImportCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.imports.UnusedImportsCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheckINFOmax160ignorePattern^.*@see.*$checkstylecom.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheckINFOcheckstylecom.puppycrawl.tools.checkstyle.checks.sizes.ParameterNumberCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForIteratorPadCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheckMAJORtokensBNOT,DEC,INC,LNOT,UNARY_MINUS,UNARY_PLUScheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.TypecastParenPadCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.modifier.ModifierOrderCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.modifier.RedundantModifierCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.blocks.LeftCurlyCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheckINFOcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheckINFOcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheckMAJORignoreConstructorParametertrueignoreSettertruecheckstylecom.puppycrawl.tools.checkstyle.checks.coding.IllegalInstantiationCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheckINFOignoreNumbers-1, 0, 1, 2, 3, 4, 5, 6, 8, 10, 16, 23, 24, 31, 59, 60, 64, 100, 128, 256, 512, 1000, 1024checkstylecom.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.design.FinalClassCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.design.VisibilityModifierCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.UpperEllCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.ParameterNameCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheckMAJORtokensASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAND,LCURLY,LE,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,LITERAL_ASSERT,TYPE_EXTENSION_ANDallowEmptyMethodstrueallowEmptyConstructorstruecheckstylecom.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheckINFOcheckMethodsfalsecheckstylecom.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.TodoCommentCheckMINORformat(TODO|FIXME|REVIEW|CHECKSTYLE:OFF|NOSONAR|NOPMD)checkstylecom.puppycrawl.tools.checkstyle.checks.blocks.EmptyBlockCheckMAJORoptiontextcheckstylecom.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineJavaCheckMAJORmessageAvoid this patternformatSystem\.(out|err|exit|gc\)|printStackTrace\(\)|\@Autowiredcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.ClassTypeParameterNameCheckMAJORformat^[A-Z_]+$checkstylecom.puppycrawl.tools.checkstyle.checks.naming.MethodTypeParameterNameCheckMAJORformat^[A-Z_]*$checkstylecom.puppycrawl.tools.checkstyle.checks.imports.AvoidStaticImportCheckMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheckMAJORmethodMaximum200checkstylecom.puppycrawl.tools.checkstyle.checks.sizes.FileLengthCheckINFOcheckstylecom.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheckMAJORfindbugsEI_EXPOSE_REP2INFOfindbugsEI_EXPOSE_REPMINORfindbugsPT_ABSOLUTE_PATH_TRAVERSALMAJORfindbugsVO_VOLATILE_INCREMENTCRITICALfindbugsDMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTSMAJORfindbugsEQ_ABSTRACT_SELFMAJORfindbugsCO_ABSTRACT_SELFMAJORfindbugsBIT_SIGNED_CHECKCRITICALfindbugsCN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLEMAJORfindbugsEQ_COMPARETO_USE_OBJECT_EQUALSMINORfindbugsHE_EQUALS_USE_HASHCODECRITICALfindbugsHE_EQUALS_NO_HASHCODEMAJORfindbugsHE_HASHCODE_USE_OBJECT_EQUALSCRITICALfindbugsHE_HASHCODE_NO_EQUALSCRITICALfindbugsCN_IDIOMMAJORfindbugsHE_INHERITS_EQUALS_USE_HASHCODECRITICALfindbugsNM_CLASS_NOT_EXCEPTIONMAJORfindbugsSE_NO_SUITABLE_CONSTRUCTORMAJORfindbugsSE_NO_SERIALVERSIONIDMAJORfindbugsNM_SAME_SIMPLE_NAME_AS_INTERFACEMINORfindbugsNM_SAME_SIMPLE_NAME_AS_SUPERCLASSMAJORfindbugsDP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGEDMAJORfindbugsCN_IDIOM_NO_SUPER_CALLMAJORfindbugsNP_CLONE_COULD_RETURN_NULLCRITICALfindbugsNM_WRONG_PACKAGE_INTENTIONALMAJORfindbugsRV_RETURN_VALUE_IGNORED_BAD_PRACTICEMINORfindbugsRR_NOT_CHECKEDMAJORfindbugsSR_NOT_CHECKEDMAJORfindbugsDP_DO_INSIDE_DO_PRIVILEGEDMAJORfindbugsDM_EXITMAJORfindbugsDM_RUN_FINALIZERS_ON_EXITMAJORfindbugsODR_OPEN_DATABASE_RESOURCECRITICALfindbugsODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATHCRITICALfindbugsOS_OPEN_STREAMCRITICALfindbugsOS_OPEN_STREAM_EXCEPTION_PATHCRITICALfindbugsDE_MIGHT_DROPMAJORfindbugsDE_MIGHT_IGNOREMAJORfindbugsISC_INSTANTIATE_STATIC_CLASSMAJORfindbugsSE_BAD_FIELD_STORECRITICALfindbugsDMI_RANDOM_USED_ONLY_ONCECRITICALfindbugsSE_INNER_CLASSMAJORfindbugsSE_NONFINAL_SERIALVERSIONIDCRITICALfindbugsSE_NONSTATIC_SERIALVERSIONIDMAJORfindbugsSE_NONLONG_SERIALVERSIONIDMAJORfindbugsSI_INSTANCE_BEFORE_FINALS_ASSIGNEDINFOfindbugsJ2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSIONCRITICALfindbugsIC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATIONMAJORfindbugsSE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATIONMAJORfindbugsSE_COMPARATOR_SHOULD_BE_SERIALIZABLEMAJORfindbugsES_COMPARING_STRINGS_WITH_EQMAJORfindbugsES_COMPARING_PARAMETER_STRING_WITH_EQMAJORfindbugsNM_CONFUSINGMAJORfindbugsCO_SELF_NO_OBJECTMAJORfindbugsEQ_SELF_NO_OBJECTMAJORfindbugsAM_CREATES_EMPTY_JAR_FILE_ENTRYMAJORfindbugsAM_CREATES_EMPTY_ZIP_FILE_ENTRYMAJORfindbugsIMSE_DONT_CATCH_IMSEMAJORfindbugsFI_EMPTYMAJORfindbugsEQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THISMAJORfindbugsBC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTSCRITICALfindbugsNP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENTCRITICALfindbugsFI_EXPLICIT_INVOCATIONMAJORfindbugsJCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASSMINORfindbugsFI_MISSING_SUPER_CALLMAJORfindbugsFI_USELESSMINORfindbugsFI_NULLIFY_SUPERCRITICALfindbugsFI_FINALIZER_NULLS_FIELDSMAJORfindbugsFI_FINALIZER_ONLY_NULLS_FIELDSMAJORfindbugsIT_NO_SUCH_ELEMENTMINORfindbugsIP_PARAMETER_IS_DEAD_BUT_OVERWRITTENCRITICALfindbugsIL_INFINITE_LOOPBLOCKERfindbugsIL_INFINITE_RECURSIVE_LOOPCRITICALfindbugsNM_METHOD_CONSTRUCTOR_CONFUSIONMAJORfindbugsVA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAYMAJORfindbugsRV_ABSOLUTE_VALUE_OF_HASHCODECRITICALfindbugsRV_ABSOLUTE_VALUE_OF_RANDOM_INTCRITICALfindbugsINT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUECRITICALfindbugsINT_BAD_COMPARISON_WITH_SIGNED_BYTECRITICALfindbugsDMI_BAD_MONTHCRITICALfindbugsBIT_ADD_OF_SIGNED_BYTECRITICALfindbugsBIT_IOR_OF_SIGNED_BYTECRITICALfindbugsEC_UNRELATED_INTERFACESCRITICALfindbugsEC_UNRELATED_TYPESCRITICALfindbugsEC_UNRELATED_CLASS_AND_INTERFACECRITICALfindbugsEC_NULL_ARGCRITICALfindbugsDMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTIONMAJORfindbugsBIT_SIGNED_CHECK_HIGH_BITCRITICALfindbugsBIT_AND_ZZCRITICALfindbugsMF_CLASS_MASKS_FIELDMAJORfindbugsBOA_BADLY_OVERRIDDEN_ADAPTERCRITICALfindbugsNP_CLOSING_NULLBLOCKERfindbugsDMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVESCRITICALfindbugsEQ_DONT_DEFINE_EQUALS_FOR_ENUMMAJORfindbugsEQ_SELF_USE_OBJECTMAJORfindbugsBC_IMPOSSIBLE_CASTBLOCKERfindbugsBC_IMPOSSIBLE_DOWNCASTBLOCKERfindbugsBC_IMPOSSIBLE_DOWNCAST_OF_TOARRAYBLOCKERfindbugsBIT_ANDCRITICALfindbugsBIT_IORCRITICALfindbugsBC_IMPOSSIBLE_INSTANCEOFCRITICALfindbugsICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEILCRITICALfindbugsICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUNDCRITICALfindbugsIM_MULTIPLYING_RESULT_OF_IREMCRITICALfindbugsINT_BAD_REM_BY_1CRITICALfindbugsICAST_BAD_SHIFT_AMOUNTCRITICALfindbugsRE_BAD_SYNTAX_FOR_REGULAR_EXPRESSIONCRITICALfindbugsEC_BAD_ARRAY_COMPARECRITICALfindbugsDMI_INVOKING_HASHCODE_ON_ARRAYCRITICALfindbugsDMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAYCRITICALfindbugsDMI_INVOKING_TOSTRING_ON_ARRAYMAJORfindbugsIJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHODCRITICALfindbugsVA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIEDMAJORfindbugsQBA_QUESTIONABLE_BOOLEAN_ASSIGNMENTCRITICALfindbugsSQL_BAD_PREPARED_STATEMENT_ACCESSCRITICALfindbugsSQL_BAD_RESULTSET_ACCESSCRITICALfindbugsNP_NULL_PARAM_DEREFCRITICALfindbugsNP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUSCRITICALfindbugsNP_NONNULL_PARAM_VIOLATIONCRITICALfindbugsMF_METHOD_MASKS_FIELDMAJORfindbugsRpC_REPEATED_CONDITIONAL_TESTMAJORfindbugsRV_RETURN_VALUE_OF_PUTIFABSENT_IGNOREDMAJORfindbugsSA_FIELD_SELF_ASSIGNMENTCRITICALfindbugsSA_FIELD_SELF_COMPARISONCRITICALfindbugsSA_LOCAL_SELF_COMPARISONCRITICALfindbugsHE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASSCRITICALfindbugsSTI_INTERRUPTED_ON_UNKNOWNTHREADCRITICALfindbugsNP_STORE_INTO_NONNULL_FIELDCRITICALfindbugsRC_REF_COMPARISON_BAD_PRACTICE_BOOLEANMAJORfindbugsRC_REF_COMPARISON_BAD_PRACTICEMAJORfindbugsIJU_BAD_SUITE_METHODCRITICALfindbugsIJU_SETUP_NO_SUPERCRITICALfindbugsIJU_TEARDOWN_NO_SUPERCRITICALfindbugsIJU_NO_TESTSCRITICALfindbugsIJU_SUITE_NOT_STATICCRITICALfindbugsSE_READ_RESOLVE_IS_STATICMAJORfindbugsVA_FORMAT_STRING_BAD_CONVERSIONCRITICALfindbugsUMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASSCRITICALfindbugsUR_UNINIT_READMAJORfindbugsUR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTORMAJORfindbugsSIO_SUPERFLUOUS_INSTANCEOFCRITICALfindbugsSTI_INTERRUPTED_ON_CURRENTTHREADCRITICALfindbugsUWF_UNWRITTEN_FIELDMINORfindbugsHE_USE_OF_UNHASHABLE_CLASSCRITICALfindbugsDLS_DEAD_LOCAL_STORE_IN_RETURNCRITICALfindbugsDMI_HARDCODED_ABSOLUTE_FILENAMECRITICALfindbugsQF_QUESTIONABLE_FOR_LOOPCRITICALfindbugsIM_AVERAGE_COMPUTATION_COULD_OVERFLOWCRITICALfindbugsPZLA_PREFER_ZERO_LENGTH_ARRAYSMAJORfindbugsDLS_DEAD_LOCAL_STORE_OF_NULLCRITICALfindbugsDLS_DEAD_LOCAL_STORECRITICALfindbugsNP_DEREFERENCE_OF_READLINE_VALUECRITICALfindbugsSA_LOCAL_DOUBLE_ASSIGNMENTCRITICALfindbugsREC_CATCH_EXCEPTIONMAJORfindbugsNP_IMMEDIATE_DEREFERENCE_OF_READLINECRITICALfindbugsIC_INIT_CIRCULARITYCRITICALfindbugsBC_VACUOUS_INSTANCEOFCRITICALfindbugsICAST_IDIV_CAST_TO_DOUBLECRITICALfindbugsDMI_USELESS_SUBSTRINGCRITICALfindbugsNP_LOAD_OF_KNOWN_NULL_VALUEINFOfindbugsRV_CHECK_FOR_POSITIVE_INDEXOFMINORfindbugsXFB_XML_FACTORY_BYPASSCRITICALfindbugsRV_DONT_JUST_NULL_CHECK_READLINEMAJORfindbugsDB_DUPLICATE_BRANCHESCRITICALfindbugsDB_DUPLICATE_SWITCH_CLAUSESCRITICALfindbugsDMI_NONSERIALIZABLE_OBJECT_WRITTENCRITICALfindbugsVA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEANMAJORfindbugsNP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLECRITICALfindbugsNP_NULL_ON_SOME_PATH_FROM_RETURN_VALUECRITICALfindbugsNP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLECRITICALfindbugsNM_FIELD_NAMING_CONVENTIONMAJORfindbugsVA_FORMAT_STRING_USES_NEWLINEMINORfindbugsICAST_INT_2_LONG_AS_INSTANTMAJORfindbugsDM_CONVERT_CASEINFOfindbugsMS_MUTABLE_ARRAYINFOfindbugsMS_MUTABLE_HASHTABLEMAJORfindbugsMS_SHOULD_BE_REFACTORED_TO_BE_FINALMAJORfindbugsMS_OOI_PKGPROTECTMAJORfindbugsFI_PUBLIC_SHOULD_BE_PROTECTEDMAJORfindbugsEI_EXPOSE_STATIC_REP2MAJORfindbugsRV_RETURN_VALUE_IGNORED_INFERREDMINORfindbugsMS_EXPOSE_REPINFOfindbugsIS_INCONSISTENT_SYNCMAJORfindbugsLI_LAZY_INIT_UPDATE_STATICCRITICALfindbugsLI_LAZY_INIT_STATICCRITICALfindbugsRU_INVOKE_RUNMAJORfindbugsSWL_SLEEP_WITH_LOCK_HELDCRITICALfindbugsUL_UNRELEASED_LOCK_EXCEPTION_PATHCRITICALfindbugsUL_UNRELEASED_LOCKCRITICALfindbugsSP_SPIN_ON_FIELDMAJORfindbugsML_SYNC_ON_UPDATED_FIELDMAJORfindbugsMWN_MISMATCHED_NOTIFYCRITICALfindbugsMWN_MISMATCHED_WAITCRITICALfindbugsDM_MONITOR_WAIT_ON_CONDITIONMAJORfindbugsMSF_MUTABLE_SERVLET_FIELDMAJORfindbugsNN_NAKED_NOTIFYCRITICALfindbugsSTCAL_STATIC_CALENDAR_INSTANCECRITICALfindbugsSTCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCECRITICALfindbugsWL_USING_GETCLASS_RATHER_THAN_CLASS_LITERALCRITICALfindbugsDL_SYNCHRONIZATION_ON_BOOLEANCRITICALfindbugsDL_SYNCHRONIZATION_ON_BOXED_PRIMITIVECRITICALfindbugsDL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVECRITICALfindbugsML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELDMAJORfindbugsDL_SYNCHRONIZATION_ON_SHARED_CONSTANTCRITICALfindbugsJLM_JSR166_LOCK_MONITORENTERCRITICALfindbugsNP_SYNC_AND_NULL_CHECK_FIELDMAJORfindbugsBX_BOXING_IMMEDIATELY_UNBOXEDMAJORfindbugsBX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCIONMAJORfindbugsUPM_UNCALLED_PRIVATE_METHODMINORfindbugsSIC_INNER_SHOULD_BE_STATICMAJORfindbugsDMI_BLOCKING_METHODS_ON_URLBLOCKERfindbugsURF_UNREAD_FIELDMAJORfindbugsSS_SHOULD_BE_STATICMAJORfindbugsUUF_UNUSED_FIELDMAJORfindbugsDM_NEXTINT_VIA_NEXTDOUBLEMAJORfindbugsNP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELDMAJORfindbugsPT_RELATIVE_PATH_TRAVERSALMAJORfindbugsDM_DEFAULT_ENCODINGMAJORfindbugsDMI_ARGUMENTS_WRONG_ORDERMINORfindbugsSQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRINGCRITICALfindbugsDMI_EMPTY_DB_PASSWORDCRITICALfindbugsDMI_CONSTANT_DB_PASSWORDBLOCKERfindbugsHRS_REQUEST_PARAMETER_TO_COOKIEMAJORfindbugsHRS_REQUEST_PARAMETER_TO_HTTP_HEADERMAJORfindbugsXSS_REQUEST_PARAMETER_TO_JSP_WRITERCRITICALfindbugsSQL_NONCONSTANT_STRING_PASSED_TO_EXECUTECRITICALfindbugsXSS_REQUEST_PARAMETER_TO_SEND_ERRORCRITICALfindbugsXSS_REQUEST_PARAMETER_TO_SERVLET_WRITERCRITICALfindbugsSA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELDMAJORfindbugsAT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTIONMAJORfindbugsSF_SWITCH_NO_DEFAULTINFOfindbugsSW_SWING_METHODS_INVOKED_IN_SWING_THREADMAJORfindbugsSE_BAD_FIELD_INNER_CLASSMINORfindbugsRC_REF_COMPARISONCRITICALfindbugsSE_READ_RESOLVE_MUST_RETURN_OBJECTMAJORfindbugsNP_TOSTRING_COULD_RETURN_NULLCRITICALfindbugsSE_TRANSIENT_FIELD_NOT_RESTOREDMAJORfindbugsGC_UNCHECKED_TYPE_IN_GENERIC_CALLCRITICALfindbugsUI_INHERITANCE_UNSAFE_GETRESOURCEMAJORfindbugsNM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIERMAJORfindbugsNM_FUTURE_KEYWORD_USED_AS_IDENTIFIERMAJORfindbugsNM_VERY_CONFUSING_INTENTIONALMAJORfindbugsDMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLEMAJORfindbugsBX_UNBOXING_IMMEDIATELY_REBOXEDMAJORfindbugsNM_BAD_EQUALCRITICALfindbugsNM_LCASE_HASHCODECRITICALfindbugsNM_LCASE_TOSTRINGMAJORfindbugsNM_CLASS_NAMING_CONVENTIONMAJORfindbugsRV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUEMAJORfindbugsCO_COMPARETO_RESULTS_MIN_VALUEMAJORfindbugsTQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERSMAJORfindbugsRE_POSSIBLE_UNINTENDED_PATTERNCRITICALfindbugsIL_CONTAINER_ADDED_TO_ITSELFCRITICALfindbugsNP_NULL_INSTANCEOFBLOCKERfindbugsDMI_CALLING_NEXT_FROM_HASNEXTCRITICALfindbugsVA_FORMAT_STRING_ILLEGALCRITICALfindbugsNP_ARGUMENT_MIGHT_BE_NULLMAJORfindbugsNM_WRONG_PACKAGEMAJORfindbugsRV_RETURN_VALUE_IGNORED2MAJORfindbugsRV_RETURN_VALUE_IGNOREDMINORfindbugsNP_NONNULL_RETURN_VIOLATIONCRITICALfindbugsSE_METHOD_MUST_BE_PRIVATEMAJORfindbugsFL_MATH_USING_FLOAT_PRECISIONCRITICALfindbugsVA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSEDMAJORfindbugsVA_FORMAT_STRING_NO_PREVIOUS_ARGUMENTCRITICALfindbugsGC_UNRELATED_TYPESCRITICALfindbugsNP_NULL_PARAM_DEREF_NONVIRTUALCRITICALfindbugsSA_FIELD_SELF_COMPUTATIONCRITICALfindbugsSA_LOCAL_SELF_COMPUTATIONCRITICALfindbugsNP_ALWAYS_NULLCRITICALfindbugsNP_ALWAYS_NULL_EXCEPTIONCRITICALfindbugsNP_GUARANTEED_DEREFBLOCKERfindbugsRCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPECRITICALfindbugsVA_FORMAT_STRING_ARG_MISMATCHCRITICALfindbugsDLS_OVERWRITTEN_INCREMENTCRITICALfindbugsNP_NULL_ON_SOME_PATHCRITICALfindbugsVA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARGCRITICALfindbugsNP_NULL_ON_SOME_PATH_EXCEPTIONCRITICALfindbugsBX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATORMAJORfindbugsCI_CONFUSED_INHERITANCEMINORfindbugsSKIPPED_CLASS_TOO_BIGMINORfindbugsNS_DANGEROUS_NON_SHORT_CIRCUITCRITICALfindbugsSE_PRIVATE_READ_RESOLVE_NOT_INHERITEDMAJORfindbugsBC_BAD_CAST_TO_ABSTRACT_COLLECTIONMAJORfindbugsBC_BAD_CAST_TO_CONCRETE_COLLECTIONCRITICALfindbugsNS_NON_SHORT_CIRCUITMAJORfindbugsRCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUECRITICALfindbugsRCN_REDUNDANT_COMPARISON_TWO_NULL_VALUESCRITICALfindbugsRCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUEINFOfindbugsRCN_REDUNDANT_NULLCHECK_OF_NULL_VALUECRITICALfindbugsRV_REM_OF_RANDOM_INTCRITICALfindbugsRV_REM_OF_HASHCODECRITICALfindbugsICAST_INTEGER_MULTIPLY_CAST_TO_LONGCRITICALfindbugsSA_LOCAL_SELF_ASSIGNMENTCRITICALfindbugsFE_FLOATING_POINT_EQUALITYCRITICALfindbugsDMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTEDMAJORfindbugsSE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASSMAJORfindbugsBC_UNCONFIRMED_CASTCRITICALfindbugsICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFTCRITICALfindbugsEQ_UNUSUALMINORfindbugsUCF_USELESS_CONTROL_FLOWCRITICALfindbugsINT_VACUOUS_BIT_OPERATIONCRITICALfindbugsINT_VACUOUS_COMPARISONCRITICALfindbugsST_WRITE_TO_STATIC_FROM_INSTANCE_METHODCRITICALfindbugsESync_EMPTY_SYNCMAJORfindbugsIS_FIELD_NOT_GUARDEDCRITICALfindbugsUW_UNCOND_WAITMAJORfindbugsUG_SYNC_SET_UNSYNC_GETMAJORfindbugsNO_NOTIFY_NOT_NOTIFYALLCRITICALfindbugsWA_NOT_IN_LOOPCRITICALfindbugsTLW_TWO_LOCK_WAITMAJORfindbugsRV_NEGATING_RESULT_OF_COMPARETOMINORfindbugsSE_BAD_FIELDMAJORfindbugsNP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORCRITICALfindbugsSIC_INNER_SHOULD_BE_STATIC_ANONMAJORfindbugsSIC_INNER_SHOULD_BE_STATIC_NEEDS_THISMAJORfindbugsDM_GCMAJORfindbugsHSC_HUGE_SHARED_STRING_CONSTANTCRITICALfindbugsWMI_WRONG_MAP_ITERATORMINORfindbugsDMI_COLLECTION_OF_URLSBLOCKERfindbugsDM_BOXED_PRIMITIVE_TOSTRINGMAJORfindbugsDM_NEW_FOR_GETCLASSMAJORfindbugsUM_UNNECESSARY_MATHCRITICALfindbugsSBSC_USE_STRINGBUFFER_CONCATENATIONCRITICALfindbugsDM_BOOLEAN_CTORMAJORfindbugsDM_FP_NUMBER_CTORMAJORfindbugsDM_STRING_VOID_CTORMAJORfindbugsDM_STRING_CTORMAJORfindbugsDM_NUMBER_CTORCRITICALfindbugsDMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADSMINORfindbugsDLS_DEAD_STORE_OF_CLASS_LITERALCRITICALfindbugsSIC_THREADLOCAL_DEADLY_EMBRACEMAJORfindbugsDMI_USING_REMOVEALL_TO_CLEAR_COLLECTIONCRITICALfindbugsIO_APPENDING_TO_OBJECT_OUTPUT_STREAMCRITICALfindbugsFE_TEST_IF_EQUAL_TO_NOT_A_NUMBERCRITICALfindbugsSA_FIELD_DOUBLE_ASSIGNMENTCRITICALfindbugsDMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INTCRITICALfindbugsEQ_ALWAYS_FALSEBLOCKERfindbugsEQ_ALWAYS_TRUEBLOCKERfindbugsEQ_COMPARING_CLASS_NAMESMAJORfindbugsEQ_OVERRIDING_EQUALS_NOT_SYMMETRICMAJORfindbugsEQ_OTHER_NO_OBJECTMAJORfindbugsEQ_OTHER_USE_OBJECTMAJORfindbugsEC_ARRAY_AND_NONARRAYCRITICALfindbugsEC_INCOMPATIBLE_ARRAY_COMPAREBLOCKERfindbugsRV_EXCEPTION_NOT_THROWNCRITICALfindbugsUWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORMINORfindbugsUWF_NULL_FIELDCRITICALfindbugsRE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSIONCRITICALfindbugsVA_FORMAT_STRING_BAD_ARGUMENTCRITICALfindbugsVA_FORMAT_STRING_MISSING_ARGUMENTCRITICALfindbugsDMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTORMINORfindbugsMTIA_SUSPECT_STRUTS_INSTANCE_FIELDCRITICALfindbugsRI_REDUNDANT_INTERFACESMAJORfindbugsPZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORSMAJORfindbugsUSM_USELESS_ABSTRACT_METHODINFOfindbugsBAC_BAD_APPLET_CONSTRUCTORINFOfindbugsUOE_USE_OBJECT_EQUALSINFOfindbugsIMA_INEFFICIENT_MEMBER_ACCESSINFOfindbugsOBL_UNSATISFIED_OBLIGATIONINFOfindbugsUSM_USELESS_SUBCLASS_METHODINFOfindbugsFB_MISSING_EXPECTED_WARNINGINFOfindbugsLG_LOST_LOGGER_DUE_TO_WEAK_REFERENCEINFOfindbugsCD_CIRCULAR_DEPENDENCYINFOfindbugsFB_UNEXPECTED_WARNINGINFOfindbugsMS_CANNOT_BE_FINALMAJORfindbugsMS_SHOULD_BE_FINALMAJORfindbugsMS_FINAL_PKGPROTECTMAJORfindbugsMS_PKGPROTECTMAJORfindbugsOBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGECRITICALfindbugsNM_METHOD_NAMING_CONVENTIONMAJORfindbugsDM_USELESS_THREADMAJORfindbugsVO_VOLATILE_REFERENCE_TO_ARRAYMAJORfindbugsSTCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCECRITICALfindbugsSTCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCECRITICALfindbugsRS_READOBJECT_SYNCCRITICALfindbugsWS_WRITEOBJECT_SYNCCRITICALfindbugsMTIA_SUSPECT_SERVLET_INSTANCE_FIELDCRITICALfindbugsPS_PUBLIC_SEMAPHORESCRITICALfindbugsEQ_DOESNT_OVERRIDE_EQUALSMAJORfindbugsIM_BAD_CHECK_FOR_ODDCRITICALfindbugsIA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHODMAJORfindbugsDMI_UNSUPPORTED_METHODMAJORfindbugsDMI_DOHMAJORfindbugsSF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGHCRITICALfindbugsSF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROWCRITICALfindbugsDLS_DEAD_LOCAL_STORE_SHADOWS_FIELDMAJORfindbugsNM_VERY_CONFUSINGMAJORfindbugsTQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINKCRITICALfindbugsTQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINKCRITICALfindbugsTQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINKCRITICALfindbugsTQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINKCRITICALfindbugsNP_GUARANTEED_DEREF_ON_EXCEPTION_PATHCRITICALfindbugsTQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIREDCRITICALfindbugsTQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIREDCRITICALfindbugsDMI_VACUOUS_SELF_COLLECTION_CALLCRITICALfindbugsEC_UNRELATED_TYPES_USING_POINTER_EQUALITYCRITICALfindbugsUCF_USELESS_CONTROL_FLOW_NEXT_LINECRITICALfindbugsNP_UNWRITTEN_FIELDMAJORfindbugsRV_01_TO_INTMAJORfindbugsWA_AWAIT_NOT_IN_LOOPCRITICALfindbugsSC_START_IN_CTORCRITICALfindbugsDM_STRING_TOSTRINGINFOfindbugsITA_INEFFICIENT_TO_ARRAYMINORfindbugsSF_SWITCH_FALLTHROUGHCRITICALfindbugsBC_UNCONFIRMED_CAST_OF_RETURN_VALUECRITICALfindbugsURF_UNREAD_PUBLIC_OR_PROTECTED_FIELDINFOfindbugsUUF_UNUSED_PUBLIC_OR_PROTECTED_FIELDINFOfindbugsUWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELDMINORfindbugsJML_JSR166_CALLING_WAIT_RATHER_THAN_AWAITMAJORcheckstylecom.puppycrawl.tools.checkstyle.checks.naming.AbstractClassNameCheckMAJORignoreNamefalseignoreModifierfalseformat^Abstract.*$squidUndocumentedApiMAJORforClasses**checkstylecom.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheckINFOsquidArchitecturalConstraint_1414485671320BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.dataaccess.**, io.oasp.gastronomy.restaurant.*.client.**, io.oasp.gastronomy.restaurant.*.gui.**fromClassesio.oasp.gastronomy.restaurant.*.service.**squidArchitecturalConstraint_1414485580158BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.logic.**,io.oasp.gastronomy.restaurant.*.service.**,io.oasp.gastronomy.restaurant.*.client.**,io.oasp.gastronomy.restaurant.*.gui.**, io.oasp.gastronomy.restaurant.*.batch.**fromClassesio.oasp.gastronomy.restaurant.*.dataaccess.**squidArchitecturalConstraint_1414485749240BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.*.impl.**, io.oasp.gastronomy.restaurant.*.*.base.**fromClassesio.oasp.gastronomy.restaurant.*.*.api.**squidArchitecturalConstraint_1414485839425BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.service.**, io.oasp.gastronomy.restaurant.*.client.**, io.oasp.gastronomy.restaurant.*.gui.**, io.oasp.gastronomy.restaurant.*.batch.**fromClassesio.oasp.gastronomy.restaurant.*.logic.**squidArchitecturalConstraint_1414485883318MAJORtoClassesio.oasp.gastronomy.restaurant.*.*.impl.**fromClassesio.oasp.gastronomy.restaurant.*.*.base.**squidArchitecturalConstraint_1414486782397BLOCKERtoClassesio.oasp.gastronomy.restaurant.*management.**fromClassesio.oasp.gastronomy.restaurant.general.**squidArchitecturalConstraint_1414486919592BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.dataaccess.base.**, io.oasp.gastronomy.restaurant.*.dataaccess.impl.**fromClassesio.oasp.gastronomy.restaurant.*.logic.**squidArchitecturalConstraint_1414487064216BLOCKERtoClassesio.oasp.gastronomy.restaurant.*.logic.base.**, io.oasp.gastronomy.restaurant.*.logic.impl.**fromClassesio.oasp.gastronomy.restaurant.*.service.**squidArchitecturalConstraint_1414487439305BLOCKERtoClassesio.oasp.gastronomy.restaurant.salesmanagement.**, io.oasp.gastronomy.restaurant.offermanagement.**fromClassesio.oasp.gastronomy.restaurant.tablemanagement.**squidArchitecturalConstraint_1414487626133BLOCKERtoClassesio.oasp.gastronomy.restaurant.salesmanagement.**, io.oasp.gastronomy.restaurant.staffmanagement.**, io.oasp.gastronomy.restaurant.tablemanagement.**fromClassesio.oasp.gastronomy.restaurant.offermanagement.**squidS1194CRITICALsquidS1190MAJORsquidS1206MAJORsquidS1219CRITICAL
\ No newline at end of file
diff --git a/settings/sonarqube/sonarqube_oasp_javascript.xml b/settings/sonarqube/sonarqube_oasp_javascript.xml
new file mode 100644
index 000000000..57a4af432
--- /dev/null
+++ b/settings/sonarqube/sonarqube_oasp_javascript.xml
@@ -0,0 +1 @@
+oasp4jsjsjavascriptEqEqEqMAJORjavascriptS1442MAJORjavascriptDebuggerStatementMAJORjavascriptBoundOrAssignedEvalOrArgumentsCRITICALjavascriptS1134MAJORjavascriptForInMAJORjavascriptElseIfWithoutElseMAJORjavascriptS1145MAJORjavascriptS1301MINORjavascriptS1219CRITICALjavascriptS1135INFOjavascriptWithStatementMAJORjavascriptS1264MINORjavascriptCurlyBracesMAJORjavascriptNonEmptyCaseWithoutBreakMAJORjavascriptAssignmentWithinConditionMAJORjavascriptFunctionDefinitionInsideLoopMAJORjavascriptEmptyBlockMAJORjavascriptExcessiveParameterListMAJORmaximumFunctionParameters7javascriptMultilineStringLiteralsBLOCKERjavascriptNamedFunctionExpressionMAJORjavascriptRedeclaredFunctionMAJORjavascriptRedeclaredVariableMAJORjavascriptFunctionComplexityMAJORmaximumFunctionComplexityThreshold10javascriptTrailingCommentMINORlegalCommentPattern^//\s*+[^\s]++$javascriptTrailingWhitespaceMAJORjavascriptSameNameForFunctionAndVariableMAJORjavascriptEvalMAJORjavascriptConstructorFunctionsForSideEffectsMAJORjavascriptTabCharacterMINORjavascriptContinueStatementMAJORjavascriptVariableShadowingMAJORjavascriptS1125MINORjavascriptCollapsibleIfStatementsMAJORjavascriptS878MAJORjavascriptNestedIfDepthMINORmaximumNestingLevel3javascriptVariableDeclarationAfterUsageMAJORjavascriptArrayAndObjectConstructorsBLOCKERjavascriptFutureReservedWordsCRITICALjavascriptBitwiseOperatorsBLOCKERjavascriptFunctionDeclarationsWithinBlocksBLOCKERjavascriptHtmlCommentsMAJORjavascriptConditionalCommentMAJORjavascriptTooManyBreakOrContinueInLoopMAJORjavascriptOneStatementPerLineMAJORjavascriptOctalNumberCRITICALjavascriptPrimitiveWrappersMAJORjavascriptDuplicatePropertyNameCRITICALcommon-jsDuplicatedBlocksMAJORjavascriptSemicolonMAJORjavascriptS1067MAJORmax3javascriptS104MAJORmaximum1000javascriptDuplicateFunctionArgumentCRITICALjavascriptS1472CRITICALjavascriptS100MAJORformat^[a-z][a-zA-Z0-9]*$javascriptS138MAJORmax100javascriptParsingErrorMAJORjavascriptLabelPlacementMAJORjavascriptCommentRegularExpressionMAJORmessageThe regular expression matches this commentjavascriptS1126MINORjavascriptCommentedCodeBLOCKERjavascriptSwitchWithoutDefaultMAJORjavascriptTrailingCommaMAJORjavascriptUnreachableCodeMAJORjavascriptUnusedFunctionArgumentMAJORjavascriptUnusedVariableMAJORjavascriptSingleQuoteMAJORjavascriptXPathMAJORmessageThe XPath expression matches this piece of code
\ No newline at end of file
diff --git a/src/main/javadoc/stylesheet.css b/src/main/javadoc/stylesheet.css
new file mode 100644
index 000000000..546edf93f
--- /dev/null
+++ b/src/main/javadoc/stylesheet.css
@@ -0,0 +1,478 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+body {
+ background-color:#ffffff;
+ color:#353833;
+ font-family:Arial, Helvetica, sans-serif;
+ font-size:76%;
+ margin:0;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:#4c6b87;
+}
+a:hover, a:focus {
+ text-decoration:none;
+ color:#bb7a2a;
+}
+a:active {
+ text-decoration:none;
+ color:#4c6b87;
+}
+a[name] {
+ color:#353833;
+}
+a[name]:hover {
+ text-decoration:none;
+ color:#353833;
+}
+pre {
+ font-size:1.3em;
+ white-space: pre-wrap;
+ background: #F6F6F6;
+ border-left: 5px solid #6CE26C;
+ padding: 0.5em;
+}
+h1 {
+ font-size:1.8em;
+}
+h2 {
+ font-size:1.5em;
+}
+h3 {
+ font-size:1.4em;
+}
+h4 {
+ font-size:1.3em;
+}
+h5 {
+ font-size:1.2em;
+}
+h6 {
+ font-size:1.1em;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-size:1.2em;
+}
+dt code {
+ font-size:1.2em;
+}
+table tr td dt code {
+ font-size:1.2em;
+ vertical-align:top;
+}
+sup {
+ font-size:.6em;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+ clear:both;
+ height:0px;
+ overflow:hidden;
+}
+.aboutLanguage {
+ float:right;
+ padding:0px 21px;
+ font-size:.8em;
+ z-index:200;
+ margin-top:-7px;
+}
+.legalCopy {
+ margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+ color:#FFFFFF;
+ text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+ color:#bb7a2a;
+}
+.tab {
+ background-color:#0066FF;
+ background-image:url(resources/titlebar.gif);
+ background-position:left top;
+ background-repeat:no-repeat;
+ color:#ffffff;
+ padding:8px;
+ width:5em;
+ font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+ background-image:url(resources/background.gif);
+ background-repeat:repeat-x;
+ color:#FFFFFF;
+ padding:.8em .5em .4em .8em;
+ height:auto;/*height:1.8em;*/
+ font-size:1em;
+ margin:0;
+}
+.topNav {
+ background-image:url(resources/background.gif);
+ background-repeat:repeat-x;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+}
+.bottomNav {
+ margin-top:10px;
+ background-image:url(resources/background.gif);
+ background-repeat:repeat-x;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+}
+.subNav {
+ background-color:#dee3e9;
+ border-bottom:1px solid #9eadc0;
+ float:left;
+ width:100%;
+ overflow:hidden;
+}
+.subNav div {
+ clear:left;
+ float:left;
+ padding:0 0 5px 6px;
+}
+ul.navList, ul.subNavList {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.navList li{
+ list-style:none;
+ float:left;
+ padding:3px 6px;
+}
+ul.subNavList li{
+ list-style:none;
+ float:left;
+ font-size:90%;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+ color:#FFFFFF;
+ text-decoration:none;
+}
+.topNav a:hover, .bottomNav a:hover {
+ text-decoration:none;
+ color:#bb7a2a;
+}
+.navBarCell1Rev {
+ background-image:url(resources/tab.gif);
+ background-color:#a88834;
+ color:#FFFFFF;
+ margin: auto 5px;
+ border:1px solid #c9aa44;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+ clear:both;
+ margin:0 20px;
+ padding:5px 0 0 0;
+}
+.indexHeader {
+ margin:10px;
+ position:relative;
+}
+.indexHeader h1 {
+ font-size:1.3em;
+}
+.title {
+ color:#2c4557;
+ margin:10px 0;
+}
+.subTitle {
+ margin:5px 0 0 0;
+}
+.header ul {
+ margin:0 0 25px 0;
+ padding:0;
+}
+.footer ul {
+ margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+ list-style:none;
+ font-size:1.2em;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+ background-color:#dee3e9;
+ border-top:1px solid #9eadc0;
+ border-bottom:1px solid #9eadc0;
+ margin:0 0 6px -8px;
+ padding:2px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ background-color:#dee3e9;
+ border-top:1px solid #9eadc0;
+ border-bottom:1px solid #9eadc0;
+ margin:0 0 6px -8px;
+ padding:2px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+ padding:0;
+ margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+ padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+.indexContainer {
+ margin:10px;
+ position:relative;
+ font-size:1.0em;
+}
+.indexContainer h2 {
+ font-size:1.1em;
+ padding:0 0 3px 0;
+}
+.indexContainer ul {
+ margin:0;
+ padding:0;
+}
+.indexContainer ul li {
+ list-style:none;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+ font-size:1.1em;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+ margin:10px 0 10px 20px;
+}
+.serializedFormContainer dl.nameValue dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+ul.inheritance {
+ margin:0;
+ padding:0;
+}
+ul.inheritance li {
+ display:inline;
+ list-style:none;
+}
+ul.inheritance li ul.inheritance {
+ margin-left:15px;
+ padding-left:15px;
+ padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+ list-style:none;
+ margin-bottom:25px;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+ padding:0px 20px 5px 10px;
+ border:1px solid #9eadc0;
+ background-color:#f9f9f9;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+ padding:0 0 5px 8px;
+ background-color:#ffffff;
+ border:1px solid #9eadc0;
+ border-top:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+ margin-left:0;
+ padding-left:0;
+ padding-bottom:15px;
+ border:none;
+ border-bottom:1px solid #9eadc0;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+ list-style:none;
+ border-bottom:none;
+ padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.contentContainer table, .classUseContainer table, .constantValuesContainer table {
+ border-bottom:1px solid #9eadc0;
+ width:100%;
+}
+.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table {
+ width:100%;
+}
+.contentContainer .description table, .contentContainer .details table {
+ border-bottom:none;
+}
+.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{
+ vertical-align:top;
+ padding-right:20px;
+}
+.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast,
+.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast,
+.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne,
+.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne {
+ padding-right:3px;
+}
+.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:#FFFFFF;
+ font-weight:bold;
+ clear:none;
+ overflow:hidden;
+ padding:0px;
+ margin:0px;
+}
+caption a:link, caption a:hover, caption a:active, caption a:visited {
+ color:#FFFFFF;
+}
+.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span {
+ white-space:nowrap;
+ padding-top:8px;
+ padding-left:8px;
+ display:block;
+ float:left;
+ background-image:url(resources/titlebar.gif);
+ height:18px;
+}
+.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd {
+ width:10px;
+ background-image:url(resources/titlebar_end.gif);
+ background-repeat:no-repeat;
+ background-position:top right;
+ position:relative;
+ float:left;
+}
+ul.blockList ul.blockList li.blockList table {
+ margin:0 0 12px 0px;
+ width:100%;
+}
+.tableSubHeadingColor {
+ background-color: #EEEEFF;
+}
+.altColor {
+ background-color:#eeeeef;
+}
+.rowColor {
+ background-color:#ffffff;
+}
+.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td {
+ text-align:left;
+ padding:3px 3px 3px 7px;
+}
+th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+ background:#dee3e9;
+ border-top:1px solid #9eadc0;
+ border-bottom:1px solid #9eadc0;
+ text-align:left;
+ padding:3px 3px 3px 7px;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+ font-weight:bold;
+}
+td.colFirst, th.colFirst {
+ border-left:1px solid #9eadc0;
+ white-space:nowrap;
+}
+td.colLast, th.colLast {
+ border-right:1px solid #9eadc0;
+}
+td.colOne, th.colOne {
+ border-right:1px solid #9eadc0;
+ border-left:1px solid #9eadc0;
+}
+table.overviewSummary {
+ padding:0px;
+ margin-left:0px;
+}
+table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
+table.overviewSummary td.colOne, table.overviewSummary th.colOne {
+ width:25%;
+ vertical-align:middle;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+ width:25%;
+ vertical-align:middle;
+}
+/*
+Content styles
+*/
+.description pre {
+ margin-top:0;
+}
+.deprecatedContent {
+ margin:0;
+ padding:10px 0;
+}
+.docSummary {
+ padding:0;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+ color:green;
+ padding:0 30px 0 0;
+}
+h1.hidden {
+ visibility:hidden;
+ overflow:hidden;
+ font-size:.9em;
+}
+.block {
+ display:block;
+ margin:3px 0 0 0;
+}
+.strong {
+ font-weight:bold;
+}
diff --git a/src/site/resources/favicon.ico b/src/site/resources/favicon.ico
new file mode 100644
index 000000000..d34b8be3d
Binary files /dev/null and b/src/site/resources/favicon.ico differ
diff --git a/src/site/site.xml b/src/site/site.xml
new file mode 100644
index 000000000..128a5e413
--- /dev/null
+++ b/src/site/site.xml
@@ -0,0 +1,31 @@
+
+
+
+ http://oasp.github.io/img/logo/oasp-logo-72dpi.png
+ http://oasp.github.io/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.skins
+ maven-fluido-skin
+ 1.3.0
+
+
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
new file mode 100644
index 000000000..3abf3d444
--- /dev/null
+++ b/src/site/xdoc/index.xml
@@ -0,0 +1,13 @@
+
+
+
+ OASP4J - Open Application Standard Platform for Java
+ Jörg Hohwiller
+
+
+
+
+ Welcome to the Open Application Standard Platform for Java (OASP4J).
+
+
+