Crowd-плагин для нового UserCreateEvent

Я хочу начать разрабатывать плагин толпы. Плагин должен подключиться к поиску пользователя AD и получить определенное свойство AD. И я начал следить за этим. У меня уже был установлен Atlassian-SDK для JIRA-плагина, который я разработал в прошлом. Поэтому я создал новый плагин с

atlas-create-crowd-plugin

и после того, как я удалил класс, который команда create создала из меня и скопировала в пример кода, но это не сработало (проблемы компиляции). Так что я немного изменил 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>myGroupId</groupId>
        <artifactId>myArtifactId</artifactId>
        <version>1.0-SNAPSHOT</version>
        <organization>
            <name>Example Company</name>
            <url>http://www.example.com/</url>
        </organization>

    <name>event-listener-example</name>
        <description>This is an event listener plugin for Atlassian Crowd.</description>

    <packaging>atlassian-plugin</packaging>

    <dependencies>
            <dependency>
                    <groupId>com.atlassian.crowd</groupId>
                    <artifactId>crowd-events</artifactId>
                    <version>${crowd.version}</version>
                    <cope>provided</scope>
            <dependency>
        <dependency>
            <groupId>com.atlassian.event</groupId>
            <artifactId>atlassian-event</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
        </dependency>
        </dependencies>
        <build>
            <plugins>
                    <plugin>
                        <groupId>com.atlassian.maven.plugins</groupId>
                        <artifactId>maven-crowd-plugin</artifactId>
                <version>6.2.1</version>
                        <extensions>true</extensions>
                        <configuration>
                                <productVersion>${crowd.version}</productVersion>
                    <productDataVersion>${crowd.data.version}</productDataVersion>
                        </configuration>
            </plugin>
            <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        <configuration>
                    </plugin>
            </plugins>
     </build>
     <properties>
    <crowd.version>2.8.4</crowd.version>
        <crowd.data.version>2.8.4</crowd.data.version>
    <atlassian.plugin.key>${project.groupId}.${project.artifactId}  </atlassian.plugin.key>
    </properties>
 </project>

Здесь вы можете увидеть, что я немного изменил его (версии и добавил зависимость от события atlassian).

Затем я изменил atlassian-plugin.xml:

<atlassian-plugin key="${atlassian.plugin.key}" 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="plugin-icon">images/pluginIcon.png</param>  
        <param name="plugin-logo">images/pluginLogo.png</param>  
    </plugin-info>  
    <resource type="i18n" name="i18n" location="kgSynchro" />  
    <listener name="User Created Listener" key="usercreatedlistener"  
        class="myPackage.NewUserEventListener">  
        <description>Will listen for user creation 
             events.</description>  
    </listener>  
</atlassian-plugin>

И в конце мой класс:

package myPackage.events;
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import com.atlassian.crowd.event.user.UserCreatedEvent; 
import com.atlassian.event.api.EventListener; 
public class NewUserEventListener {  
    private final Logger log = LoggerFactory.getLogger                  (NewUserEventListener.class);  

    @EventListener  public void printUserCreatedEvent(
        UserCreatedEvent event) {  
            System.out.println("User " + event.getUser                      ().getDisplayName() + " has been created.");  
            log.error("new User is CREATED"); 
    } 
} 

То же, что в примере, но я добавил Logger для записи вызова метода.

Затем я запустил среду crod с помощью atlas-run (также попробовал atlas-debug), и я пошел в пользовательский интерфейс и попытался добавить нового пользователя. Пользователь был создан правильно, но в журнале ничего не появляется о моем методе. У меня много ошибок по поводу:

 The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]

Но это происходит на каждой странице, по которой я перемещаюсь в толпе..... тогда я думаю, что это не имеет отношения к тому факту, что мой метод никогда не вызывается.

Есть ли у каждого несколько советов о том, что попытаться выяснить проблему?

Танк очень заранее

1 ответ

Путь вашего слушателя - "myPackage.events.NewUserEventListener". Измените раздел слушателя atlassian-plugin.xml на приведенный ниже код.

<listener name="User Created Listener" key="usercreatedlistener"  
    class="myPackage.events.NewUserEventListener">  
    <description>Will listen for user creation events.</description>  
</listener>

Также хорошо практиковать Java Naming Convention. Надеюсь, это поможет вам.

Спасибо,

Vikash

Другие вопросы по тегам