Commits

Ben Woskow committed 01026f0

initial commit for tutorial & tests thusfar

Comments (0)

Files changed (20)

tutorial-plugin-licensing-api/LICENSE

+To avoid future confusion, we recommend that you include a license with your plugin.
+This file is simply a reminder.
+
+For a template license you can have a look at: http://www.opensource.org/licenses/
+
+Atlassian releases most of its modules under a BSD license: http://www.opensource.org/licenses/bsd-license.php

tutorial-plugin-licensing-api/README

+You have successfully created a plugin using the JIRA plugin archetype!
+
+Here are the SDK commands you'll use immediately:
+
+* atlas-run   -- installs this plugin into JIRA and starts it on http://localhost:2990/jira
+* atlas-debug -- same as atlas-run, but allows a debugger to attach at port 5005
+* atlas-cli   -- after atlas-run or atlas-debug, opens a Maven command line window:
+                 - 'pi' reinstalls the plugin into the running JIRA instance
+* atlas-help  -- prints description for all commands in the SDK
+
+Full documentation is always available at:
+
+http://confluence.atlassian.com/display/DEVNET/Developing+your+Plugin+using+the+Atlassian+Plugin+SDK

tutorial-plugin-licensing-api/pom.xml

+<?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>
+  <groupId>com.example.plugins.tutorial</groupId>
+  <artifactId>tutorial-plugin-licensing-api</artifactId>
+  <packaging>atlassian-plugin</packaging>
+  <name>tutorial-plugin-licensing-api</name>
+  <version>1.0-SNAPSHOT</version>
+  <description>This is a sample plugin to demonstrate how to use UPM's licensing API.</description>
+  <organization>
+    <name>Example Company</name>
+    <url>http://www.example.com/</url>
+  </organization>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.atlassian.maven.plugins</groupId>
+        <artifactId>maven-jira-plugin</artifactId>
+        <version>3.7</version>
+        <extensions>true</extensions>
+        <configuration>
+          <productVersion>${jira.version}</productVersion>
+          <productDataVersion>${jira.version}</productDataVersion>
+          <pluginArtifacts>
+            <pluginArtifact>
+              <groupId>com.atlassian.upm</groupId>
+              <artifactId>atlassian-universal-plugin-manager-plugin</artifactId>
+              <version>2.0-m2</version>
+            </pluginArtifact>
+          </pluginArtifacts>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>com.atlassian.jira</groupId>
+      <artifactId>jira-api</artifactId>
+      <version>${jira.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.jira</groupId>
+      <artifactId>jira-tests</artifactId>
+      <version>${jira.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.jira</groupId>
+      <artifactId>jira-func-tests</artifactId>
+      <version>${jira.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.upm</groupId>
+      <artifactId>licensing-api</artifactId>
+      <version>2.0-m2</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.upm</groupId>
+      <artifactId>upm-api</artifactId>
+      <version>2.0-m2</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.plugins</groupId>
+      <artifactId>atlassian-plugins-core</artifactId>
+      <version>2.9.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.sal</groupId>
+      <artifactId>sal-api</artifactId>
+      <version>2.6.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.4</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <version>1.8.5</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>4.1.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.ws.rs</groupId>
+      <artifactId>jsr311-api</artifactId>
+      <version>1.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.atlassian.plugins.rest</groupId>
+      <artifactId>atlassian-rest-common</artifactId>
+      <version>1.0.2</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.wink</groupId>
+      <artifactId>wink-client</artifactId>
+      <version>1.1.3-incubating</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <properties>
+    <amps.version>3.7</amps.version>
+    <jira.version>5.0-beta3</jira.version>
+  </properties>
+</project>
+

tutorial-plugin-licensing-api/src/main/java/com/example/plugins/tutorial/licensing/LicenseChecker.java

+package com.example.plugins.tutorial.licensing;
+
+import com.atlassian.event.api.EventListener;
+import com.atlassian.plugin.PluginController;
+import com.atlassian.upm.api.license.PluginLicenseEventRegistry;
+import com.atlassian.upm.api.license.PluginLicenseManager;
+import com.atlassian.upm.api.license.entity.LicenseError;
+import com.atlassian.upm.api.license.entity.PluginLicense;
+import com.atlassian.upm.api.license.event.PluginLicenseChangeEvent;
+import com.atlassian.upm.api.license.event.PluginLicenseCheckEvent;
+import com.atlassian.upm.api.license.event.PluginLicenseRemovedEvent;
+import com.atlassian.upm.api.util.Option;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static com.atlassian.upm.api.util.Option.none;
+import static com.atlassian.upm.api.util.Option.some;
+
+/**
+ * Listens for Atlassian licensing events, and disables this plugin whenever it does not
+ * have a valid license.
+ */
+public class LicenseChecker {
+
+    private static final Logger log = LoggerFactory.getLogger(LicenseChecker.class);
+
+    private final PluginController pluginController;
+    private final PluginLicenseManager pluginLicenseManager;
+    private final String pluginKey;
+    
+    public LicenseChecker(PluginController pluginController,
+                              PluginLicenseManager pluginLicenseManager,
+                              PluginLicenseEventRegistry pluginLicenseEventRegistry) {
+        this.pluginController = pluginController;
+        this.pluginLicenseManager = pluginLicenseManager;
+        this.pluginKey = pluginLicenseManager.getPluginKey();
+        
+        pluginLicenseEventRegistry.register(this);
+    }
+
+    /**
+     * This event is generated when the plugin becomes enabled - either at application
+     * startup time, or when the plugin is installed into an already-running application.
+     * The plugin may or may not have a license at this point.
+     */
+    @EventListener
+    public void handleEvent(PluginLicenseCheckEvent event) {
+        System.out.println("HANDING CHECK EVENT: " + event);
+        checkLicense(event.getLicense());
+    }
+    
+    /**
+     * This event base class includes all changes to the plugin license other than its
+     * complete removal.
+     */
+    @EventListener
+    public void handleEvent(PluginLicenseChangeEvent event) {
+        System.out.println("HANDING CHANGE EVENT: " + event);
+        checkLicense(some(event.getLicense()));
+    }
+
+    /**
+     * This event is generated if an existing license for the plugin is removed.
+     */
+    @EventListener
+    public void handleEvent(PluginLicenseRemovedEvent event) {
+        System.out.println("HANDING REMOVE EVENT: " + event);
+        checkLicense(none(PluginLicense.class));
+    }
+    
+    private final void checkLicense(Option<PluginLicense> maybeLicense) {
+        if (!isValidLicense(maybeLicense)) {
+            log.warn("Disabling plugin '" + pluginKey + "'");
+            pluginController.disablePlugin(pluginKey);            
+        }
+    }
+    
+    private final boolean isValidLicense(Option<PluginLicense> maybeLicense) {
+        for (PluginLicense license: maybeLicense) {
+            if (!license.isValid())
+            {
+                log.warn("Invalid license for plugin \"" + pluginKey + "\" (" + license.getError().getOrElse((LicenseError) null) + ")");
+                return false;
+            }
+            log.info("Validated license for plugin '" + pluginKey + "'");
+            return true;
+        }
+        log.warn("No license available for plugin '" + pluginKey + "'");
+        return false;
+    }
+
+    /**
+     * Validates the plugin's license. Disables the plugin if the license is invalid.
+     * Returns true if the license is valid, false if not.
+     * @return true if the license is valid, false if not.
+     */
+    public boolean validateLicense() {
+        Option<PluginLicense> license = pluginLicenseManager.getLicense();
+        checkLicense(license);
+        return isValidLicense(license);
+    }
+}

tutorial-plugin-licensing-api/src/main/java/com/example/plugins/tutorial/licensing/rest/MyRestResource.java

+package com.example.plugins.tutorial.licensing.rest;
+
+import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
+import com.example.plugins.tutorial.licensing.LicenseChecker;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * A resource of message.
+ */
+@Path("/message")
+public class MyRestResource {
+
+    private final LicenseChecker licenseChecker;
+
+    public MyRestResource(LicenseChecker licenseChecker) {
+        this.licenseChecker = licenseChecker;        
+    }
+
+    @GET
+    @AnonymousAllowed
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getMessage()
+    {
+       if (!licenseChecker.validateLicense()) {
+          return Response.status(Response.Status.FORBIDDEN).build();
+       }
+
+       return Response.ok(new MyRestResourceModel("Hello World")).build();
+    }
+}

tutorial-plugin-licensing-api/src/main/java/com/example/plugins/tutorial/licensing/rest/MyRestResourceModel.java

+package com.example.plugins.tutorial.licensing.rest;
+
+import javax.xml.bind.annotation.*;
+@XmlRootElement(name = "message")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class MyRestResourceModel {
+
+    @XmlElement(name = "value")
+    private String message;
+
+    public MyRestResourceModel() {
+    }
+
+    public MyRestResourceModel(String message) {
+        this.message = message;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

tutorial-plugin-licensing-api/src/main/java/com/example/plugins/tutorial/licensing/servlet/MyServlet.java

+package com.example.plugins.tutorial.licensing.servlet;
+
+import com.example.plugins.tutorial.licensing.LicenseChecker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class MyServlet extends HttpServlet {
+    private static final Logger log = LoggerFactory.getLogger(MyServlet.class);
+
+    private final LicenseChecker licenseChecker;
+
+    public MyServlet(LicenseChecker licenseChecker) {
+        this.licenseChecker = licenseChecker;
+    }
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+    {
+        if (!licenseChecker.validateLicense()) {
+            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Cannot proceed. Your license is invalid.");
+        }
+
+        resp.setContentType("text/html");
+        resp.getWriter().write("<html><body>Hello World</body></html>");
+    }
+}

tutorial-plugin-licensing-api/src/main/resources/atlassian-plugin.properties

+#
+#Wed Nov 09 10:14:37 PST 2011
+my-rest-resource.name=My Rest Resource
+my-servlet.description=The My Servlet Plugin
+my-class.description=The My Class Plugin
+my-class.name=My Class
+license-checker.description=Atlassian license management module
+my-rest-resource.description=The My Rest Resource Plugin
+my-servlet.name=My Servlet
+license-checker.name=License Checker

tutorial-plugin-licensing-api/src/main/resources/atlassian-plugin.xml

+<?xml version="1.0" encoding="UTF-8"?>
+
+<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2">
+  <plugin-info>
+    <description>${project.description}</description>
+    <version>${project.version}</version>
+    <vendor name="${project.organization.name}" url="${project.organization.url}"/>
+    <param name="atlassian-licensing-enabled">true</param>
+  </plugin-info>
+  <resource type="i18n" name="i18n" location="atlassian-plugin"/>
+  <component-import key="pluginLicenseManager" interface="com.atlassian.upm.api.license.PluginLicenseManager"/>
+  <component-import key="pluginController" interface="com.atlassian.plugin.PluginController"/>
+  <component-import key="pluginLicenseEventRegistry" interface="com.atlassian.upm.api.license.PluginLicenseEventRegistry"/>
+  <component name="License Checker" i18n-name-key="license-checker.name" key="license-checker" class="com.example.plugins.tutorial.licensing.LicenseChecker">
+    <description key="license-checker.description">Atlassian license management module</description>
+  </component>
+  <servlet name="My Servlet" i18n-name-key="my-servlet.name" key="my-servlet" class="com.example.plugins.tutorial.licensing.servlet.MyServlet">
+    <description key="my-servlet.description">The My Servlet Plugin</description>
+    <url-pattern>/myservlet</url-pattern>
+  </servlet>
+  <rest name="My Rest Resource" i18n-name-key="my-rest-resource.name" key="my-rest-resource" path="/helloworld" version="1.0">
+    <description key="my-rest-resource.description">The My Rest Resource Plugin</description>
+  </rest>
+</atlassian-plugin>

tutorial-plugin-licensing-api/src/test/java/com/example/plugins/tutorial/licensing/LicenseCheckerTest.java

+package com.example.plugins.tutorial.licensing;
+
+import com.atlassian.plugin.PluginController;
+import com.atlassian.upm.api.license.*;
+import com.atlassian.upm.api.license.entity.*;
+import com.atlassian.upm.api.license.event.*;
+import com.atlassian.upm.api.util.Option;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class LicenseCheckerTest {
+    final String PLUGIN_KEY = "com.example.plugins.tutorial.tutorial-plugin-licensing-api";
+
+    PluginLicense pluginLicense;
+    PluginLicenseChangeEvent changeEvent;
+    PluginLicenseCheckEvent checkEvent;
+
+    PluginController pluginController;
+    PluginLicenseManager pluginLicenseManager;
+    PluginLicenseEventRegistry pluginLicenseEventRegistry;
+
+    LicenseChecker licenseChecker;
+
+    @Before
+    public void setup() throws IOException {
+        pluginLicense = mock(PluginLicense.class);
+        changeEvent = new PluginLicenseAddedEvent(pluginLicense);
+        checkEvent = new PluginLicenseCheckEvent(PLUGIN_KEY, Option.some(pluginLicense));
+
+        pluginController = mock(PluginController.class);
+        pluginLicenseManager = mock(PluginLicenseManager.class);
+        pluginLicenseEventRegistry = mock(PluginLicenseEventRegistry.class);
+
+        when(pluginLicense.isValid()).thenReturn(true);
+        when(pluginLicense.getError()).thenReturn(Option.none(LicenseError.class));
+        when(pluginLicenseManager.getLicense()).thenReturn(Option.some(pluginLicense));
+        when(pluginLicenseManager.getPluginKey()).thenReturn(PLUGIN_KEY);
+
+        licenseChecker = new LicenseChecker(pluginController, pluginLicenseManager, pluginLicenseEventRegistry);
+    }
+
+    @Test
+    public void testHandleChangeEventForValidLicense() {
+        licenseChecker.handleEvent(changeEvent);
+        //verify 0 interactions
+        Mockito.verify(pluginController, Mockito.never()).disablePlugin(PLUGIN_KEY);
+    }
+
+    @Test
+    public void testHandleChangeEventForInvalidLicense() {
+        when(pluginLicense.isValid()).thenReturn(false);
+        licenseChecker.handleEvent(changeEvent);
+        //verify 1 interaction
+        Mockito.verify(pluginController).disablePlugin(PLUGIN_KEY);
+    }
+
+    @Test
+    public void testHandleCheckEventForValidLicense()
+    {
+        licenseChecker.handleEvent(checkEvent);
+        //verify 0 interactions
+        Mockito.verify(pluginController, Mockito.never()).disablePlugin(PLUGIN_KEY);
+    }
+
+    @Test
+    public void testHandleCheckEventForInvalidLicense()
+    {
+        when(pluginLicense.isValid()).thenReturn(false);
+        licenseChecker.handleEvent(checkEvent);
+        //verify 1 interaction
+        Mockito.verify(pluginController).disablePlugin(PLUGIN_KEY);
+    }
+
+    @Test
+    public void testValidateLicenseForValidLicense()
+    {
+        assertTrue(licenseChecker.validateLicense());
+    }
+
+    @Test
+    public void testValidateLicenseForInvalidLicense()
+    {
+        when(pluginLicense.isValid()).thenReturn(false);
+        assertFalse(licenseChecker.validateLicense());
+    }
+}

tutorial-plugin-licensing-api/src/test/java/com/example/plugins/tutorial/licensing/rest/MyRestResourceTest.java

+//package com.example.plugins.tutorial.licensing.rest;
+//
+//import org.junit.Test;
+//import org.junit.After;
+//import org.junit.Before;
+//import org.mockito.Mockito;
+//import static org.junit.Assert.*;
+//import static org.mockito.Mockito.*;
+//import com.example.plugins.tutorial.licensing.rest.MyRestResource;
+//import com.example.plugins.tutorial.licensing.rest.MyRestResourceModel;
+//import javax.ws.rs.core.Response;
+//import javax.ws.rs.core.GenericEntity;
+//
+//public class MyRestResourceTest {
+//
+//    @Before
+//    public void setup() {
+//
+//    }
+//
+//    @After
+//    public void tearDown() {
+//
+//    }
+//
+//    @Test
+//    public void messageIsValid() {
+//        MyRestResource resource = new MyRestResource();
+//
+//        Response response = resource.getMessage();
+//        final MyRestResourceModel message = (MyRestResourceModel) response.getEntity();
+//
+//        assertEquals("wrong message","Hello World",message.getMessage());
+//    }
+//}

tutorial-plugin-licensing-api/src/test/java/it/MyPluginTest.java

+package it;
+
+import org.junit.Test;
+
+public class MyPluginTest
+{
+    @Test
+    public void integrationTest()
+    {
+    }
+}

tutorial-plugin-licensing-api/src/test/java/it/com/example/plugins/tutorial/licensing/rest/MyRestResourceFuncTest.java

+package it.com.example.plugins.tutorial.licensing.rest;
+
+import org.junit.Test;
+import org.junit.After;
+import org.junit.Before;
+import org.mockito.Mockito;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+import com.example.plugins.tutorial.licensing.rest.MyRestResource;
+import com.example.plugins.tutorial.licensing.rest.MyRestResourceModel;
+import org.apache.wink.client.Resource;
+import org.apache.wink.client.RestClient;
+
+public class MyRestResourceFuncTest {
+
+    @Before
+    public void setup() {
+
+    }
+
+    @After
+    public void tearDown() {
+
+    }
+
+    @Test
+    public void messageIsValid() {
+
+        String baseUrl = System.getProperty("baseurl");
+        String resourceUrl = baseUrl + "/rest/helloworld/1.0/message";
+
+        RestClient client = new RestClient();
+        Resource resource = client.resource(resourceUrl);
+
+        MyRestResourceModel message = resource.get(MyRestResourceModel.class);
+
+        assertEquals("wrong message","Hello World",message.getMessage());
+    }
+}

tutorial-plugin-licensing-api/src/test/java/it/com/example/plugins/tutorial/licensing/servlet/MyServletFuncTest.java

+package it.com.example.plugins.tutorial.licensing.servlet;
+
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.ResponseHandler;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.BasicResponseHandler;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.junit.Test;
+import org.junit.After;
+import org.junit.Before;
+
+import java.io.IOException;
+
+import static org.junit.Assert.*;
+
+
+public class MyServletFuncTest {
+
+    HttpClient httpClient;
+    String baseUrl;
+    String servletUrl;
+
+    @Before
+    public void setup() {
+        httpClient = new DefaultHttpClient();
+        baseUrl = System.getProperty("baseurl");
+        servletUrl = baseUrl + "/plugins/servlet/myservlet";
+    }
+
+    @After
+    public void tearDown() {
+        httpClient.getConnectionManager().shutdown();
+    }
+
+    @Test
+    public void testSomething() throws IOException {
+        HttpGet httpget = new HttpGet(servletUrl);
+
+        // Create a response handler
+        ResponseHandler<String> responseHandler = new BasicResponseHandler();
+        String responseBody = httpClient.execute(httpget, responseHandler);
+        assertTrue(null != responseBody && !"".equals(responseBody));
+    }
+}

tutorial-plugin-licensing-api/src/test/resources/TEST_RESOURCES_README

+Create any of the test resources you might need in this directory.
+
+Please remove this file before releasing your plugin.

tutorial-plugin-licensing-api/src/test/xml/TEST_XML_RESOURCES_README

+Create all XML test resources here - these might be needed for populating JIRA instance at the integration-test phase with test data.
+
+Please remove this file before releasing your plugin.

tutorial-plugin-licensing-api/tutorial-plugin-licensing-api.iml

+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.jira:jira-api:5.0-beta3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.annotations:atlassian-annotations:0.6" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.ofbiz:entityengine-share:1.0.12" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: log4j:log4j:1.2.15" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: javax.mail:mail:1.4.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: javax.activation:activation:1.1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xerces:xercesImpl:2.9.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.ofbiz:entityengine:1.0.12" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: jta:jta:1.0.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.util.concurrent:atlassian-util-concurrent:0.0.5" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:webwork:1.4-atlassian-17" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: webwork:pell-multipart-request:1.31.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-core:3.2.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.core:atlassian-core:4.6.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.5" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:propertyset:1.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: dom4j:dom4j:1.6.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jaxen:jaxen:1.1.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: mockobjects:alt-jdk1.3:0.07" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.extras:atlassian-extras:2.2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: commons-codec:commons-codec:1.3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.velocity:atlassian-velocity:1.0.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: opensymphony:oscore:2.2.7-atlassian-1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: velocity:velocity:1.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: velocity:velocity-dep:1.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:osworkflow:2.8.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-api:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:r06" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.jackson:jackson-core-asl:1.4.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.4.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-core:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-spi:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-api:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-integration-api:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.ip:atlassian-ip:2.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.spring:atlassian-spring:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.event:atlassian-event:2.0.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-core:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-context:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: aopalliance:aopalliance:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-beans:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.profiling:atlassian-profiling:1.8" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:slf4j-api:1.5.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.8.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-web:2.0.6" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-core:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-ldap:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-password-encoders:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security:atlassian-password-encoder:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.security:spring-security-core:2.0.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-aop:2.0.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-tx:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-core:2.9.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-io:commons-io:1.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.multitenant:multitenant-core:1.0-m14" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:servlet-api:2.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.jcip:jcip-annotations:1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: cglib:cglib-nodep:2.1_3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-events:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-persistence:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-remote:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-integration-client-rest:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-integration-client-common:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.security:atlassian-cookie-tools:2.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-httpclient:commons-httpclient:3.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.ldap:spring-ldap-core:1.3.0.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.slf4j:slf4j-log4j12:1.5.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-context-support:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: quartz:quartz:1.5.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: net.sf.ehcache:ehcache:1.2.3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security:atlassian-secure-random:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.mail:atlassian-mail:2.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-beanutils:commons-beanutils:1.6.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-digester:commons-digester:1.4.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.trackback:atlassian-trackback:0.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: oro:oro:2.0.7" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: atlassian-bandana:atlassian-bandana:0.1.13" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.applinks:applinks-api:3.6.2-m2" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-webfragment:2.10.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: jfree:jfreechart:1.0.13" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-webresource:2.10.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: jfree:jcommon:1.0.8" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.sal:sal-api:2.6.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.gadgets:atlassian-gadgets-api:3.1.13" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.johnson:atlassian-johnson:1.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: joda-time:joda-time:2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.jira:jira-tests:5.0-beta3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit-dep:4.8.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-all:1.8.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.easymock:easymock:2.5.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: cglib:cglib:2.1_3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: asm:asm:1.5.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.easymock:easymockclassextension:2.5.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.powermock.api:powermock-api-easymock:1.3.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.powermock.api:powermock-api-support:1.3.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-core:1.3.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.powermock.reflect:powermock-reflect:1.3.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: javassist:javassist:3.12.0.GA" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.inception:inception:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.modzdetector:modz-detector:0.10" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.jira:jira-func-tests:5.0-beta3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.jira:jira-rest-api:5.0-beta3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: rhino:js:1.5R4-RC3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: commons-jelly:commons-jelly-tags-regexp:1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: exml:exml:7.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.jwebunit:jwebunit:1.2-atlassian-3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.meteware.httpunit:httpunit:1.5.4-atlassian-13" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: nekohtml:nekohtml:0.8.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.icegreen:greenmail:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xmlunit:xmlunit:1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: ant:ant:1.5.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mortbay.jetty:jetty:6.0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mortbay.jetty:jetty-util:6.0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mortbay.jetty:servlet-api-2.5:6.0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xmlrpc:xmlrpc:2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: axis:axis:1.3-atlassian-1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: axis:axis-jaxrpc:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: axis:axis-saaj:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: commons-discovery:commons-discovery:0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.cargo-test-runner:cargo-test-runner:2.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.cargo:cargo-core-uberjar:1.0-atlassianpatch-CARGO-553-2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.jsoup:jsoup:1.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.sun.jersey:jersey-core:1.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.sun.jersey:jersey-json:1.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: stax:stax-api:1.0.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.xml.bind:jaxb-api:2.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-jaxrs:1.6.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-xc:1.6.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.sun.jersey:jersey-client:1.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.sun.jersey.contribs:jersey-apache-client:1.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-acceptance-test:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins.rest:atlassian-rest-common:1.0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.jwebunit:jwebunit-core:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: regexp:regexp:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.jwebunit:jwebunit-htmlunit-plugin:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.htmlunit:htmlunit:2.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xalan:xalan:2.7.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xalan:serializer:2.7.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.htmlunit:htmlunit-core-js:2.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.nekohtml:nekohtml:1.9.12" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.cssparser:cssparser:0.9.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.w3c.css:sac:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jmock:jmock:1.1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: javax.transaction:jta:1.0.1B" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: hsqldb:hsqldb:1.8.0.10" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.dbunit:dbunit:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit-addons:junit-addons:1.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: xerces:xmlParserAPIs:2.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: poi:poi:2.5.1-final-20040804" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-jdbc:2.5.6.SEC02" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-rest-test:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-rest-test-api:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-rest-common:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.google.collections:google-collections:1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-rest-plugin:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.megginson.sax:xml-writer:0.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.atlassian.crowd:crowd-rest-application-management:2.3.4-m1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.upm:licensing-api:2.0-m2" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.upm:upm-api:2.0-m2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apache.httpcomponents:httpclient:4.1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apache.httpcomponents:httpcore:4.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.ws.rs:jsr311-api:1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apache.wink:wink-client:1.1.3-incubating" level="project" />
+  </component>
+</module>
+

tutorial-plugin-licensing-api/tutorial-plugin-licensing-api.ipr

+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AntConfiguration">
+    <defaultAnt bundledAnt="true" />
+  </component>
+  <component name="BuildJarProjectSettings">
+    <option name="BUILD_JARS_ON_MAKE" value="false" />
+  </component>
+  <component name="CompilerConfiguration">
+    <option name="DEFAULT_COMPILER" value="Javac" />
+    <resourceExtensions>
+      <entry name=".+\.(properties|xml|html|dtd|tld)" />
+      <entry name=".+\.(gif|png|jpeg|jpg)" />
+    </resourceExtensions>
+    <wildcardResourcePatterns>
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.ftl" />
+    </wildcardResourcePatterns>
+    <annotationProcessing enabled="false" useClasspath="true" />
+  </component>
+  <component name="CopyrightManager" default="">
+    <module2copyright />
+  </component>
+  <component name="DependencyValidationManager">
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </component>
+  <component name="EclipseCompilerSettings">
+    <option name="DEBUGGING_INFO" value="true" />
+    <option name="GENERATE_NO_WARNINGS" value="true" />
+    <option name="DEPRECATION" value="false" />
+    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
+    <option name="MAXIMUM_HEAP_SIZE" value="128" />
+  </component>
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="IdProvider" IDEtalkID="01C5A1C9275BAF20A1E7D603CFD9F0DB" />
+  <component name="InspectionProjectProfileManager">
+    <profiles>
+      <profile version="1.0" is_locked="false">
+        <option name="myName" value="Project Default" />
+        <option name="myLocal" value="false" />
+        <inspection_tool class="AccessToNonThreadSafeStaticFieldFromInstance" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="nonThreadSafeTypes" value="java.text.DateFormat,java.util.Calendar" />
+        </inspection_tool>
+        <inspection_tool class="AnonymousClassComplexity" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_limit" value="3" />
+        </inspection_tool>
+        <inspection_tool class="AnonymousClassMethodCount" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_limit" value="3" />
+        </inspection_tool>
+        <inspection_tool class="ArchaicSystemPropertyAccess" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="AssignmentToStaticFieldFromInstanceMethod" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="AssignmentUsedAsCondition" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CastConflictsWithInstanceof" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CastToIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ChainedEqualityJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ChannelResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="ClassNameDiffersFromFileName" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ClassNestingDepth" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_limit" value="2" />
+        </inspection_tool>
+        <inspection_tool class="CloneCallsConstructors" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CloneInNonCloneableClass" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CloneableImplementsClone" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_ignoreCloneableDueToInheritance" value="true" />
+        </inspection_tool>
+        <inspection_tool class="CollectionAddedToSelf" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CollectionContainsUrl" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CollectionsFieldAccessReplaceableByMethodCall" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ComparableImplementedButEqualsNotOverridden" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ConfusingElse" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ConstantConditions" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="SUGGEST_NULLABLE_ANNOTATIONS" value="true" />
+          <option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" />
+        </inspection_tool>
+        <inspection_tool class="ConstantStringIntern" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ConstantValueVariableUse" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CovariantCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="CovariantEquals" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="DeclareCollectionAsInterface" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreLocalVariables" value="false" />
+          <option name="ignorePrivateMethodsAndFields" value="false" />
+        </inspection_tool>
+        <inspection_tool class="DivideByZeroJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="DoubleCheckedLocking" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreOnVolatileVariables" value="false" />
+        </inspection_tool>
+        <inspection_tool class="DoubleNegation" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="EmptySynchronizedStatement" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="EqualityComparisonWithCoercionJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="EqualsHashCodeCalledOnUrl" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="FieldAccessedSynchronizedAndUnsynchronized" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="countGettersAndSetters" value="true" />
+        </inspection_tool>
+        <inspection_tool class="FieldHidesSuperclassField" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_ignoreInvisibleFields" value="true" />
+        </inspection_tool>
+        <inspection_tool class="FieldMayBeFinal" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="FieldMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="Finalize" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreTrivialFinalizers" value="true" />
+        </inspection_tool>
+        <inspection_tool class="FinalizeNotProtected" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ForLoopThatDoesntUseLoopVariable" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ForLoopThatDoesntUseLoopVariableJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="FtlCallsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="HibernateResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="IOResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoredTypesString" value="java.io.ByteArrayOutputStream,java.io.ByteArrayInputStream,java.io.StringBufferInputStream,java.io.CharArrayWriter,java.io.CharArrayReader,java.io.StringWriter,java.io.StringReader" />
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="IndexOfReplaceableByContains" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="InfiniteRecursion" enabled="true" level="ERROR" enabled_by_default="true" />
+        <inspection_tool class="InfiniteRecursionJS" enabled="true" level="ERROR" enabled_by_default="true" />
+        <inspection_tool class="InnerClassMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="InstanceofIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="InstanceofThis" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="InstantiationOfUtilityClass" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="IteratorHasNextCallsIteratorNext" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="IteratorNextDoesNotThrowNoSuchElementException" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="JDBCResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="JNDIResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="JavaDoc" enabled="false" level="INFO" enabled_by_default="false">
+          <option name="TOP_LEVEL_CLASS_OPTIONS">
+            <value>
+              <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+              <option name="REQUIRED_TAGS" value="" />
+            </value>
+          </option>
+          <option name="INNER_CLASS_OPTIONS">
+            <value>
+              <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+              <option name="REQUIRED_TAGS" value="" />
+            </value>
+          </option>
+          <option name="METHOD_OPTIONS">
+            <value>
+              <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+              <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+            </value>
+          </option>
+          <option name="FIELD_OPTIONS">
+            <value>
+              <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+              <option name="REQUIRED_TAGS" value="" />
+            </value>
+          </option>
+          <option name="IGNORE_DEPRECATED" value="false" />
+          <option name="IGNORE_JAVADOC_PERIOD" value="true" />
+          <option name="IGNORE_DUPLICATED_THROWS" value="false" />
+          <option name="IGNORE_POINT_TO_ITSELF" value="false" />
+          <option name="myAdditionalJavadocTags" value="" />
+        </inspection_tool>
+        <inspection_tool class="JavadocReference" enabled="false" level="INFO" enabled_by_default="false" />
+        <inspection_tool class="KeySetIterationMayUseEntrySet" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="LoggingConditionDisagreesWithLogStatement" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MagicNumber" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_ignoreInHashCode" value="true" />
+        </inspection_tool>
+        <inspection_tool class="MapReplaceableByEnumMap" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MethodOnlyUsedFromInnerClass" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreMethodsAccessedFromAnonymousClass" value="false" />
+          <option name="ignoreStaticMethodsFromNonStaticInnerClass" value="false" />
+          <option name="onlyReportStaticMethods" value="false" />
+        </inspection_tool>
+        <inspection_tool class="MissingDeprecatedAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MisspelledCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MisspelledEquals" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MisspelledHashcode" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="MisspelledToString" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="NonBlockStatementBodyJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="NonShortCircuitBoolean" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="NonShortCircuitBooleanExpressionJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="NonStaticFinalLogger" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="loggerClassName" value="java.util.logging.Logger" />
+        </inspection_tool>
+        <inspection_tool class="ObjectAllocationIgnoredJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ObjectEquality" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_ignoreEnums" value="true" />
+          <option name="m_ignoreClassObjects" value="false" />
+          <option name="m_ignorePrivateConstructors" value="false" />
+        </inspection_tool>
+        <inspection_tool class="ObjectToString" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ObsoleteCollection" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreRequiredObsoleteCollectionTypes" value="false" />
+        </inspection_tool>
+        <inspection_tool class="OverlyComplexArithmeticExpression" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_limit" value="6" />
+        </inspection_tool>
+        <inspection_tool class="OverlyComplexBooleanExpression" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="m_limit" value="4" />
+          <option name="m_ignorePureConjunctionsDisjunctions" value="true" />
+        </inspection_tool>
+        <inspection_tool class="OverlyStrongTypeCast" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreInMatchingInstanceof" value="false" />
+        </inspection_tool>
+        <inspection_tool class="RawUseOfParameterizedType" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreObjectConstruction" value="true" />
+          <option name="ignoreTypeCasts" value="false" />
+        </inspection_tool>
+        <inspection_tool class="ReplaceAllDot" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="RequiredAttributes" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="myAdditionalRequiredHtmlAttributes" value="type" />
+        </inspection_tool>
+        <inspection_tool class="SafeLock" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreNegations" value="false" />
+        </inspection_tool>
+        <inspection_tool class="SocketResource" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="insideTryAllowed" value="false" />
+        </inspection_tool>
+        <inspection_tool class="SpringModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="StaticFieldReferenceOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="StringReplaceableByStringBuffer" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="onlyWarnOnLoop" value="true" />
+        </inspection_tool>
+        <inspection_tool class="SubstringZero" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="SubtractionInCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="SuspiciousIndentAfterControlStatement" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="SystemOutErr" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="TextLabelInSwitchStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ThreadDumpStack" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ThreadWithDefaultRunMethod" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="ThrowableInstanceNeverThrown" enabled="true" level="INFO" enabled_by_default="true" />
+        <inspection_tool class="UNCHECKED_WARNING" enabled="false" level="WARNING" enabled_by_default="false" />
+        <inspection_tool class="UnnecessaryLocalVariable" enabled="false" level="WARNING" enabled_by_default="false">
+          <option name="m_ignoreImmediatelyReturnedVariables" value="false" />
+          <option name="m_ignoreAnnotatedVariables" value="false" />
+        </inspection_tool>
+        <inspection_tool class="VolatileArrayField" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="VolatileLongOrDoubleField" enabled="true" level="WARNING" enabled_by_default="true" />
+        <inspection_tool class="WhileLoopSpinsOnField" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="ignoreNonEmtpyLoops" value="false" />
+        </inspection_tool>
+        <inspection_tool class="groupsTestNG" enabled="true" level="WARNING" enabled_by_default="true">
+          <option name="groups">
+            <value>
+              <list size="4">
+                <item index="0" class="java.lang.String" itemvalue="build" />
+                <item index="1" class="java.lang.String" itemvalue="cvs" />
+                <item index="2" class="java.lang.String" itemvalue="svn" />
+                <item index="3" class="java.lang.String" itemvalue="p4" />
+              </list>
+            </value>
+          </option>
+        </inspection_tool>
+      </profile>
+    </profiles>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+    <list size="6">
+      <item index="0" class="java.lang.String" itemvalue="SERVER PROBLEM" />
+      <item index="1" class="java.lang.String" itemvalue="WEAK WARNING" />
+      <item index="2" class="java.lang.String" itemvalue="INFO" />
+      <item index="3" class="java.lang.String" itemvalue="TYPO" />
+      <item index="4" class="java.lang.String" itemvalue="WARNING" />
+      <item index="5" class="java.lang.String" itemvalue="ERROR" />
+    </list>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_STRING" value="-target 1.6" />
+  </component>
+  <component name="JavadocGenerationManager">
+    <option name="OUTPUT_DIRECTORY" />
+    <option name="OPTION_SCOPE" value="protected" />
+    <option name="OPTION_HIERARCHY" value="true" />
+    <option name="OPTION_NAVIGATOR" value="true" />
+    <option name="OPTION_INDEX" value="true" />
+    <option name="OPTION_SEPARATE_INDEX" value="true" />
+    <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
+    <option name="OPTION_DEPRECATED_LIST" value="true" />
+    <option name="OTHER_OPTIONS" value="" />
+    <option name="HEAP_SIZE" />
+    <option name="LOCALE" />
+    <option name="OPEN_IN_BROWSER" value="true" />
+  </component>
+  <component name="JikesSettings">
+    <option name="JIKES_PATH" value="" />
+    <option name="DEBUGGING_INFO" value="true" />
+    <option name="DEPRECATION" value="true" />
+    <option name="GENERATE_NO_WARNINGS" value="false" />
+    <option name="IS_EMACS_ERRORS_MODE" value="true" />
+    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state />
+    </entry>
+  </component>
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/tutorial-plugin-licensing-api.iml" filepath="$PROJECT_DIR$/tutorial-plugin-licensing-api.iml" />
+    </modules>
+  </component>
+  <component name="ProjectResources">
+    <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/classes" />
+  </component>
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+  </component>
+  <component name="WebServicesPlugin" addRequiredLibraries="true" />
+  <component name="XPathView.XPathProjectComponent">
+    <history />
+    <find-history />
+  </component>
+  <component name="atlassian-ide-plugin-workspace">
+    <option name="bambooConfiguration">
+      <BambooWorkspaceConfiguration>
+        <option name="view">
+          <BambooViewConfigurationBean />
+        </option>
+      </BambooWorkspaceConfiguration>
+    </option>
+    <option name="crucibleConfiguration">
+      <CrucibleWorkspaceConfiguration>
+        <option name="crucibleFilters">
+          <CrucibleFiltersBean>
+            <option name="manualFilter">
+              <CustomFilterBean />
+            </option>
+            <option name="recenltyOpenFilter">
+              <RecentlyOpenReviewsFilter />
+            </option>
+          </CrucibleFiltersBean>
+        </option>
+        <option name="view">
+          <CrucibleViewConfigurationBean />
+        </option>
+      </CrucibleWorkspaceConfiguration>
+    </option>
+    <option name="defaultCredentials">
+      <UserCfgBean />
+    </option>
+  </component>
+  <component name="atlassian-ide-plugin-workspace-issues">
+    <option name="view">
+      <JiraViewConfigurationBean />
+    </option>
+  </component>
+  <component name="libraryTable">
+    <library name="Maven: ant:ant:1.5.4">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/ant/ant/1.5.4/ant-1.5.4.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/ant/ant/1.5.4/ant-1.5.4-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/ant/ant/1.5.4/ant-1.5.4-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: aopalliance:aopalliance:1.0">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: asm:asm:1.5.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/asm/asm/1.5.3/asm-1.5.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/asm/asm/1.5.3/asm-1.5.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/asm/asm/1.5.3/asm-1.5.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: atlassian-bandana:atlassian-bandana:0.1.13">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/atlassian-bandana/atlassian-bandana/0.1.13/atlassian-bandana-0.1.13.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/atlassian-bandana/atlassian-bandana/0.1.13/atlassian-bandana-0.1.13-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/atlassian-bandana/atlassian-bandana/0.1.13/atlassian-bandana-0.1.13-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: axis:axis-jaxrpc:1.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-jaxrpc/1.3/axis-jaxrpc-1.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-jaxrpc/1.3/axis-jaxrpc-1.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-jaxrpc/1.3/axis-jaxrpc-1.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: axis:axis-saaj:1.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-saaj/1.3/axis-saaj-1.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-saaj/1.3/axis-saaj-1.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis-saaj/1.3/axis-saaj-1.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: axis:axis:1.3-atlassian-1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis/1.3-atlassian-1/axis-1.3-atlassian-1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis/1.3-atlassian-1/axis-1.3-atlassian-1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/axis/axis/1.3-atlassian-1/axis-1.3-atlassian-1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: bouncycastle:bcprov-jdk14:138">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/bouncycastle/bcprov-jdk14/138/bcprov-jdk14-138.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/bouncycastle/bcprov-jdk14/138/bcprov-jdk14-138-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/bouncycastle/bcprov-jdk14/138/bcprov-jdk14-138-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: cglib:cglib-nodep:2.1_3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: cglib:cglib:2.1_3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.1_3/cglib-2.1_3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.1_3/cglib-2.1_3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.annotations:atlassian-annotations:0.6">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/annotations/atlassian-annotations/0.6/atlassian-annotations-0.6.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/annotations/atlassian-annotations/0.6/atlassian-annotations-0.6-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/annotations/atlassian-annotations/0.6/atlassian-annotations-0.6-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.applinks:applinks-api:3.6.2-m2">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/applinks/applinks-api/3.6.2-m2/applinks-api-3.6.2-m2.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/applinks/applinks-api/3.6.2-m2/applinks-api-3.6.2-m2-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/applinks/applinks-api/3.6.2-m2/applinks-api-3.6.2-m2-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.cargo-test-runner:cargo-test-runner:2.4">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/cargo-test-runner/cargo-test-runner/2.4/cargo-test-runner-2.4.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/cargo-test-runner/cargo-test-runner/2.4/cargo-test-runner-2.4-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/cargo-test-runner/cargo-test-runner/2.4/cargo-test-runner-2.4-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.core:atlassian-core:4.6.0">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/core/atlassian-core/4.6.0/atlassian-core-4.6.0.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/core/atlassian-core/4.6.0/atlassian-core-4.6.0-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/core/atlassian-core/4.6.0/atlassian-core-4.6.0-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-acceptance-test:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-acceptance-test/2.3.4-m1/crowd-acceptance-test-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-acceptance-test/2.3.4-m1/crowd-acceptance-test-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-acceptance-test/2.3.4-m1/crowd-acceptance-test-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-api:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-api/2.3.4-m1/crowd-api-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-api/2.3.4-m1/crowd-api-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-api/2.3.4-m1/crowd-api-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-core:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-core/2.3.4-m1/crowd-core-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-core/2.3.4-m1/crowd-core-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-core/2.3.4-m1/crowd-core-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-events:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-events/2.3.4-m1/crowd-events-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-events/2.3.4-m1/crowd-events-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-events/2.3.4-m1/crowd-events-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-integration-api:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-api/2.3.4-m1/crowd-integration-api-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-api/2.3.4-m1/crowd-integration-api-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-api/2.3.4-m1/crowd-integration-api-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-integration-client-common:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-common/2.3.4-m1/crowd-integration-client-common-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-common/2.3.4-m1/crowd-integration-client-common-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-common/2.3.4-m1/crowd-integration-client-common-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-integration-client-rest:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-rest/2.3.4-m1/crowd-integration-client-rest-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-rest/2.3.4-m1/crowd-integration-client-rest-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-integration-client-rest/2.3.4-m1/crowd-integration-client-rest-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-ldap:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-ldap/2.3.4-m1/crowd-ldap-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-ldap/2.3.4-m1/crowd-ldap-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-ldap/2.3.4-m1/crowd-ldap-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-password-encoders:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-password-encoders/2.3.4-m1/crowd-password-encoders-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-password-encoders/2.3.4-m1/crowd-password-encoders-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-password-encoders/2.3.4-m1/crowd-password-encoders-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-persistence:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-persistence/2.3.4-m1/crowd-persistence-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-persistence/2.3.4-m1/crowd-persistence-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-persistence/2.3.4-m1/crowd-persistence-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-remote:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-remote/2.3.4-m1/crowd-remote-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-remote/2.3.4-m1/crowd-remote-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-remote/2.3.4-m1/crowd-remote-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-rest-application-management:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-application-management/2.3.4-m1/crowd-rest-application-management-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-application-management/2.3.4-m1/crowd-rest-application-management-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-application-management/2.3.4-m1/crowd-rest-application-management-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-rest-common:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-common/2.3.4-m1/crowd-rest-common-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-common/2.3.4-m1/crowd-rest-common-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-common/2.3.4-m1/crowd-rest-common-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-rest-plugin:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-plugin/2.3.4-m1/crowd-rest-plugin-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-plugin/2.3.4-m1/crowd-rest-plugin-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-plugin/2.3.4-m1/crowd-rest-plugin-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-rest-test-api:2.3.4-m1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-test-api/2.3.4-m1/crowd-rest-test-api-2.3.4-m1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-test-api/2.3.4-m1/crowd-rest-test-api-2.3.4-m1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/com/atlassian/crowd/crowd-rest-test-api/2.3.4-m1/crowd-rest-test-api-2.3.4-m1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: com.atlassian.crowd:crowd-rest-test:2.3.4-m1">