Adapt Security to RCP
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 16 Jan 2011 21:17:49 +0000 (21:17 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 16 Jan 2011 21:17:49 +0000 (21:17 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4035 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

69 files changed:
eclipse/features/org.argeo.eclipse.dep.common/pom.xml
eclipse/features/org.argeo.eclipse.dep.rcp/pom.xml
eclipse/features/pom.xml
eclipse/plugins/org.argeo.eclipse.ui/pom.xml
eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/AbstractSpringUiPlugin.java [deleted file]
eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/ApplicationContextTracker.java
osgi/runtime/org.argeo.osgi.boot/pom.xml
pom.xml
security/eclipse/plugins/org.argeo.security.equinox/.classpath [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/.project [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.pde.core.prefs [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/loginModules.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/osgi.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/build.properties [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/jaas/jaas_default.txt [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/plugin.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/pom.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/EquinoxSecurity.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/SpringLoginModule.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rap/org.argeo.security.ui.rap-maven.target [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rap/pom.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/.classpath [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/.project [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/SecureRCP.product [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/argeo_security_rap.properties [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/build.properties [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_about.gif [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.icns [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.ico [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.xpm [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_16.gif [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_32.gif [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/log4j.properties [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/plugin.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/pom.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/RapSecureWorkbenchWindowAdvisor.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRap.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRcp.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/.classpath [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/.project [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.pde.core.prefs [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/META-INF/MANIFEST.MF [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/osgi.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/views.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/build.properties [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/plugin.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/pom.xml [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityUiPlugin.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/AbstractLoginDialog.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/DefaultLoginDialog.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java [new file with mode: 0644]
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java [new file with mode: 0644]
security/eclipse/plugins/pom.xml [new file with mode: 0644]
security/eclipse/pom.xml [new file with mode: 0644]
security/pom.xml
server/modules/org.argeo.server.ads.server/.project [new file with mode: 0644]
server/modules/org.argeo.server.ads.server/.settings/org.eclipse.pde.core.prefs [new file with mode: 0644]
server/modules/org.argeo.server.ads.server/META-INF/spring/ads.xml
server/modules/org.argeo.server.ads.server/build.properties [new file with mode: 0644]
server/runtime/org.argeo.server.core/pom.xml
server/runtime/org.argeo.server.jackrabbit/build.properties

index 2ef694097a373ab683253ced5b04d2b5161a5264..7c0a8455a4d1af581bcb77633e5765b949d0b50b 100644 (file)
                        <groupId>org.eclipse.core</groupId>
                        <artifactId>org.eclipse.core.runtime</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>org.eclipse.swt</groupId>
-                       <artifactId>org.eclipse.swt</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.eclipse.swt</groupId>
-                       <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.eclipse.swt</groupId>
-                       <artifactId>org.eclipse.swt.gtk.linux.x86</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.eclipse.swt</groupId>
-                       <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
-               </dependency>
                <dependency>
                        <groupId>org.eclipse.core</groupId>
                        <artifactId>org.eclipse.core.commands</artifactId>
                        <groupId>org.eclipse.equinox</groupId>
                        <artifactId>org.eclipse.equinox.launcher</artifactId>
                </dependency>
+
+               <!-- Security -->
                <dependency>
                        <groupId>org.eclipse.equinox</groupId>
-                       <artifactId>org.eclipse.equinox.launcher.gtk.linux.x86_64</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.eclipse.equinox</groupId>
-                       <artifactId>org.eclipse.equinox.launcher.gtk.linux.x86</artifactId>
+                       <artifactId>org.eclipse.equinox.security</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.equinox</groupId>
-                       <artifactId>org.eclipse.equinox.launcher.win32.win32.x86</artifactId>
+                       <artifactId>org.eclipse.equinox.security.ui</artifactId>
                </dependency>
        </dependencies>
 </project>
index 571745e19a5d9c60c049c21156bbc107be86f43c..a6ef2d5b8f54b9686dbb4e3f909a5129f682225f 100644 (file)
                        <groupId>org.eclipse.ui</groupId>
                        <artifactId>org.eclipse.ui</artifactId>
                </dependency>
+
+               <!-- SWT -->
+               <dependency>
+                       <groupId>org.eclipse.swt</groupId>
+                       <artifactId>org.eclipse.swt</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.eclipse.swt</groupId>
+                       <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.eclipse.swt</groupId>
+                       <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
+               </dependency>
+
+
+       <!-- <dependency> -->
+       <!-- <groupId>org.eclipse.equinox</groupId> -->
+       <!-- <artifactId>org.eclipse.equinox.launcher.gtk.linux.x86_64</artifactId> -->
+       <!-- </dependency> -->
+       <!-- <dependency> -->
+       <!-- <groupId>org.eclipse.equinox</groupId> -->
+       <!-- <artifactId>org.eclipse.equinox.launcher.gtk.linux.x86</artifactId> -->
+       <!-- </dependency> -->
+       <!-- <dependency> -->
+       <!-- <groupId>org.eclipse.equinox</groupId> -->
+       <!-- <artifactId>org.eclipse.equinox.launcher.win32.win32.x86</artifactId> -->
+       <!-- </dependency> -->
        </dependencies>
 </project>
index c01f98b8dcc6497146ab2a5d10871ec3b3367d98..1b72355faee0983eec5336676e9bc7b5b97c8322 100644 (file)
                                <groupId>org.apache.felix</groupId>
                                <artifactId>maven-bundle-plugin</artifactId>
                                <version>${version.maven-bundle-plugin}</version>
-                               <configuration>
-                                       <manifestLocation>META-INF</manifestLocation>
-                                       <instructions>
-                                               <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
-                                               <Bundle-Version>${project.version}-r${buildNumber}</Bundle-Version>
-                                       </instructions>
-                               </configuration>
-                               <executions>
-                                       <execution>
-                                               <id>bundle-manifest</id>
-                                               <phase>process-resources</phase>
-                                               <goals>
-                                                       <goal>manifest</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
                        </plugin>
-
                </plugins>
                <pluginManagement>
                        <plugins>
                                        <groupId>org.argeo.maven.plugins</groupId>
                                        <artifactId>maven-argeo-osgi-plugin</artifactId>
                                        <executions>
+                                               <execution>
+                                                       <id>resolve-pde-sources</id>
+                                                       <goals>
+                                                               <goal>pde-sources</goal>
+                                                       </goals>
+                                                       <phase>generate-resources</phase>
+                                               </execution>
                                                <execution>
                                                        <id>generate-descriptors</id>
                                                        <goals>
                                                        </goals>
                                                        <phase>generate-resources</phase>
                                                </execution>
-                                               <!-- <execution> <id>check-osgi</id> <phase>test</phase> <goals> <goal>equinox</goal> 
-                                                       </goals> <configuration> <onlyCheck>true</onlyCheck> <argsToAppend> <arg>-clean</arg> 
-                                                       </argsToAppend> </configuration> </execution> -->
+                                               <execution>
+                                                       <id>check-osgi</id>
+                                                       <phase>test</phase>
+                                                       <goals>
+                                                               <goal>equinox</goal>
+                                                       </goals>
+                                                       <configuration>
+                                                               <onlyCheck>true</onlyCheck>
+                                                               <argsToAppend>
+                                                                       <arg>-clean</arg>
+                                                               </argsToAppend>
+                                                       </configuration>
+                                               </execution>
                                        </executions>
                                </plugin>
                        </plugins>
                </pluginManagement>
        </build>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.osgi</groupId>
+                       <artifactId>org.argeo.osgi.boot</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
 </project>
\ No newline at end of file
index a40ed57c27526c9d8d1c88bcf5f3b51cce8cf1b0..ee53982525df00e1ed6305a0f6b976dfe053c99b 100644 (file)
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.context</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.extender</artifactId>
+               </dependency>
 
                <!-- Others -->
                <dependency>
diff --git a/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/AbstractSpringUiPlugin.java b/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/AbstractSpringUiPlugin.java
deleted file mode 100644 (file)
index 5c31d61..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *         http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.argeo.eclipse.spring;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-import org.springframework.context.ApplicationContext;
-
-public abstract class AbstractSpringUiPlugin extends AbstractUIPlugin {
-       private BundleContext bundleContext;
-
-       @Override
-       public void start(BundleContext context) throws Exception {
-               super.start(context);
-               this.bundleContext = context;
-       }
-
-       @Override
-       public void stop(BundleContext context) throws Exception {
-               super.stop(context);
-       }
-
-       public ApplicationContext getApplicationContext() {
-               return ApplicationContextTracker.getApplicationContext(bundleContext
-                               .getBundle());
-       }
-}
index e29d5a05690e2974027c06184ff138570fb1f0c0..805d11d8a580632bc71acc7eb72bc2e19f8e35fc 100644 (file)
@@ -20,7 +20,6 @@ import static java.text.MessageFormat.format;
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
-import org.argeo.eclipse.ui.ArgeoUiPlugin;\r
 import org.eclipse.core.runtime.Platform;\r
 import org.osgi.framework.Bundle;\r
 import org.osgi.framework.BundleContext;\r
@@ -54,8 +53,8 @@ class ApplicationContextTracker {
         */\r
        public ApplicationContextTracker(final Bundle contributorBundle,\r
                        final BundleContext factoryBundleContext) {\r
-               final String filter = format(FILTER, contributorBundle\r
-                               .getSymbolicName());\r
+               final String filter = format(FILTER,\r
+                               contributorBundle.getSymbolicName());\r
                try {\r
                        applicationContextServiceTracker = new ServiceTracker(\r
                                        factoryBundleContext, FrameworkUtil.createFilter(filter),\r
@@ -98,9 +97,7 @@ class ApplicationContextTracker {
 \r
        static ApplicationContext getApplicationContext(Bundle contributorBundle) {\r
                if (log.isTraceEnabled())\r
-                       log\r
-                                       .trace("Get application context for bundle "\r
-                                                       + contributorBundle);\r
+                       log.trace("Get application context for bundle " + contributorBundle);\r
 \r
                if (contributorBundle.getState() != Bundle.ACTIVE\r
                                && contributorBundle.getState() != Bundle.STARTING) {\r
@@ -114,8 +111,7 @@ class ApplicationContextTracker {
                }\r
 \r
                final ApplicationContextTracker applicationContextTracker = new ApplicationContextTracker(\r
-                               contributorBundle, ArgeoUiPlugin.getDefault()\r
-                                               .getBundleContext());\r
+                               contributorBundle, contributorBundle.getBundleContext());\r
                ApplicationContext applicationContext = null;\r
                try {\r
                        applicationContext = applicationContextTracker\r
index 9e9f30c627c1511154dac0e249c445ef9f56ed82..e5d29a91293004565a361c6b7d6136344c29c31d 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.commons.osgi</groupId>
@@ -38,6 +39,7 @@
                                <configuration>
                                        <instructions>
                                                <Bundle-Activator>org.argeo.osgi.boot.Activator</Bundle-Activator>
+                                               <Bundle-RequiredExecutionEnvironment>J2SE-1.4</Bundle-RequiredExecutionEnvironment>
                                        </instructions>
                                </configuration>
                        </plugin>
diff --git a/pom.xml b/pom.xml
index 5f6feca0c244927e7276e2014c26c490ef4531a8..7344fc97a2dd305ef1cf5df76bd1953145f2689f 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo</groupId>
@@ -82,6 +83,7 @@ limitations under the License.
                                <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-compiler-plugin</artifactId>
+                                       <version>2.3.2</version>
                                        <configuration>
                                                <source>1.5</source>
                                                <target>1.5</target>
@@ -90,6 +92,7 @@ limitations under the License.
                                <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-source-plugin</artifactId>
+                                       <version>2.1.2</version>
                                        <executions>
                                                <execution>
                                                        <id>attach-sources</id>
@@ -107,6 +110,7 @@ limitations under the License.
                                </plugin>
                                <plugin>
                                        <artifactId>maven-jar-plugin</artifactId>
+                                       <version>2.3.1</version>
                                        <configuration>
                                                <archive>
                                                        <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
@@ -123,6 +127,7 @@ limitations under the License.
                                                <instructions>
                                                        <Bundle-Version>${project.version}-r${buildNumber}</Bundle-Version>
                                                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                                                       <Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
                                                        <_removeheaders>Bnd-LastModified</_removeheaders>
                                                </instructions>
                                        </configuration>
@@ -167,6 +172,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-resources-plugin</artifactId>
+                               <version>2.4.3</version>
                                <configuration>
                                        <encoding>UTF-8</encoding>
                                </configuration>
@@ -249,6 +255,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-project-info-reports-plugin</artifactId>
+                               <version>2.3.1</version>
                                <reportSets>
                                        <reportSet>
                                                <reports>
@@ -271,6 +278,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-javadoc-plugin</artifactId>
+                               <version>2.7</version>
                                <inherited>false</inherited>
                                <configuration>
                                        <aggregate>true</aggregate>
@@ -280,6 +288,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-jxr-plugin</artifactId>
+                               <version>2.2</version>
                                <configuration>
                                        <aggregate>true</aggregate>
                                </configuration>
@@ -287,6 +296,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-surefire-report-plugin</artifactId>
+                               <version>2.7.1</version>
                                <inherited>false</inherited>
                                <configuration>
                                        <aggregate>true</aggregate>
@@ -295,6 +305,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.codehaus.mojo</groupId>
                                <artifactId>taglist-maven-plugin</artifactId>
+                               <version>2.4</version>
                                <configuration>
                                        <aggregate>true</aggregate>
                                        <tags>
@@ -307,6 +318,7 @@ limitations under the License.
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-changelog-plugin</artifactId>
+                               <version>2.2</version>
                                <inherited>false</inherited>
                        </plugin>
                        <plugin>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/.classpath b/security/eclipse/plugins/org.argeo.security.equinox/.classpath
new file mode 100644 (file)
index 0000000..92f19d2
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src/main/java"/>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/.project b/security/eclipse/plugins/org.argeo.security.equinox/.project
new file mode 100644 (file)
index 0000000..e4dd594
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.security.equinox</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.jdt.core.prefs b/security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..62fa6bd
--- /dev/null
@@ -0,0 +1,8 @@
+#Sun Jan 16 11:20:02 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.pde.core.prefs b/security/eclipse/plugins/org.argeo.security.equinox/.settings/org.eclipse.pde.core.prefs
new file mode 100644 (file)
index 0000000..87ab381
--- /dev/null
@@ -0,0 +1,4 @@
+#Sun Jan 16 11:19:07 CET 2011
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/loginModules.xml b/security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/loginModules.xml
new file mode 100644 (file)
index 0000000..f454d7a
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+        http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+       <bean id="springLoginModule" class="org.argeo.security.equinox.SpringLoginModule"
+               scope="prototype">
+               <property name="authenticationManager" ref="authenticationManager" />
+       </bean>
+</beans>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/osgi.xml b/security/eclipse/plugins/org.argeo.security.equinox/META-INF/spring/osgi.xml
new file mode 100644 (file)
index 0000000..8003fb2
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xmlns:osgi="http://www.springframework.org/schema/osgi"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
+       osgi:default-timeout="30000">\r
+\r
+       <reference id="authenticationManager"\r
+               interface="org.springframework.security.AuthenticationManager"\r
+               context-class-loader="client" />\r
+</beans:beans>
\ No newline at end of file
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/build.properties b/security/eclipse/plugins/org.argeo.security.equinox/build.properties
new file mode 100644 (file)
index 0000000..87a7fc2
--- /dev/null
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+               jaas/,\
+               plugin.xml
+source.. = src/main/java/
+output.. = target/classes/
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/jaas/jaas_default.txt b/security/eclipse/plugins/org.argeo.security.equinox/jaas/jaas_default.txt
new file mode 100644 (file)
index 0000000..b6cbaa6
--- /dev/null
@@ -0,0 +1,14 @@
+UNIX {
+    org.eclipse.equinox.security.auth.module.ExtensionLoginModule sufficient
+        extensionId="org.argeo.security.equinox.unixLoginModule";
+};
+
+SPRING {
+    org.eclipse.equinox.security.auth.module.ExtensionLoginModule sufficient
+        extensionId="org.argeo.security.equinox.springLoginModule";
+};
+
+SPRING_SECURITY_CONTEXT {
+    org.eclipse.equinox.security.auth.module.ExtensionLoginModule sufficient
+        extensionId="org.argeo.security.equinox.springSecurityContextLoginModule";
+};
\ No newline at end of file
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/plugin.xml b/security/eclipse/plugins/org.argeo.security.equinox/plugin.xml
new file mode 100644 (file)
index 0000000..b407360
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         id="springSecurityContextLoginModule"
+         point="org.eclipse.equinox.security.loginModule">
+      <loginModule
+            class="org.springframework.security.providers.jaas.SecurityContextLoginModule"
+            description="Spring Security Context (provided by Spring)">
+      </loginModule>
+   </extension>
+  <extension id="unixLoginModule"
+           name="Unix Login Module"
+           point="org.eclipse.equinox.security.loginModule">
+   <loginModule
+       class="com.sun.security.auth.module.UnixLoginModule"
+       description="Unix Login Module">
+   </loginModule>
+   </extension>
+  <extension
+        id="springLoginModule"
+        point="org.eclipse.equinox.security.loginModule">
+        name="Spring Login Module"
+     <loginModule
+           class="org.argeo.eclipse.spring.SpringExtensionFactory"
+           description="Spring Login Module">
+     </loginModule>
+  </extension>
+
+</plugin>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/pom.xml b/security/eclipse/plugins/org.argeo.security.equinox/pom.xml
new file mode 100644 (file)
index 0000000..1c00148
--- /dev/null
@@ -0,0 +1,76 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons.security</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>plugins</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.security.equinox</artifactId>
+       <name>Commons Security Equinox</name>
+       <packaging>jar</packaging>
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-source-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <version>${version.maven-bundle-plugin}</version>
+                               <configuration>
+                                       <instructions>
+                                               <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                                               <Bundle-Activator>org.argeo.security.equinox.EquinoxSecurity</Bundle-Activator>
+                                               <Import-Package>*,
+                                                       org.springframework.core,
+                                                       org.argeo.eclipse.spring
+                                               </Import-Package>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+
+               <!-- Eclipse -->
+               <dependency>
+                       <groupId>org.eclipse.osgi</groupId>
+                       <artifactId>org.eclipse.osgi</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.eclipse.equinox</groupId>
+                       <artifactId>org.eclipse.equinox.security</artifactId>
+               </dependency>
+
+               <!-- Commons -->
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- Spring -->
+               <dependency>
+                       <groupId>org.springframework.security</groupId>
+                       <artifactId>org.springframework.security.core</artifactId>
+               </dependency>
+
+               <!-- Others -->
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
+               </dependency>
+
+       </dependencies>
+</project>
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java b/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java
new file mode 100644 (file)
index 0000000..d89ddee
--- /dev/null
@@ -0,0 +1,64 @@
+package org.argeo.security.equinox;
+
+import java.security.Principal;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+
+import org.eclipse.equinox.security.auth.ILoginContext;
+import org.eclipse.equinox.security.auth.LoginContextFactory;
+import org.springframework.security.Authentication;
+import org.springframework.security.GrantedAuthority;
+
+public class CurrentUser {
+       public final static String getUsername() {
+               Subject subject = getSubject();
+               if (subject == null)
+                       return null;
+               Principal principal = subject.getPrincipals().iterator().next();
+               return principal.getName();
+
+       }
+
+       public final static Set<String> roles() {
+               Principal principal = getSubject().getPrincipals().iterator().next();
+               Authentication authentication = (Authentication) principal;
+               Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
+               for (GrantedAuthority ga : authentication.getAuthorities()) {
+                       roles.add(ga.getAuthority());
+               }
+               return Collections.unmodifiableSet(roles);
+       }
+
+       private final static ILoginContext getLoginContext() {
+               return EquinoxSecurity.getLoginContext();
+//             return LoginContextFactory
+//                             .createContext(EquinoxSecurity.CONTEXT_SPRING);
+       }
+
+       // private static void login() {
+       // try {
+       // getLoginContext().login();
+       // } catch (LoginException e) {
+       // throw new RuntimeException("Cannot login", e);
+       // }
+       // }
+
+       public final static Subject getSubject() {
+
+               Subject subject = null;
+               // subject = Subject.getSubject(AccessController.getContext());
+               try {
+                       getLoginContext().login();
+                       subject = getLoginContext().getSubject();
+               } catch (Exception e) {
+                       throw new RuntimeException("Cannot retrieve subject", e);
+               }
+
+               return subject;
+
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/EquinoxSecurity.java b/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/EquinoxSecurity.java
new file mode 100644 (file)
index 0000000..e1a72b1
--- /dev/null
@@ -0,0 +1,38 @@
+package org.argeo.security.equinox;
+
+import java.net.URL;
+
+import org.eclipse.equinox.security.auth.ILoginContext;
+import org.eclipse.equinox.security.auth.LoginContextFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class EquinoxSecurity implements BundleActivator {
+       public final static String CONTEXT_SPRING = "SPRING";
+       private static final String JAAS_CONFIG_FILE = "jaas/jaas_default.txt";
+
+       private static BundleContext bundleContext;
+
+       public void start(BundleContext context) throws Exception {
+               bundleContext = context;
+               // URL url = new URL(
+               // "file:////home/mbaudier/dev/src/commons/security/eclipse/plugins/org.argeo.security.ui.rcp/jaas_config.txt");
+               // // URL url = new URL(
+               // //
+               // "file:////home/mbaudier/dev/src/commons/security/eclipse/plugins/org.argeo.security.ui.rcp/jaas_config.txt");
+               // ILoginContext secureContext = LoginContextFactory.createContext(
+               // configName, url);
+               getLoginContext();
+       }
+
+       public void stop(BundleContext context) throws Exception {
+               bundleContext = null;
+       }
+
+       static ILoginContext getLoginContext() {
+               String configName = CONTEXT_SPRING;
+               URL configUrl = bundleContext.getBundle().getEntry(JAAS_CONFIG_FILE);
+               return LoginContextFactory.createContext(configName, configUrl);
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/SpringLoginModule.java b/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/SpringLoginModule.java
new file mode 100644 (file)
index 0000000..4f8641c
--- /dev/null
@@ -0,0 +1,113 @@
+package org.argeo.security.equinox;
+
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.TextOutputCallback;
+import javax.security.auth.login.LoginException;
+
+import org.springframework.security.Authentication;
+import org.springframework.security.AuthenticationException;
+import org.springframework.security.AuthenticationManager;
+import org.springframework.security.BadCredentialsException;
+import org.springframework.security.context.SecurityContextHolder;
+import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
+import org.springframework.security.providers.jaas.SecurityContextLoginModule;
+
+public class SpringLoginModule extends SecurityContextLoginModule {
+       private AuthenticationManager authenticationManager;
+       private Subject subject;
+
+       private CallbackHandler callbackHandler;
+
+       public SpringLoginModule() {
+
+       }
+
+       @SuppressWarnings("rawtypes")
+       public void initialize(Subject subject, CallbackHandler callbackHandler,
+                       Map sharedState, Map options) {
+               super.initialize(subject, callbackHandler, sharedState, options);
+               this.subject = subject;
+               this.callbackHandler = callbackHandler;
+       }
+
+       public boolean login() throws LoginException {
+               // thread already logged in
+               if (SecurityContextHolder.getContext().getAuthentication() != null)
+                       return super.login();
+
+               if (subject.getPrincipals(Authentication.class).size() == 1) {
+                       registerAuthentication(subject.getPrincipals(Authentication.class)
+                                       .iterator().next());
+                       return super.login();
+               } else if (subject.getPrincipals(Authentication.class).size() > 1) {
+                       throw new LoginException(
+                                       "Multiple Authentication principals not supported: "
+                                                       + subject.getPrincipals(Authentication.class));
+               } else {
+                       // ask for username and password
+                       Callback label = new TextOutputCallback(
+                                       TextOutputCallback.INFORMATION, "Required login");
+                       NameCallback nameCallback = new NameCallback("User");
+                       PasswordCallback passwordCallback = new PasswordCallback(
+                                       "Password", false);
+
+                       if (callbackHandler == null) {
+                               // throw new LoginException("No call back handler available");
+                               return false;
+                       }
+                       try {
+                               callbackHandler.handle(new Callback[] { label, nameCallback,
+                                               passwordCallback });
+                       } catch (Exception e) {
+                               LoginException le = new LoginException(
+                                               "Callback handling failed");
+                               le.initCause(e);
+                               throw le;
+                       }
+
+                       // Set user name and password
+                       String username = nameCallback.getName();
+                       String password = "";
+                       if (passwordCallback.getPassword() != null) {
+                               password = String.valueOf(passwordCallback.getPassword());
+                       }
+                       UsernamePasswordAuthenticationToken credentials = new UsernamePasswordAuthenticationToken(
+                                       username, password);
+
+                       try {
+                               Authentication authentication = authenticationManager
+                                               .authenticate(credentials);
+                               registerAuthentication(authentication);
+                               return super.login();
+                       } catch (Exception e) {
+                               LoginException loginException = new LoginException(
+                                               "Bad credentials");
+                               loginException.initCause(e);
+                               throw loginException;
+                       }
+               }
+       }
+
+       /**
+        * Register an {@link Authentication} in the security context.
+        * 
+        * @param authentication
+        *            has to implement {@link Authentication}.
+        */
+       protected void registerAuthentication(Object authentication) {
+               SecurityContextHolder.getContext().setAuthentication(
+                               (Authentication) authentication);
+       }
+
+       public void setAuthenticationManager(
+                       AuthenticationManager authenticationManager) {
+               this.authenticationManager = authenticationManager;
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rap/org.argeo.security.ui.rap-maven.target b/security/eclipse/plugins/org.argeo.security.ui.rap/org.argeo.security.ui.rap-maven.target
new file mode 100644 (file)
index 0000000..9b9a297
--- /dev/null
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.6"?>
+<target name="org.argeo.security.ui.rap - Local Maven repository (v0.2.2-SNAPSHOT)">
+<locations>
+<location path="${system_property:user.home}/.m2/repository/com/ibm/icu/com.ibm.icu/4.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/com/ibm/icu/com.ibm.icu.source/4.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/com/springsource/json/com.springsource.json/1.0.1.RELEASE" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/com/springsource/json/com.springsource.json.source/1.0.1.RELEASE" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/edu/emory/mathcs/backport/com.springsource.edu.emory.mathcs.backport/2.2.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/edu/emory/mathcs/backport/com.springsource.edu.emory.mathcs.backport.source/2.2.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/javax/servlet/com.springsource.javax.servlet/2.5.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/javax/servlet/com.springsource.javax.servlet.source/2.5.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/javax/xml/stream/com.springsource.javax.xml.stream/1.0.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/javax/xml/stream/com.springsource.javax.xml.stream.source/1.0.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/net/sourceforge/jdbm/com.springsource.jdbm/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/net/sourceforge/jdbm/com.springsource.jdbm.source/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/antlr/com.springsource.antlr/2.7.6" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/antlr/com.springsource.antlr.source/2.7.6" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/antlr/com.springsource.org.antlr/3.0.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/antlr/com.springsource.org.antlr.source/3.0.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/aopalliance/com.springsource.org.aopalliance/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/aopalliance/com.springsource.org.aopalliance.source/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.codec/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.codec.source/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.collections/3.2.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.collections.source/3.2.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.io/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.io.source/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.lang/2.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.lang.source/2.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.logging/1.1.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.logging.source/1.1.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.pool/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/commons/com.springsource.org.apache.commons.pool.source/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.changepw/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.changepw.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.core/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.core.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.core.shared/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.core.shared.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.jndi/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.jndi.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.kerberos/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.kerberos.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.kerberos.shared/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.kerberos.shared.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.ldap/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.ldap.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.ntp/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.ntp.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.protocol.shared/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.server.protocol.shared.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.shared.asn1/0.9.5.5" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.shared.asn1.source/0.9.5.5" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.shared.ldap/0.9.5.5" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/directory/com.springsource.org.apache.directory.shared.ldap.source/0.9.5.5" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/log4j/com.springsource.org.apache.log4j/1.2.15" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/log4j/com.springsource.org.apache.log4j.source/1.2.15" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/mina/com.springsource.org.apache.mina/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/mina/com.springsource.org.apache.mina.source/1.0.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/ws/com.springsource.org.apache.ws.commons.schema/1.3.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/apache/ws/com.springsource.org.apache.ws.commons.schema.source/1.3.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/basic/org.argeo.basic.nodeps/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/basic/org.argeo.basic.nodeps.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/eclipse/org.argeo.eclipse.dep.common/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/eclipse/org.argeo.eclipse.dep.rap/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/eclipse/org.argeo.eclipse.ui/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/eclipse/org.argeo.eclipse.ui.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/osgi/org.argeo.osgi.boot/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/osgi/org.argeo.osgi.boot.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.core/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.core.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.equinox/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.equinox.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.manager.ldap/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.services/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.ui/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/security/org.argeo.security.ui.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.ads/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.ads.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.ads.server/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.core/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.core.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.json/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/commons/server/org.argeo.server.json.source/0.2.2-SNAPSHOT" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.directory.shared.asn.codec/0.9.5.5.0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.directory.shared.asn.codec.source/0.9.5.5.0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.mina.filter.ssl/1.0.2.0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.mina.filter.ssl.source/1.0.2.0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.springframework.ldap/1.2.1.A0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/argeo/dep/osgi/org.argeo.dep.osgi.springframework.ldap.source/1.2.1.A0001" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/codehaus/jackson/com.springsource.org.codehaus.jackson/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/codehaus/jackson/com.springsource.org.codehaus.jackson.source/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/codehaus/jackson/com.springsource.org.codehaus.jackson.mapper/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/codehaus/jackson/com.springsource.org.codehaus.jackson.mapper.source/1.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.commands/3.6.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.commands.source/3.6.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.contenttype/3.4.100.v20100505-1235" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.contenttype.source/3.4.100.v20100505-1235" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding/1.3.100" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.source/1.3.100" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.beans/1.2.100" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.beans.source/1.2.100" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.observable/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.observable.source/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.property/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.databinding.property.source/1.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.expressions/3.4.200.v20100505" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.expressions.source/3.4.200.v20100505" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.jobs/3.5.0.v20100515" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.jobs.source/3.5.0.v20100515" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.runtime/3.6.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/core/org.eclipse.core.runtime.source/3.6.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.app/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.app.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.common/3.6.0.v20100503" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.common.source/3.6.0.v20100503" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.jetty/2.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.jetty.source/2.0.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.registry/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.registry.source/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.servlet/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.http.servlet.source/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.launcher/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.launcher.source/1.1.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.preferences/3.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.preferences.source/3.3.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.registry/3.5.0.v20100503" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.registry.source/3.5.0.v20100503" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.security/1.0.200" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.security.source/1.0.200" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.security.ui/1.0.200" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/equinox/org.eclipse.equinox.security.ui.source/1.0.200" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/help/org.eclipse.help/3.5.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/help/org.eclipse.help.source/3.5.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/jface/org.eclipse.jface/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/jface/org.eclipse.jface.source/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/jface/org.eclipse.jface.databinding/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/jface/org.eclipse.jface.databinding.source/1.4.0" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/osgi/org.eclipse.osgi/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/osgi/org.eclipse.osgi.source/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/osgi/org.eclipse.osgi.services/3.3.0.v20101018" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/osgi/org.eclipse.osgi.services.source/3.3.0.v20101018" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.demo/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.demo.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.demo.databinding/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.demo.databinding.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.design.example/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.design.example.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.jface/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.jface.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.jface.databinding/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.jface.databinding.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.rwt/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.rwt.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.rwt.q07/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.rwt.q07.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.cheatsheets/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.cheatsheets.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.forms/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.forms.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.views/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.views.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.workbench/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/rap/org.eclipse.rap.ui.workbench.source/1.3.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/swt/org.eclipse.swt/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/ui/org.eclipse.ui/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/ui/org.eclipse.ui.source/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/ui/org.eclipse.ui.workbench/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/eclipse/ui/org.eclipse.ui.workbench.source/3.6.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/junit/com.springsource.junit/3.8.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/junit/com.springsource.junit.source/3.8.2" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/mortbay/jetty/org.mortbay.jetty.server/6.1.23" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/mortbay/jetty/org.mortbay.jetty.server.source/6.1.23" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/mortbay/jetty/org.mortbay.jetty.util/6.1.23" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/mortbay/jetty/org.mortbay.jetty.util.source/6.1.23" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.api/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.api.source/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.log4j/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.log4j.source/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.org.apache.commons.logging/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/slf4j/com.springsource.slf4j.org.apache.commons.logging.source/1.5.10" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.aop/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.aop.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.beans/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.beans.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.context/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.context.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.core/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.core.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.transaction/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.transaction.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.web/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.web.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.web.servlet/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/org.springframework.web.servlet.source/2.5.6.SEC01" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.core/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.core.source/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.extender/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.extender.source/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.io/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/osgi/org.springframework.osgi.io.source/1.2.1" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/security/org.springframework.security.core/2.0.5.RELEASE" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/security/org.springframework.security.core.source/2.0.5.RELEASE" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/ws/org.springframework.oxm/1.5.9.A" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/ws/org.springframework.oxm.source/1.5.9.A" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/ws/org.springframework.xml/1.5.9.A" type="Directory"/>
+<location path="${system_property:user.home}/.m2/repository/org/springframework/ws/org.springframework.xml.source/1.5.9.A" type="Directory"/>
+</locations>
+<includeBundles>
+<plugin id="com.ibm.icu"/>
+<plugin id="com.ibm.icu.source"/>
+<plugin id="com.springsource.json"/>
+<plugin id="com.springsource.json.source"/>
+<plugin id="com.springsource.edu.emory.mathcs.backport"/>
+<plugin id="com.springsource.edu.emory.mathcs.backport.source"/>
+<plugin id="com.springsource.javax.servlet"/>
+<plugin id="com.springsource.javax.servlet.source"/>
+<plugin id="com.springsource.javax.xml.stream"/>
+<plugin id="com.springsource.javax.xml.stream.source"/>
+<plugin id="com.springsource.jdbm"/>
+<plugin id="com.springsource.jdbm.source"/>
+<plugin id="com.springsource.antlr"/>
+<plugin id="com.springsource.antlr.source"/>
+<plugin id="com.springsource.org.antlr"/>
+<plugin id="com.springsource.org.antlr.source"/>
+<plugin id="com.springsource.org.aopalliance"/>
+<plugin id="com.springsource.org.aopalliance.source"/>
+<plugin id="com.springsource.org.apache.commons.codec"/>
+<plugin id="com.springsource.org.apache.commons.codec.source"/>
+<plugin id="com.springsource.org.apache.commons.collections"/>
+<plugin id="com.springsource.org.apache.commons.collections.source"/>
+<plugin id="com.springsource.org.apache.commons.io"/>
+<plugin id="com.springsource.org.apache.commons.io.source"/>
+<plugin id="com.springsource.org.apache.commons.lang"/>
+<plugin id="com.springsource.org.apache.commons.lang.source"/>
+<plugin id="com.springsource.org.apache.commons.logging"/>
+<plugin id="com.springsource.org.apache.commons.logging.source"/>
+<plugin id="com.springsource.org.apache.commons.pool"/>
+<plugin id="com.springsource.org.apache.commons.pool.source"/>
+<plugin id="com.springsource.org.apache.directory.server.changepw"/>
+<plugin id="com.springsource.org.apache.directory.server.changepw.source"/>
+<plugin id="com.springsource.org.apache.directory.server.core"/>
+<plugin id="com.springsource.org.apache.directory.server.core.source"/>
+<plugin id="com.springsource.org.apache.directory.server.core.shared"/>
+<plugin id="com.springsource.org.apache.directory.server.core.shared.source"/>
+<plugin id="com.springsource.org.apache.directory.server.jndi"/>
+<plugin id="com.springsource.org.apache.directory.server.jndi.source"/>
+<plugin id="com.springsource.org.apache.directory.server.kerberos"/>
+<plugin id="com.springsource.org.apache.directory.server.kerberos.source"/>
+<plugin id="com.springsource.org.apache.directory.server.kerberos.shared"/>
+<plugin id="com.springsource.org.apache.directory.server.kerberos.shared.source"/>
+<plugin id="com.springsource.org.apache.directory.server.ldap"/>
+<plugin id="com.springsource.org.apache.directory.server.ldap.source"/>
+<plugin id="com.springsource.org.apache.directory.server.ntp"/>
+<plugin id="com.springsource.org.apache.directory.server.ntp.source"/>
+<plugin id="com.springsource.org.apache.directory.server.protocol.shared"/>
+<plugin id="com.springsource.org.apache.directory.server.protocol.shared.source"/>
+<plugin id="com.springsource.org.apache.directory.shared.asn1"/>
+<plugin id="com.springsource.org.apache.directory.shared.asn1.source"/>
+<plugin id="com.springsource.org.apache.directory.shared.ldap"/>
+<plugin id="com.springsource.org.apache.directory.shared.ldap.source"/>
+<plugin id="com.springsource.org.apache.log4j"/>
+<plugin id="com.springsource.org.apache.log4j.source"/>
+<plugin id="com.springsource.org.apache.mina"/>
+<plugin id="com.springsource.org.apache.mina.source"/>
+<plugin id="com.springsource.org.apache.ws.commons.schema"/>
+<plugin id="com.springsource.org.apache.ws.commons.schema.source"/>
+<plugin id="org.argeo.basic.nodeps"/>
+<plugin id="org.argeo.basic.nodeps.source"/>
+<plugin id="org.argeo.eclipse.dep.common"/>
+<plugin id="org.argeo.eclipse.dep.rap"/>
+<plugin id="org.argeo.eclipse.ui"/>
+<plugin id="org.argeo.eclipse.ui.source"/>
+<plugin id="org.argeo.osgi.boot"/>
+<plugin id="org.argeo.osgi.boot.source"/>
+<plugin id="org.argeo.security.core"/>
+<plugin id="org.argeo.security.core.source"/>
+<plugin id="org.argeo.security.equinox"/>
+<plugin id="org.argeo.security.equinox.source"/>
+<plugin id="org.argeo.security.manager.ldap"/>
+<plugin id="org.argeo.security.services"/>
+<plugin id="org.argeo.security.ui"/>
+<plugin id="org.argeo.security.ui.source"/>
+<plugin id="org.argeo.server.ads"/>
+<plugin id="org.argeo.server.ads.source"/>
+<plugin id="org.argeo.server.ads.server"/>
+<plugin id="org.argeo.server.core"/>
+<plugin id="org.argeo.server.core.source"/>
+<plugin id="org.argeo.server.json"/>
+<plugin id="org.argeo.server.json.source"/>
+<plugin id="org.argeo.dep.osgi.directory.shared.asn.codec"/>
+<plugin id="org.argeo.dep.osgi.directory.shared.asn.codec.source"/>
+<plugin id="org.argeo.dep.osgi.mina.filter.ssl"/>
+<plugin id="org.argeo.dep.osgi.mina.filter.ssl.source"/>
+<plugin id="org.argeo.dep.osgi.springframework.ldap"/>
+<plugin id="org.argeo.dep.osgi.springframework.ldap.source"/>
+<plugin id="com.springsource.org.codehaus.jackson"/>
+<plugin id="com.springsource.org.codehaus.jackson.source"/>
+<plugin id="com.springsource.org.codehaus.jackson.mapper"/>
+<plugin id="com.springsource.org.codehaus.jackson.mapper.source"/>
+<plugin id="org.eclipse.core.commands"/>
+<plugin id="org.eclipse.core.commands.source"/>
+<plugin id="org.eclipse.core.contenttype"/>
+<plugin id="org.eclipse.core.contenttype.source"/>
+<plugin id="org.eclipse.core.databinding"/>
+<plugin id="org.eclipse.core.databinding.source"/>
+<plugin id="org.eclipse.core.databinding.beans"/>
+<plugin id="org.eclipse.core.databinding.beans.source"/>
+<plugin id="org.eclipse.core.databinding.observable"/>
+<plugin id="org.eclipse.core.databinding.observable.source"/>
+<plugin id="org.eclipse.core.databinding.property"/>
+<plugin id="org.eclipse.core.databinding.property.source"/>
+<plugin id="org.eclipse.core.expressions"/>
+<plugin id="org.eclipse.core.expressions.source"/>
+<plugin id="org.eclipse.core.jobs"/>
+<plugin id="org.eclipse.core.jobs.source"/>
+<plugin id="org.eclipse.core.runtime"/>
+<plugin id="org.eclipse.core.runtime.source"/>
+<plugin id="org.eclipse.equinox.app"/>
+<plugin id="org.eclipse.equinox.app.source"/>
+<plugin id="org.eclipse.equinox.common"/>
+<plugin id="org.eclipse.equinox.common.source"/>
+<plugin id="org.eclipse.equinox.http.jetty"/>
+<plugin id="org.eclipse.equinox.http.jetty.source"/>
+<plugin id="org.eclipse.equinox.http.registry"/>
+<plugin id="org.eclipse.equinox.http.registry.source"/>
+<plugin id="org.eclipse.equinox.http.servlet"/>
+<plugin id="org.eclipse.equinox.http.servlet.source"/>
+<plugin id="org.eclipse.equinox.launcher"/>
+<plugin id="org.eclipse.equinox.launcher.source"/>
+<plugin id="org.eclipse.equinox.preferences"/>
+<plugin id="org.eclipse.equinox.preferences.source"/>
+<plugin id="org.eclipse.equinox.registry"/>
+<plugin id="org.eclipse.equinox.registry.source"/>
+<plugin id="org.eclipse.equinox.security"/>
+<plugin id="org.eclipse.equinox.security.source"/>
+<plugin id="org.eclipse.equinox.security.ui"/>
+<plugin id="org.eclipse.equinox.security.ui.source"/>
+<plugin id="org.eclipse.help"/>
+<plugin id="org.eclipse.help.source"/>
+<plugin id="org.eclipse.jface"/>
+<plugin id="org.eclipse.jface.source"/>
+<plugin id="org.eclipse.jface.databinding"/>
+<plugin id="org.eclipse.jface.databinding.source"/>
+<plugin id="org.eclipse.osgi"/>
+<plugin id="org.eclipse.osgi.source"/>
+<plugin id="org.eclipse.osgi.services"/>
+<plugin id="org.eclipse.osgi.services.source"/>
+<plugin id="org.eclipse.rap.demo"/>
+<plugin id="org.eclipse.rap.demo.source"/>
+<plugin id="org.eclipse.rap.demo.databinding"/>
+<plugin id="org.eclipse.rap.demo.databinding.source"/>
+<plugin id="org.eclipse.rap.design.example"/>
+<plugin id="org.eclipse.rap.design.example.source"/>
+<plugin id="org.eclipse.rap.jface"/>
+<plugin id="org.eclipse.rap.jface.source"/>
+<plugin id="org.eclipse.rap.jface.databinding"/>
+<plugin id="org.eclipse.rap.jface.databinding.source"/>
+<plugin id="org.eclipse.rap.rwt"/>
+<plugin id="org.eclipse.rap.rwt.source"/>
+<plugin id="org.eclipse.rap.rwt.q07"/>
+<plugin id="org.eclipse.rap.rwt.q07.source"/>
+<plugin id="org.eclipse.rap.ui"/>
+<plugin id="org.eclipse.rap.ui.source"/>
+<plugin id="org.eclipse.rap.ui.cheatsheets"/>
+<plugin id="org.eclipse.rap.ui.cheatsheets.source"/>
+<plugin id="org.eclipse.rap.ui.forms"/>
+<plugin id="org.eclipse.rap.ui.forms.source"/>
+<plugin id="org.eclipse.rap.ui.views"/>
+<plugin id="org.eclipse.rap.ui.views.source"/>
+<plugin id="org.eclipse.rap.ui.workbench"/>
+<plugin id="org.eclipse.rap.ui.workbench.source"/>
+<plugin id="org.eclipse.swt"/>
+<plugin id="org.eclipse.ui"/>
+<plugin id="org.eclipse.ui.source"/>
+<plugin id="org.eclipse.ui.workbench"/>
+<plugin id="org.eclipse.ui.workbench.source"/>
+<plugin id="com.springsource.junit"/>
+<plugin id="com.springsource.junit.source"/>
+<plugin id="org.mortbay.jetty.server"/>
+<plugin id="org.mortbay.jetty.server.source"/>
+<plugin id="org.mortbay.jetty.util"/>
+<plugin id="org.mortbay.jetty.util.source"/>
+<plugin id="com.springsource.slf4j.api"/>
+<plugin id="com.springsource.slf4j.api.source"/>
+<plugin id="com.springsource.slf4j.log4j"/>
+<plugin id="com.springsource.slf4j.log4j.source"/>
+<plugin id="com.springsource.slf4j.org.apache.commons.logging"/>
+<plugin id="com.springsource.slf4j.org.apache.commons.logging.source"/>
+<plugin id="org.springframework.aop"/>
+<plugin id="org.springframework.aop.source"/>
+<plugin id="org.springframework.beans"/>
+<plugin id="org.springframework.beans.source"/>
+<plugin id="org.springframework.context"/>
+<plugin id="org.springframework.context.source"/>
+<plugin id="org.springframework.core"/>
+<plugin id="org.springframework.core.source"/>
+<plugin id="org.springframework.transaction"/>
+<plugin id="org.springframework.transaction.source"/>
+<plugin id="org.springframework.web"/>
+<plugin id="org.springframework.web.source"/>
+<plugin id="org.springframework.web.servlet"/>
+<plugin id="org.springframework.web.servlet.source"/>
+<plugin id="org.springframework.osgi.core"/>
+<plugin id="org.springframework.osgi.core.source"/>
+<plugin id="org.springframework.osgi.extender"/>
+<plugin id="org.springframework.osgi.extender.source"/>
+<plugin id="org.springframework.osgi.io"/>
+<plugin id="org.springframework.osgi.io.source"/>
+<plugin id="org.springframework.security.core"/>
+<plugin id="org.springframework.security.core.source"/>
+<plugin id="org.springframework.oxm"/>
+<plugin id="org.springframework.oxm.source"/>
+<plugin id="org.springframework.xml"/>
+<plugin id="org.springframework.xml.source"/>
+</includeBundles>
+</target>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rap/pom.xml b/security/eclipse/plugins/org.argeo.security.ui.rap/pom.xml
new file mode 100644 (file)
index 0000000..1cbb1a4
--- /dev/null
@@ -0,0 +1,82 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons.security</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>plugins</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.security.ui.rap</artifactId>
+       <name>Commons Security UI RAP</name>
+       <packaging>jar</packaging>
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-source-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.argeo.maven.plugins</groupId>
+                               <artifactId>maven-argeo-osgi-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>resolve-pde-sources</id>
+                                               <goals>
+                                                       <goal>pde-sources</goal>
+                                               </goals>
+                                               <phase>generate-resources</phase>
+                                       </execution>
+                                       <execution>
+                                               <id>generate-descriptors</id>
+                                               <goals>
+                                                       <goal>descriptors</goal>
+                                               </goals>
+                                               <phase>generate-resources</phase>
+                                       </execution>
+                                       <execution>
+                                               <id>check-osgi</id>
+                                               <phase>test</phase>
+                                               <goals>
+                                                       <goal>equinox</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <onlyCheck>true</onlyCheck>
+                                                       <argsToAppend>
+                                                               <arg>-clean</arg>
+                                                       </argsToAppend>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.ui.rcp</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+                       <type>pom</type>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.argeo.commons.eclipse</groupId>
+                                       <artifactId>org.argeo.eclipse.dep.rcp</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <!-- RAP -->
+               <dependency>
+                       <groupId>org.argeo.commons.eclipse</groupId>
+                       <artifactId>org.argeo.eclipse.dep.rap</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
+</project>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/.classpath b/security/eclipse/plugins/org.argeo.security.ui.rcp/.classpath
new file mode 100644 (file)
index 0000000..92f19d2
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src/main/java"/>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/.project b/security/eclipse/plugins/org.argeo.security.ui.rcp/.project
new file mode 100644 (file)
index 0000000..feeafcf
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.security.ui.rcp</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs b/security/eclipse/plugins/org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..1f382cb
--- /dev/null
@@ -0,0 +1,8 @@
+#Sat Jan 15 17:51:30 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/SecureRCP.product b/security/eclipse/plugins/org.argeo.security.ui.rcp/SecureRCP.product
new file mode 100644 (file)
index 0000000..f64b051
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="SecureRCP" application="org.argeo.security.ui.rcp.secureUi" useFeatures="false" includeLaunchers="true">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-console -clean</programArgs>
+      <vmArgs>-Dlog4j.configuration=file:/home/mbaudier/dev/src/commons/security/eclipse/plugins/org.argeo.security.ui.rcp/log4j.properties</vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.ibm.icu"/>
+      <plugin id="com.springsource.antlr"/>
+      <plugin id="com.springsource.edu.emory.mathcs.backport"/>
+      <plugin id="com.springsource.javax.servlet"/>
+      <plugin id="com.springsource.javax.xml.stream"/>
+      <plugin id="com.springsource.jdbm"/>
+      <plugin id="com.springsource.junit"/>
+      <plugin id="com.springsource.org.aopalliance"/>
+      <plugin id="com.springsource.org.apache.commons.codec"/>
+      <plugin id="com.springsource.org.apache.commons.collections"/>
+      <plugin id="com.springsource.org.apache.commons.io"/>
+      <plugin id="com.springsource.org.apache.commons.lang"/>
+      <plugin id="com.springsource.org.apache.commons.pool"/>
+      <plugin id="com.springsource.org.apache.directory.server.changepw"/>
+      <plugin id="com.springsource.org.apache.directory.server.core" fragment="true"/>
+      <plugin id="com.springsource.org.apache.directory.server.core.shared"/>
+      <plugin id="com.springsource.org.apache.directory.server.jndi"/>
+      <plugin id="com.springsource.org.apache.directory.server.kerberos"/>
+      <plugin id="com.springsource.org.apache.directory.server.kerberos.shared"/>
+      <plugin id="com.springsource.org.apache.directory.server.ldap"/>
+      <plugin id="com.springsource.org.apache.directory.server.ntp"/>
+      <plugin id="com.springsource.org.apache.directory.server.protocol.shared"/>
+      <plugin id="com.springsource.org.apache.directory.shared.asn1"/>
+      <plugin id="com.springsource.org.apache.directory.shared.ldap"/>
+      <plugin id="com.springsource.org.apache.log4j"/>
+      <plugin id="com.springsource.org.apache.mina"/>
+      <plugin id="com.springsource.org.apache.ws.commons.schema"/>
+      <plugin id="com.springsource.org.codehaus.jackson"/>
+      <plugin id="com.springsource.org.codehaus.jackson.mapper"/>
+      <plugin id="com.springsource.slf4j.api"/>
+      <plugin id="com.springsource.slf4j.log4j" fragment="true"/>
+      <plugin id="com.springsource.slf4j.org.apache.commons.logging"/>
+      <plugin id="org.argeo.basic.nodeps"/>
+      <plugin id="org.argeo.dep.osgi.directory.shared.asn.codec" fragment="true"/>
+      <plugin id="org.argeo.dep.osgi.mina.filter.ssl" fragment="true"/>
+      <plugin id="org.argeo.dep.osgi.springframework.ldap"/>
+      <plugin id="org.argeo.eclipse.ui"/>
+      <plugin id="org.argeo.security.core"/>
+      <plugin id="org.argeo.security.equinox"/>
+      <plugin id="org.argeo.security.manager.ldap"/>
+      <plugin id="org.argeo.security.services"/>
+      <plugin id="org.argeo.security.ui"/>
+      <plugin id="org.argeo.security.ui.rcp"/>
+      <plugin id="org.argeo.server.ads"/>
+      <plugin id="org.argeo.server.ads.server"/>
+      <plugin id="org.argeo.server.core"/>
+      <plugin id="org.argeo.server.json"/>
+      <plugin id="org.eclipse.core.commands"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.databinding"/>
+      <plugin id="org.eclipse.core.databinding.observable"/>
+      <plugin id="org.eclipse.core.databinding.property"/>
+      <plugin id="org.eclipse.core.expressions"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.core.runtime"/>
+      <plugin id="org.eclipse.equinox.app"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.security"/>
+      <plugin id="org.eclipse.equinox.security.ui"/>
+      <plugin id="org.eclipse.help"/>
+      <plugin id="org.eclipse.jface"/>
+      <plugin id="org.eclipse.jface.databinding"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.swt"/>
+      <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.ui"/>
+      <plugin id="org.eclipse.ui.workbench"/>
+      <plugin id="org.springframework.aop"/>
+      <plugin id="org.springframework.beans"/>
+      <plugin id="org.springframework.context"/>
+      <plugin id="org.springframework.core"/>
+      <plugin id="org.springframework.osgi.core"/>
+      <plugin id="org.springframework.osgi.extender"/>
+      <plugin id="org.springframework.osgi.io"/>
+      <plugin id="org.springframework.oxm"/>
+      <plugin id="org.springframework.security.core"/>
+      <plugin id="org.springframework.transaction"/>
+      <plugin id="org.springframework.web.servlet"/>
+      <plugin id="org.springframework.xml"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="org.argeo.security.manager.ldap" autoStart="true" startLevel="0" />
+      <plugin id="org.argeo.security.services" autoStart="true" startLevel="0" />
+      <plugin id="org.argeo.security.ui" autoStart="true" startLevel="0" />
+      <plugin id="org.argeo.security.ui.rcp" autoStart="true" startLevel="0" />
+      <plugin id="org.argeo.server.ads.server" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.security.ui" autoStart="true" startLevel="0" />
+      <plugin id="org.springframework.osgi.extender" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/argeo_security_rap.properties b/security/eclipse/plugins/org.argeo.security.ui.rcp/argeo_security_rap.properties
new file mode 100644 (file)
index 0000000..3557749
--- /dev/null
@@ -0,0 +1,24 @@
+argeo.osgi.start=\
+com.springsource.javax.servlet,\
+org.eclipse.core.runtime,\
+org.eclipse.equinox.common,\
+org.eclipse.equinox.http.jetty,\
+org.eclipse.equinox.http.registry,\
+org.eclipse.equinox.launcher,\
+org.eclipse.rap.demo,\
+org.mortbay.jetty.server,\
+org.springframework.osgi.extender,\
+org.argeo.server.ads.server,\
+org.argeo.security.manager.ldap,\
+org.argeo.security.services,\
+org.argeo.security.equinox,\
+org.argeo.security.ui,\
+org.argeo.security.ui.rcp,\
+
+eclipse.ignoreApp=true
+osgi.noShutdown=true
+
+log4j.configuration=file:../../log4j.properties
+
+org.eclipse.equinox.http.jetty.log.stderr.threshold=debug
+org.osgi.service.http.port=9090
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/build.properties b/security/eclipse/plugins/org.argeo.security.ui.rcp/build.properties
new file mode 100644 (file)
index 0000000..ac478ab
--- /dev/null
@@ -0,0 +1,7 @@
+source.. = src/main/java/
+output.. = target/classes/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               log4j.properties,\
+               jaas_config.txt
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_about.gif b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_about.gif
new file mode 100644 (file)
index 0000000..20d9ad2
Binary files /dev/null and b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_about.gif differ
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.icns b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.icns
new file mode 100644 (file)
index 0000000..b77a6a6
Binary files /dev/null and b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.icns differ
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.ico b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.ico
new file mode 100644 (file)
index 0000000..d548f71
Binary files /dev/null and b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.ico differ
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.xpm b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_launcher.xpm
new file mode 100644 (file)
index 0000000..b0c139e
--- /dev/null
@@ -0,0 +1,307 @@
+/* XPM */\r
+static char * icon48_xpm[] = {\r
+"48 48 256 2",\r
+"      c #4B4B3B3B9090",\r
+".     c #0D0D0E0E5454",\r
+"X     c #11110E0E5B5B",\r
+"o     c #17170F0F6363",\r
+"O     c #1D1D13136969",\r
+"+     c #212114146C6C",\r
+"@     c #252514147171",\r
+"#     c #282811116C6C",\r
+"$     c #26260D0D6363",\r
+"%     c #22220B0B5E5E",\r
+"&     c #1C1C0B0B5A5A",\r
+"*     c #1C1C0B0B5252",\r
+"=     c #1B1B05055353",\r
+"-     c #161606064D4D",\r
+";     c #161605054949",\r
+":     c #111104044848",\r
+">     c #131304044545",\r
+",     c #131305054242",\r
+"<     c #141410105E5E",\r
+"1     c #2C2C15157373",\r
+"2     c #2B2B1B1B7575",\r
+"3     c #343416167272",\r
+"4     c #313113136E6E",\r
+"5     c #222209095757",\r
+"6     c #1B1B06064D4D",\r
+"7     c #15150B0B4242",\r
+"8     c #13130C0C5555",\r
+"9     c #2E2E1B1B7878",\r
+"0     c #33331F1F7C7C",\r
+"q     c #343418187878",\r
+"w     c #3B3B1C1C7575",\r
+"e     c #2E2E10106767",\r
+"r     c #1B1B07074747",\r
+"t     c #18180B0B4646",\r
+"y     c #151513136262",\r
+"u     c #1A1A15156464",\r
+"i     c #34341F1F7777",\r
+"p     c #40401E1E8080",\r
+"a     c #42421B1B7A7A",\r
+"s     c #3B3B15157474",\r
+"d     c #2B2B0B0B5B5B",\r
+"f     c #222207075252",\r
+"g     c #373727277A7A",\r
+"h     c #474724248484",\r
+"j     c #393915156E6E",\r
+"k     c #373711116A6A",\r
+"l     c #343413136363",\r
+"z     c #232319196E6E",\r
+"x     c #292919197070",\r
+"c     c #3C3C2C2C8282",\r
+"v     c #444431318585",\r
+"b     c #494934348A8A",\r
+"n     c #505026268A8A",\r
+"m     c #3D3D1B1B6E6E",\r
+"M     c #31310E0E5C5C",\r
+"N     c #2B2B0D0D5353",\r
+"B     c #222207074A4A",\r
+"V     c #52523C3C9292",\r
+"C     c #58583C3C9494",\r
+"Z     c #5D5D44449797",\r
+"A     c #5C5C2E2E9292",\r
+"S     c #676733339595",\r
+"D     c #424228287575",\r
+"F     c #29290A0A4F4F",\r
+"G     c #6C6C4A4A9E9E",\r
+"H     c #72725454A7A7",\r
+"J     c #8C8C6D6DB2B2",\r
+"K     c #343424246E6E",\r
+"L     c #3A3A23236A6A",\r
+"P     c #3A3A1C1C6767",\r
+"I     c #24240A0A4B4B",\r
+"U     c #151518186161",\r
+"Y     c #76766F6FA5A5",\r
+"T     c #ADAD9191CCCC",\r
+"R     c #98988989D3D3",\r
+"E     c #45453B3B8686",\r
+"W     c #3C3C35357979",\r
+"Q     c #363631317575",\r
+"!     c #32322D2D6B6B",\r
+"~     c #323229296363",\r
+"^     c #30301F1F6262",\r
+"/     c #323218185E5E",\r
+"(     c #272707074B4B",\r
+")     c #202028286C6C",\r
+"_     c #1E1E1D1D6868",\r
+"`     c #9A9A8282BBBB",\r
+"'     c #C8C8B3B3D3D3",\r
+"]     c #B3B3AFAFE7E7",\r
+"[     c #84847272C6C6",\r
+"{     c #58585757A3A3",\r
+"}     c #3F3F3C3C8A8A",\r
+"|     c #3B3B3A3A8484",\r
+" .    c #414139397D7D",\r
+"..    c #3D3D39397A7A",\r
+"X.    c #37372E2E6E6E",\r
+"o.    c #2C2C21215A5A",\r
+"O.    c #2E2E1B1B5B5B",\r
+"+.    c #F5F5EFEFF5F5",\r
+"@.    c #656566669A9A",\r
+"#.    c #47474B4B8E8E",\r
+"$.    c #3C3C44447B7B",\r
+"%.    c #444442428080",\r
+"&.    c #45453E3E8181",\r
+"*.    c #40403C3C8181",\r
+"=.    c #3D3D33337474",\r
+"-.    c #3B3B30306E6E",\r
+";.    c #38382D2D6969",\r
+":.    c #303026265D5D",\r
+">.    c #2C2C15155A5A",\r
+",.    c #1F1F1C1C7070",\r
+"<.    c #25251E1E7171",\r
+"1.    c #59595C5C9191",\r
+"2.    c #4D4D53538989",\r
+"3.    c #4C4C49498484",\r
+"4.    c #484845458585",\r
+"5.    c #494941418585",\r
+"6.    c #494940408181",\r
+"7.    c #2F2F1C1C5353",\r
+"8.    c #2B2B28287676",\r
+"9.    c #323231317F7F",\r
+"0.    c #545452528B8B",\r
+"q.    c #51514E4E8989",\r
+"w.    c #4E4E4B4B8C8C",\r
+"e.    c #4C4C47478686",\r
+"r.    c #46463D3D7E7E",\r
+"t.    c #434336367A7A",\r
+"y.    c #2B2B13135555",\r
+"u.    c #47473D3D8D8D",\r
+"i.    c #575757578E8E",\r
+"p.    c #48483E3E7F7F",\r
+"a.    c #46463A3A7D7D",\r
+"s.    c #424235357575",\r
+"d.    c #404034347171",\r
+"f.    c #BFBFCBCBFAFA",\r
+"g.    c #B8B8A8A8DDDD",\r
+"h.    c #5E5E60609292",\r
+"j.    c #565655558C8C",\r
+"k.    c #4B4B44448282",\r
+"l.    c #454539397B7B",\r
+"z.    c #434338387878",\r
+"x.    c #3F3F32326D6D",\r
+"c.    c #3D3D30306969",\r
+"v.    c #3A3A2E2E6363",\r
+"b.    c #36362A2A5C5C",\r
+"n.    c #343424245555",\r
+"m.    c #30301E1E4D4D",\r
+"M.    c #49493C3C8282",\r
+"N.    c #5E5E4F4F8C8C",\r
+"B.    c #56563B3B8B8B",\r
+"V.    c #545407078585",\r
+"C.    c #424234347272",\r
+"Z.    c #9797A4A4F7F7",\r
+"A.    c #444436367676",\r
+"S.    c #7D7D7979D5D5",\r
+"D.    c #464640408A8A",\r
+"F.    c #44444B4B8282",\r
+"G.    c #414107077777",\r
+"H.    c #71716161C1C1",\r
+"J.    c #303039397979",\r
+"K.    c #8E8E8E8EE6E6",\r
+"L.    c #404033338B8B",\r
+"P.    c #4A4A45458C8C",\r
+"I.    c #46463A3A8080",\r
+"U.    c #363629295454",\r
+"Y.    c #303022224848",\r
+"T.    c #424237377575",\r
+"R.    c #2E2E1D1D6363",\r
+"E.    c #79798383EAEA",\r
+"W.    c #74747B7BE4E4",\r
+"Q.    c #6D6D7676D6D6",\r
+"!.    c #6A6A7171CECE",\r
+"~.    c #66666969C6C6",\r
+"^.    c #62626565BCBC",\r
+"/.    c #5F5F6060B5B5",\r
+"(.    c #5B5B5B5BACAC",\r
+").    c #535353539898",\r
+"_.    c #4F4F4F4FA4A4",\r
+"`.    c #54544D4DA4A4",\r
+"'.    c #323204046B6B",\r
+"].    c #303035357979",\r
+"[.    c #313122224343",\r
+"{.    c #5A5A5B5BB7B7",\r
+"}.    c #484846468080",\r
+"|.    c #454541417575",\r
+" X    c #4B4B31318282",\r
+".X    c #47473C3C8484",\r
+"XX    c #3E3E35356E6E",\r
+"oX    c #2F2F26264040",\r
+"OX    c #2B2B23233A3A",\r
+"+X    c #262619195C5C",\r
+"@X    c #252515155A5A",\r
+"#X    c #55555151B3B3",\r
+"$X    c #3C3C2D2D5D5D",\r
+"%X    c #39392F2F5656",\r
+"&X    c #37372D2D5050",\r
+"*X    c #25251F1F3030",\r
+"=X    c #24241D1D4343",\r
+"-X    c #202013135656",\r
+";X    c #41413B3B6C6C",\r
+":X    c #444442429696",\r
+">X    c #212100005E5E",\r
+",X    c #444436367272",\r
+"<X    c #444436366F6F",\r
+"1X    c #424236366868",\r
+"2X    c #3F3F34346161",\r
+"3X    c #3C3C32325A5A",\r
+"4X    c #34342A2A4A4A",\r
+"5X    c #21211B1B2121",\r
+"6X    c #22221C1C6363",\r
+"7X    c #2D2D01015E5E",\r
+"8X    c #20201B1B2525",\r
+"9X    c #49492F2F7B7B",\r
+"0X    c #434334346C6C",\r
+"qX    c #323229294545",\r
+"wX    c #1C1C10104F4F",\r
+"eX    c #222217176363",\r
+"rX    c #37371E1E6B6B",\r
+"tX    c #424232326E6E",\r
+"yX    c #444433336969",\r
+"uX    c #424233336565",\r
+"iX    c #1E1E1A1A1E1E",\r
+"pX    c #161601014C4C",\r
+"aX    c #1C1C11115454",\r
+"sX    c #252503035B5B",\r
+"dX    c #414131316A6A",\r
+"fX    c #22221F1F7878",\r
+"gX    c #272724246767",\r
+"hX    c #1D1D16165E5E",\r
+"jX    c #131305055151",\r
+"kX    c #40402F2F6464",\r
+"lX    c #111107074E4E",\r
+"zX    c #0C0C05054B4B",\r
+"xX    c #22221E1E5757",\r
+"cX    c #1A1A0D0D4D4D",\r
+"vX    c #16160B0B4D4D",\r
+"bX    c #060604044747",\r
+"nX    c #040403034343",\r
+"mX    c #3B3B27276565",\r
+"MX    c #0E0E03034141",\r
+"NX    c #111106064A4A",\r
+"BX    c #0E0E04044646",\r
+"VX    c #111105053B3B",\r
+"CX    c #0D0D01013A3A",\r
+"ZX    c #030305053F3F",\r
+"AX    c #0F0F0F0F4C4C",\r
+"SX    c #020207073B3B",\r
+"DX    c #0D0D03034646",\r
+"FX    c #0B0B02023F3F",\r
+"GX    c #0D0D02023434",\r
+"HX    c #0A0A0E0E4444",\r
+"JX    c #161614145252",\r
+"KX    c #0B0B04044646",\r
+"LX    c #0A0A03034444",\r
+"PX    c #1D1D21215757",\r
+"IX    c #090910104040",\r
+"UX    c #18181E1E5353",\r
+"                                                                                                ",\r
+"  . . . . X X o o o o O + + @ @ @ @ @ @ @ # # # # # # $ $ % % & & & & * = - - - ; : > > , , ,   ",\r
+"  . . X X < < o o O O + @ 1 2 2 1 1 1 1 1 1 1 1 3 4 # # $ $ $ % % % 5 = = 6 6 - ; ; > > , , 7   ",\r
+"  . 8 < < < o O O + @ @ 2 9 9 0 0 q q q q q q q w 3 4 4 e e $ $ $ $ % 5 = = 6 6 6 ; ; > > r t   ",\r
+"  . X < y u O O + @ 1 2 i 0 0 p p p p p p p a a p a s 3 4 4 e e e e d 5 5 f f 6 6 6 ; ; r r t   ",\r
+"  X < y u O + + @ 2 9 0 g p p h h h h h h h p h h a a s s j k k j l d d 5 5 f f 6 6 r r r r r   ",\r
+"  X < y O z x x 9 0 g c v b n n n n n n n n n n n h a a s s j j m l M d d N f f B B B B r r r   ",\r
+"  < y u + z 2 0 c c b V C Z C C A A A A A S S S n h D w w m m m m k l M d d N f F F F B r r r   ",\r
+"  < y O z z 9 c b V Z G H H H G S G G J J H V v c g g K K K K L P l l l M M N N N N I B B r r   ",\r
+"  U u + z x i v C H Y J J J J H J T R H V E W W Q Q Q Q ! ! ! ~ ^ ^ / / M M M M M N ( B B r r   ",\r
+"  ) _ z x 9 g b Z Y ` ' ' ' T T ] [ { } |  .........W W Q Q X.! ~ ~ o.O./ / / / N F ( B B B r   ",\r
+"  ) ) z x i c V G J ' +.+.+.+.] [ @.#.$.%.%.%.&.*. . .....W =.-.X.;.~ :.o.O.^ >.N F ( B B B B   ",\r
+"  ) ,.<.2 g v C H J ' +.+.+.+.T Y 1.2.3.4.4.4.5.6.&.&. . ...W =.=.-.;.~ :.o.7.>.N F F ( B I I   ",\r
+"  ) ,.<.8.9.b C H J T +.+.+.' J @.1.0.q.q.w.e.4.5.6.&.r. . .t.W =.=.-.;.~ :.o.7.y.N F ( ( I I   ",\r
+"  8.8.8.9.| u.C G J T +.+.' ` Y @.1.i.0.q.q.e.e.5.6.p.r.a. .t.t.s.d.d.-.;.~ :.7.7.y.F F ( I I   ",\r
+"  9.c c c v b A S H ' f.g.` Y @.h.1.i.j.0.q.q.e.k.6.p.r.a.l.t.z.s.s.d.x.c.v.b.n.m.7.N F F F I   ",\r
+"  <.g M.N.B.B.n V.J f.R J @.h.h.1.i.i.j.j.0.q.3.k.6.p.r.a.l.l.z.s.C.d.x.x.c.v.b.n.m.y.N F F F   ",\r
+"  + x i v B.Z Z G g.Z.[ @.2.i.i.j.j.j.j.j.0.q.3.k.6.p.p.a.l.l.A.s.C.C.d.x.c.v.b.n.m.7.y.N N y.  ",\r
+"  O # 3 w p n Z ` f.S.H D.F.q.0.0.0.0.j.0.q.q.3.k.6.p.r.a.a.l.A.s.s.C.d.x.x.c.v.b.n.m.y.y.y.y.  ",\r
+"  O # 4 s a G.V.T Z.H.V J.%.e.w.q.0.0.0.0.q.q.e.k.6.p.r.a.a.l.z.A.s.C.d.d.x.c.v.b.n.m.7.>.y.y.  ",\r
+"  O # 4 s w G.A f.K.H L...4.P.w.w.w.q.q.q.q.e.e.5.6.M.I.I.a.a.l.z.A.s.d.d.x.c.v.v.U.Y.7.O.>.y.  ",\r
+"  $ # 4 3 s G.G f.S.Z 9.*.D.P.P.w.w.w.w.w.e.e.5.5.M.M.I.I.a.a.l.z.T.s.d.d.x.x.c.v.U.Y.m.R.>.>.  ",\r
+"  E.E.W.W.W.W.E.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { )._.`._.  ",\r
+"  + # 3 w s '.` f.H.V ].*.D.P.P.P.P.P.P.P.5.5.5.M.M.M.I.I.a.l.z.z.T.T.s.d.d.x.c.v.U.Y.[.^ O.>.  ",\r
+"  ~.~.~.~.~.~.K.Z.S.~.{.^.^.^.^.^.^.^.^././././././.(.(.(.(.(.(.{ { { { { ).).).w.w.}.|.P.u.}   ",\r
+"   .I.6. X X XT f.H.b ].*.E D.D.D.D.5.5..X.XM.M.I.I.a.a.l.l.z.z.T.T.T.d.XXx.c.v.b.U.oXOXR.+X@X  ",\r
+"  E.E.E.W.W.W.K.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { ).).#X_._.  ",\r
+"  & % $ e '.= H f.H.b 8.W *.E E E .X.X.XI.I.I.I.a.a.l.l.z.z.T.T.T.C.XXXXc.v.$X%X&XY.*X=X2 @X-X  ",\r
+"  {.{.{.{.{.#X~.Z.W.~.{.{./././././././././.(.(.(.(.(.(.(.{ { { { { { ).).).w.w.3.}.;X%.:X} }   ",\r
+"  & & % $ e >XV.f.S.C K X.W t. . .l.l.t.t.t.t.A.A.A.,X,X,X,X,X<X;X1X1X2X3X%X&X4XoX*X5Xo.6X-X-X  ",\r
+"  & & % $ $ >X7X` Z.Z D ! =.=.s.t.t.t.A.A.s.A.,X,X,X,X<X<X<X<X;X1X2X2X3X%X&X4XoXOX8X5X<.@X-X-X  ",\r
+"  8 & & $ e K 9XJ f.^. XK X.=.=.s.s.s.s.s.C.C.C.C.<X0X0X0X1X1X1X2X2X3X%X&X4XqXOX*X8X=X<.-X-XwX  ",\r
+"  8 & eXK k.@.M. Xg.E.B.rX~ -.d.d.C.C.C.C.C.tX0X0X0XyXyX1X1XuX2X2X3X%X&X4XqXoXOX8XiX6XeX-X-XwX  ",\r
+"  6XQ h.Y N.K e pXB.f./.9Xo.;.-.x.d.tXtXtXtXtX0X0XyXyXyXuXuX2X2X3X%X&X4XqXoXOX*XiX=X_ aX-XaXwX  ",\r
+"  Y Y  .R.@X% sX= 7XT Z.V P :.;.c.x.x.x.tXdXdXdXyXyXuXuX2X2X3X3X%X&X4XqXoXOX*X8X*XfXaXaXaXwXwX  ",\r
+"  gXhX& * & 5 5 sXjXa ] S.9X/ ~ v.c.dXdXdXdXdXuXuXuXkX2X2X3X%X%X&X4XqXoXOX*X8XiX<.hXwXwXaXwXwX  ",\r
+"  8 lXlXjX= * 5 5 = zX9X] H.D 7.b.v.v.kXc.kXkXkXkXkX2X$X3X%X&X&X4XqXoXOX*X8XiXxXhXwXcXcXwXwXwX  ",\r
+"  zXzXlXlXjX= = f f sXD Y ] ~.D 7.n.b.v.v.kXkXkXkX$X$X%X%X&X4XqXoXoXOX*X8X5XgXu cXvXvXcXcXwXwX  ",\r
+"  bXbXzXlXlX- = * @XX.h.e D T S.D n.m.b.$X$X$X$X$X%X%X&X&X4XqXoXOX*X8X8X*X<.hXvX; ; vXvXvXcXwX  ",\r
+"  nXbXzXzXlXlX- -XX.Y R.pXpXP J K.Z mXm.n.U.U.U.U.U.4X4XY.oXOX*X8X8X8X=X,.aXvX; > > > t t t cX  ",\r
+"  nXbXbXzXzXlXaXXXY +Xf = f = 7XtXR R   mXn.Y.[.[.[.[.OX*X*X8X5X*X=X,.u vXvX; > > MXMX, 7 t t   ",\r
+"  nXnXnXbXzXvX-.Y +XcX6 6 = = = d L B.G H `.X.:.7.m.=X=X=X=X=X6X,.u cXvXNX: BX> MXVXCXVX7 7 7   ",\r
+"  ZXZXnXbXAXgX@.+XvX; - - - - * @XR.>.sX>.R.i 0 x eXeXeXeXO hXaXcXvXNX: BXMXMXMXVXCXCXCXVX7 7   ",\r
+"  SXZXZXAXgXN.aXNX: : NXNXNX- * +X+X* 6 6 6 * * * * * * * vXvX- NX: DXBXMXMXFXCXCXCXCXGXVXVX7   ",\r
+"  SXSXHXgX0.JXKXLXKXKXDX: : NX* @X-X- - - - - - - - - - - NX: DXDXDXMXMXFXFXCXCXCXCXGXGXGXVXVX  ",\r
+"  SXHXPX3.JXnXnXnXnXbXLXKXKXNXaX-XvX: : NX: : : : : : : BXDXDXLXMXMXFXFXCXCXCXCXGXGXGXGXGXGXGX  ",\r
+"  IXUX$.AXZXZXZXZXnXnXnXLXLXNXJXvXBXDXBXBXBXBXDXDXDXDXLXDXLXLXFXFXFXFXCXCXCXCXGXGXGXGXGXGXGXGX  ",\r
+"                                                                                                "};\r
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_16.gif b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_16.gif
new file mode 100644 (file)
index 0000000..05626b1
Binary files /dev/null and b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_16.gif differ
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_32.gif b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_32.gif
new file mode 100644 (file)
index 0000000..b432f88
Binary files /dev/null and b/security/eclipse/plugins/org.argeo.security.ui.rcp/icons/alt_window_32.gif differ
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/log4j.properties b/security/eclipse/plugins/org.argeo.security.ui.rcp/log4j.properties
new file mode 100644 (file)
index 0000000..8a89a4a
--- /dev/null
@@ -0,0 +1,24 @@
+log4j.rootLogger=WARN, console
+
+## Levels
+log4j.logger.org.argeo=DEBUG
+log4j.logger.org.springframework.security=DEBUG
+
+log4j.logger.org.apache.catalina=INFO
+log4j.logger.org.apache.coyote=INFO
+log4j.logger.org.apache.tomcat=INFO
+
+log4j.logger.org.apache.directory.server=INFO
+log4j.logger.org.apache.directory.server.core.partition=ERROR
+log4j.logger.org.apache.directory.server.core.schema.bootstrap.BootstrapAttributeTypeRegistry=ERROR
+
+log4j.logger.org.apache.jackrabbit=WARN
+log4j.logger.org.apache.jackrabbit.core.query.lucene=ERROR
+
+## Appenders
+# console is set to be a ConsoleAppender.
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+
+# console uses PatternLayout.
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c - [%t]%n
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/plugin.xml b/security/eclipse/plugins/org.argeo.security.ui.rcp/plugin.xml
new file mode 100644 (file)
index 0000000..b1829e6
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         id="secureUi"
+         name="Argeo Secure UI"
+         point="org.eclipse.core.runtime.applications">
+      <application cardinality="singleton-global"
+         thread="main"
+         visible="true">
+         <run
+               class="org.argeo.security.ui.rcp.SecureRcp">
+         </run>
+      </application>
+   </extension>
+   <extension
+         id="secureWebUi"
+         name="Argeo Secure Web UI"
+         point="org.eclipse.core.runtime.applications">
+      <application cardinality="singleton-global"
+         thread="main"
+         visible="true">
+         <run
+               class="org.argeo.security.ui.rcp.SecureRap">
+         </run>
+      </application>
+   </extension>
+
+</plugin>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/pom.xml b/security/eclipse/plugins/org.argeo.security.ui.rcp/pom.xml
new file mode 100644 (file)
index 0000000..f711c69
--- /dev/null
@@ -0,0 +1,159 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons.security</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>plugins</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.security.ui.rcp</artifactId>
+       <name>Commons Security UI RCP</name>
+       <packaging>jar</packaging>
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-source-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <version>${version.maven-bundle-plugin}</version>
+                               <configuration>
+                                       <instructions>
+                                               <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                                               <Require-Bundle>org.eclipse.ui;resolution:=optional,org.eclipse.rap.ui;resolution:=optional,org.eclipse.core.runtime</Require-Bundle>
+                                               <Import-Package>*</Import-Package>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.argeo.maven.plugins</groupId>
+                               <artifactId>maven-argeo-osgi-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>resolve-pde-sources</id>
+                                               <goals>
+                                                       <goal>pde-sources</goal>
+                                               </goals>
+                                               <phase>generate-resources</phase>
+                                       </execution>
+                                       <execution>
+                                               <id>generate-descriptors</id>
+                                               <goals>
+                                                       <goal>descriptors</goal>
+                                               </goals>
+                                               <phase>generate-resources</phase>
+                                       </execution>
+                                       <execution>
+                                               <id>check-osgi</id>
+                                               <phase>test</phase>
+                                               <goals>
+                                                       <goal>equinox</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <onlyCheck>true</onlyCheck>
+                                                       <argsToAppend>
+                                                               <arg>-clean</arg>
+                                                       </argsToAppend>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+               <!-- Argeo Security -->
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.equinox</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.ui</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.server</groupId>
+                       <artifactId>org.argeo.server.dep.ads</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+                       <type>pom</type>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.server</groupId>
+                       <artifactId>org.argeo.server.ads.server</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.services</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.manager.ldap</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.server</groupId>
+                       <artifactId>org.argeo.server.ads</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.dep.osgi</groupId>
+                       <artifactId>org.argeo.dep.osgi.springframework.ldap</artifactId>
+               </dependency>
+
+               <!-- Argeo Eclipse distribution (common dependencies for both RAP and RCP) -->
+               <dependency>
+                       <groupId>org.argeo.commons.eclipse</groupId>
+                       <artifactId>org.argeo.eclipse.dep.rcp</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               
+               <!-- TODO: to be removed -->
+               <dependency>
+                       <groupId>org.argeo.commons.server</groupId>
+                       <artifactId>org.argeo.server.json</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- RCP only dependency, needed at compile time -->
+               <dependency>
+                       <groupId>org.eclipse.ui</groupId>
+                       <artifactId>org.eclipse.ui</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+               <!-- Commons -->
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+
+               <!-- Others -->
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
+               </dependency>
+               <!-- Commons Dep -->
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.dep.log4j</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+                       <type>pom</type>
+               </dependency>
+       </dependencies>
+</project>
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/RapSecureWorkbenchWindowAdvisor.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/RapSecureWorkbenchWindowAdvisor.java
new file mode 100644 (file)
index 0000000..616858a
--- /dev/null
@@ -0,0 +1,31 @@
+package org.argeo.security.ui.rcp;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+
+public class RapSecureWorkbenchWindowAdvisor extends
+               SecureWorkbenchWindowAdvisor {
+
+       public RapSecureWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+               super(configurer);
+       }
+
+       public void preWindowOpen() {
+               IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+//             configurer.setInitialSize(new Point(800, 600));
+               configurer.setShowCoolBar(false);
+               configurer.setShowMenuBar(true);
+               configurer.setShowStatusLine(true);
+               configurer.setShowPerspectiveBar(true);
+               configurer.setTitle("Argeo Secure UI"); //$NON-NLS-1$
+               // Full screen, see
+               // http://dev.eclipse.org/newslists/news.eclipse.technology.rap/msg02697.html
+//             configurer.setShellStyle(SWT.NONE);
+//             Rectangle bounds = Display.getDefault().getBounds();
+//             configurer.setInitialSize(new Point(bounds.width, bounds.height));
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java
new file mode 100644 (file)
index 0000000..d597888
--- /dev/null
@@ -0,0 +1,63 @@
+package org.argeo.security.ui.rcp;
+
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+
+public class SecureActionBarAdvisor extends ActionBarAdvisor {
+       private IWorkbenchAction exitAction;
+       // private IWorkbenchAction aboutAction;
+       private IWorkbenchAction newWindowAction;
+       private IWorkbenchAction preferences = null;
+
+       public SecureActionBarAdvisor(IActionBarConfigurer configurer) {
+               super(configurer);
+       }
+
+       protected void makeActions(IWorkbenchWindow window) {
+               preferences = ActionFactory.PREFERENCES.create(window);
+               register(preferences);
+               exitAction = ActionFactory.QUIT.create(window);
+               register(exitAction);
+
+               // aboutAction = ActionFactory.ABOUT.create(window);
+               // register(aboutAction);
+
+               newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
+               register(newWindowAction);
+       }
+
+       protected void fillMenuBar(IMenuManager menuBar) {
+               MenuManager fileMenu = new MenuManager("&File",
+                               IWorkbenchActionConstants.M_FILE);
+               MenuManager editMenu = new MenuManager("&Edit",
+                               IWorkbenchActionConstants.M_EDIT);
+               MenuManager helpMenu = new MenuManager("&Help",
+                               IWorkbenchActionConstants.M_HELP);
+
+               menuBar.add(fileMenu);
+               menuBar.add(editMenu);
+               // Add a group marker indicating where action set menus will appear.
+               menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+               menuBar.add(helpMenu);
+
+               // File
+               fileMenu.add(newWindowAction);
+               fileMenu.add(new Separator());
+               fileMenu.add(exitAction);
+
+               // Edit
+               editMenu.add(preferences);
+
+               // Help
+               // helpMenu.add(aboutAction);
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRap.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRap.java
new file mode 100644 (file)
index 0000000..cc49448
--- /dev/null
@@ -0,0 +1,103 @@
+package org.argeo.security.ui.rcp;
+
+import java.security.PrivilegedAction;
+
+import javax.security.auth.Subject;
+
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class SecureRap implements IApplication {
+       public Object start(IApplicationContext context) throws Exception {
+               String username = CurrentUser.getUsername();
+               Integer result = null;
+               Display display = PlatformUI.createDisplay();
+               try {
+                       result = (Integer) Subject.doAs(CurrentUser.getSubject(),
+                                       getRunAction(display));
+               } catch (Exception e) {
+                       e.printStackTrace();
+               } finally {
+                       display.dispose();
+               }
+               return result;
+       }
+
+       @SuppressWarnings("rawtypes")
+       private PrivilegedAction getRunAction(final Display display) {
+               return new PrivilegedAction() {
+
+                       public Object run() {
+                               int result = PlatformUI.createAndRunWorkbench(display,
+                                               new ApplicationWorkbenchAdvisor());
+                               return new Integer(result);
+                       }
+               };
+       }
+
+       public void stop() {
+               final IWorkbench workbench;
+               try {
+                       workbench = PlatformUI.getWorkbench();
+               } catch (Exception e) {
+                       return;
+               }
+               if (workbench == null)
+                       return;
+               final Display display = workbench.getDisplay();
+               display.syncExec(new Runnable() {
+
+                       public void run() {
+                               if (!display.isDisposed())
+                                       workbench.close();
+                       }
+               });
+       }
+
+       class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
+
+               private static final String PERSPECTIVE_ID = "org.argeo.security.ui.securityPerspective";
+
+               public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
+                               IWorkbenchWindowConfigurer configurer) {
+                       return new ApplicationWorkbenchWindowAdvisor(configurer);
+               }
+
+               public String getInitialWindowPerspectiveId() {
+                       return PERSPECTIVE_ID;
+               }
+       }
+
+       class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
+
+               public ApplicationWorkbenchWindowAdvisor(
+                               IWorkbenchWindowConfigurer configurer) {
+                       super(configurer);
+               }
+
+               public ActionBarAdvisor createActionBarAdvisor(
+                               IActionBarConfigurer configurer) {
+                       return new ActionBarAdvisor(configurer);
+               }
+
+               public void preWindowOpen() {
+                       IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+                       configurer.setInitialSize(new Point(500, 300));
+                       configurer.setShowCoolBar(false);
+                       configurer.setShowMenuBar(false);
+                       configurer.setShowStatusLine(false);
+                       configurer.setTitle("Equinox Security on RAP");
+               }
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRcp.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureRcp.java
new file mode 100644 (file)
index 0000000..47a5359
--- /dev/null
@@ -0,0 +1,70 @@
+package org.argeo.security.ui.rcp;
+
+import java.security.PrivilegedAction;
+
+import javax.security.auth.Subject;
+
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+public class SecureRcp implements IApplication {
+       public Object start(IApplicationContext context) throws Exception {
+               String username = CurrentUser.getUsername();
+               Integer returnCode = null;
+               Display display = PlatformUI.createDisplay();
+               try {
+                       returnCode = (Integer) Subject.doAs(CurrentUser.getSubject(),
+                                       getRunAction(display));
+                       if (returnCode == PlatformUI.RETURN_RESTART)
+                               return IApplication.EXIT_RESTART;
+                       else
+                               return IApplication.EXIT_OK;
+               } catch (Exception e) {
+                       // e.printStackTrace();
+                       IStatus status = new Status(IStatus.ERROR,
+                                       "org.eclipse.rap.security.demo", "Login failed", e);
+                       ErrorDialog.openError(null, "Error", "Login failed", status);
+               } finally {
+                       display.dispose();
+               }
+               return returnCode;
+       }
+
+       private PrivilegedAction getRunAction(final Display display) {
+               return new PrivilegedAction() {
+
+                       public Object run() {
+                               int result = PlatformUI.createAndRunWorkbench(display,
+                                               new SecureWorkbenchAdvisor());
+                               return new Integer(result);
+                       }
+               };
+       }
+
+       public void stop() {
+               final IWorkbench workbench;
+               try {
+                       workbench = PlatformUI.getWorkbench();
+               } catch (Exception e) {
+                       return;
+               }
+               if (workbench == null)
+                       return;
+               final Display display = workbench.getDisplay();
+               display.syncExec(new Runnable() {
+
+                       public void run() {
+                               if (!display.isDisposed())
+                                       workbench.close();
+                       }
+               });
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java
new file mode 100644 (file)
index 0000000..d39bf84
--- /dev/null
@@ -0,0 +1,18 @@
+package org.argeo.security.ui.rcp;
+
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class SecureWorkbenchAdvisor extends WorkbenchAdvisor {
+
+       static final String PERSPECTIVE_ID = "org.argeo.security.ui.securityPerspective"; //$NON-NLS-1$
+
+    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+        return new SecureWorkbenchWindowAdvisor(configurer);
+    }
+
+       public String getInitialWindowPerspectiveId() {
+               return PERSPECTIVE_ID;
+       }
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java
new file mode 100644 (file)
index 0000000..146ac8f
--- /dev/null
@@ -0,0 +1,30 @@
+package org.argeo.security.ui.rcp;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class SecureWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
+
+       public SecureWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+               super(configurer);
+       }
+
+       public ActionBarAdvisor createActionBarAdvisor(
+                       IActionBarConfigurer configurer) {
+               return new SecureActionBarAdvisor(configurer);
+       }
+
+       public void preWindowOpen() {
+               IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+               configurer.setInitialSize(new Point(800, 600));
+               configurer.setShowCoolBar(false);
+               configurer.setShowMenuBar(true);
+               configurer.setShowStatusLine(true);
+               configurer.setShowPerspectiveBar(true);
+               configurer.setTitle("Argeo Secure UI"); //$NON-NLS-1$
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/.classpath b/security/eclipse/plugins/org.argeo.security.ui/.classpath
new file mode 100644 (file)
index 0000000..92f19d2
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src/main/java"/>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/security/eclipse/plugins/org.argeo.security.ui/.project b/security/eclipse/plugins/org.argeo.security.ui/.project
new file mode 100644 (file)
index 0000000..a052e9a
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.security.ui</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.jdt.core.prefs b/security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..aef0f52
--- /dev/null
@@ -0,0 +1,8 @@
+#Sat Jan 15 13:25:02 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.pde.core.prefs b/security/eclipse/plugins/org.argeo.security.ui/.settings/org.eclipse.pde.core.prefs
new file mode 100644 (file)
index 0000000..dfa507d
--- /dev/null
@@ -0,0 +1,3 @@
+#Sat Jan 15 18:15:48 CET 2011
+eclipse.preferences.version=1
+resolve.requirebundle=false
diff --git a/security/eclipse/plugins/org.argeo.security.ui/META-INF/MANIFEST.MF b/security/eclipse/plugins/org.argeo.security.ui/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..30b48d9
--- /dev/null
@@ -0,0 +1,37 @@
+Manifest-Version: 1.0\r
+Export-Package: org.argeo.security.ui;uses:="org.eclipse.ui,org.eclips\r
+ e.ui.plugin,org.osgi.framework";version="0.2.2.SNAPSHOT-r20110116_215\r
+ 742",org.argeo.security.ui.dialogs;uses:="org.eclipse.swt.events,java\r
+ x.security.auth.callback,org.eclipse.swt.widgets,org.eclipse.jface.op\r
+ eration,org.eclipse.core.runtime,org.eclipse.jface.dialogs,org.eclips\r
+ e.swt.graphics,org.eclipse.swt.layout";version="0.2.2.SNAPSHOT-r20110\r
+ 116_215742",org.argeo.security.ui.views;uses:="org.argeo.security.equ\r
+ inox,org.eclipse.jface.viewers,org.eclipse.swt.graphics,org.eclipse.u\r
+ i,org.eclipse.ui.part,org.eclipse.swt.widgets,org.argeo.security,org.\r
+ argeo";version="0.2.2.SNAPSHOT-r20110116_215742"\r
+Private-Package: .;version="0.2.2-SNAPSHOT-r20110116_215742"\r
+Bundle-ActivationPolicy: lazy\r
+Tool: Bnd-0.0.357\r
+Bundle-Name: Commons Security UI\r
+Created-By: 1.6.0_0 (Sun Microsystems Inc.)\r
+Bundle-RequiredExecutionEnvironment: J2SE-1.5\r
+Require-Bundle: org.eclipse.ui;resolution:=optional,org.eclipse.rap.ui\r
+ ;resolution:=optional,org.eclipse.core.runtime\r
+Bundle-Vendor: Argeo\r
+Bundle-Version: 0.2.2.SNAPSHOT-r20110116_215742\r
+Bundle-Activator: org.argeo.security.ui.SecurityUiPlugin\r
+Bundle-ManifestVersion: 2\r
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
+Import-Package: javax.security.auth.callback,org.argeo;version="0.2",o\r
+ rg.argeo.eclipse.spring;version="0.2",org.argeo.security;version="0.2\r
+ ",org.argeo.security.equinox;version="0.2",org.argeo.security.ui;vers\r
+ ion="0.2",org.argeo.security.ui.dialogs;version="0.2",org.argeo.secur\r
+ ity.ui.views;version="0.2",org.eclipse.core.runtime;registry=split;ve\r
+ rsion="3.4",org.eclipse.jface.dialogs,org.eclipse.jface.operation,org\r
+ .eclipse.jface.viewers,org.eclipse.swt.events,org.eclipse.swt.graphic\r
+ s,org.eclipse.swt.layout,org.eclipse.swt.widgets,org.eclipse.ui;ui.wo\r
+ rkbench=split,org.eclipse.ui.part;ui.workbench=split,org.eclipse.ui.p\r
+ lugin,org.osgi.framework;version="1.5"\r
+Bundle-SymbolicName: org.argeo.security.ui;singleton:=true\r
+Bundle-DocURL: http://www.argeo.org\r
+\r
diff --git a/security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/osgi.xml b/security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/osgi.xml
new file mode 100644 (file)
index 0000000..6574cf1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xmlns:osgi="http://www.springframework.org/schema/osgi"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
+       osgi:default-timeout="30000">\r
+\r
+       <reference id="securityService" interface="org.argeo.security.ArgeoSecurityService" />\r
+</beans:beans>
\ No newline at end of file
diff --git a/security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/views.xml b/security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/views.xml
new file mode 100644 (file)
index 0000000..2cd8d03
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+        http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+       <bean id="org.argeo.security.ui.usersView" class="org.argeo.security.ui.views.UsersView"
+               scope="prototype">
+               <property name="securityService" ref="securityService" />
+       </bean>
+       <bean id="org.argeo.security.ui.currentUserView" class="org.argeo.security.ui.views.CurrentUserView"
+               scope="prototype">
+       </bean>
+</beans>
diff --git a/security/eclipse/plugins/org.argeo.security.ui/build.properties b/security/eclipse/plugins/org.argeo.security.ui/build.properties
new file mode 100644 (file)
index 0000000..7b6db78
--- /dev/null
@@ -0,0 +1,5 @@
+source.. = src/main/java/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/security/eclipse/plugins/org.argeo.security.ui/plugin.xml b/security/eclipse/plugins/org.argeo.security.ui/plugin.xml
new file mode 100644 (file)
index 0000000..b99ba65
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.perspectives">
+      <perspective
+            class="org.argeo.security.ui.SecurityPerspective"
+            id="org.argeo.security.ui.securityPerspective"
+            name="Security">
+      </perspective>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            class="org.argeo.eclipse.spring.SpringExtensionFactory"
+            id="org.argeo.security.ui.usersView"
+            name="Users"
+            restorable="false">
+      </view>
+      <view
+            class="org.argeo.eclipse.spring.SpringExtensionFactory"
+            id="org.argeo.security.ui.currentUserView"
+            name="Current User"
+            restorable="false">
+      </view>
+   </extension>
+   
+   <!-- Security -->
+   <extension
+         id="defaultLoginDialog"
+         name="Default Login Dialog"
+         point="org.eclipse.equinox.security.callbackHandler">
+      <callbackHandler
+            class="org.argeo.security.ui.dialogs.DefaultLoginDialog">
+      </callbackHandler>
+   </extension>
+   <extension
+         point="org.eclipse.equinox.security.callbackHandlerMapping">
+      <callbackHandlerMapping
+            callbackHandlerId="org.argeo.security.ui.defaultLoginDialog"
+            configName="SPRING">
+      </callbackHandlerMapping>
+   </extension>
+   <extension
+         point="org.eclipse.equinox.security.callbackHandlerMapping">
+         <callbackHandlerMapping
+            callbackHandlerId="org.argeo.security.ui.defaultLoginDialog"
+            configName="UNIX">
+      </callbackHandlerMapping>
+   </extension>
+   <extension
+         point="org.eclipse.equinox.security.callbackHandlerMapping">
+      <callbackHandlerMapping
+            callbackHandlerId="org.argeo.security.ui.defaultLoginDialog"
+            configName="SPRING_SECURITY_CONTEXT">
+      </callbackHandlerMapping>
+   </extension>
+ </plugin>
diff --git a/security/eclipse/plugins/org.argeo.security.ui/pom.xml b/security/eclipse/plugins/org.argeo.security.ui/pom.xml
new file mode 100644 (file)
index 0000000..a2f77c7
--- /dev/null
@@ -0,0 +1,101 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons.security</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>plugins</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.security.ui</artifactId>
+       <name>Commons Security UI</name>
+       <packaging>jar</packaging>
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-source-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <version>${version.maven-bundle-plugin}</version>
+                               <configuration>
+                                       <instructions>
+                                               <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                                               <Bundle-Activator>org.argeo.security.ui.SecurityUiPlugin</Bundle-Activator>
+                                               <Require-Bundle>org.eclipse.ui;resolution:=optional,org.eclipse.rap.ui;resolution:=optional,org.eclipse.core.runtime</Require-Bundle>
+                                               <Import-Package>*,org.argeo.eclipse.spring</Import-Package>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+               <!-- Argeo Security -->
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.core</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons.security</groupId>
+                       <artifactId>org.argeo.security.equinox</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- Argeo Eclipse -->
+               <dependency>
+                       <groupId>org.argeo.commons.eclipse</groupId>
+                       <artifactId>org.argeo.eclipse.ui</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- Argeo Eclipse distribution (common dependencies for both RAP and RCP) -->
+               <dependency>
+                       <groupId>org.argeo.commons.eclipse</groupId>
+                       <artifactId>org.argeo.eclipse.dep.common</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- RCP only dependency, needed at compile time -->
+               <dependency>
+                       <groupId>org.argeo.commons.eclipse</groupId>
+                       <artifactId>org.argeo.eclipse.dep.rcp</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.eclipse.ui</groupId>
+                       <artifactId>org.eclipse.ui</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+               <!-- Commons -->
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- Spring -->
+               <dependency>
+                       <groupId>org.springframework.security</groupId>
+                       <artifactId>org.springframework.security.core</artifactId>
+               </dependency>
+
+               <!-- Others -->
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
+               </dependency>
+
+       </dependencies>
+</project>
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java
new file mode 100644 (file)
index 0000000..1a630dd
--- /dev/null
@@ -0,0 +1,23 @@
+package org.argeo.security.ui;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+
+public class SecurityPerspective implements IPerspectiveFactory {
+
+       public void createInitialLayout(IPageLayout layout) {
+               String editorArea = layout.getEditorArea();
+               layout.setEditorAreaVisible(false);
+               layout.setFixed(false);
+
+               IFolderLayout main = layout.createFolder("main", IPageLayout.RIGHT,
+                               0.3f, editorArea);
+               IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
+                               0.3f, editorArea);
+
+               left.addView("org.argeo.security.ui.usersView");
+               main.addView("org.argeo.security.ui.currentUserView");
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityUiPlugin.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityUiPlugin.java
new file mode 100644 (file)
index 0000000..5e165ad
--- /dev/null
@@ -0,0 +1,50 @@
+package org.argeo.security.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class SecurityUiPlugin extends AbstractUIPlugin {
+
+       // The plug-in ID
+       public static final String PLUGIN_ID = "org.argeo.security.ui"; //$NON-NLS-1$
+
+       // The shared instance
+       private static SecurityUiPlugin plugin;
+       
+       /**
+        * The constructor
+        */
+       public SecurityUiPlugin() {
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+        */
+       public void start(BundleContext context) throws Exception {
+               super.start(context);
+               plugin = this;
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+        */
+       public void stop(BundleContext context) throws Exception {
+               plugin = null;
+               super.stop(context);
+       }
+
+       /**
+        * Returns the shared instance
+        *
+        * @return the shared instance
+        */
+       public static SecurityUiPlugin getDefault() {
+               return plugin;
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/AbstractLoginDialog.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/AbstractLoginDialog.java
new file mode 100644 (file)
index 0000000..d13414e
--- /dev/null
@@ -0,0 +1,118 @@
+package org.argeo.security.ui.dialogs;
+
+import java.io.IOException;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.operation.ModalContext;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public abstract class AbstractLoginDialog extends TitleAreaDialog implements
+               CallbackHandler {
+
+       boolean processCallbacks = false;
+       boolean isCancelled = false;
+       Callback[] callbackArray;
+
+       protected final Callback[] getCallbacks() {
+               return this.callbackArray;
+       }
+
+       public abstract void internalHandle();
+
+       public boolean isCancelled() {
+               return isCancelled;
+       }
+
+       protected AbstractLoginDialog(Shell parentShell) {
+               super(parentShell);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * javax.security.auth.callback.CallbackHandler#handle(javax.security.auth
+        * .callback.Callback[])
+        */
+       public void handle(final Callback[] callbacks) throws IOException {
+               this.callbackArray = callbacks;
+               final Display display = Display.getDefault();
+               display.syncExec(new Runnable() {
+
+                       public void run() {
+                               isCancelled = false;
+                               setBlockOnOpen(false);
+                               open();
+                               final Button okButton = getButton(IDialogConstants.OK_ID);
+                               okButton.setText("Login");
+                               okButton.addSelectionListener(new SelectionListener() {
+
+                                       public void widgetSelected(final SelectionEvent event) {
+                                               processCallbacks = true;
+                                       }
+
+                                       public void widgetDefaultSelected(final SelectionEvent event) {
+                                               // nothing to do
+                                       }
+                               });
+                               final Button cancel = getButton(IDialogConstants.CANCEL_ID);
+                               cancel.addSelectionListener(new SelectionListener() {
+
+                                       public void widgetSelected(final SelectionEvent event) {
+                                               isCancelled = true;
+                                               processCallbacks = true;
+                                       }
+
+                                       public void widgetDefaultSelected(final SelectionEvent event) {
+                                               // nothing to do
+                                       }
+                               });
+                       }
+               });
+               try {
+                       ModalContext.setAllowReadAndDispatch(true); // Works for now.
+                       ModalContext.run(new IRunnableWithProgress() {
+
+                               public void run(final IProgressMonitor monitor) {
+                                       // Wait here until OK or cancel is pressed, then let it rip.
+                                       // The event
+                                       // listener
+                                       // is responsible for closing the dialog (in the
+                                       // loginSucceeded
+                                       // event).
+                                       while (!processCallbacks) {
+                                               try {
+                                                       Thread.sleep(100);
+                                               } catch (final Exception e) {
+                                                       // do nothing
+                                               }
+                                       }
+                                       processCallbacks = false;
+                                       // Call the adapter to handle the callbacks
+                                       if (!isCancelled())
+                                               internalHandle();
+                               }
+                       }, true, new NullProgressMonitor(), Display.getDefault());
+               } catch (final Exception e) {
+                       final IOException ioe = new IOException();
+                       ioe.initCause(e);
+                       throw ioe;
+               }
+       }
+
+       protected void configureShell(Shell shell) {
+               super.configureShell(shell);
+               shell.setText("Login");
+       }
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/DefaultLoginDialog.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/DefaultLoginDialog.java
new file mode 100644 (file)
index 0000000..b0a7e05
--- /dev/null
@@ -0,0 +1,110 @@
+package org.argeo.security.ui.dialogs;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.TextOutputCallback;
+
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class DefaultLoginDialog extends AbstractLoginDialog {
+
+       public DefaultLoginDialog() {
+               this(Display.getDefault().getActiveShell());
+       }
+
+       protected DefaultLoginDialog(Shell parentShell) {
+               super(parentShell);
+       }
+
+       protected Point getInitialSize() {
+               return new Point(300, 280);
+       }
+
+       protected Control createDialogArea(Composite parent) {
+               Composite dialogarea = (Composite) super.createDialogArea(parent);
+               dialogarea.setLayoutData(new GridData(GridData.FILL_BOTH));
+               Composite composite = new Composite(dialogarea, SWT.NONE);
+               composite.setLayout(new GridLayout(2, false));
+               createCallbackHandlers(composite);
+               return composite;
+       }
+
+       private void createCallbackHandlers(Composite composite) {
+               Callback[] callbacks = getCallbacks();
+               for (int i = 0; i < callbacks.length; i++) {
+                       Callback callback = callbacks[i];
+                       if (callback instanceof TextOutputCallback) {
+                               createTextoutputHandler(composite,
+                                               (TextOutputCallback) callback);
+                       } else if (callback instanceof NameCallback) {
+                               createNameHandler(composite, (NameCallback) callback);
+                       } else if (callback instanceof PasswordCallback) {
+                               createPasswordHandler(composite, (PasswordCallback) callback);
+                       }
+               }
+       }
+
+       private void createPasswordHandler(Composite composite,
+                       final PasswordCallback callback) {
+               Label label = new Label(composite, SWT.NONE);
+               label.setText(callback.getPrompt());
+               final Text passwordText = new Text(composite, SWT.SINGLE | SWT.LEAD
+                               | SWT.PASSWORD | SWT.BORDER);
+               //passwordText.setLayoutData(new GridData(GridData.FILL_BOTH));
+               passwordText.addModifyListener(new ModifyListener() {
+
+                       public void modifyText(ModifyEvent event) {
+                               callback.setPassword(passwordText.getText().toCharArray());
+                       }
+               });
+       }
+
+       private void createNameHandler(Composite composite,
+                       final NameCallback callback) {
+               Label label = new Label(composite, SWT.NONE);
+               label.setText(callback.getPrompt());
+               final Text text = new Text(composite, SWT.SINGLE | SWT.LEAD
+                               | SWT.BORDER);
+               //text.setLayoutData(new GridData(GridData.FILL_BOTH));
+               text.addModifyListener(new ModifyListener() {
+
+                       public void modifyText(ModifyEvent event) {
+                               callback.setName(text.getText());
+                       }
+               });
+       }
+
+       private void createTextoutputHandler(Composite composite,
+                       TextOutputCallback callback) {
+               int messageType = callback.getMessageType();
+               int dialogMessageType = IMessageProvider.NONE;
+               switch (messageType) {
+               case TextOutputCallback.INFORMATION:
+                       dialogMessageType = IMessageProvider.INFORMATION;
+                       break;
+               case TextOutputCallback.WARNING:
+                       dialogMessageType = IMessageProvider.WARNING;
+                       break;
+               case TextOutputCallback.ERROR:
+                       dialogMessageType = IMessageProvider.ERROR;
+                       break;
+               }
+               setMessage(callback.getMessage(), dialogMessageType);
+       }
+
+       public void internalHandle() {
+       }
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java
new file mode 100644 (file)
index 0000000..263a722
--- /dev/null
@@ -0,0 +1,129 @@
+package org.argeo.security.ui.views;
+
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.part.ViewPart;
+
+public class CurrentUserView extends ViewPart {
+       private TableViewer viewer;
+
+       @Override
+       public void createPartControl(Composite parent) {
+
+               // viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+               // | SWT.V_SCROLL);
+               viewer = new TableViewer(createTable(parent));
+               viewer.setContentProvider(new UsersContentProvider());
+               viewer.setLabelProvider(new UsersLabelProvider());
+               viewer.setInput(getViewSite());
+               // viewer.setInput(SecurityContextHolder.getContext());
+       }
+
+       protected Table createTable(Composite parent) {
+               int style = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL;
+
+               Table table = new Table(parent, style);
+
+               // GridData gridData = new GridData(GridData.FILL_BOTH);
+               // gridData.grabExcessVerticalSpace = true;
+               // gridData.grabExcessHorizontalSpace = true;
+               // gridData.horizontalSpan = 3;
+               // table.setLayoutData(gridData);
+
+               table.setLinesVisible(true);
+               table.setHeaderVisible(true);
+
+               TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+               column.setText("ID");
+               column.setWidth(100);
+
+//             column = new TableColumn(table, SWT.LEFT, 1);
+//             column.setText("Password");
+//             column.setWidth(200);
+
+               // column = new TableColumn(table, SWT.LEFT, 2);
+               // column.setText("Roles");
+               // column.setWidth(300);
+
+               return table;
+       }
+
+       @Override
+       public void setFocus() {
+               viewer.getTable().setFocus();
+       }
+
+       private class UsersContentProvider implements IStructuredContentProvider {
+
+               public Object[] getElements(Object inputElement) {
+                       return getChildren(inputElement);
+               }
+
+               public Object[] getChildren(Object parentElement) {
+//                     ILoginContext secureContext = LoginContextFactory
+//                                     .createContext("SPRING");
+//                     try {
+//                             secureContext.login();
+//                     } catch (LoginException e) {
+//                             // login failed
+//                     }
+//
+//                     Subject subject = null;
+//                     // subject = Subject.getSubject(AccessController.getContext());
+//                     try {
+//                             subject = secureContext.getSubject();
+//                     } catch (Exception e) {
+//                             e.printStackTrace();
+//                             throw new ArgeoException("Cannot retrieve subject", e);
+//                     }
+//
+//                     if (subject == null)
+//                             throw new ArgeoException("No subject found");
+//                     return subject.getPrincipals().toArray();
+                       return CurrentUser.roles().toArray();
+               }
+
+               public void dispose() {
+                       // TODO Auto-generated method stub
+
+               }
+
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                       // TODO Auto-generated method stub
+
+               }
+
+       }
+
+       private class UsersLabelProvider extends LabelProvider implements
+                       ITableLabelProvider {
+               public String getColumnText(Object element, int columnIndex) {
+//                     Principal argeoUser = (Principal) element;
+//                     switch (columnIndex) {
+//                     case 0:
+//                             return argeoUser.getName();
+//                     case 1:
+//                             return argeoUser.toString();
+//                     default:
+//                             throw new ArgeoException("Unmanaged column " + columnIndex);
+//                     }
+                       return element.toString();
+               }
+
+               public Image getColumnImage(Object element, int columnIndex) {
+                       // TODO Auto-generated method stub
+                       return null;
+               }
+
+       }
+
+}
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java
new file mode 100644 (file)
index 0000000..d54c1a6
--- /dev/null
@@ -0,0 +1,129 @@
+package org.argeo.security.ui.views;
+
+import org.argeo.ArgeoException;
+import org.argeo.security.ArgeoSecurityService;
+import org.argeo.security.ArgeoUser;
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.part.ViewPart;
+
+public class UsersView extends ViewPart {
+       private TableViewer viewer;
+       private ArgeoSecurityService securityService;
+
+       @Override
+       public void createPartControl(Composite parent) {
+
+               // viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+               // | SWT.V_SCROLL);
+               viewer = new TableViewer(createTable(parent));
+               viewer.setContentProvider(new UsersContentProvider());
+               viewer.setLabelProvider(new UsersLabelProvider());
+               viewer.setInput(getViewSite());
+               // viewer.setInput(SecurityContextHolder.getContext());
+       }
+
+       protected Table createTable(Composite parent) {
+               int style = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL;
+
+               Table table = new Table(parent, style);
+
+               // GridData gridData = new GridData(GridData.FILL_BOTH);
+               // gridData.grabExcessVerticalSpace = true;
+               // gridData.grabExcessHorizontalSpace = true;
+               // gridData.horizontalSpan = 3;
+               // table.setLayoutData(gridData);
+
+               table.setLinesVisible(true);
+               table.setHeaderVisible(true);
+
+               TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+               column.setText("ID");
+               column.setWidth(100);
+
+               column = new TableColumn(table, SWT.LEFT, 1);
+               column.setText("Password");
+               column.setWidth(200);
+
+               // column = new TableColumn(table, SWT.LEFT, 2);
+               // column.setText("Roles");
+               // column.setWidth(300);
+
+               return table;
+       }
+
+       @Override
+       public void setFocus() {
+               viewer.getTable().setFocus();
+       }
+
+       private class UsersContentProvider implements IStructuredContentProvider {
+
+               public Object[] getElements(Object inputElement) {
+                       return getChildren(inputElement);
+               }
+
+               public Object[] getChildren(Object parentElement) {
+//                     try {
+//                             Thread.sleep(3000);
+//                     } catch (InterruptedException e) {
+//                             // TODO Auto-generated catch block
+//                             e.printStackTrace();
+//                     }
+
+                       return securityService.getSecurityDao().listUsers().toArray();
+               }
+
+               public void dispose() {
+                       // TODO Auto-generated method stub
+
+               }
+
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                       // TODO Auto-generated method stub
+
+               }
+
+       }
+
+       private class UsersLabelProvider extends LabelProvider implements
+                       ITableLabelProvider {
+               public String getColumnText(Object element, int columnIndex) {
+                       String currentUsername = CurrentUser.getUsername();
+                       ArgeoUser argeoUser = (ArgeoUser) element;
+                       switch (columnIndex) {
+                       case 0:
+                               String userName = argeoUser.getUsername();
+                               if (userName.equals(currentUsername))
+                                       userName = userName + "*";
+                               return userName;
+                       case 1:
+                               return argeoUser.getPassword();
+                       case 2:
+                               return argeoUser.getRoles().toString();
+                       default:
+                               throw new ArgeoException("Unmanaged column " + columnIndex);
+                       }
+               }
+
+               public Image getColumnImage(Object element, int columnIndex) {
+                       // TODO Auto-generated method stub
+                       return null;
+               }
+
+       }
+
+       public void setSecurityService(ArgeoSecurityService securityService) {
+               this.securityService = securityService;
+       }
+
+}
diff --git a/security/eclipse/plugins/pom.xml b/security/eclipse/plugins/pom.xml
new file mode 100644 (file)
index 0000000..f8d7170
--- /dev/null
@@ -0,0 +1,84 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons.security</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>eclipse</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>plugins</artifactId>
+       <name>Commons Security Eclipse plugins</name>
+       <packaging>pom</packaging>
+       <modules>
+               <module>org.argeo.security.equinox</module>
+               <module>org.argeo.security.ui</module>
+               <module>org.argeo.security.ui.rcp</module>
+               <module>org.argeo.security.ui.rap</module>
+       </modules>
+       <build>
+               <resources>
+                       <resource>
+                               <directory>src/main/resources</directory>
+                       </resource>
+                       <resource>
+                               <directory>.</directory>
+                               <includes>
+                                       <include>plugin.xml</include>
+                                       <include>META-INF/**</include>
+                                       <include>jaas/**</include>
+                               </includes>
+                       </resource>
+               </resources>
+               <plugins>
+                       <plugin>
+                               <artifactId>maven-clean-plugin</artifactId>
+                               <configuration>
+                                       <filesets>
+                                               <fileset>
+                                                       <directory>META-INF</directory>
+                                                       <includes>
+                                                               <include>MANIFEST.MF</include>
+                                                       </includes>
+                                               </fileset>
+                                       </filesets>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                               <configuration>
+                                       <archive>
+                                               <manifestFile>META-INF/MANIFEST.MF</manifestFile>
+                                       </archive>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-source-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-surefire-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <configuration>
+                                       <manifestLocation>META-INF</manifestLocation>
+                                       <instructions>
+                                               <Bundle-SymbolicName>${pom.artifactId};singleton:=true</Bundle-SymbolicName>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.osgi</groupId>
+                       <artifactId>org.argeo.osgi.boot</artifactId>
+                       <version>0.2.2-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+</project>
diff --git a/security/eclipse/pom.xml b/security/eclipse/pom.xml
new file mode 100644 (file)
index 0000000..86a4601
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons</groupId>
+               <version>0.2.2-SNAPSHOT</version>
+               <artifactId>argeo-commons</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <groupId>org.argeo.commons.security</groupId>
+       <artifactId>eclipse</artifactId>
+       <name>Commons Security Eclipse</name>
+       <packaging>pom</packaging>
+       <modules>
+               <!-- <module>features</module> -->
+               <module>plugins</module>
+       </modules>
+</project>
\ No newline at end of file
index b54b8738623c1ab44f3886386838936efe062833..aadcc35d622f6d68d953e09645862e66fb00cbd2 100644 (file)
@@ -13,6 +13,7 @@
        <modules>
                <module>runtime</module>
                <module>modules</module>
+               <module>eclipse</module>
                <module>dep</module>
                <module>demo</module>
        </modules>
diff --git a/server/modules/org.argeo.server.ads.server/.project b/server/modules/org.argeo.server.ads.server/.project
new file mode 100644 (file)
index 0000000..a191480
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.server.ads.server</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+       </natures>
+</projectDescription>
diff --git a/server/modules/org.argeo.server.ads.server/.settings/org.eclipse.pde.core.prefs b/server/modules/org.argeo.server.ads.server/.settings/org.eclipse.pde.core.prefs
new file mode 100644 (file)
index 0000000..5733b31
--- /dev/null
@@ -0,0 +1,4 @@
+#Sun Jan 16 09:58:38 CET 2011
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
index b579ee5f87d5ca98be673dabe41781b4535b5645..6762fd33fcf39b1e5326484feb3b1a3c5ae579d1 100644 (file)
@@ -5,15 +5,13 @@
        <bean
                class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
-               <property name="ignoreUnresolvablePlaceholders" value="false" />
                <property name="locations">
-                       <value>osgibundle:ads.properties
-                       </value>
+                       <value>osgibundle:ads.properties</value>
                </property>
        </bean>
 
        <bean class="org.argeo.server.ads.AdsContainer">
-               <property name="workingDirectory" value="${argeo.osgi.data.dir}/apacheds" />
+               <property name="workingDirectory" value="${osgi.instance.area}/apacheds" />
                <property name="deleteWorkingDirOnExit" value="true" />
                <property name="configuration" ref="configuration" />
                <property name="environment" ref="environment" />
                                <prop key="java.naming.security.authentication">simple</prop>
                                <prop key="java.naming.security.principal">${argeo.ldap.manager.userdn}</prop>
                                <prop key="java.naming.security.credentials">${argeo.ldap.manager.password}</prop>
-                               <!--<prop key="kdc.entryBaseDn">ou=users,dc=example,dc=com</prop>-->
-                               <!--<prop key="kdc.java.naming.security.credentials">secret</prop>-->
-                               <!--
-                                       <prop key="changepw.entryBaseDn">ou=users,dc=example,dc=com</prop>
-                               -->
-                               <!--
-                                       <prop key="changepw.java.naming.security.credentials">secret</prop>
-                               -->
-                               <!--
-                                       Set this key to a space delimited set of attributeType descriptions
-                                       and their OID's if you want an attributeType to be handled as
-                                       binary content. The server will use the schema to derive the set of
-                                       attributeTypes to treat as binary. The union if the values you
-                                       provide here will be taken as the set of binaries. Note to be
-                                       consistent you must add both the OID and all the names an
-                                       attributeType can have.
-                               -->
-                               <!--
-                                       <prop key="java.naming.ldap.attributes.binary"></prop>
-                               -->
+                               <!--<prop key="kdc.entryBaseDn">ou=users,dc=example,dc=com</prop> -->
+                               <!--<prop key="kdc.java.naming.security.credentials">secret</prop> -->
+                               <!-- <prop key="changepw.entryBaseDn">ou=users,dc=example,dc=com</prop> -->
+                               <!-- <prop key="changepw.java.naming.security.credentials">secret</prop> -->
+                               <!-- Set this key to a space delimited set of attributeType descriptions 
+                                       and their OID's if you want an attributeType to be handled as binary content. 
+                                       The server will use the schema to derive the set of attributeTypes to treat 
+                                       as binary. The union if the values you provide here will be taken as the 
+                                       set of binaries. Note to be consistent you must add both the OID and all 
+                                       the names an attributeType can have. -->
+                               <!-- <prop key="java.naming.ldap.attributes.binary"></prop> -->
                        </props>
                </property>
        </bean>
diff --git a/server/modules/org.argeo.server.ads.server/build.properties b/server/modules/org.argeo.server.ads.server/build.properties
new file mode 100644 (file)
index 0000000..5f22cdd
--- /dev/null
@@ -0,0 +1 @@
+bin.includes = META-INF/
index 9cde2f4596c3af85d5fe6f8b76be2b8d4f15cc0a..01dec5f228350111ce5e3c01821265a59774cec7 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.commons.server</groupId>
                        <groupId>javax.servlet</groupId>
                        <artifactId>com.springsource.javax.servlet</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>javax.xml.stream</groupId>
+                       <artifactId>com.springsource.javax.xml.stream</artifactId>
+               </dependency>
 
                <!-- Logging -->
                <dependency>
index fdf424dbcdeba2277e71b1c308fd1402f513c1fc..cd05956ed3cf91a3096354c38f5cf879584553a7 100644 (file)
@@ -7,6 +7,4 @@ additional.bundles = com.springsource.slf4j.api,\
                      com.springsource.org.apache.lucene,\
                      org.springframework.context
 source.. = src/main/java/,\
-           src/test/java/,\
-           src/test/resources/,\
            src/main/resources/