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-event).

Затем я изменил 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]

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

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

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


person java4fun    schedule 04.03.2016    source источник


Ответы (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. Надеюсь, это поможет вам.

Спасибо,

Викаш

person MrKumar    schedule 08.03.2016